spicyapi-mcp
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| NO_PROXY | No | Hosts that should not use the proxy; optional. | |
| HTTPS_PROXY | No | Send API calls through this proxy. | |
| SPICY_API_KEY | Yes | Your API key. Required for everything except status and docs search. | |
| SPICY_MCP_HOST | No | Host for `spicyapi-mcp-http`: `127.0.0.1` (default), `localhost` or `::1`; anything else is refused. | 127.0.0.1 |
| SPICY_MCP_PORT | No | Port for `spicyapi-mcp-http`, default `8765`. | 8765 |
| NODE_USE_ENV_PROXY | No | Set to `0` to always connect directly, or `1` to force Node.js to use proxy environment variables. | |
| SPICY_MCP_HTTP_TOKEN | No | Required bearer token for `spicyapi-mcp-http`, at least 32 bytes, different from `SPICY_API_KEY`. | |
| SPICY_MCP_UPLOAD_ROOTS | No | Directories `spicyapi_upload_file` may read, separated by `:` (`;` on Windows). Default: 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. Some models answer in words instead of a file: speech-to-text and other text results arrive in output.text with no assets, and a transcription may add output.transcript with word timings and the detected language. Layer decomposition returns one image asset per layer; stack them by ascending output.assets[].layer.zIndex. |
| 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. Some models answer in words instead of a file: speech-to-text and other text results arrive in output.text with no assets, and a transcription may add output.transcript with word timings and the detected language. Layer decomposition returns one image asset per layer; stack them by ascending output.assets[].layer.zIndex. |
| 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 (JPEG, PNG, WebP, GIF) up to 10 MiB; MP4/WebM video and MP3/WAV audio up to 90 MiB; reference documents (PDF, Word, Excel, PowerPoint, Keynote, Pages, Numbers, TXT, Markdown) up to 90 MiB for fields such as reference_file_url. 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
Each tool has a clearly distinct purpose within the API lifecycle (status, docs, models, balance, usage, tasks, upload, download, quote, create, retry, purge). Overlaps like task_get vs task_wait and task_quote vs task_create are explicitly differentiated in their descriptions, preventing misselection.
Most tools follow a consistent spicyapi_<resource>_<action> pattern (e.g., model_get, tasks_list, task_create). Minor deviations exist: upload_file uses verb_noun order and download_url_create adds an extra noun, but the overall naming remains predictable and readable.
With 15 tools, the set is well-scoped for an API covering model discovery, task lifecycle, file handling, and account queries. Each tool earns its place, and no tool feels redundant or missing from the core surface.
The surface covers the full task lifecycle: model inspection, quoting, creation with confirmation, waiting, retrieval, listing, retry, purge, plus file upload and download URL generation. No obvious gaps exist; the absence of a cancellation tool is intentional per the descriptions.