spicyapi-mcp
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SPICY_API_KEY | Yes | Your SpicyAPI API key. Required for all authenticated operations (everything except service status and docs search). | |
| SPICY_MCP_HOST | No | Host interface for the HTTP entrypoint. Default is 127.0.0.1, only localhost addresses allowed. | |
| SPICY_MCP_PORT | No | Port for the HTTP entrypoint. Default is 8765. | |
| SPICY_MCP_HTTP_TOKEN | No | Bearer token required for the HTTP entrypoint (spicyapi-mcp-http). Must be at least 32 bytes and different from SPICY_API_KEY. Only required if using the HTTP server. | |
| SPICY_MCP_UPLOAD_ROOTS | No | Directories spicyapi_upload_file may read, separated by ':' on macOS/Linux or ';' on Windows. Default is the user's home directory. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| spicyapi_service_statusA | Read public health and readiness endpoints for diagnostics or an explicit status request. Not a prerequisite for task creation. No API key is required. Report the |
| spicyapi_docs_searchA | Search the bundled index of verified first-party documentation URLs. |
| spicyapi_models_listA | Discover enabled models and account-specific prices. Fetch only the selected model for its schema, or set includeSchema to reuse complete records without another model_get call. Returned input schemas are plain JSON Schema; display-only and rate-card annotations are removed. Some input values change the price; task_create obtains the exact request quote for confirmation. Use pricing entries for comparisons rather than calculating the accepted charge yourself. |
| spicyapi_model_getA | Return one exact model, its live input schema, pricing, policy and availability. Reuse a complete record already obtained from models_list with includeSchema. The input schema is plain JSON Schema; display-only and rate-card annotations are removed. Some input values change the price; task_create obtains the exact request quote for confirmation. Use pricing entries for comparisons rather than calculating the accepted charge yourself. |
| spicyapi_balance_getA | Return available, held, and total balance as exact decimal USD strings when requested or diagnosing funds. Task creation already checks funds; this is not a prerequisite. |
| spicyapi_usage_getA | Read task counts and settled actual USD spend for the current API key, grouped by creation day and model. Only from/to dates are accepted: UTC [from,to), at most 92 days; defaults to seven days ending tomorrow UTC. Money is returned as exact decimal strings; pending holds are excluded and late settlement can change prior-day spend. This is not account balance or remaining key budget, and is not a generation prerequisite. Use for requested usage reports; respect Retry-After on rate limits. |
| spicyapi_tasks_listA | Discover current-key task history with metadata only, without fetching each result. Dates are UTC [from,to), default seven days, at most 92 days. Keep from/to fixed across pages and pass nextCursor unchanged. Limit defaults to 20, maximum 100. Cost is an exact USD string and is final only when settled. Use task_get only for selected results; use usage_get for settled spending including hidden tasks. This is not a polling endpoint or a prerequisite to generation. |
| spicyapi_task_getA | Read a task created by the current API key, including ready output.assets[].url links. Use those URLs directly without your API key; query again if assets are pending or URLs have expired. A verified complete v2 webhook already contains the result. Unknown and inaccessible IDs are both 404. |
| spicyapi_task_waitA | Wait for a task for up to 300 seconds and read ready output.assets[].url directly without a download-ticket call. By default, polling backs off from about 2 to at most 10 seconds; an explicit intervalSeconds stays fixed. Prefer signed webhooks for production; a complete verified v2 callback needs no extra task_get. A local wait timeout does not cancel the task. |
| spicyapi_upload_fileA | Read a file from this computer, upload it, and return the spicy:// URI to put in a model input field. Use this whenever the user refers to a file on their machine. Images up to 10 MiB; MP4/WebM video and MP3/WAV audio up to 90 MiB. Public HTTPS media URLs need no upload at all — pass them straight to the model input when its schema accepts a URL. |
| spicyapi_download_url_createA | Create a short-lived signed URL for an output owned by the current task and API key, for legacy integrations or explicit link renewal. Prefer existing ready output.assets[].url from task_get, task_wait, or a verified v2 webhook; no ticket call is needed for those links. |
| spicyapi_task_quoteA | Compare an exact request price without creating a task or reserving funds. Returns a five-minute USD estimate and maximum charge. task_create already obtains its own quote and confirmation; do not call this tool as a routine prerequisite. |
| spicyapi_task_createA | Obtain the exact request quote, show its USD estimate and maximum charge for user confirmation, then reserve funds and create an asynchronous task. Do not call task_quote first unless independently comparing prices. The confirmation needs an MCP client that supports form elicitation; if the client does not, the call fails after the free quote and no task is created or charged. |
| spicyapi_task_retryA | Create a new task from a failed or expired source. Requires a user confirmation round. |
| spicyapi_task_purgeA | Permanently destroy one terminal task's stored content: generated media, result payload, prompt, and input text. This destroys content, not the record of what it cost — the ledger entry, charged amount, model, state, timestamps and request ID all stay queryable afterwards, so this never hides or reverses a charge and never refunds anything. It cannot be undone and there is no per-output granularity: the unit is one whole task. Download any result the user still wants before calling this. Only tasks in a terminal state are accepted. An accepted task cannot be canceled and there is no cancellation API, so for a queued or running task wait until it finishes (task_wait), then purge it. Repeating the call on an already destroyed task succeeds and changes nothing. Requires a user confirmation round. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| spicyapi_generation_workflow | Build a workflow using the live model schema, confirmed task creation, and directly usable results. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| spicyapi-documentation-index | Verified first-party documentation topics and URLs. |
| spicyapi-openapi-contract | The package-pinned public API contract used to generate SDK types. |
TDQS
Scored across 15 tools
Most tools are clearly separated by resource (service, docs, models, balance, usage, tasks, files, URLs) and action. The only mild overlap is task_get vs task_wait vs download_url_create, but their descriptions distinguish reading a task, waiting for completion, and creating a signed URL.
The naming follows a consistent spicyapi_<resource>_<action> pattern, e.g. models_list, model_get, task_create, task_get. Minor deviation: download_url_create uses a noun phrase (download_url) rather than a resource noun like url, but it is still readable and predictable.
15 tools is at the upper end of the ideal range but each tool maps to a distinct operation in the API lifecycle: service status, docs, models, balance, usage, task CRUD/wait/retry/purge, upload, download, and quote. No tool feels redundant.
The surface covers the full task lifecycle: quote, create, get, wait, retry, purge, plus upload/download and account management. Minor gaps: no explicit task cancellation (documented as unavailable) and no webhook management tool, but the descriptions explain workarounds.