API reference

Base URL: https://www.prompt-tm.com/api/v3. Send your project key as x-api-key (or Authorization: Bearer). Bodies are JSON. Errors look like this:

{ "error": { "message": "auth_config.id and user_id are required.", "code": "bad_request", "status": 400 } }

Lists take limit (up to 200) and cursor, and return items and next_cursor.

Toolkits and tools (public, no key)

MethodPathNotes
GET/toolkitscategory, search. Returns items, categories.
GET/toolkits/{slug}Auth methods with their fields, tools, triggers.
GET/toolstoolkit_slug (comma list), tool_slugs, query, format=openai|openai_responses|anthropic|mcp.
GET/tools/{slug}One tool with input_parameters. Takes format too.
GET/triggers_typestoolkit_slugs.
GET/triggers_types/{slug}Config schema and example payload.

Execute

POST /tools/execute/{slug}

{ "user_id": "alice", "arguments": { "owner": "acme", "repo": "web", "title": "Bug" } }

Pass connected_account_id instead of user_id to pick an account. The answer is always:

{ "data": { "...": "..." }, "error": null, "successful": true, "log_id": "log_..." }

A failed call answers 400 with successful: false and an error the agent can act on: invalid arguments, no active connection, or the app's own error message.

POST /tools/execute/proxy

{ "toolkit_slug": "github", "endpoint": "/user/emails", "method": "GET", "user_id": "alice",
  "parameters": [{ "name": "per_page", "value": 5, "type": "query" }] }

endpoint must be a path. It is resolved against the toolkit's API host and sent with the account's auth.

Auth configs

MethodPathBody
GET/auth_configstoolkit_slug filter
POST/auth_configstoolkit.slug, auth_config.type (use_managed_auth or use_custom_auth), auth_config.auth_scheme, auth_config.credentials (client_id, client_secret, scopes), name, restrict_to_following_tools
GET/auth_configs/{id}
PATCH/auth_configs/{id}name, status (ENABLED/DISABLED), scopes, restrict_to_following_tools, credentials
DELETE/auth_configs/{id}Deletes its connected accounts too.

Connected accounts

MethodPathBody or query
GET/connected_accountsuser_ids, toolkit_slugs, statuses, auth_config_ids
POST/connected_accountsauth_config.id, user_id, callback_url, alias, connection.data (keys you already hold)
POST/connected_accounts/linkauth_config_id, user_id, callback_url, alias. Returns redirect_url, link_token, expires_at, connected_account_id.
GET/connected_accounts/{id}Never includes credentials.
PATCH/connected_accounts/{id}alias, status (ACTIVE/DISABLED)
POST/connected_accounts/{id}/refreshNew connect link for an expired account.
DELETE/connected_accounts/{id}

MCP servers and sessions

MethodPathBody
GET/mcp/servers
POST/mcp/serversname, type (custom/router), toolkits, allowed_tools, auth_config_ids
GET, PATCH, DELETE/mcp/servers/{id}
POST/mcp/servers/{id}/generateuser_ids, with_key. Returns one URL per user.
POST/tool_router/sessionuser_id, toolkits, auth_config_ids. Returns session_id and mcp.url.
GET, DELETE/tool_router/session/{id}

The MCP endpoint itself is https://www.prompt-tm.com/mcp/{server id}: JSON-RPC 2.0 over streamable HTTP, methods initialize, tools/list, tools/call, ping.

Triggers

MethodPathBody
GET/trigger_instancesuser_id
POST/trigger_instancesslug, user_id or connected_account_id, trigger_config
PATCH/trigger_instances/{id}status: enable or disable
DELETE/trigger_instances/{id}Also removes the upstream webhook.

Logs

GET /logs with toolkit_slug, tool_slug, user_id, connected_account_id, status (success/error). Each item has the request and response as stored, with secrets masked.