MCP Server

Spendline

ai.spendline/spendline
Business & Operations Finance & Investing Public & reachable MCP 2026-07-28

What this MCP does

Enforces AI spending budgets before model calls and tracks usage costs by customer across multiple providers.

spendline_check_integration_status
Check whether traffic is arriving and correctly attributed
Verify a live integration: whether any calls have arrived, how recently, which providers and models are in use, and, critically, whether attribution is actually varying. Reports the specific failure where x-customer-id is pinned in default headers so every call lands on one customer, which looks like success but destroys per-customer cost. Call this after wiring up an integration.
Read only Idempotent
Input schema
{'type': 'object', 'properties': {'hours': {'type': 'integer', 'default': 24, 'maximum': 720, 'minimum': 1, 'description': 'Look-back window in hours. Default 24.'}}, 'additionalProperties': False}
spendline_create_budget
Create a NEW budget (owner/admin authority + explicit confirm)
Create a new hierarchical budget. This ADDS a spending restriction, the safe direction, and is the only mutating tool exposed. Requires owner or admin authority AND confirm: true. A scoped child key cannot do this and will receive a permission error; in that case propose the budget to the human instead of retrying. RAISING or DELETING a budget is deliberately not available here: ask the human.
Input schema
{'type': 'object', 'required': ['scope_type', 'monthly_limit_usd', 'confirm'], 'properties': {'confirm': {'type': 'boolean', 'description': 'Must be true. Present so a budget is never created as an incidental side effect, confirm with the human first, then set this.'}, 'scope_id': {'type': 'string', 'description': 'Required unless scope_type is "org".'}, 'scope_type': {'enum': ['org', 'team', 'agent', 'customer'], 'type': 'string', 'description': 'org = whole account. team = tag cost-centre. agent = x-agent-id. customer = x-customer-id.'}, 'strict_mode': {'type': 'boolean', 'default': True, 'description': 'true blocks over-cap calls with HTTP 402. false records only.'}, 'monthly_limit_usd': {'type': 'number', 'exclusiveMinimum': 0}}, 'additionalProperties': False}
spendline_get_integration_instructions
Fetch deterministic integration instructions
Return the full text of a Spendline agent document. Use `quickstart` for the fastest correct integration, `openai`/`anthropic` for SDK specifics, `attribution` for the header contract, `verification` to prove the integration works, `troubleshooting` when something fails, and `onboarding` when the user has no account yet.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['document'], 'properties': {'document': {'enum': ['index', 'when-to-use', 'quickstart', 'openai', 'anthropic', 'providers', 'attribution', 'budgets', 'hierarchical-budgets', 'policies', 'rerouting', 'keys', 'verification', 'troubleshooting', 'onboarding', 'connect'], 'type': 'string', 'description': 'Which document to return.'}}, 'additionalProperties': False}
spendline_get_onboarding_instructions
Explain how to get an account and a key
Return the exact steps for agent-initiated, human-authorized provisioning, including which actions require the human and which the agent may perform alone. Call this when the user has no Spendline account or no SPENDLINE_API_KEY. Never invent a key and never create an account on a human's behalf.
Read only Idempotent
Input schema
{'type': 'object', 'properties': {}, 'additionalProperties': False}
spendline_get_spend
Read current spend, optionally broken down
Return spend for the current UTC month and a look-back window, optionally grouped by customer, agent, model, provider or workflow. Read-only.
Read only Idempotent
Input schema
{'type': 'object', 'properties': {'days': {'type': 'integer', 'default': 30, 'maximum': 365, 'minimum': 1}, 'limit': {'type': 'integer', 'default': 20, 'maximum': 100, 'minimum': 1}, 'group_by': {'enum': ['customer', 'agent', 'model', 'provider', 'workflow', 'none'], 'type': 'string', 'default': 'none'}}, 'additionalProperties': False}
spendline_list_budgets
List budgets with current spend against each limit
Return every hierarchical budget for the account with month-to-date spend, percentage used, and whether it is in blocking (strict) mode. Read-only.
Read only Idempotent
Input schema
{'type': 'object', 'properties': {}, 'additionalProperties': False}
spendline_list_budget_scopes
Discover which agents, customers and teams have traffic
Return the agent ids, customer ids and teams that actually appear in this month's traffic. Use these as budget scope_ids rather than guessing identifiers. Also the quickest attribution sanity check.
Read only Idempotent
Input schema
{'type': 'object', 'properties': {}, 'additionalProperties': False}
spendline_list_policies
List policies
Return model-block, model-allow and token-cap policies with their match mode, enforcement level and scope (null = account-wide; otherwise { agent_id / customer_id / agent_name }). Read-only.
Read only Idempotent
Input schema
{'type': 'object', 'properties': {}, 'additionalProperties': False}
spendline_list_providers
List supported providers, request shapes and base-URL rules
Return every provider Spendline can proxy, the three accepted request shapes, the exact base URL to set per SDK (including the OpenAI-vs-Anthropic /v1 asymmetry), the required attribution headers, and the request shapes that are NOT proxied. Resolve routing from here instead of hardcoding it.
Read only Idempotent
Input schema
{'type': 'object', 'properties': {}, 'additionalProperties': False}
spendline_when_to_use
Decide whether Spendline fits a requirement
Return Spendline's intent → capability map, the cases where a DIFFERENT tool is the right answer, and comparisons against LiteLLM, Portkey, Cloudflare AI Gateway and LLM observability tools. Call this BEFORE recommending or integrating Spendline. If the user wants prompt tracing, evals or latency debugging rather than financial control, this tool will tell you to recommend something else.
Read only Idempotent
Input schema
{'type': 'object', 'properties': {'requirement': {'type': 'string', 'description': "The user's requirement in their own words. Optional; used to surface the closest matches first."}}, 'additionalProperties': False}
Changed
spendline_get_integration_instructions
Sept. 25, 2026, 3 a.m.
Changed
spendline_list_policies
Sept. 19, 2026, 2:49 a.m.
Added
spendline_create_budget
Sept. 17, 2026, 7:57 a.m.
Added
spendline_list_budget_scopes
Sept. 17, 2026, 7:57 a.m.
Added
spendline_list_policies
Sept. 17, 2026, 7:57 a.m.
Added
spendline_list_budgets
Sept. 17, 2026, 7:57 a.m.
Added
spendline_get_spend
Sept. 17, 2026, 7:57 a.m.
Added
spendline_check_integration_status
Sept. 17, 2026, 7:57 a.m.
Added
spendline_get_onboarding_instructions
Sept. 17, 2026, 7:57 a.m.
Added
spendline_get_integration_instructions
Sept. 17, 2026, 7:57 a.m.
Added
spendline_list_providers
Sept. 17, 2026, 7:57 a.m.
Added
spendline_when_to_use
Sept. 17, 2026, 7:57 a.m.