> Fetch clean Markdown by appending `.md` to any page URL under https://signalwire.com/docs or requesting it with the HTTP header `Accept: text/markdown`. The root index at https://signalwire.com/docs/llms.txt lists the available documentation indexes. # Skills > Built-in skills catalog with configuration parameters and usage patterns. [add-skill]: /docs/server-sdks/reference/python/agents/agent-base/add-skill [skillbase]: /docs/server-sdks/reference/python/agents/skill-base Skills are pluggable capabilities that add tools to your agent. Add a skill with [`add_skill()`][add-skill] and it registers one or more SWAIG functions automatically. Skills handle setup, parameter validation, and tool registration so you can add features like weather, search, or math with a single call. ```python from signalwire import AgentBase class MyAgent(AgentBase): def __init__(self): super().__init__(name="my-agent") self.set_prompt_text("You are a helpful assistant.") # No-config skill self.add_skill("datetime") # Skill with parameters self.add_skill("web_search", { "api_key": "YOUR_KEY", "search_engine_id": "YOUR_ENGINE_ID" }) if __name__ == "__main__": MyAgent().run() ``` ## Skills Summary | Skill | Functions | API Required | Multi-Instance | | ------------------------------------------------------------------------------------------------- | --------- | ------------ | -------------- | | [`datetime`](/docs/server-sdks/reference/python/agents/skills/datetime) | 2 | No | No | | [`math`](/docs/server-sdks/reference/python/agents/skills/math) | 1 | No | No | | [`web_search`](/docs/server-sdks/reference/python/agents/skills/web-search) | 1 | Yes | Yes | | [`wikipedia_search`](/docs/server-sdks/reference/python/agents/skills/wikipedia-search) | 1 | No | No | | [`weather_api`](/docs/server-sdks/reference/python/agents/skills/weather-api) | 1 | Yes | No | | [`joke`](/docs/server-sdks/reference/python/agents/skills/joke) | 1 | Yes | No | | [`play_background_file`](/docs/server-sdks/reference/python/agents/skills/play-background-file) | 1 | No | Yes | | [`swml_transfer`](/docs/server-sdks/reference/python/agents/skills/swml-transfer) | 1 | No | Yes | | [`datasphere`](/docs/server-sdks/reference/python/agents/skills/datasphere) | 1 | Yes | Yes | | [`datasphere_serverless`](/docs/server-sdks/reference/python/agents/skills/datasphere-serverless) | 1 | Yes | Yes | | [`native_vector_search`](/docs/server-sdks/reference/python/agents/skills/native-vector-search) | 1 | No | Yes | | [`mcp_gateway`](/docs/server-sdks/reference/python/agents/skills/mcp-gateway) | Dynamic | No | Yes | | [`google_maps`](/docs/server-sdks/reference/python/agents/skills/google-maps) | 2 | Yes | No | | [`info_gatherer`](/docs/server-sdks/reference/python/agents/skills/info-gatherer) | 2 | No | Yes | | [`claude_skills`](/docs/server-sdks/reference/python/agents/skills/claude-skills) | Dynamic | No | Yes | | [`spider`](/docs/server-sdks/reference/python/agents/skills/spider) | 3 | No | Yes | | [`api_ninjas_trivia`](/docs/server-sdks/reference/python/agents/skills/api-ninjas-trivia) | 1 | Yes | Yes | ## Configuration All skills accept configuration via a dictionary passed to `add_skill()`. Skills can also read values from environment variables when a parameter defines an `env_var` fallback. ```python # Direct configuration self.add_skill("web_search", {"api_key": "KEY", "search_engine_id": "ID"}) # Environment variable fallback import os self.add_skill("web_search", { "api_key": os.getenv("GOOGLE_API_KEY"), "search_engine_id": os.getenv("SEARCH_ENGINE_ID") }) ``` ### SWAIG Field Overrides Override SWAIG function metadata for any skill by including a `swaig_fields` key: ```python from signalwire import AgentBase class MyAgent(AgentBase): def __init__(self): super().__init__(name="assistant", route="/assistant") self.set_prompt_text("You are a helpful assistant.") self.add_skill("datetime", { "swaig_fields": { "fillers": {"en-US": ["Let me check the time...", "One moment..."]}, "secure": False } }) agent = MyAgent() agent.serve() ``` ### Multi-Instance Skills Skills that support multiple instances require unique `tool_name` values: ```python from signalwire import AgentBase class MyAgent(AgentBase): def __init__(self): super().__init__(name="assistant", route="/assistant") self.set_prompt_text("You are a helpful assistant.") self.add_skill("native_vector_search", { "tool_name": "search_products", "index_file": "/data/products.swsearch" }) self.add_skill("native_vector_search", { "tool_name": "search_faqs", "index_file": "/data/faqs.swsearch" }) agent = MyAgent() agent.serve() ``` --- ## Extending SkillBase For creating custom skills, see [`SkillBase`][skillbase]. --- #### [datetime](/docs/server-sdks/reference/python/agents/skills/datetime) Date and time with timezone support. #### [math](/docs/server-sdks/reference/python/agents/skills/math) Secure mathematical calculations. #### [joke](/docs/server-sdks/reference/python/agents/skills/joke) Tell jokes via API Ninjas. #### [weather\_api](/docs/server-sdks/reference/python/agents/skills/weather-api) Current weather conditions. #### [web\_search](/docs/server-sdks/reference/python/agents/skills/web-search) Google Custom Search. #### [wikipedia\_search](/docs/server-sdks/reference/python/agents/skills/wikipedia-search) Wikipedia factual search. #### [google\_maps](/docs/server-sdks/reference/python/agents/skills/google-maps) Address validation and routes. #### [play\_background\_file](/docs/server-sdks/reference/python/agents/skills/play-background-file) Background audio/video playback. #### [swml\_transfer](/docs/server-sdks/reference/python/agents/skills/swml-transfer) Call transfer with pattern matching. #### [datasphere](/docs/server-sdks/reference/python/agents/skills/datasphere) DataSphere document search. #### [datasphere\_serverless](/docs/server-sdks/reference/python/agents/skills/datasphere-serverless) DataSphere serverless search. #### [native\_vector\_search](/docs/server-sdks/reference/python/agents/skills/native-vector-search) Local vector index search. #### [info\_gatherer](/docs/server-sdks/reference/python/agents/skills/info-gatherer) Configurable question collection. #### [api\_ninjas\_trivia](/docs/server-sdks/reference/python/agents/skills/api-ninjas-trivia) Trivia questions from API Ninjas. #### [spider](/docs/server-sdks/reference/python/agents/skills/spider) Web scraping and crawling. #### [claude\_skills](/docs/server-sdks/reference/python/agents/skills/claude-skills) Load SKILL.md files as tools. #### [custom\_skills](/docs/server-sdks/reference/python/agents/skills/custom-skills) Create and register custom skills. #### [mcp\_gateway](/docs/server-sdks/reference/python/agents/skills/mcp-gateway) MCP server integration. > Built-in skills catalog with configuration parameters and usage patterns. ## Docs - [api_ninjas_trivia](https://signalwire.com/docs/server-sdks/reference/python/agents/skills/api-ninjas-trivia.md): Get trivia questions from API Ninjas with configurable categories. - [claude_skills](https://signalwire.com/docs/server-sdks/reference/python/agents/skills/claude-skills.md): Load Claude Code-style SKILL.md files as agent tools. - [Custom Skills](https://signalwire.com/docs/server-sdks/reference/python/agents/skills/custom-skills.md): Create custom skills and register them from external directories or via pip packages. - [datasphere](https://signalwire.com/docs/server-sdks/reference/python/agents/skills/datasphere.md): Search documents uploaded to SignalWire DataSphere. - [datasphere_serverless](https://signalwire.com/docs/server-sdks/reference/python/agents/skills/datasphere-serverless.md): Search SignalWire DataSphere documents using a DataMap for serverless execution. - [datetime](https://signalwire.com/docs/server-sdks/reference/python/agents/skills/datetime.md): Get current date and time information with timezone support. - [google_maps](https://signalwire.com/docs/server-sdks/reference/python/agents/skills/google-maps.md): Validate addresses and compute driving routes using Google Maps. - [info_gatherer](https://signalwire.com/docs/server-sdks/reference/python/agents/skills/info-gatherer.md): Collect answers to a configurable list of questions. - [joke](https://signalwire.com/docs/server-sdks/reference/python/agents/skills/joke.md): Tell jokes using the API Ninjas joke API. - [math](https://signalwire.com/docs/server-sdks/reference/python/agents/skills/math.md): Perform mathematical calculations using a secure expression evaluator. - [mcp_gateway](https://signalwire.com/docs/server-sdks/reference/python/agents/skills/mcp-gateway.md): Connect to MCP (Model Context Protocol) servers via the MCP Gateway service. - [native_vector_search](https://signalwire.com/docs/server-sdks/reference/python/agents/skills/native-vector-search.md): Search local .swsearch vector index files. - [play_background_file](https://signalwire.com/docs/server-sdks/reference/python/agents/skills/play-background-file.md): Control background file playback during calls. - [spider](https://signalwire.com/docs/server-sdks/reference/python/agents/skills/spider.md): Fast web scraping and crawling. - [swml_transfer](https://signalwire.com/docs/server-sdks/reference/python/agents/skills/swml-transfer.md): Transfer calls between agents using SWML or direct connect. - [weather_api](https://signalwire.com/docs/server-sdks/reference/python/agents/skills/weather-api.md): Get current weather conditions for locations worldwide using WeatherAPI.com. - [web_search](https://signalwire.com/docs/server-sdks/reference/python/agents/skills/web-search.md): Search the web using the Google Custom Search API. - [wikipedia_search](https://signalwire.com/docs/server-sdks/reference/python/agents/skills/wikipedia-search.md): Search Wikipedia for factual information.