Skip to main content
Glama
Valta-hq

valta-mcp

by Valta-hq

valta-mcp

CI License: MIT

An MCP (Model Context Protocol) server for Valta — financial governance for AI agents. Exposes Valta's spend gate and audit trail as MCP tools, so any MCP-compatible client (Claude Desktop, Claude Code, Cursor, and others) can call them directly.

How Valta MCP works

What this is — and isn't

This server is a thin wrapper over Valta's real, hosted REST API. It does not implement any spend logic, limits, or hashing itself — every tool call here is a pass-through to https://valta.co/api/v1/..., where the actual enforcement (spend gate, audit chain) happens. This repo is the protocol adapter, not the enforcement engine.

Important, read before relying on this for anything security-sensitive: most of these tools are advisory, not enforcing. A tool description telling a model "call this before spending" is guidance, not a guarantee. valta_request_spend, for example, only governs spend that routes through it — it does not intercept or prevent spending that happens through some other tool, API, or webhook the agent has independent access to.

One tool is different: valta_proxy_request. Instead of asking the model to check in before spending elsewhere, this one is the spend — the agent declares an outbound call's cost and routes the actual call through Valta, which checks it against wallet limits and only makes the real request (using your own stored credential) if approved. If it's blocked, the real provider is never contacted at all. This is a genuine, code-level guarantee, not an honor system — but only for the specific services Valta has wired up for proxying (currently: Stripe, Serper, Polygon). Any spend that happens through a channel other than this proxy — the agent's own separate API key, a webhook, a tool this server doesn't know about — is outside what any of these tools can see or stop. See Design notes below.

Related MCP server: Payments Agent Gateway (MCP)

Install

npm install -g valta-mcp

Or run directly without installing:

npx valta-mcp

Configuration

Get an API key at valta.co/dashboard → Settings → API Keys → Create key.

Add to your MCP client's config (e.g. Claude Desktop's claude_desktop_config.json):

{
  "mcpServers": {
    "valta": {
      "command": "npx",
      "args": ["valta-mcp"],
      "env": {
        "VALTA_API_KEY": "sk_valta_your_key_here"
      }
    }
  }
}

Tools

Tool

What it does

valta_check_balance

Read an agent's wallet balance and limits

valta_request_spend

Request authorization for a spend — approved or denied by the real spend gate

valta_create_wallet

Create a new named wallet with optional spend limits

valta_freeze_agent

Kill switch — freeze an agent's wallet, blocking further spend

valta_unfreeze_agent

Resume a frozen agent's wallet

valta_get_audit_trail

Read the hash-chained audit trail of spend decisions

valta_list_wallets

List all named wallets on the account — use this to discover wallet names before checking balance/spending

valta_transfer_funds

Transfer USDC directly between two of your agent wallets

valta_list_agents

List all agents on the account

valta_get_agent

Get details for a single agent

valta_run_agent

Trigger an agent to run a task

valta_get_agent_run

Check the status/result of a specific agent run

valta_list_policies

List spending policies configured on the account

valta_set_policy

Create a new spending policy (daily cap, per-transaction cap)

valta_proxy_request

Make a real outbound call to a connected service (Stripe, Serper, Polygon) through Valta's spend-gated egress proxy — declares a cost up front, only reaches the real provider if approved, refunds automatically on failure

valta_list_proxy_requests

List the receipts for every call the egress proxy has handled — allowed, blocked, refunded, or pending approval, and why

Every tool's description in src/index.ts states plainly what it enforces and what it doesn't — read those before wiring this into anything that touches real money.

Design notes

Why there's no "non-bypassable system prompt." An earlier draft of this project considered shipping a system-prompt instruction block claiming to make spend gating "non-bypassable." That claim doesn't hold up, for two reasons:

  1. MCP servers don't control the host's system prompt. Claude Desktop, Claude Code, Cursor, and other hosts each own their own system prompt. An MCP server provides tools and, in some cases, a limited instructions field — it cannot inject a binding, universally-enforced rule into the conversation.

  2. A system prompt is a request to the model, not a code-level constraint. Even where a host does surface server instructions, an agent can still be prompt-injected, jailbroken, or simply routed through a different tool entirely that doesn't call this server at all. Claiming otherwise would be exactly the kind of gap this project exists to close — trusting the model to self-police is the failure mode Valta's spend gate was built to avoid in the first place.

