{"openapi":"3.1.0","info":{"title":"APIFleet API","version":"1.1.0","description":"Workspace-scoped voice-agent management. USD 0.03/platform minute plus provider/carrier usage; minimum prepaid funding USD 10. Read operation descriptions before invoking writes or paid actions."},"servers":[{"url":"https://apifleet.dev"}],"security":[{"bearerAuth":[]}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"},"dashboardSession":{"type":"apiKey","in":"cookie","name":"af_session","description":"Owner/admin dashboard session; not a workspace API key."}}},"paths":{"/assistants":{"get":{"operationId":"list_assistants","tags":["Assistants"],"summary":"list assistants","description":"List assistants in the authenticated workspace.","parameters":[],"responses":{"200":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true}}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"list_assistants"},"post":{"operationId":"create_assistant","tags":["Assistants"],"summary":"create assistant","description":"Create a assistant. Saving configuration does not place a call. The REST response includes revision, configuration and attached resource identifiers.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Resource fields. Saving configuration does not place a call. The REST response includes revision, configuration and attached resource identifiers. Additional settings are documented in https://apifleet.dev/docs","properties":{"name":{"type":"string","minLength":1,"description":"Display name."},"instructions":{"type":"string","minLength":1,"description":"Business instructions for the assistant."},"first_message":{"type":"string","minLength":1,"description":"Opening message."},"model":{"type":"string","minLength":1,"description":"Supported model identifier."},"voice":{"type":"string","minLength":1,"description":"Voice identifier."},"pipeline_mode":{"type":"string","enum":["realtime","cascading"]}},"additionalProperties":true},"example":{"name":"Example receptionist","instructions":"Answer questions about opening hours. Do not invent bookings.","first_message":"Hello, how can I help?"}}}},"responses":{"201":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"create_assistant"}},"/assistants/{id}":{"get":{"operationId":"get_assistant","tags":["Assistants"],"summary":"get assistant","description":"Get one assistant belonging to this workspace.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200}}],"responses":{"200":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"get_assistant"},"patch":{"operationId":"update_assistant","tags":["Assistants"],"summary":"update assistant","description":"Update selected assistant fields. Omitted fields retain their values.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200}},{"name":"If-Match","in":"header","required":false,"schema":{"type":"string"},"description":"Current assistant revision; stale writes return 409."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Resource fields. Saving configuration does not place a call. The REST response includes revision, configuration and attached resource identifiers. Additional settings are documented in https://apifleet.dev/docs","properties":{"name":{"type":"string","minLength":1,"description":"Display name."},"instructions":{"type":"string","minLength":1,"description":"Business instructions for the assistant."},"first_message":{"type":"string","minLength":1,"description":"Opening message."},"model":{"type":"string","minLength":1,"description":"Supported model identifier."},"voice":{"type":"string","minLength":1,"description":"Voice identifier."},"pipeline_mode":{"type":"string","enum":["realtime","cascading"]}},"additionalProperties":true},"example":{"name":"Updated example"}}}},"responses":{"200":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"update_assistant"},"delete":{"operationId":"delete_assistant","tags":["Assistants"],"summary":"delete assistant","description":"Delete this assistant. Review the identifier before deleting; the change cannot be undone.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200}},{"name":"If-Match","in":"header","required":false,"schema":{"type":"string"},"description":"Current assistant revision; stale writes return 409."}],"responses":{"204":{"description":"Success, empty body"},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"delete_assistant"}},"/assistants/{id}/tools":{"put":{"operationId":"set_assistant_tools","tags":["Assistants"],"summary":"set assistant tools","description":"Replace all attached HTTP tools with existing tools owned by this workspace. Empty tool_ids detaches every tool.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Attachment set.","properties":{"tool_ids":{"type":"array","items":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200},"maxItems":200,"description":"Complete replacement list; an empty list removes every attachment."}},"additionalProperties":true},"example":{"tool_ids":["TOOL_ID"]}}}},"responses":{"200":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"set_assistant_tools"}},"/assistants/{id}/knowledge":{"put":{"operationId":"set_assistant_knowledge","tags":["Assistants"],"summary":"set assistant knowledge","description":"Replace all attached knowledge documents. Each document must belong to this workspace.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Attachment set.","properties":{"knowledge_ids":{"type":"array","items":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200},"maxItems":200,"description":"Complete replacement list; an empty list removes every attachment."}},"additionalProperties":true},"example":{"knowledge_ids":["DOCUMENT_ID"]}}}},"responses":{"200":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"set_assistant_knowledge"}},"/assistants/{id}/test-token":{"post":{"operationId":"create_browser_test_token","tags":["Assistants"],"summary":"create browser test token","description":"Issue a short-lived browser voice-test URL. Opening its WebSocket can incur usage. Never publish the returned token.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Test session options.","properties":{"ttl_seconds":{"type":"integer","minimum":1,"description":"Token lifetime, clamped to 30–3600 seconds."},"max_duration_seconds":{"type":"integer","minimum":1,"description":"Call duration limit, clamped to 30–3600 seconds."}},"additionalProperties":true},"example":{"ttl_seconds":300,"max_duration_seconds":60}}}},"responses":{"200":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"create_browser_test_token"}},"/numbers":{"get":{"operationId":"list_numbers","tags":["Phone numbers"],"summary":"list numbers","description":"List number bindings. This does not buy phone numbers from a carrier.","parameters":[],"responses":{"200":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true}}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"list_numbers"}},"/numbers/{number}":{"put":{"operationId":"bind_number","tags":["Phone numbers"],"summary":"bind number","description":"Bind an existing carrier number to a workspace assistant. This changes incoming call routing; configure the carrier webhook separately.","parameters":[{"name":"number","in":"path","required":true,"schema":{"type":"string","minLength":1,"description":"International E.164 number, including the leading +.","pattern":"^\\+[1-9]\\d{6,14}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Number binding.","properties":{"assistant_id":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200},"provider":{"type":"string","enum":["telnyx","twilio","voximplant","voipcloud"]},"region":{"type":"string","minLength":1,"description":"Carrier region, when required."}},"additionalProperties":true},"example":{"assistant_id":"ASSISTANT_ID","provider":"telnyx"}}}},"responses":{"200":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"bind_number"},"delete":{"operationId":"unbind_number","tags":["Phone numbers"],"summary":"unbind number","description":"Remove the routing binding. This does not release or cancel the carrier number.","parameters":[{"name":"number","in":"path","required":true,"schema":{"type":"string","minLength":1,"description":"International E.164 number, including the leading +.","pattern":"^\\+[1-9]\\d{6,14}$"}}],"responses":{"204":{"description":"Success, empty body"},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"unbind_number"}},"/calls":{"get":{"operationId":"list_calls","tags":["Calls"],"summary":"list calls","description":"Read call logs, summary statistics and pagination. Each row may contain transcript, analysis, costs and recording links; recordings require separate authentication.","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number; default 1."}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Rows per page; default 200, maximum 1000.","maximum":1000}},{"name":"search","in":"query","required":false,"schema":{"type":"string","minLength":1,"description":"Text or call identifier search."}},{"name":"assistant_id","in":"query","required":false,"schema":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200}},{"name":"source","in":"query","required":false,"schema":{"type":"string","minLength":1,"description":"Call source filter."}},{"name":"model","in":"query","required":false,"schema":{"type":"string","minLength":1,"description":"Model filter."}},{"name":"voice","in":"query","required":false,"schema":{"type":"string","minLength":1,"description":"Voice filter."}},{"name":"outcome","in":"query","required":false,"schema":{"type":"string","minLength":1,"description":"Outcome filter."}},{"name":"sentiment","in":"query","required":false,"schema":{"type":"string","minLength":1,"description":"Sentiment filter."}},{"name":"date_from","in":"query","required":false,"schema":{"type":"string","minLength":1,"description":"Start date filter."}},{"name":"date_to","in":"query","required":false,"schema":{"type":"string","minLength":1,"description":"End date filter."}},{"name":"sort","in":"query","required":false,"schema":{"type":"string","minLength":1,"description":"Supported sort column; default started_at."}},{"name":"order","in":"query","required":false,"schema":{"type":"string","enum":["asc","desc"]}}],"responses":{"200":{"description":"An object containing calls[], stats and pagination, not a bare array.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["calls","stats","pagination"],"properties":{"calls":{"type":"array","items":{"type":"object"}},"stats":{"type":"object"},"pagination":{"type":"object"}}}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"list_calls"}},"/calls/outbound":{"post":{"operationId":"create_outbound_call","tags":["Calls"],"summary":"create outbound call","description":"Place a real telephone call. Ask the user to approve recipient, caller number and expected usage first. Billing/provider/carrier checks are the same as REST. No automatic retry or universal idempotency guarantee.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Call request.","properties":{"assistant_id":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200},"to":{"type":"string","minLength":1,"description":"International E.164 number, including the leading +.","pattern":"^\\+[1-9]\\d{6,14}$"},"from":{"type":"string","minLength":1,"description":"International E.164 number, including the leading +.","pattern":"^\\+[1-9]\\d{6,14}$"},"user_number":{"type":"string","minLength":1,"description":"International E.164 number, including the leading +.","pattern":"^\\+[1-9]\\d{6,14}$"}},"additionalProperties":true},"example":{"assistant_id":"ASSISTANT_ID","to":"+13125550101","from":"+13125550100"}}}},"responses":{"201":{"description":"201 means the carrier accepted initiation; it does not mean the conversation completed. Inspect call logs afterward.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"create_outbound_call"}},"/calls/{id}/recording":{"get":{"operationId":"get_recording","tags":["Calls"],"summary":"get recording","description":"Download authenticated recording bytes, supporting Range requests. Keep customer recordings private.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200}}],"responses":{"200":{"description":"Native resource response","content":{"audio/wav":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-unavailable":true},"delete":{"operationId":"delete_recording","tags":["Calls"],"summary":"delete recording","description":"Permanently remove a call recording. The call log remains. Confirm the identifier before deleting.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200}}],"responses":{"204":{"description":"Success, empty body"},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"delete_recording"}},"/calls/{id}/waveform":{"get":{"operationId":"get_waveform","tags":["Calls"],"summary":"get waveform","description":"Read recording waveform metadata and available audio channels.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200}}],"responses":{"200":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"get_waveform"}},"/tools":{"get":{"operationId":"list_tools","tags":["HTTP tools"],"summary":"list tools","description":"List http tools in the authenticated workspace.","parameters":[],"responses":{"200":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true}}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"list_tools"},"post":{"operationId":"create_tool","tags":["HTTP tools"],"summary":"create tool","description":"Create a tool. Creating a tool returns its signing secret once. Configuring a tool does not invoke its URL; attached tools can call it during conversations.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Resource fields. Creating a tool returns its signing secret once. Configuring a tool does not invoke its URL; attached tools can call it during conversations. Additional settings are documented in https://apifleet.dev/docs","properties":{"name":{"type":"string","minLength":1,"description":"Function name: letters, digits and underscore; cannot start with a digit."},"url":{"type":"string","minLength":1,"description":"Public HTTPS callback URL; private network targets are rejected."},"method":{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE"]},"description":{"type":"string","minLength":1,"description":"Tool purpose."},"parameters":{"type":"object","description":"JSON Schema for tool arguments.","properties":{},"additionalProperties":true},"timeout_ms":{"type":"integer","minimum":500,"maximum":30000}},"additionalProperties":true},"example":{"name":"lookup_hours","description":"Read opening hours.","url":"https://example.com/voice/hours","method":"GET","parameters":{"type":"object","properties":{}}}}}},"responses":{"201":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"create_tool"}},"/tools/{id}":{"get":{"operationId":"get_tool","tags":["HTTP tools"],"summary":"get tool","description":"Get one tool belonging to this workspace.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200}}],"responses":{"200":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"get_tool"},"patch":{"operationId":"update_tool","tags":["HTTP tools"],"summary":"update tool","description":"Update selected tool fields. Omitted fields retain their values.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Resource fields. Creating a tool returns its signing secret once. Configuring a tool does not invoke its URL; attached tools can call it during conversations. Additional settings are documented in https://apifleet.dev/docs","properties":{"name":{"type":"string","minLength":1,"description":"Function name: letters, digits and underscore; cannot start with a digit."},"url":{"type":"string","minLength":1,"description":"Public HTTPS callback URL; private network targets are rejected."},"method":{"type":"string","enum":["GET","POST","PUT","PATCH","DELETE"]},"description":{"type":"string","minLength":1,"description":"Tool purpose."},"parameters":{"type":"object","description":"JSON Schema for tool arguments.","properties":{},"additionalProperties":true},"timeout_ms":{"type":"integer","minimum":500,"maximum":30000}},"additionalProperties":true},"example":{"name":"Updated example"}}}},"responses":{"200":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"update_tool"},"delete":{"operationId":"delete_tool","tags":["HTTP tools"],"summary":"delete tool","description":"Delete this tool. Review the identifier before deleting; the change cannot be undone.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200}}],"responses":{"204":{"description":"Success, empty body"},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"delete_tool"}},"/knowledge":{"get":{"operationId":"list_knowledge_documents","tags":["Knowledge"],"summary":"list knowledge documents","description":"List knowledge in the authenticated workspace.","parameters":[],"responses":{"200":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true}}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"list_knowledge_documents"},"post":{"operationId":"create_knowledge_document","tags":["Knowledge"],"summary":"create knowledge document","description":"Create a knowledge document. Attach documents separately to use them in an assistant. Total injected knowledge has a 200 KiB limit.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Resource fields. Attach documents separately to use them in an assistant. Total injected knowledge has a 200 KiB limit. Additional settings are documented in https://apifleet.dev/docs","properties":{"name":{"type":"string","minLength":1,"description":"Unique document name in this workspace."},"content":{"type":"string","minLength":1,"description":"Plain text; maximum 50 KiB per document.","maxLength":51200},"source":{"type":"string","minLength":1,"description":"Source label; defaults to text."}},"additionalProperties":true},"example":{"name":"Opening hours","content":"Open Monday to Friday, 09:00–17:00.","source":"text"}}}},"responses":{"201":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"create_knowledge_document"}},"/knowledge/{id}":{"get":{"operationId":"get_knowledge_document","tags":["Knowledge"],"summary":"get knowledge document","description":"Get one knowledge document belonging to this workspace.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200}}],"responses":{"200":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"get_knowledge_document"},"patch":{"operationId":"update_knowledge_document","tags":["Knowledge"],"summary":"update knowledge document","description":"Update selected knowledge document fields. Omitted fields retain their values.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Resource fields. Attach documents separately to use them in an assistant. Total injected knowledge has a 200 KiB limit. Additional settings are documented in https://apifleet.dev/docs","properties":{"name":{"type":"string","minLength":1,"description":"Unique document name in this workspace."},"content":{"type":"string","minLength":1,"description":"Plain text; maximum 50 KiB per document.","maxLength":51200},"source":{"type":"string","minLength":1,"description":"Source label; defaults to text."}},"additionalProperties":true},"example":{"name":"Updated example"}}}},"responses":{"200":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"update_knowledge_document"},"delete":{"operationId":"delete_knowledge_document","tags":["Knowledge"],"summary":"delete knowledge document","description":"Delete this knowledge document. Review the identifier before deleting; the change cannot be undone.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200}}],"responses":{"204":{"description":"Success, empty body"},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"delete_knowledge_document"}},"/webhooks":{"get":{"operationId":"list_webhooks","tags":["Webhooks"],"summary":"list webhooks","description":"List webhooks in the authenticated workspace.","parameters":[],"responses":{"200":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true}}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"list_webhooks"},"post":{"operationId":"create_webhook","tags":["Webhooks"],"summary":"create webhook","description":"Create a webhook. Creation returns a signing secret once; verify delivery signatures against the raw body. Events may be retried.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Resource fields. Creation returns a signing secret once; verify delivery signatures against the raw body. Events may be retried. Additional settings are documented in https://apifleet.dev/docs","properties":{"url":{"type":"string","minLength":1,"description":"Public HTTPS receiver."},"events":{"type":"array","items":{"type":"string","minLength":1,"description":"Event name, e.g. call.ended or assistant.updated."}},"enabled":{"type":"boolean"}},"additionalProperties":true},"example":{"url":"https://example.com/hooks/apifleet","events":["call.ended"]}}}},"responses":{"201":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"create_webhook"}},"/webhooks/{id}":{"patch":{"operationId":"update_webhook","tags":["Webhooks"],"summary":"update webhook","description":"Update selected webhook fields. Omitted fields retain their values.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Resource fields. Creation returns a signing secret once; verify delivery signatures against the raw body. Events may be retried. Additional settings are documented in https://apifleet.dev/docs","properties":{"url":{"type":"string","minLength":1,"description":"Public HTTPS receiver."},"events":{"type":"array","items":{"type":"string","minLength":1,"description":"Event name, e.g. call.ended or assistant.updated."}},"enabled":{"type":"boolean"}},"additionalProperties":true},"example":{"enabled":false}}}},"responses":{"200":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"update_webhook"},"delete":{"operationId":"delete_webhook","tags":["Webhooks"],"summary":"delete webhook","description":"Delete this webhook. Review the identifier before deleting; the change cannot be undone.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200}}],"responses":{"204":{"description":"Success, empty body"},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"delete_webhook"}},"/simulations/personas":{"get":{"operationId":"list_simulation_personas","tags":["Simulation personas"],"summary":"list simulation personas","description":"List simulation personas in the authenticated workspace.","parameters":[],"responses":{"200":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true}}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"list_simulation_personas"},"post":{"operationId":"create_simulation_persona","tags":["Simulation personas"],"summary":"create simulation persona","description":"Create a simulation persona. ","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Resource fields.  Additional settings are documented in https://apifleet.dev/docs","properties":{"name":{"type":"string","minLength":1,"description":"Persona name."},"system_prompt":{"type":"string","minLength":1,"description":"Instructions for the simulated caller."}},"additionalProperties":true},"example":{"name":"Opening-hours caller","system_prompt":"Ask when the business closes on Friday."}}}},"responses":{"201":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"create_simulation_persona"}},"/simulations/personas/{id}":{"get":{"operationId":"get_simulation_persona","tags":["Simulation personas"],"summary":"get simulation persona","description":"Get one simulation persona belonging to this workspace.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200}}],"responses":{"200":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"get_simulation_persona"},"patch":{"operationId":"update_simulation_persona","tags":["Simulation personas"],"summary":"update simulation persona","description":"Update selected simulation persona fields. Omitted fields retain their values.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Resource fields.  Additional settings are documented in https://apifleet.dev/docs","properties":{"name":{"type":"string","minLength":1,"description":"Persona name."},"system_prompt":{"type":"string","minLength":1,"description":"Instructions for the simulated caller."}},"additionalProperties":true},"example":{"name":"Updated example"}}}},"responses":{"200":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"update_simulation_persona"},"delete":{"operationId":"delete_simulation_persona","tags":["Simulation personas"],"summary":"delete simulation persona","description":"Delete this simulation persona. Review the identifier before deleting; the change cannot be undone.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200}}],"responses":{"204":{"description":"Success, empty body"},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"delete_simulation_persona"}},"/simulations/scenarios":{"get":{"operationId":"list_simulation_scenarios","tags":["Simulation scenarios"],"summary":"list simulation scenarios","description":"List simulation scenarios in the authenticated workspace.","parameters":[],"responses":{"200":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true}}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"list_simulation_scenarios"},"post":{"operationId":"create_simulation_scenario","tags":["Simulation scenarios"],"summary":"create simulation scenario","description":"Create a simulation scenario. ","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Resource fields.  Additional settings are documented in https://apifleet.dev/docs","properties":{"name":{"type":"string","minLength":1,"description":"Scenario name."},"instructions":{"type":"string","minLength":1,"description":"Scenario instructions."},"evaluations":{"type":"array","items":{"type":"object","description":"Evaluation specification; see simulation documentation.","properties":{},"additionalProperties":true}}},"additionalProperties":true},"example":{"name":"Ask opening hours","instructions":"Find out when the business closes on Friday.","evaluations":[{"kind":"transcript","role":"assistant","includes":"17:00"}]}}}},"responses":{"201":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"create_simulation_scenario"}},"/simulations/scenarios/{id}":{"get":{"operationId":"get_simulation_scenario","tags":["Simulation scenarios"],"summary":"get simulation scenario","description":"Get one simulation scenario belonging to this workspace.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200}}],"responses":{"200":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"get_simulation_scenario"},"patch":{"operationId":"update_simulation_scenario","tags":["Simulation scenarios"],"summary":"update simulation scenario","description":"Update selected simulation scenario fields. Omitted fields retain their values.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Resource fields.  Additional settings are documented in https://apifleet.dev/docs","properties":{"name":{"type":"string","minLength":1,"description":"Scenario name."},"instructions":{"type":"string","minLength":1,"description":"Scenario instructions."},"evaluations":{"type":"array","items":{"type":"object","description":"Evaluation specification; see simulation documentation.","properties":{},"additionalProperties":true}}},"additionalProperties":true},"example":{"name":"Updated example"}}}},"responses":{"200":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"update_simulation_scenario"},"delete":{"operationId":"delete_simulation_scenario","tags":["Simulation scenarios"],"summary":"delete simulation scenario","description":"Delete this simulation scenario. Review the identifier before deleting; the change cannot be undone.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200}}],"responses":{"204":{"description":"Success, empty body"},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"delete_simulation_scenario"}},"/simulations":{"get":{"operationId":"list_simulations","tags":["Simulations"],"summary":"list simulations","description":"List simulations in the authenticated workspace.","parameters":[{"name":"assistant_id","in":"query","required":false,"schema":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200}}],"responses":{"200":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true}}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"list_simulations"},"post":{"operationId":"create_simulation","tags":["Simulations"],"summary":"create simulation","description":"Create a simulation. ","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Resource fields.  Additional settings are documented in https://apifleet.dev/docs","properties":{"assistant_id":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200},"persona_id":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200},"scenario_id":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200},"name":{"type":"string","minLength":1,"description":"Optional simulation name."}},"additionalProperties":true},"example":{"assistant_id":"ASSISTANT_ID","persona_id":"PERSONA_ID","scenario_id":"SCENARIO_ID"}}}},"responses":{"201":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"create_simulation"}},"/simulations/{id}":{"get":{"operationId":"get_simulation","tags":["Simulations"],"summary":"get simulation","description":"Get one simulation belonging to this workspace.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200}}],"responses":{"200":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"get_simulation"},"patch":{"operationId":"update_simulation","tags":["Simulations"],"summary":"update simulation","description":"Update selected simulation fields. Omitted fields retain their values.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Resource fields.  Additional settings are documented in https://apifleet.dev/docs","properties":{"assistant_id":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200},"persona_id":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200},"scenario_id":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200},"name":{"type":"string","minLength":1,"description":"Optional simulation name."}},"additionalProperties":true},"example":{"name":"Friday hours check"}}}},"responses":{"200":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"update_simulation"},"delete":{"operationId":"delete_simulation","tags":["Simulations"],"summary":"delete simulation","description":"Delete this simulation. Review the identifier before deleting; the change cannot be undone.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200}}],"responses":{"204":{"description":"Success, empty body"},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"delete_simulation"}},"/simulations/runs":{"get":{"operationId":"list_simulation_runs","tags":["Simulation runs"],"summary":"list simulation runs","description":"List simulation runs and pagination; inspect status before starting another run.","parameters":[{"name":"assistant_id","in":"query","required":false,"schema":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200}},{"name":"simulation_id","in":"query","required":false,"schema":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200}},{"name":"batch_id","in":"query","required":false,"schema":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["queued","running","completed","error"]}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Page number."}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Rows per page."}}],"responses":{"200":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"list_simulation_runs"}},"/simulations/runs/{id}":{"get":{"operationId":"get_simulation_run","tags":["Simulation runs"],"summary":"get simulation run","description":"Read a run, its evaluations and linked call when available.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200}}],"responses":{"200":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"get_simulation_run"},"delete":{"operationId":"delete_simulation_run","tags":["Simulation runs"],"summary":"delete simulation run","description":"Delete a completed simulation result. Running runs may reject deletion.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200}}],"responses":{"204":{"description":"Success, empty body"},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"delete_simulation_run"}},"/simulations/{id}/runs":{"post":{"operationId":"start_simulation_run","tags":["Simulation runs"],"summary":"start simulation run","description":"Queue an asynchronous test. Models and speech can incur usage. Approve the run first and poll the returned identifier; do not enqueue again while it is running.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Run options.","properties":{"mode":{"type":"string","enum":["chat","voice"],"default":"chat"}},"additionalProperties":true},"example":{"mode":"chat"}}}},"responses":{"201":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"start_simulation_run"}},"/simulations/runs/batch":{"post":{"operationId":"start_simulation_batch","tags":["Simulation runs"],"summary":"start simulation batch","description":"Queue every simulation for one assistant. This can incur multiple test runs; approve the batch first.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Batch options.","properties":{"assistant_id":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200},"mode":{"type":"string","enum":["chat","voice"],"default":"chat"}},"additionalProperties":true},"example":{"assistant_id":"ASSISTANT_ID","mode":"chat"}}}},"responses":{"201":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"start_simulation_batch"}},"/tts/rates":{"get":{"operationId":"list_tts_rates","tags":["Voice and speech"],"summary":"list tts rates","description":"Read configured voice-cost reference rates. These are not an invoice or a complete call price.","parameters":[],"responses":{"200":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"list_tts_rates"}},"/tts/voices":{"get":{"operationId":"list_tts_voices","tags":["Voice and speech"],"summary":"list tts voices","description":"Read a provider voice catalog using configured server-side credentials. Catalog failure may return an empty list and error; it is not evidence the provider has no voices.","parameters":[{"name":"provider","in":"query","required":false,"schema":{"type":"string","minLength":1,"description":"Voice provider identifier."}}],"responses":{"200":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"list_tts_voices"}},"/voice-presets":{"get":{"operationId":"list_voice_presets","tags":["Voice and speech"],"summary":"list voice presets","description":"Read configured runnable voice presets. Provider catalog requests may reach a vendor.","parameters":[{"name":"provider","in":"query","required":false,"schema":{"type":"string","minLength":1,"description":"Optional catalog provider."}},{"name":"realtime_provider","in":"query","required":false,"schema":{"type":"string","minLength":1,"description":"Optional realtime provider."}},{"name":"model","in":"query","required":false,"schema":{"type":"string","minLength":1,"description":"Optional realtime model."}}],"responses":{"200":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"list_voice_presets"}},"/assistants/{id}/voice-presets":{"get":{"operationId":"get_assistant_voice_presets","tags":["Voice and speech"],"summary":"get assistant voice presets","description":"Read voices compatible with this assistant configuration.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200}}],"responses":{"200":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"get_assistant_voice_presets"}},"/tts/settings-spec":{"get":{"operationId":"get_tts_settings","tags":["Voice and speech"],"summary":"get tts settings","description":"Read supported provider voice settings and validation ranges.","parameters":[{"name":"provider","in":"query","required":false,"schema":{"type":"string","minLength":1,"description":"Optional voice provider."}}],"responses":{"200":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"get_tts_settings"}},"/tts/preview":{"post":{"operationId":"preview_voice","tags":["Voice and speech"],"summary":"preview voice","description":"Generate a short fixed voice sample. Can incur provider usage; returns audio bytes. Play from the dashboard or call REST directly.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Voice provider and voice selection; see Models & voices.","properties":{},"additionalProperties":true},"example":{"provider":"piper","voice":"en_US-lessac-medium"}}}},"responses":{"200":{"description":"Native resource response","content":{"audio/wav":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-unavailable":true}},"/stt/transcribe":{"post":{"operationId":"transcribe_audio","tags":["Voice and speech"],"summary":"transcribe audio","description":"Transcribe an uploaded or inline audio sample. Can incur provider usage. Use the REST audio-upload contract; live call transcription is configured on the assistant.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Audio request; see the speech transcription section.","properties":{},"additionalProperties":true},"example":{"audio_base64":"BASE64_AUDIO","mime_type":"audio/wav"}}}},"responses":{"200":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-unavailable":true}},"/credentials":{"get":{"operationId":"list_provider_credentials","tags":["Credentials"],"summary":"list provider credentials","description":"List which provider credentials are configured. Returns metadata only, never provider secret values.","parameters":[],"responses":{"200":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true}}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"list_provider_credentials"}},"/credentials/{provider}":{"put":{"operationId":"set_provider_credentials","tags":["Credentials"],"summary":"set provider credentials","description":"Store provider credentials through a trusted backend or the dashboard. Do not paste provider secrets into a model conversation. Provider fields vary; see Tenant credentials.","parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","minLength":1,"description":"Provider identifier, e.g. openai or telnyx."}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Provider-specific secret fields.","properties":{},"additionalProperties":true},"example":{"api_key":"YOUR_PROVIDER_KEY"}}}},"responses":{"200":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-unavailable":true},"delete":{"operationId":"delete_provider_credentials","tags":["Credentials"],"summary":"delete provider credentials","description":"Remove a provider credential. Dependent live calls may stop working. Use REST or the credentials dashboard.","parameters":[{"name":"provider","in":"path","required":true,"schema":{"type":"string","minLength":1,"description":"Provider identifier."}}],"responses":{"204":{"description":"Success, empty body"},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-unavailable":true}},"/api-keys":{"get":{"operationId":"list_api_keys","tags":["API keys"],"summary":"list api keys","description":"List this workspace API-key metadata. Full key values cannot be retrieved.","parameters":[],"responses":{"200":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true}}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"list_api_keys"},"post":{"operationId":"create_api_key","tags":["API keys"],"summary":"create api key","description":"Create a new full workspace key. The secret is returned once. Store it privately; never put it in public client code.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Key label.","properties":{"name":{"type":"string","minLength":1,"description":"Human-readable key label."}},"additionalProperties":true},"example":{"name":"Backend integration"}}}},"responses":{"201":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"create_api_key"}},"/api-keys/{id}":{"delete":{"operationId":"revoke_api_key","tags":["API keys"],"summary":"revoke api key","description":"Revoke a workspace API key immediately. Revoking the key in use disconnects this MCP client on its next request.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","minLength":1,"description":"Resource identifier returned by a previous request.","pattern":"^[A-Za-z0-9_-]+$","maxLength":200}}],"responses":{"204":{"description":"Success, empty body"},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"revoke_api_key"}},"/billing/wallet":{"get":{"operationId":"get_wallet","tags":["Billing"],"summary":"get wallet","description":"Read available, reserved and total prepaid funds, policy, funding availability and runtime enforcement. Amounts ending in microusd are integer millionths of a USD.","parameters":[],"responses":{"200":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"get_wallet"}},"/billing/policy":{"get":{"operationId":"get_billing_policy","tags":["Billing"],"summary":"get billing policy","description":"Read the actual workspace policy. Internal exempt workspaces can differ from the public tariff.","parameters":[],"responses":{"200":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"get_billing_policy"}},"/billing/ledger":{"get":{"operationId":"list_balance_activity","tags":["Billing"],"summary":"list balance activity","description":"Read balance activity and pagination cursor. Funding is credited only after verified payment processing.","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Maximum entries; defaults to 50."}},{"name":"before","in":"query","required":false,"schema":{"type":"integer","minimum":1,"description":"Return entries before this ledger identifier."}}],"responses":{"200":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"list_balance_activity"}},"/billing/payments":{"get":{"operationId":"list_payments","tags":["Billing"],"summary":"list payments","description":"Read confirmed and pending workspace payment records for the configured live/test environment.","parameters":[],"responses":{"200":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"list_payments"}},"/billing/checkout":{"post":{"operationId":"create_checkout","tags":["Billing"],"summary":"create checkout","description":"Open the owner-only funding flow from the billing dashboard. Workspace API keys cannot start checkout.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"Checkout is initiated by the dashboard; no amount body is accepted here.","properties":{},"additionalProperties":true},"example":{}}}},"responses":{"201":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-unavailable":true,"security":[{"dashboardSession":[]}]}},"/metrics":{"get":{"operationId":"get_metrics","tags":["Metrics"],"summary":"get metrics","description":"Read the authenticated workspace metrics snapshot. Metrics may reset with the application process and are not a complete billing ledger.","parameters":[],"responses":{"200":{"description":"Native resource response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid input"},"401":{"description":"Invalid or missing workspace key"},"403":{"description":"Not permitted"},"404":{"description":"Resource not found in this workspace"},"409":{"description":"Revision, state or billing conflict"},"429":{"description":"Throttled; follow Retry-After"}},"x-mcp-tool":"get_metrics"}}}}