Agent Native

create-tool

This skill enables an agent to create, update, inspect, attach, and manage reusable tools in Vapi through its public API.

by VapiOfficial publisher

Identity proven by GitHub's verified organisation badge (VapiAI)

Agents
Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode, claude.ai and API
License
MIT (permissive)
Pin
ecd56bdpinned Oct 9, 2026
Context cost
about 1,800 tokenswhen the skill loads
GitHub stars
66on vapiai/skills
Scripts
None found

What it does

“Select, define, create, inspect, update, attach, detach, and verify reusable Vapi tools through the public API. Use for native call-control tools, supported provider integrations, API Request tools, custom function tools, MCP tools, tool messages, credentials, or configuration-preserving assistant attachment changes.”
The author's description, from SKILL.md

Generated summary from the skill's own text

This skill enables an agent to create, update, inspect, attach, and manage reusable tools in Vapi through its public API. It supports native call-control tools, provider integrations, API Request tools, custom function tools, and MCP tools, with strict verification against current API schemas and safety rules to prevent misconfigurations.

When to use it

  • Building or modifying Vapi tools for call control, transfers, or third-party service integrations
  • Attaching tools to assistants while preserving existing configuration settings
  • Validating tool payloads against current Vapi API schemas before deployment
  • Discovering and integrating tools from existing MCP servers

When not to

  • User lacks VAPI_API_KEY or internet access for live API operations
  • Duplicating capabilities already available in native or integration tools with a custom function
  • Building tool payloads without access to current Vapi public documentation and API reference

Install

These commands install from the publisher's repository and need no account.

skills CLI

npx skills add vapiai/skills --skill create-tool

Installs from the repository's default branch, which may have changed since the commit we checked.

GitHub CLI 2.90 or later

gh skill install vapiai/skills create-tool@ecd56bd32688be8ea6fe54029445b536333d8d9c

Installs the commit we checked (ecd56bd).

Copy by hand

Download the folder at ecd56bd and put it in .claude/skills/create-tool for Claude Code and in .agents/skills/create-tool for Codex, Cursor, Gemini CLI, GitHub Copilot and OpenCode.

Skill folder on GitHub at ecd56bd

Copy for your agent

A prompt for any coding agent. It installs this skill from GitHub at the pinned commit, copies the files as they are, and runs nothing unless you ask.

Prompt

Install the agent skill "create-tool" by Vapi.

Source, pinned to commit ecd56bd32688be8ea6fe54029445b536333d8d9c:
https://github.com/vapiai/skills/tree/ecd56bd32688be8ea6fe54029445b536333d8d9c/create-tool

1. Download that folder at exactly this commit. Do not use the default branch.
2. Copy every file unchanged, keeping the folder structure, into .claude/skills/create-tool/ for Claude Code and .agents/skills/create-tool/ for Codex, Cursor, Gemini CLI, GitHub Copilot and OpenCode. Create the folders if they do not exist.
3. Do not edit the files, and do not run any script in the folder unless I ask you to.
4. When you are done, list the files you copied and where you put them.

Listing and checks: https://www.agentnative.dev/skills/vapi/create-tool

SKILL.md at the pin

---
name: create-tool
description: Select, define, create, inspect, update, attach, detach, and verify reusable Vapi tools through the public API. Use for native call-control tools, supported provider integrations, API Request tools, custom function tools, MCP tools, tool messages, credentials, or configuration-preserving assistant attachment changes.
license: MIT
compatibility: Internet access and VAPI_API_KEY are required only for live Vapi API operations.
metadata:
  author: vapi
  version: "2.0"
---

# Vapi Tool Management

Choose the documented tool type that directly provides the requested capability. Default to a payload or implementation plan unless the user explicitly requests a live Vapi mutation.

## Safety and Source Rules