What actually provides a guarantee, and what doesn't. There are now two different levels of enforcement in this server, and it matters which one a given tool gives you:

  • Spend authorized by calling valta_request_spend is genuinely checked against real limits, server-side — but only if the agent chooses to call it first. The gap is spend that happens through some other channel the agent has access to.

  • Spend routed through valta_proxy_request is checked before the real call is made at all — there's no step where the agent could skip the check and still have the payment go through, because the payment-triggering call and the check are the same action. That closes the gap described above, but only for the services this server has wired up for proxying (Stripe, Serper, Polygon as of this writing) — extending it to a new service means adding real credential-handling logic for that provider's specific auth scheme, not flipping a config flag.

If a use case needs a hard guarantee for a service not yet listed above, that service needs to be added to Valta's proxy gate first — open an issue or a PR.

License

MIT.

Available Tools

16 tools
valta_check_balanceA

Check an agent's Valta wallet balance and spend limits. Call this before attempting a spend to confirm funds are available. This does not spend anything.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentIdYesThe Valta agent/wallet ID or name to check

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It clearly states the tool is read-only ('does not spend anything'), which is the key behavioral trait. It does not elaborate on return format or rate limits, but for a simple balance check this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, no wasted words, and uses front-loaded structure: verb first ('Check'), then resource, then guidance. Highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only check with one parameter and no output schema, the description covers purpose, usage, and side-effect transparency. It is complete enough; missing details on exact return values are minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a clear parameter description for agentId. The tool description adds no additional meaning beyond what the schema already provides, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool checks an agent's wallet balance and spend limits, using a specific verb ('Check') and resource ('agent's Valta wallet balance and spend limits'). It distinguishes itself from spend-related siblings by explicitly stating 'This does not spend anything.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly advises to call this before attempting a spend to confirm funds, providing clear usage context. It does not explicitly exclude alternatives like valta_request_spend, but the guidance is strong enough for an agent to infer when to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

valta_create_walletA

Create a new named Valta wallet with optional spend limits. Use this to set up governance for a new agent before it starts spending.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesA unique name for this wallet, e.g. the agent's name
dailyLimitNoMax USDC per day
perTxLimitNoMax USDC per single transaction
monthlyLimitNoMax USDC per month

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so desc carries burden. Indicates mutation ('create') but does not specify authorization, uniqueness constraints, or side effects. Adequate but could be more transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose. Every word adds value. No waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a creation tool with 4 well-described params and clear usage context, it is largely complete. Missing output schema details, but not critical.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions. Description adds 'optional spend limits' grouping but does not significantly augment parameter meaning beyond schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Create a new named Valta wallet' with specific verb and resource. Distinguishes from siblings like valta_list_wallets by focusing on creation and governance setup.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use: 'set up governance for a new agent before it starts spending.' Does not mention explicit alternatives or when not to use, but context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

valta_freeze_agentA

Immediately freeze an agent's Valta wallet, blocking all further spend through Valta. Use this as a kill switch when an agent is behaving unexpectedly.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentIdYesThe Valta agent/wallet ID or name to freeze

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Describes immediate freeze and blocking of spend, but no annotations exist. Does not mention reversibility (though sibling unfreeze exists) or permissions needed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise, front-loaded sentences with no fluff. Every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple one-parameter tool; covers purpose and usage. Lacks details on side effects or return behavior, but acceptable given no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%; the description restates the schema description for agentId, adding no new meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the action: freeze an agent's Valta wallet, blocking all spend. Differentiates from sibling valta_unfreeze_agent and other tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Use this as a kill switch when an agent is behaving unexpectedly,' providing clear use case. Lacks explicit when-not-to-use or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

valta_get_agentB

