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.
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.
Claude Code, Cursor, VS Code, MCP Inspector or raw curl.
Tool referenceEvery tool, its arguments and required permission.
PermissionsChoose which tools a key can see.
At a glance
| Endpoint | https://api.stickyprompts.com/mcp/ |
| Transport | Streamable HTTP only. There is no legacy /sse endpoint and no stdio server. |
| Auth | Authorization: Bearer STICKY-API-... - the same API key as the REST API |
| Capabilities | Tools only. No MCP resources, resource templates or prompts. |
| Server name | StickyPrompts, 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.
| Situation | HTTP response |
|---|---|
No Authorization header, or not a Bearer STICKY-API-... token | 401 {"error":"unauthorized"} |
| Unknown key, wrong secret, or the key’s owner no longer exists | 401 {"error":"Invalid API key"} |
| The key owner’s account is not active | 403 {"error":"user is not verified"} |
| The request comes from a region the service does not serve | 403 {"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 aninitializerequest returns a session id in theMcp-Session-Idresponse header (formatmcp-session-<uuid>).- Every later
POSTmust send thatMcp-Session-Idheader. A missing or malformed id gets404 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.
POSTrequiresContent-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
-32602withtool '<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:
| Kind | Looks like | Used for |
|---|---|---|
| Tool error | A result with isError: true and a plain message, such as conversation not found | Many “not found or no access” lookups |
JSON-RPC error -32603 | A failed call carrying the server’s message, such as required argument "prompt" not found | Missing 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 with | Returns | Poll with | Done when |
|---|---|---|---|
generate_video | {"id", "status"} | get_video_generation_status | status is done or error |
start_spreadsheet_processing | {"task_id"} | get_spreadsheet_processing_task | status is done or error |
run_workflow_task | {"execution_id", "status"} | No status tool over MCP | Check 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_taskfails withquota exceededif 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_modelsalready 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_filesandget_filereturn only id, name and type. Media results include apathto the stored file. - No resources or prompts. Your saved prompts are reached through the
list_prompts,get_promptandrun_prompttools. - No OAuth. Clients that can only add remote servers through an OAuth sign-in cannot connect with an API key.