MCPBundler Docs
MCPBundler Docs
Back to marketplaceGetting StartedAuthenticationTutorial - Bundle to Connected Agent
API Reference
Agent A2A Tools
Agent Channels
Agent Configuration (Staging)
Create Agent Custom ToolCreate Agent GuardrailRemove Agent System ToolDelete Agent Custom ToolDelete Agent GuardrailDiscard Staged ChangesDiff Stage Against Latest PublishedGet Stage WorkflowList Agent System ToolsList Agent Custom ToolsList Agent GuardrailsUpdate Staged Voice SettingsUpdate Staged Agent SettingsPatch Stage WorkflowRegenerate Widget Embed KeyUpdate Agent Custom ToolEnable or Configure Agent System Tool
Agent Configuration (Versions)
Agent Tools
Agents
Auth
Billing
Bundler
Bundler Tool
Bundles
Call Campaigns
Catalog
Conversations
Credentials
Deployments
Discover
Embedding
Fleet
Knowledge Bases
LLM
MCP Listings
Media
OAuth Clients
OAuth2
Observability
Organisations
Realtime
Reviews
Roadmap
SCIM
STT
Suppression
Triggers
TTS
Users
Utils
Voices
Webhooks
Workflows
API ReferenceAgent Configuration (Staging)

Create Agent Custom Tool

POST
/v1/agents/{agent_id}/stage/custom-tools

Reflects unpublished staged state - see GET /agents/{agent_id}/versions/latest for what's actually live.

Authorization

OAuth2AuthorizationCodeBearer
AuthorizationBearer <token>

In: header

Path Parameters

agent_id*Agent Id
Formatuuid

Query Parameters

verify_locally?Verify Locally
Defaulttrue

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

curl -X POST "https://example.com/v1/agents/497f6eca-6276-4993-bfeb-53cbbbba6f08/stage/custom-tools" \  -H "Content-Type: application/json" \  -d '{    "name": "string",    "description": "string",    "json_schema": {},    "webhook_url": "string",    "webhook_secret": "string"  }'
{  "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",  "name": "string",  "description": "string",  "json_schema": {},  "webhook_url": "string",  "timeout_ms": 0,  "method": "GET",  "headers": [    {      "name": "string",      "value": "string"    }  ],  "query_params": [    {      "name": "string",      "source": "string"    }  ],  "path_params": [    {      "name": "string",      "source": "string"    }  ],  "body_source": "arguments",  "credential_id": "13c40afa-2996-4a0c-b2e9-68fba9462242",  "auth_placement": "bearer",  "auth_param_name": "string",  "created_at": "2019-08-24T14:15:22Z",  "updated_at": "2019-08-24T14:15:22Z"}
{  "detail": "string",  "code": "string"}
{  "detail": [    {      "loc": [        "string"      ],      "msg": "string",      "type": "string"    }  ]}

Agent Configuration (Staging)

Endpoints in the Agent Configuration (Staging) group.

Create Agent Guardrail

Next Page

name*Name

Must match ^[a-zA-Z0-9_-]+$ and be at most 64 characters - both Anthropic and OpenAI reject tool names outside this pattern, and an invalid name here would otherwise be accepted at creation time only to fail every conversation on this agent with an opaque provider error.

Match^[a-zA-Z0-9_-]+$
Length1 <= length <= 64
description*Description
Length1 <= length
json_schema*
webhook_url*Webhook Url
webhook_secret*Webhook Secret
Length1 <= length
timeout_ms?Timeout Ms

Per-call webhook timeout, honored for extended-shape tool dispatch (any tool using method, headers, query/path params, or auth beyond the legacy default). A tool left at the legacy default shape (POST, arguments body, no headers/params/auth) instead dispatches through a shared package fixed at approximately 3s connect / 5s read, which must not read per-tool config, so this value has no effect on it.

Range1000 <= value <= 30000
Default10000
method?CustomToolMethod
Default"POST"

Value in

  • "GET"
  • "POST"
  • "PUT"
  • "PATCH"
  • "DELETE"
headers?array<>
query_params?array<>
path_params?array<>
body_source?CustomToolBodySource
Default"arguments"

Value in

  • "arguments"
  • "none"
credential_id?|null
auth_placement?|null
auth_param_name?|null