Get details for a single agent, including status and balance.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentIdYesThe agent ID to look up

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must cover behavioral traits. It only states what the tool returns, not that it is a read-only operation (implied but not explicit). It does not disclose side effects, authentication requirements, or rate limits, which are important for mutation-less tools.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (10 words) and front-loaded with the action. However, it omits some useful context that could be added in a few more words without sacrificing conciseness, such as clarifying it is a read-only lookup.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter tool with no output schema, the description gives a reasonable summary ('including status and balance') but does not fully describe the return structure, error cases, or mention that it is a read operation. It is adequate but not thorough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (the only parameter 'agentId' has a description). The tool's description adds minimal value beyond the schema, only mentioning 'including status and balance' which relates to output, not parameters. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get details') and resource ('single agent'), and specifies included content ('status and balance'). It implicitly differentiates from sibling 'valta_list_agents' by targeting a single agent rather than a list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for retrieving a single agent's details but provides no explicit guidance on when to use this tool versus alternatives like 'valta_get_agent_run' or 'valta_check_balance'. No prerequisites or exclusions are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

valta_get_agent_runB

Check the status and result of a specific agent run.

ParametersJSON Schema
NameRequiredDescriptionDefault
runIdYesThe run ID to check
agentIdYesThe agent ID the run belongs to

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits. It only states 'check', implying read-only, but does not confirm safety, permission requirements, or any side effects. This is insufficient for a tool with no annotation support.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that immediately conveys the tool's purpose. No wasted words, and the core information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple check tool with two well-described parameters, the description is adequate but lacks information about the return format or structure. Since there is no output schema, the description should clarify what 'status and result' means, which it does not.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description does not add any meaning beyond the schema's parameter descriptions, which are already clear (runId, agentId).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('check') and the resource ('status and result of a specific agent run'). It is specific and distinct from sibling tools like 'run_agent' or 'get_agent', but does not explicitly differentiate itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives, such as when to check a run after invoking it, or when not to use it. The description lacks contextual usage hints.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

valta_get_audit_trailA

Read the tamper-evident, hash-chained audit trail of spend decisions (approved and denied) for an agent, or across all agents if no agentId is given.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax entries to return, default 20
agentIdNoOptional — filter to a single agent's audit trail

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description bears full burden. It correctly indicates a read-only operation ('Read') and mentions the tamper-evident nature. However, it does not disclose pagination behavior, ordering, or response format beyond what is implied. With no annotations, a 4 is appropriate given the safe read action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, efficiently front-loading the action and key characteristics. No unnecessary words, every part adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (2 optional params, no output schema), the description fully covers what the tool does, its scope, and the optional filter. It is contextually complete for an AI agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for both parameters. The description adds value by clarifying that omitting agentId returns the global trail, which goes beyond the schema's 'Optional — filter to a single agent's audit trail' formulation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (Read) and the resource (tamper-evident, hash-chained audit trail of spend decisions). It uniquely distinguishes this tool from siblings like valta_request_spend or valta_check_balance.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use the tool: to read audit trail entries for a specific agent or all agents. It provides a clear alternative (omit agentId for global view) but does not explicitly exclude other scenarios or compare to sibling alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

valta_list_agentsB

List all agents on this account — both marketplace subscriptions and custom SDK-created agents.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results, default 20
offsetNoPagination offset, default 0

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It fails to mention pagination behavior, rate limits, or any side effects beyond a basic list operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, concise sentence that efficiently conveys the tool's purpose without any extraneous information. Front-loaded with the action and scope.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list tool with clear parameters and no output schema, the description is mostly complete. It could mention pagination or ordering, but the schema handles parameter details adequately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the parameters (limit, offset) are well-documented in the schema. The description adds no additional semantic value beyond what the schema already provides, meeting the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists all agents on the account and specifies the scope (both marketplace subscriptions and custom SDK-created agents), distinguishing it from sibling tools like valta_get_agent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives such as valta_get_agent or other list tools. The context of sibling tools with similar listing capabilities requires explicit usage differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

valta_list_policiesA

List spending policies (limits, approval thresholds) configured on this account, optionally filtered to one agent.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentIdNoOptional — filter to policies for a single agent

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description carries full burden. Does not disclose that listing is a read-only operation with no side effects, or any authentication/permission requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with no filler; purpose and optional filter stated concisely. Front-loaded with the verb and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given one optional parameter and no output schema, the task is simple. Could mention that it returns a list of policies or that no filtering returns all policies.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%; the only parameter 'agentId' is described in input schema. Description adds 'optionally filtered to one agent' which rephrases the schema description without adding new semantic detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses specific verb 'list' and resource 'spending policies' with clarifying parenthetical '(limits, approval thresholds)'. Distinguishes from sibling 'valta_set_policy' which is for creating, not listing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Mentions optional filtering to one agent, implying when to use that parameter. No explicit when-to-use or when-not-to-use guidance relative to siblings like valta_set_policy or valta_request_spend.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

