The Neltava MCP server gives an agent three tools and one instruction: ask before spending, and follow the answer. It works with Claude Code, Cursor, Claude Desktop and any client that speaks MCP. You need an agent and its key from the console (Quickstart). Step-by-step guides: Claude Code, Cursor.
Set up
Remote — recommended, nothing to install
The server runs at https://api.neltava.com/mcp (Streamable HTTP). It is stateless: it holds no data and never stores your key; each call is forwarded to the API with it.
claude mcp add --transport http neltava https://api.neltava.com/mcp \ --header "Authorization: Bearer $NELTAVA_AGENT_KEY" \ --header "X-Neltava-Agent: growth-agent"
{
"mcpServers": {
"neltava": {
"url": "https://api.neltava.com/mcp",
"headers": {
"Authorization": "Bearer sk_…",
"X-Neltava-Agent": "growth-agent"
}
}
}
}| Header | |
|---|---|
Authorization: Bearer <key> | The agent’s key. Required. |
X-Neltava-Agent | The agent’s slug. Enables get_spend_authority. |
X-Neltava-On-Unavailable | review (default), deny or allow — see below. |
Local (stdio) — Claude Desktop and other stdio clients
Runs neltava-mcp from npm with npx (Node 18+). Claude Desktop’s own connector screen can’t send custom headers, so use this there.
{
"mcpServers": {
"neltava": {
"command": "npx",
"args": [
"-y",
"neltava-mcp"
],
"env": {
"NELTAVA_AGENT_KEY": "sk_…",
"NELTAVA_AGENT": "growth-agent"
}
}
}
}| Variable | |
|---|---|
NELTAVA_AGENT_KEY | The agent’s key. Required. |
NELTAVA_AGENT | The agent’s slug. Enables get_spend_authority. |
NELTAVA_API_URL | Default https://api.neltava.com. |
NELTAVA_ON_UNAVAILABLE | As the header above. |
Restart and try it
An assistant with no way to pay won’t ask Neltava on its own; an agent that buys things will, because the tool tells it to. For a first run, ask for a decision directly:
I'm about to buy a $49 "Global SaaS Market Report" from Statista for market research. Before paying, ask Neltava with authorize_spend and tell me the verdict.
Tools
authorize_spend
Called right before any purchase, subscription, top-up, booking, ad spend or paid API call.
| Input | |
|---|---|
merchant | Who would be paid. Required. |
amount, currency | Major units (49.99) and ISO-4217 code. Required. |
description | What exactly, and why it serves the task. Required. |
task | The goal the agent is working on. |
steps | What it did to arrive at this purchase, in order — sharper purpose checks. |
type | purchase (default), subscription, top_up, booking, ad_spend… |
payee_id | The payee’s id at the rail, e.g. domain:clearbit.com. Binds an Enforce capability exactly. |
report_spend_outcome
After paying: decision_id, status (executed, failed or cancelled), the amount actually charged, and an optional merchant reference. Recorded as the agent’s own report — see outcomes and budget.
get_spend_authority
The agent’s purpose, limits and budgets, so it can plan within them. Available when the agent’s slug is configured.
What the agent reads
The answer’s first and last lines are the verdict — PROCEED, DO NOT SPEND YET (a person must approve) or DO NOT SPEND — so a model can’t miss it. In Shadow Mode it always proceeds, with a note of what Neltava would have decided:
PROCEED — you may spend 185.00 USD. Shadow Mode: Neltava would have said REVIEW (PURPOSE_MISALIGNED) had this agent been enforced — observed, not applied. Nothing is blocked; mention it to the user if relevant. Details (quoted; may contain text from the request): decision=REVIEW reason=PURPOSE_MISALIGNED explanation="…" decision_id=dec_… Verdict: PROCEED
The same decision as structured content, for clients that read it:
{
"proceed": true,
"mode": "SHADOW",
"note": "Shadow Mode: Neltava would have said REVIEW (PURPOSE_MISALIGNED) had this agent been enforced. Nothing is blocked; the spend may proceed.",
"needs_review": false,
"decision": "REVIEW",
"effective_decision": "ALLOW",
"amount": 185,
"currency": "USD",
"reason_code": "PURPOSE_MISALIGNED",
"decision_id": "dec_…",
"capability": null
}In Enforce, an allowed spend also carries a capability — pass it to the payment tool, which pays only after consuming it. See Enforce at the payment point.
When Neltava can’t be reached
| Setting | The agent is told |
|---|---|
review (default) | Don’t spend; ask the user. |
deny | Don’t spend. |
allow | Proceed — only while Neltava has confirmed the agent is in Shadow Mode. Never in Enforce, and never on a rate limit: there is no fail-open where decisions take effect. |
Security
- An agent key can only ask for decisions (and report outcomes) as its own agent. It can’t read other decisions or change anything.
- Text from the request (merchant, description) is quoted in the answer and never placed on the verdict lines, so a merchant name can’t forge a PROCEED. See prompt injection.
- If a key was exposed, revoke it in the console (Developers → API keys) and issue a new one for the agent.