- Verify the type and every field against the current [Create Tool API](https://docs.vapi.ai/api-reference/tools/create), public OpenAPI schema, or type-specific public guide before using it.
- Never imitate a documented Vapi capability with a custom function tool.
- Never invent an endpoint, request schema, destination, phone number, assistant ID, tool ID, integration connection, credential, or secret.
- Keep secrets in Vapi credentials or the user's backend. Treat an MCP server URL containing a token as a credential.
- Distinguish tool configuration, assistant attachment, provider connection, and external implementation. They are separate deliverables and success in one does not imply success in another.

## Select the Tool Family

| Need | Select |
|---|---|
| End calls, transfer calls, hand off between assistants, send DTMF or SMS, make a SIP request, or handle voicemail | The matching native Vapi tool |
| Use a publicly documented Google Calendar, Google Sheets, Slack, GoHighLevel, or other supported provider action | The exact integration tool after resolving its connection and required resource |
| Call a known HTTP endpoint with a declarative method, URL, headers, and body | `apiRequest` |
| Send a model-selected function call to custom backend logic that implements Vapi's callback contract | `function` |
| Discover and use tools from an existing MCP server | `mcp` with the default Streamable HTTP transport |

Do not choose `function` merely because the model invokes the capability. Native, integration, API Request, and MCP tools are also model-invoked.

Do not proactively recommend or create a Code Tool (`type: "code"`); it is not generally available on most accounts. Prefer `apiRequest` for a known HTTP endpoint or `function` with the user's `server.url` for user-hosted callback logic. Discuss a Code Tool only when the user explicitly asks about it, and do not present it as the recommended option.

Read [Tool Type Selection](references/tool-types.md) before building a payload. Read only the section for the selected family.

## Procedure

1. Determine the execution mode.
   - Return JSON, code, or a contract when the user asks for a draft or does not clearly authorize a live mutation.
   - Call the Vapi API only when the user explicitly asks to create, update, attach, or detach and `VAPI_API_KEY` is available.
   - If the key is unavailable, return ready artifacts and local commands without asking the user to paste it into chat.

2. Inspect before creating.
   - Use `GET /tool` and match any supplied name and capability to existing tools.
   - Reuse one suitable existing tool when the match is unambiguous and the user does not require a new resource.
   - If several tools plausibly match, ask the user to choose. Never guess an ID.
   - Use `GET /tool/{id}` before updating an existing tool.

3. Resolve the capability and dependencies.
   - Select the tool family using the table above and current public documentation.
   - Resolve every required endpoint, destination, provider connection, calendar, spreadsheet, channel, credential, or MCP server before a live create.
   - If one value blocks a valid tool, show the useful proposed contract first and ask only for that value.

4. Build the smallest valid payload.
   - Give the model a concise, specific description of when to invoke the tool.
   - For types with `function.name`, use 1–64 characters matching `^[a-zA-Z0-9_-]+$`. Generate a stable descriptive name when the user does not supply one.
   - For `apiRequest`, validate its top-level `name`, method, URL, headers, body schema, credentials, and timeout against the current public schema.
   - Define only parameters the model must supply. Keep trusted or secret values outside the model-visible schema.
   - Omit spoken `messages` unless progress feedback is useful. When included, use only types currently accepted by the selected tool schema, such as `request-start`, `request-response-delayed`, `request-complete`, and `request-failed`.

5. Create or update safely.
   - Before a production-affecting mutation, recap the type, capability, external dependencies, and target unless the user's current instruction already unambiguously authorizes that exact mutation.
   - Create with `POST /tool`. Validate the returned `id`, type, callable name where applicable, and requested configuration.
   - For an update, send the current `type` and only changed top-level fields to `PATCH /tool/{id}`. When changing a nested object, deep-merge the requested change into that object from the fetched tool and send the merged nested object so its omitted keys are not lost. Do not resend unchanged top-level fields or response-only fields.
   - Re-fetch the tool and verify the result. Creating or updating a tool does not attach it to an assistant.

6. Attach or detach without losing assistant configuration.
   - Read [Assistant Attachments](references/assistant-attachments.md) before changing an assistant.
   - `GET /assistant/{id}`, copy the complete current `model`, merge the tool ID into or remove it from `model.toolIds`, and preserve `model.tools` plus every unrelated model field.
   - Send the complete merged model to `PATCH /assistant/{id}`. Never patch a hand-written partial model.
   - Re-fetch the assistant and verify both the requested membership and the preserved model configuration.

7. Implement external behavior only when requested.
   - For `apiRequest`, Vapi executes the configured HTTP request; do not also build a function callback server.
   - For `mcp`, the MCP server supplies the callable tools; do not duplicate them as individual Vapi function tools.
   - For a custom `function` whose backend must be built, read [Function Tool Server](references/function-tool-server.md). Do not load that reference for other tool families.

8. Handle failures honestly.
   - On `400`, correct a documented shape or validation error before at most one justified retry.
   - On `401` or `403`, stop for authentication or permission issues. On `404`, report the missing tool, assistant, destination, or dependency. On `5xx`, report the service failure.
   - Never claim creation, update, attachment, detachment, provider connection, or backend implementation succeeded until the associated operation is verified.

## API Implementation Examples

Read [Tool API Examples](references/api-examples.md) when the user requests TypeScript, Python, or cURL implementation code. Read current tool and assistant state before update or attachment changes. Placeholders are acceptable in draft artifacts, never in live requests.

## Public Sources

- [Create Tool API](https://docs.vapi.ai/api-reference/tools/create)
- [Default tools](https://docs.vapi.ai/tools/default-tools)
- [Custom tools](https://docs.vapi.ai/tools/custom-tools)
- [MCP integration](https://docs.vapi.ai/tools/mcp)

From vapiai/skills at ecd56bd, shown as plain text under its license: MIT (permissive). The license text is in create-tool/SKILL.md.

View SKILL.md on GitHub at ecd56bd

Files

5 files, 21 KB in total. Each file has a sha256 in the pin's manifest; the first 12 characters are shown.

Skill folder on GitHub at ecd56bd
All 24 skills from Vapi

More from Vapi

  • create-assistant

    Designs and creates Vapi voice assistants for phone and web by managing system prompts, provider selection, tool integration, and API validation.

    Claude Code, Codex, Cursor +4 · about 2.3K tokens · pinned 7 days ago

  • create-assistant

    This skill designs and creates Vapi voice assistants for phone and web calls.

    Claude Code, Codex, Cursor +4 · about 2.3K tokens · pinned 7 days ago

  • create-call

    This skill creates one-off outbound phone calls, web calls, and batch calls via the Vapi API.

    Claude Code, Codex, Cursor +4 · about 1.5K tokens · pinned 7 days ago

  • create-call

    This skill enables agents to create outbound phone calls, web calls, and batch calls via the Vapi API.

    Claude Code, Codex, Cursor +4 · about 1.5K tokens · pinned 7 days ago

  • create-campaign

    This skill enables agents to create, manage, and diagnose Vapi outbound campaigns for reaching multiple contacts with personalized calls using the…

    Claude Code, Codex, Cursor +4 · about 3.1K tokens · pinned 7 days ago

  • create-campaign

    This skill creates, manages, and monitors Vapi outbound calling campaigns for multi-contact operations.

    Claude Code, Codex, Cursor +4 · about 3.1K tokens · pinned 7 days ago

All AI and agents skills
  • -21risk-automation

    This skill automates 21risk operations by connecting to the 21risk toolkit through Composio's Rube MCP server.

    by ComposioOfficial publisher

    Claude Code, Codex, Cursor +3 · about 690 tokens · pinned 7 days ago

  • -2chat-automation

    This skill automates 2chat tasks by integrating with Composio's 2chat toolkit through Rube MCP.

    by ComposioOfficial publisher

    Agents not labelled yet · about 680 tokens · pinned 7 days ago

  • ably-automation

    This skill automates Ably messaging platform tasks by connecting to Composio's Ably toolkit through Rube MCP.

    by ComposioOfficial publisher

    Agents not labelled yet · about 680 tokens · pinned 7 days ago

  • abstract-automation

    This skill enables agents to automate Abstract design platform operations through Composio's Abstract toolkit via Rube MCP.

    by ComposioOfficial publisher

    Claude Code, Codex, Cursor +3 · about 690 tokens · pinned 7 days ago

  • abuselpdb-automation

    This skill automates Abuselpdb operations through Composio's toolkit via Rube MCP, enabling the agent to search for IP/domain abuse reports and manage threat…

    by ComposioOfficial publisher

    Agents not labelled yet · about 700 tokens · pinned 7 days ago

  • abyssale-automation

    This skill enables agents to automate Abyssale tasks through Composio's toolkit via Rube MCP.

    by ComposioOfficial publisher

    Claude Code, Codex, Cursor +3 · about 690 tokens · pinned 7 days ago

Open roles at Vapi

5 of 11 open roles on the jobs board

The skills listed here are third-party software, collected from public GitHub repositories as a catalog of recent skills and provided as is. Agent Native does not write or control them and is not responsible for any harm, loss or damage caused by installing or using them. Labels and checks describe what we saw at one commit and are not a guarantee. Read a skill's files before you run it. Terms of use