valta_list_proxy_requestsA

List the receipts for every call made through Valta's spend-gated egress proxy — what was allowed, blocked, refunded, or left pending approval, and why. Optionally filter to one agent.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results, default 20
agentIdNoOptional — filter to one agent's proxy requests

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses the types of results (allowed, blocked, refunded, pending) and mentions why they occurred. However, it omits pagination behavior (though limit parameter exists) and does not state that the tool is read-only.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that efficiently conveys the purpose and a key option. Every phrase adds value, with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list tool with two optional parameters and no output schema, the description explains the result content well but does not cover return format, ordering, or pagination. This is adequate but leaves gaps for an agent that might need details on how to handle large result sets.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with both parameters documented. The description adds context for agentId ('Optionally filter to one agent') but does not mention the limit parameter or its default/max behavior. Baseline 3 is appropriate as schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies the verb 'List' and the resource 'receipts for every call made through Valta's spend-gated egress proxy', detailing what each receipt contains (allowed, blocked, refunded, pending). This distinguishes it from sibling tools like valta_list_agents or valta_list_wallets.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for viewing proxy request history but lacks explicit guidance on when to use it versus alternatives, or any exclusions. The optional filter is noted but no context on prerequisites or typical use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

valta_list_walletsA

List all named Valta wallets on this account, with balances and limits. Use this to discover what wallets exist before checking a balance or requesting a spend — you need to know the exact wallet name/ID first.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses that the tool lists wallets with balances and limits, which is sufficient for a read-only list operation. No hidden behaviors are omitted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no wasted words. The first sentence states the purpose, and the second provides workflow context. Front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters and no output schema, the description fully explains what the tool returns (wallet names, balances, limits) and how it fits into the workflow (discovery before using check_balance or request_spend). Complete for a list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters in the schema, so the description does not need to add parameter info. The baseline for 0 parameters is 4, and the description appropriately focuses on the tool's output.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists all named Valta wallets with balances and limits. The verb 'list' and resource 'wallets' are specified, and it distinguishes from siblings like valta_check_balance and valta_create_wallet.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use the tool: to discover wallets before checking a balance or requesting a spend, and that you need the wallet name/ID. This implies when not to use (when you already know the ID) and provides clear context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

valta_proxy_requestA

Make a real outbound API call to a connected service (e.g. Stripe) through Valta's spend-gated egress proxy, instead of calling the provider directly. Declare the amount this call will cost up front — Valta checks it against the agent's wallet limits (freeze state, per-transaction/daily/monthly caps, approval thresholds) and only makes the real request if approved, using the account's own stored credential for that service. If the upstream call fails, the declared amount is automatically refunded. Only services with proxying enabled can be called this way — currently: stripe, serper, polygon.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoOptional JSON body to send with the request
pathYesPath on the service's API, relative to its base URL, e.g. "/v1/customers"
amountYesDeclared cost of this call in USD — checked against wallet limits before the real call is made
methodYesHTTP method for the upstream call
agentIdYesThe Valta agent/wallet ID or name this spend is attributed to
serviceYesThe connected service to call, e.g. "stripe"
categoryNoOptional spend category
descriptionYesWhat this call is for — recorded in the audit trail

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully discloses behavior: amount declaration, wallet limit checks, approval gate, credential usage, auto-refund on failure, and supported services. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single paragraph with multiple sentences, each adding value. It is appropriately sized and front-loaded. Could be more structured with bullet points, but currently concise and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 8 parameters, 6 required, and no output schema, the description covers all necessary context: approval process, refund behavior, supported services, and parameter meanings. It is complete for agent decision-making.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%. The description adds context beyond schema: e.g., 'amount' is declared cost, 'agentId' is wallet ID, 'description' is audit trail. It explains the approval flow, clarifying parameter roles.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: making a real outbound API call via Valta's spend-gated proxy. It specifies the verb 'make', the resource 'outbound API call', and distinguishes from calling the provider directly. Example services are listed, aiding differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use (for proxied calls to connected services) and lists supported services. It implicitly indicates when not to use (unsupported services), but lacks explicit alternatives like direct calls. Clear context but no explicit when-not.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

