MCP endpoint for AI agents
Connect an AI agent to the Kivel MCP endpoint at /mcp to run utilities and manage webhook inboxes, mock APIs, files and mock MCP servers over HTTP.
Updated 30 October 2026What the platform MCP endpoint does
https://kivel.io/mcp is a Model Context Protocol server that gives an agent the same capabilities as the HTTP API: run any executable utility, and create, inspect, renew, share and delete temporary resources. It shares permissions and quotas with HTTP, so an agent using your API key works within your workspace plan.
This endpoint is different from a mock MCP server. The platform endpoint exposes Kivel itself; a mock MCP server at /mcp/mock/{id} returns tools and responses you configure.
Connect a client
Configure your client for Streamable HTTP with the URL https://kivel.io/mcp. Add Authorization: Bearer with an API key to use your workspace; without it the agent works anonymously. Initialize before calling tools.
Requests are POST with Accept: application/json, text/event-stream. Responses are plain JSON. GET returns 405 because SSE streams and transport sessions are not provided. Supported protocol versions are 2025-11-25, 2025-06-18 and 2025-03-26. Platform request bodies can be up to 16 MiB, including Base64 file input, with four concurrent requests admitted before body parsing. Individual file limits still apply.
curl https://kivel.io/mcp \
-H "Authorization: Bearer $KIVEL_API_KEY" \
-H 'Accept: application/json, text/event-stream' \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{
"name":"run_tool",
"arguments":{"toolId":"json","input":"{\"hello\":true}"}
}}'Available tools
tools/list returns these tools with input schemas and annotations. Tool results are text content containing JSON.
| Tool | Purpose |
|---|---|
| search_tools | Find executable utilities by keyword; preferred over listing the full catalog |
| list_tools | List executable utility IDs |
| describe_tool | Options, defaults, limits and examples for one tool ID |
| run_tool | Run a utility with toolId, input, options and file or files (1 to 20) |
| create_webhook_inbox | Create an inbox; optional visibility |
| inspect_webhook_inbox | Read inbox details and captured requests |
| wait_for_webhook | Wait for new requests; after is the last request ID seen |
| set_webhook_response | Configure status, body, content type, headers and delay; reset restores defaults |
| delete_webhook_inbox | Delete an inbox and its history |
| start_login / finish_login / start_trial | Connect through human approval, or start a capped trial |
| save_credential / list_credentials / reveal_credential / generate_password | Encrypted account credentials with one human approval per reveal by default |
| create_email_inbox / list_emails / wait_for_email | Receive email with extracted codes and links |
| list_email_threads / get_email_thread | List conversations in one inbox or across the workspace and read a full thread |
| email_draft / email_inbox_rules | Save drafts, submit for approval or schedule delivery, and read inbox address rules |
| memory_set / memory_get / memory_list / memory_delete | Workspace-scoped JSON memory |
| create_monitor / list_monitors / inspect_monitor / pause_monitor / ping_monitor / delete_monitor | Manage uptime, SSL and heartbeat checks |
| ask_human / wait_for_approval | Ask and wait; answering stays in the human browser |
| workspace_status | Read agents, activity, plan limits, usage or human questions |
| create_mock_api | Create a mock API from name and routes |
| call_mock_api | Call a mock route or mutate CRUD data with caller access |
| inspect_mock_api | Read a mock configuration and usage |
| delete_mock_api | Delete a mock API |
| upload_temporary_file | Upload a file up to 64 KiB as Base64; HTTP/SDK/CLI support larger files |
| inspect_temporary_file | Read file metadata and remaining downloads |
| download_temporary_file | Download a file up to 64 KiB as Base64; uses one download |
| delete_temporary_file | Delete a file |
| resource_request | Manage supported resource lifecycle operations; create webhooks, email inboxes, mocks and mock MCP servers; read calls/deliveries and configure webhook response/forwarding |
Credentials inside tool calls
The inspect_*, delete_* and wait tools take a resource id. Anonymous resources also require the inspection or management token returned at creation. Resources owned by the authenticated workspace do not need a separate management token. download_temporary_file takes the private access token as accessToken, separate from the management token.
resource_request takes kind (inboxes, mocks, files, mcp-servers or email-inboxes), action (create, inspect, update, delete, renew, sharing, list, reset, calls, response, forward or deliveries), and optionally id, token, config, ttlSeconds, persistent and visibility. It calls the same HTTP endpoints, so its results match the HTTP responses. Email supports create (config.activeDays and paid config.localPart), inspect, delete, paid renew and forward (config.url or null). Free inboxes cannot be renewed. Messages require workspace access; existing anonymous inboxes can expire naturally. response and forward accept config; config.reset=true restores defaults. update, calls and reset apply to mocks; response, forward and deliveries apply to webhooks.
Errors
Invalid arguments return a JSON-RPC error with code -32602, and unknown methods return -32601. Quota, permission and resource failures return a tool result with isError: true and an error message. Some failures also include an HTTP status or request ID; clients must not require those fields on every error.
Frequently asked questions
What is the Kivel MCP server URL?
https://kivel.io/mcp, using Streamable HTTP. Send Authorization: Bearer with an API key to use your workspace allowances.
Can an agent use Kivel MCP without an account?
Yes. Without Authorization it works with anonymous allowances, and resources it creates are managed with the tokens returned in the tool results.
Why does my MCP client get 406 or 405?
406 means the Accept header does not include both application/json and text/event-stream. 405 means the client sent GET to open an SSE stream, which this endpoint does not provide.
How does an agent discover which utilities it can run?
Use search_tools with query to find relevant utilities, then describe_tool for options, defaults and limits before run_tool. list_tools returns the full executable list when needed.