PromptSpend
LLM pricing where every rate carries its source and the date it was last confirmed.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"promptspend": {
"command": "npx",
"args": [
"@promptspend/mcp"
]
}
}
}Runnable packages
0.1.11stdioRemote endpoints
https://promptspend.dev/mcpstreamable-httpWhat it can do
Tool inventory
Tools (3)
π’get_price(model_name, as_of)
List price for one LLM in USD per million tokens, with its source and last-confirmed date. Returns disputed=true when two sources disagree, and close matches when the model is unknown. To cost a workload, use estimate_cost.
Input Schema
{
"type": "object",
"properties": {
"model_name": {
"type": "string",
"description": "Model id or name, e.g. gpt-5 or \"Claude Opus 5\"."
},
"as_of": {
"type": "string",
"description": "Past date YYYY-MM-DD: the rate published then."
}
},
"required": [
"model_name"
]
}π’estimate_cost(models, system_tokens, user_tokens, output_tokens, turns, ...)
Monthly cost of a described workload, or of measured usage, on each model. Accounts for history compounding, cache writes, long-context tiers and reasoning tokens. Use this instead of multiplying prices by hand.
Input Schema
{
"type": "object",
"properties": {
"models": {
"type": "array",
"items": {
"type": "string"
},
"description": "Up to about 8."
},
"system_tokens": {
"type": "number",
"description": "System prompt size. Default 800."
},
"user_tokens": {
"type": "number",
"description": "Typical user message. Default 150."
},
"output_tokens": {
"type": "number",
"description": "Typical reply. Default 350."
},
"turns": {
"type": "number",
"description": "Turns per conversation. Default 4."
},
"conversations_per_day": {
"type": "number",
"description": "Default 1000."
},
"cached_input_share": {
"type": "number",
"description": "0-1. Default 0."
},
"reasoning_multiplier": {
"type": "number",
"description": "Bill output at this multiple. Default 1."
},
"use_batch_api": {
"type": "boolean",
"description": "Apply batch discounts."
},
"usage": {
"type": "object",
"description": "Measured totals to price instead: input, output, cache_read, cache_write tokens (input excludes cache reads).",
"additionalProperties": {
"type": "number"
}
}
},
"required": [
"models"
]
}π’find_cheaper(model, min_capability, system_tokens, user_tokens, output_tokens, ...)
Cheaper models that score at or above the given one on capability, costed on the same workload. Returns candidates to test, not a recommendation.
Input Schema
{
"type": "object",
"properties": {
"model": {
"type": "string",
"description": "The model currently in use."
},
"min_capability": {
"type": "number",
"description": "0-100. Defaults to the given modelβs score."
},
"system_tokens": {
"type": "number",
"description": "Default 800."
},
"user_tokens": {
"type": "number",
"description": "Default 150."
},
"output_tokens": {
"type": "number",
"description": "Default 350."
},
"turns": {
"type": "number",
"description": "Default 4."
},
"conversations_per_day": {
"type": "number",
"description": "Default 1000."
}
},
"required": [
"model"
]
}Community
Evidence