valta_request_spendA

Request authorization to spend from an agent's Valta wallet. Returns approved with a new balance, or denied with a reason. IMPORTANT: this tool only governs spend that routes through it — it does not intercept or prevent spending done via other tools, APIs, or webhooks that don't call this tool first. If denied, do not proceed with the action and inform the user why.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesAmount in USDC to spend
agentIdYesThe Valta agent/wallet ID or name making the spend
categoryNoOptional spend category
descriptionYesWhat this spend is for — recorded in the audit trail

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description discloses the return states ('approved with a new balance, or denied with a reason') and a critical behavioral limitation: it does not intercept spending through other paths. This is good transparency, though it could mention additional side effects like pending transactions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is four focused sentences with no waste. It front-loads the purpose and uses bold for the critical warning. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 4 parameters, no output schema, and no annotations, the description covers purpose, return values, and important usage constraints. It could specify the format of the denial reason or what 'new balance' refers to, but overall it's reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all parameters. The description adds no extra parameter semantics beyond what the schema provides, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Request authorization to spend' and specifies the resource 'from an agent's Valta wallet'. It distinguishes from sibling tools like valta_transfer_funds and valta_check_balance by focusing on spend authorization.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly explains the tool's scope: 'only governs spend that routes through it' and gives clear guidance on what to do if denied: 'do not proceed with the action and inform the user why'. This helps the agent decide when to use it and how to handle results.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

valta_run_agentA

Trigger an agent to run a task. Returns the run's execution ID and initial status.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskYesThe task instruction for the agent to execute
agentIdYesThe agent ID to run
contextNoOptional additional context, max 2000 characters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It states return of execution ID and initial status, hinting at asynchronous behavior but not explicitly. It does not disclose side effects, auth requirements, or error conditions, leaving behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences efficiently convey the core action and return value. No filler or redundant information. Front-loaded with key action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no output schema, the description covers return values (execution ID and status). However, it omits details on error handling, timeout, or how to retrieve detailed results. Adequate but not fully comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter having a basic description. The tool description adds no additional meaning beyond 'Trigger an agent to run a task.' No extra syntax or format guidance provided, so baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Trigger' and clearly identifies the resource 'agent' and action 'run a task'. It distinguishes from siblings by mentioning return of execution ID and initial status, which contrasts with retrieval tools like valta_get_agent_run.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for starting an agent task but provides no explicit when-to-use or when-not-to-use guidance. Given the sibling tools include retrieval and management functions, the usage is somewhat clear but lacks exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

valta_set_policyB

Create a new spending policy — a named limit configuration (daily cap, per-transaction cap) that can be applied to an agent's spend.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesA name for this policy
agentIdNoOptional — the agent this policy applies to
maxSpendPerDayNoMaximum USDC spend per day
maxSpendPerTransactionNoMaximum USDC per single transaction

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden but does not disclose important behavioral traits: whether creation is idempotent, what happens on duplicate name, required permissions, side effects, or return value. The description only says 'create', omitting safety and confirmation details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, well-structured sentence that front-loads the core purpose. Every word contributes meaning; no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the essential purpose but lacks context around post-creation behavior (e.g., returns policy object or ID), error conditions, prerequisites (e.g., agent existence for optional agentId), and interaction with sibling tools like 'valta_apply_policy' if it exists. It is adequate but not comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema descriptions cover all 4 parameters (100% coverage), so baseline is 3. The description adds value by explaining that the policy is a 'named limit configuration' and that 'daily cap, per-transaction cap' map to the spend parameters, but does not add critical new info beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool creates a new spending policy with daily and per-transaction caps, and mentions it applies to an agent's spend. It distinguishes from siblings like 'valta_list_policies' and 'valta_request_spend' implicitly, but does not explicitly differentiate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. For example, it does not mention checking existing policies with 'valta_list_policies' before creating, or prerequisites like having an agent if 'agentId' is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

