MCP overview

The StickyPrompts MCP server gives AI clients such as Claude Code, Cursor and VS Code a set of tools for your prompts, agents, knowledge bases, integrations and media - authenticated with a normal API key.

5 min read · Updated 28 September 2026

The Model Context Protocol (MCP) is an open standard that lets an AI client call tools on a remote server. The StickyPrompts MCP server exposes your workspace as tools: search a knowledge base, run a saved prompt, look up a CRM contact, query a connected database, send an email, generate an image. Connect it once and your assistant can do real work with the same models, data and rules your team uses in the app.

At a glance

Endpointhttps://api.stickyprompts.com/mcp/
TransportStreamable HTTP only. There is no legacy /sse endpoint and no stdio server.
AuthAuthorization: Bearer STICKY-API-... - the same API key as the REST API
CapabilitiesTools only. No MCP resources, resource templates or prompts.
Server nameStickyPrompts, version 1.0.0 (reported in initialize)

Use the trailing slash

The endpoint is /mcp/ with a trailing slash. A request to /mcp is redirected to /mcp/ (301 for GET, 307 for POST and DELETE). Most clients follow the redirect, but configure https://api.stickyprompts.com/mcp/ directly to save the round trip and to work with clients that do not follow redirects.

Authentication

Send your API key in the Authorization header, exactly as for REST. You create keys in Settings > API keys; see API keys and authentication.

SituationHTTP response
No Authorization header, or not a Bearer STICKY-API-... token401 {"error":"unauthorized"}
Unknown key, wrong secret, or the key’s owner no longer exists401 {"error":"Invalid API key"}
The key owner’s account is not active403 {"error":"user is not verified"}
The request comes from a region the service does not serve403 {"error":"access from your region is not supported"}

No particular permission is needed to connect. Any valid key on an active account can open a session - what it can then do is decided per tool.

The key acts as the user who created it: same workspace, same projects, same shared resources, narrowed by the key’s permissions. Everything you create over MCP (conversations, projects, generated files) is yours and shows up in the app.

Sessions

The server uses standard Streamable HTTP sessions. MCP clients handle all of this automatically; it matters only if you speak the protocol by hand.

  • POST /mcp/ with an initialize request returns a session id in the Mcp-Session-Id response header (format mcp-session-<uuid>).
  • Every later POST must send that Mcp-Session-Id header. A missing or malformed id gets 404 Invalid session ID.
  • Sessions are stateless on the server: only the id’s format is checked. They survive server restarts, so you do not need to reconnect after a deploy.
  • POST requires Content-Type: application/json. Responses are JSON in practice, because no tool sends progress notifications.
  • GET /mcp/ opens an optional notification stream, which stays mostly idle. DELETE /mcp/ is accepted and does nothing.

Permissions decide which tools you see

Each tool needs exactly one permission. The server filters both tools/list and tools/call by the key’s permissions:

  • A key sees only the tools it holds the permission for. A key with no MCP-relevant permissions connects successfully and sees an empty tool list.
  • Calling a tool the key cannot use returns JSON-RPC error -32602 with tool '<name>' not found - exactly the same as calling a tool that does not exist.

So if your client says a StickyPrompts tool is missing, check the key’s permissions first. Permissions with the MCP badge in the permissions reference are the ones that unlock tools, and each entry in the tool reference names its permission.

Least privilege matters more than usual here: an AI client will use every tool it can see. Give a key for an assistant only the tools you are happy for it to call, and leave write tools such as send_email or run_database_query off unless you need them.

Results and errors

Every tool returns a single text content item whose text is a JSON document. Parse the text as JSON. There is no structuredContent and no output schema; the shape of each result is documented in the tool reference.

{
  "content": [
    { "type": "text", "text": "{\"conversation_id\": 5120, \"text\": \"Here are three options ...\"}" }
  ]
}

Errors come back in one of two ways:

KindLooks likeUsed for
Tool errorA result with isError: true and a plain message, such as conversation not foundMany “not found or no access” lookups
JSON-RPC error -32603A failed call carrying the server’s message, such as required argument "prompt" not foundMissing required arguments, most validation failures, provider and integration failures

Input schemas are advertised to your client but not validated by the server, so a wrong argument type surfaces as one of the errors above rather than a schema error.

Long-running tools

Most tools are synchronous: they return when the work is done. A few return immediately and must be polled.

Start withReturnsPoll withDone when
generate_video{"id", "status"}get_video_generation_statusstatus is done or error
start_spreadsheet_processing{"task_id"}get_spreadsheet_processing_taskstatus is done or error
run_workflow_task{"execution_id", "status"}No status tool over MCPCheck total_run_count and success_rate with get_workflow_task afterwards

Video can take several minutes; the tool’s own description asks the model to wait 15-60 seconds between polls. generate_speech, generate_music and transcribe are synchronous - they block until the audio or transcript is ready. Give your client a generous request timeout for these and for send_message with a slow model.

Credits and access rules

  • Tools that do real work - send_message, run_prompt, custom_run, the media tools, search_knowledge_base, spreadsheet processing and workflow runs - are metered on the key owner’s account like the same actions in the app.
  • A workflow started with run_workflow_task fails with quota exceeded if the owner is out of quota.
  • Model access rules and data-residency filters apply when a model is resolved. A model your workspace does not allow fails the call. list_ai_models already leaves out models you cannot use.

Choosing a model

run_prompt, custom_run and start_spreadsheet_processing need an ai_model_id from list_ai_models. There is no "auto" value. send_message takes an optional ai_model_id, but always pass it when starting a new conversation: without one, the call currently fails with no AI model is selected, try reselecting model. The media tools take no model argument.

What the MCP server does not do

  • No file upload. Bring files in from Google Drive with import_storage_files, or upload them through the REST API.
  • No download links for arbitrary files. list_files and get_file return only id, name and type. Media results include a path to the stored file.
  • No resources or prompts. Your saved prompts are reached through the list_prompts, get_prompt and run_prompt tools.
  • No OAuth. Clients that can only add remote servers through an OAuth sign-in cannot connect with an API key.