valta_transfer_fundsC

Transfer USDC directly between two of your agent wallets.

ParametersJSON Schema
NameRequiredDescriptionDefault
amountYesAmount in USDC to transfer
toAgentIdYesWallet ID or name receiving funds
descriptionNoOptional description of the transfer
fromAgentIdYesWallet ID or name sending funds

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the burden of behavioral disclosure. It describes a direct transfer between agent wallets but does not mention any side effects, authorization requirements, or irreversibility. For a financial transfer tool, this is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, no wasted words. Front-loaded with the verb and purpose. Ideal conciseness for a simple tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (4 parameters, no output schema, no annotations), the description is incomplete. It does not explain return values (e.g., transaction ID), error handling, or constraints beyond the schema. A user needs more context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the individual parameter descriptions already exist. The description adds the context 'between two of your agent wallets,' which reinforces but does not significantly augment the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool transfers USDC between agent wallets, using a specific verb and resource. It distinguishes itself from siblings like valta_request_spend or valta_check_balance, though it does not explicitly name alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives (e.g., valta_request_spend for spending, valta_check_balance for balance checks). The description does not mention prerequisites or context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

valta_unfreeze_agentA

Unfreeze a previously frozen agent's Valta wallet, allowing spend to resume.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentIdYesThe Valta agent/wallet ID or name to unfreeze

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does not disclose any behavioral traits such as required permissions, reversibility, side effects, or error conditions beyond the basic action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence with no wasted words. The verb is front-loaded, and the purpose is immediately clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 1-parameter tool, the description is adequate but lacks context about success/failure outcomes and prerequisites (e.g., agent must be frozen). Output schema is missing, but the action is straightforward.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already describes the parameter. The tool description adds no additional meaning beyond what is in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Unfreeze' and the resource 'agent's Valta wallet', with the outcome 'allowing spend to resume'. It directly contrasts with the sibling tool valta_freeze_agent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use vs alternatives, though it is the inverse of freeze_agent. The description does not specify prerequisites (e.g., agent must be frozen) or when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 16 tool updatesv0.1.4
    • First observedvalta_check_balance
    • First observedvalta_create_wallet
    • First observedvalta_freeze_agent
    • First observedvalta_get_agent
    • First observedvalta_get_agent_run
    • First observedvalta_get_audit_trail
    • First observedvalta_list_agents
    • First observedvalta_list_policies
    • First observedvalta_list_proxy_requests
    • First observedvalta_list_wallets
    • First observedvalta_proxy_request
    • First observedvalta_request_spend
    • First observedvalta_run_agent
    • First observedvalta_set_policy
    • First observedvalta_transfer_funds
    • First observedvalta_unfreeze_agent

TDQS

A3.7/5.0

Scored across 16 tools

Disambiguation5/5

Each tool targets a distinct operation: wallet management, agent control, spend authorization, proxy requests, audit, etc. There is no noticeable overlap; even seemingly similar tools like check_balance and list_wallets serve different purposes.

Naming Consistency4/5

Tools consistently use snake_case and start with 'valta_'. Most follow a verb_noun pattern (e.g., create_wallet, freeze_agent), though 'proxy_request' is noun_verb, which is a minor deviation. Overall, naming is clear and predictable.

Tool Count4/5

With 16 tools, the server is slightly above the ideal 3-15 range, but the number is still reasonable given the domain's complexity. No tool feels superfluous, and the set covers essential operations without being bloated.

Completeness4/5

The tool surface covers core workflows: wallet lifecycle (create, list, balance, transfer), agent management (list, get, run, freeze/unfreeze), spending policies (list, set), spend authorization, proxy requests, and audit. Minor gaps exist (no update/delete for wallets or agents), but these are not critical for the primary purpose of spend governance.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that enforces runtime governance on AI agent actions — file access, command execution, delegation chains, and permission escalation.
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    An MCP server that provides programmable spend limits and audit trails for AI agents to make payments from a dedicated wallet, preventing overspend and unauthorized transactions.
    8
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server that enables AI agents to request human approval before spending money, check approval status, verify signed tokens, and manage API keys.
    13
    MIT