Skip to main content
Glama
agentmetal

agentmetal/mcp

by agentmetal

@agentmetal/mcp

MCP server that exposes AgentMetal as tools, so an agent can discover → pay → provision → SSH in → run commands → manage → renew its own Linux server (VPS / cloud instance) with no human signup. Paid tools sign USDC payments over x402 v2 (or pay by card); the rest are plain HTTP.

agentmetal/mcp MCP server CI

Tools

13 tools. Paid tools sign a USDC/x402 payment; account-gated tools need AGENTMETAL_API_KEY (am_live_…) and ownership of the server.

Tool

Pays?

Account key?

What it does

get_catalog

—

—

List plans, locations, and add-on pricing (bandwidth, storage). The free discovery hook.

provision_server

✅ USDC

—

Provision a VPS (plan, days, optional ssh_key/via, managed_key) → id, IPv4, SSH. With managed_key:true, a server-side keypair is generated, authorized, and the private key returned once (stored only encrypted) to enable exec_command.

get_server

—

—

Status, IPv4, expiry, bandwidth, storage for a server id

list_servers

—

—

Fleet for a wallet/account

extend_server

✅ USDC

—

Extend a lease by N days

destroy_server

—

✅

Destroy now

reboot_server

—

✅

Soft-reboot an owned server

server_logs

—

✅

Hypervisor-level diagnostics without logging in: status, recent provider actions, a VNC console URL, and live CPU/disk/net metrics (no text boot log exists provider-side)

exec_command

—

✅

Run a shell command as root over SSH → exit_code/stdout/stderr. Requires a server provisioned with managed_key:true. Bounded: 1–120 s timeout, 256 KB output cap.

get_firewall

—

—

Read a box's edge-firewall rules. Callable from the box itself (source-IP identity) or with an account key.

manage_firewall

—

—

Open/close inbound ports on a box's edge firewall (protocol/port/source_ips). From the box itself or with an account key; SSH-lockout guarded.

claim_account

—

—

Email a one-time claim code (via AWS SES)

verify_claim

—

—

Redeem the code for an account API key. Link a wallet by also passing wallet + wallet_signature.

Add-ons (currently API endpoints, not yet separate MCP tools): extra storage ($0.01/GB/day, attached block volume) via POST /v1/servers/{id}/storage and extra bandwidth ($2/TB beyond the 20 TB included) via POST /v1/servers/{id}/bandwidth.

Related MCP server: x402 Payment Gateway MCP Server

Configuration (env)

Var

Default

Purpose

AGENTMETAL_BASE_URL

https://api.agentmetal.dev

API base URL

WALLET_PRIVATE_KEY

—

0x… EVM key used to pay 402s. Omit and paid tools fail with a clear message.

AGENTMETAL_NETWORK

eip155:8453

CAIP-2 network (Base mainnet)

AGENTMETAL_MAX_USDC

50

Per-request spend cap, in USDC

AGENTMETAL_API_KEY

—

am_live_… account key, required for destroy_server / reboot_server / server_logs / exec_command

Use with Claude Code

// .mcp.json (or claude mcp add)
{
  "mcpServers": {
    "agentmetal": {
      "command": "node",
      "args": ["packages/mcp/src/index.ts"],
      "env": {
        "WALLET_PRIVATE_KEY": "0x…",
        "AGENTMETAL_MAX_USDC": "50"
      }
    }
  }
}

The wallet must hold USDC on Base. The spend cap (AGENTMETAL_MAX_USDC) bounds what any single tool call can pay; a 402 above the cap is refused before signing.

Status: client + server are unit-tested and the stdio handshake is verified. Live USDC settlement needs a funded wallet + an x402 facilitator that supports the exact / eip155:8453 kind.

Available Tools

11 tools
claim_accountClaim an account (request code)A

Begin claiming an AgentMetal account by email. Sends a one-time 6-digit code to the address; redeem it with verify_claim to get an account API key. Side effect: sends one email. Does not charge. Accounts are OPTIONAL — they add fleet management under one key, monthly card billing, and higher quotas, but are not required to provision or pay. Call verify_claim next with the emailed code.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesEmail address that should receive the one-time 6-digit claim code.

TDQS

A4.7/5.0
Behavior4/5

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

Discloses side effect (sends one email) and states it does not charge. However, lacks details on error handling, rate limits, or behavior on invalid email, though schema provides pattern validation.

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 plus a note, all front-loaded with essential information. No wasted words, each sentence 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 single parameter, no output schema, and simple action, the description covers purpose, side effect, optionality, and next steps. No missing information needed for agent decision.

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 covers the parameter fully with format and pattern, achieving 100% coverage. Description adds context that the email receives a code, enhancing understanding beyond 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?

Clearly states the verb 'claim' and resource 'AgentMetal account', and describes the action: sends a one-time code to email. Distinguishes from sibling tool 'verify_claim' by specifying it as the next step.

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?

Explicitly notes accounts are optional and explains when to use: for fleet management, billing, quotas. Also instructs to call 'verify_claim' next, providing clear step-by-step guidance.

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

destroy_serverDestroy a serverA

Permanently destroy a server RIGHT NOW, before its lease expires. IRREVERSIBLE — the VM and all its data are deleted and remaining lease time is NOT refunded. Requires an account API key (AGENTMETAL_API_KEY); without one this returns an auth error. Use to free quota or stop holding an unneeded box. To let a box expire naturally instead, simply do not extend it.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesServer id to destroy, e.g. "srv_abc123". This action cannot be undone.

TDQS

A4.7/5.0
Behavior5/5

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

Discloses irreversibility, no lease refund, auth error without key, and that it destroys before lease expires. No annotations provided, so description carries full burden and does so thoroughly.

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?

Three sentences, each serving a purpose: stating the action, warning about consequences, and giving usage guidance. Could be slightly more concise but is well-structured and front-loaded.

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?

Covers auth, irreversibility, refund policy, and use cases. No output schema exists, but description is sufficient for this simple delete action. Lacks mention of error responses or idempotency, but not critical.

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 already describes the parameter and its irreversibility. The description adds a concrete example ('srv_abc123') and reiterates the consequence, providing slight extra clarity beyond 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 uses the verb 'destroy' and specifies the resource 'server' with emphasis on permanence. It distinguishes from sibling tools like 'extend_server' by contrasting with natural expiration.

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?

Explicitly states when to use the tool (free quota, unneeded box) and provides an alternative: 'To let a box expire naturally instead, simply do not extend it.' Also notes auth requirement.

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

exec_commandRun a command on a serverA

Run a single shell command as ROOT on a server over SSH and get back its exit code, stdout, and stderr. Requires (1) an account API key (AGENTMETAL_API_KEY) AND ownership of the server, and (2) a server provisioned with managed_key:true — the only way the API holds a key it can log in with; a box created without managed_key returns "no_managed_key". The command runs in a non-interactive shell with no TTY, so avoid prompts; chain steps with && or ;. Execution is bounded by timeout_seconds (1–120, default 60); if it overruns, the process is killed and timed_out is true. Output is capped at 256 KB per stream. Use to install packages, run scripts, or inspect a box you own without opening your own SSH session.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesServer id to run the command on, e.g. "srv_abc123". Must be a running, managed-key server you own.
commandYesThe shell command to run as root (non-empty, ≤4096 chars). Runs non-interactively; chain steps with && or ;.
timeout_secondsNoMax seconds to wait before the command is killed (1–120, default 60). On overrun, timed_out is true.

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: runs as root, non-interactive, no TTY, returns exit code/stdout/stderr, timeout with timed_out flag, 256KB output cap, and error for missing managed_key. This meets the transparency requirement comprehensively.

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, well-structured paragraph that front-loads the core purpose. Each sentence adds value (prerequisites, constraints, use case). It is concise but thorough, though slightly long due to multiple constraints; a 4 reflects this minor trade-off.

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 no output schema, the description explains all return elements (exit code, stdout, stderr, timed_out) and covers edge cases (no_managed_key, timeout, output cap). It is complete for a command execution tool, and sibling tools complement it without overlap.

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 baseline is 3. The description adds minor context beyond the schema (e.g., 'Must be a running, managed-key server you own' for id, and restates non-interactive for command). It does not introduce new parameter information, so score remains at 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 'Run a single shell command as ROOT on a server over SSH and get back its exit code, stdout, and stderr.' It precisely conveys the action, resource, and expected outcome, and it is distinct from all sibling tools which deal with server lifecycle management, not command execution.

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 lists prerequisites: API key, ownership, and server with managed_key:true. It warns about non-interactive shell and suggests chaining commands with && or ;. It also specifies a use case: 'Use to install packages, run scripts, or inspect a box you own without opening your own SSH session.' This provides clear when-to-use guidance.

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

extend_serverExtend a server leaseA

Extend an existing server's lease so it is not auto-destroyed at expiry. SPENDS REAL USDC — signed on-chain via x402 (Base) up to the per-call spend cap; a real charge. Adds days days to the current expiry and returns the new expiry (unix seconds). Use before a lease runs out to keep a box alive; check the current expiry first with get_server.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesServer id to extend, e.g. "srv_abc123".
daysYesWhole days to add to the current lease (1–30).

TDQS

A4.9/5.0
Behavior5/5

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

Warns about real money spend 'SPENDS REAL USDC — signed on-chain via x402' and describes effects and return value, fully compensating for absent annotations.

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 main action, then financial warning and guidance. No wasted words.

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?

Covers action, side effects, return value, prerequisite, and financial impact. Complete given no output schema and sibling context.

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 covers both parameters with descriptions. Description adds the effect ('Adds days...') and return value context, going beyond 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?

Clearly states 'Extend an existing server's lease' with specific verb and resource. Distinguishes from siblings like destroy_server, provision_server, etc.

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?

Explicitly advises to 'Use before a lease runs out to keep a box alive; check the current expiry first with get_server,' providing clear when-to and prerequisite.

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

get_catalogList plans, locations, and pricingA

List available server plans (size + price), the regions servers can run in, and add-on pricing for bandwidth and storage. FREE — read-only, charges no money and needs no wallet or account. Call this FIRST to see what sizes, regions, and prices are on offer before provisioning a server.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

Clearly declares it is free, read-only, and requires no wallet/account. With no annotations provided, the description adequately covers behavioral traits.

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, no redundancy, front-loaded with purpose. Every sentence earns its place.

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?

Describes all output categories and usage order. Without output schema, this is sufficient for an agent to understand the tool's purpose and results.

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?

No parameters exist, so baseline 4 applies. Description adds value by listing what the output includes (plans, regions, pricing).

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 explicitly states it lists server plans, regions, and add-on pricing. It distinguishes itself from siblings like get_server and list_servers by being a pre-provisioning discovery tool.

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?

States to call this first before provisioning, making its usage context clear. Does not explicitly mention when not to use it, but its read-only nature implies it's always safe.

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

get_serverGet server statusA

Look up one server's live status (provisioning | running | suspended | expired | destroyed), public IPv4, lease expiry (unix seconds), and bandwidth usage. Read-only — never charges money or changes the server. Use to confirm a box is up and reachable, or to see how long it has before auto-destroy.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesServer id returned by provision_server, e.g. "srv_abc123".

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description fully discloses behavioral traits: it is read-only, never charges money or changes the server, and lists possible statuses. This goes beyond what the input schema provides.

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?

Three sentences, each serving a purpose: what it does, safety assurance, and when to use. No unnecessary words.

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 simplicity of the tool (one param, no output schema), the description covers all needed context: return fields, usage scenarios, and safety profile. Sibling tools provide clear contrast.

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% for the single parameter, and the description adds context about the parameter's source and format ('Server id returned by provision_server, e.g. srv_abc123'), enriching the schema's description.

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 function (look up live status), lists specific fields returned, and distinguishes it from sibling tools like destroy_server or list_servers by emphasizing read-only nature.

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 provides explicit usage scenarios ('confirm a box is up and reachable, or to see how long it has before auto-destroy'), but does not explicitly mention when not to use it or name alternatives.

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

list_serversList your serversA

List every server (the fleet) for a payer wallet, or for the whole account when an account API key is configured. Read-only — never charges or changes anything. Defaults to the wallet configured on this MCP server; pass wallet to list a different payer. Use to enumerate active boxes before calling extend_server or destroy_server.

ParametersJSON Schema
NameRequiredDescriptionDefault
walletNoOptional payer wallet address (0x…) whose servers to list. Defaults to this MCP server's configured wallet.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries full behavioral burden. It explicitly states 'Read-only — never charges or changes anything,' which is critical. It also discloses the default wallet behavior. It does not mention rate limits or pagination, but for a simple list operation, the transparency is sufficient.

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?

Three sentences: first states purpose, second declares read-only and default, third gives usage example. No wasted words. Front-loaded with key information.

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 no output schema, the description could explain return format, but 'list every server' implies an array. The description covers core use, wallet scope, and safety. It is complete enough for a list tool with clear sibling 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 coverage is 100% (1 parameter fully described). The description adds 'pass `wallet` to list a different payer' which essentially restates the schema. Baseline is 3; no significant extra meaning added beyond the schema's own description.

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 servers for a payer wallet or whole account. It uses specific verb+resource ('List every server') and implicitly distinguishes from sibling 'get_server' (singular) and 'provision_server'. Additionally, it mentions enumeration for use before 'extend_server' or 'destroy_server', reinforcing its distinct role.

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 provides usage context: 'use to enumerate active boxes before calling extend_server or destroy_server.' It also notes default wallet behavior and optional parameter. However, it lacks explicit when-not-to-use guidance or comparison to alternatives like 'get_server', though sibling list helps.

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

provision_serverProvision a serverA

Provision a brand-new Linux VPS and pay for it in a single call. SPENDS REAL USDC — the payment is signed on-chain via x402 (Base) up to this MCP server's per-call spend cap; it is a real charge, not a quote or a dry run. Returns the server id (srv_…), public IPv4, and an ssh root@<ip> target, usually reachable in under 60 seconds. Use when an agent needs its own compute to build, run, or host something with no human signup. Pass ssh_key to get inbound SSH; omit it and the box boots with no way to log in. The lease lasts days days, after which the server is automatically destroyed unless you extend_server first.

ParametersJSON Schema
NameRequiredDescriptionDefault
planYesServer size / price tier: "nano" (smallest, cheapest), "small", or "medium". Choose the smallest that fits the workload.
daysYesLease length in whole days (1–30). The server auto-destroys at expiry unless extended; you pay up front for the whole lease.
ssh_keyNoOptional single-line OpenSSH public key (e.g. "ssh-ed25519 AAAA…") authorized for root SSH. Omit and the box has NO inbound SSH access.
managed_keyNoGenerate a server-side SSH keypair, authorize it on the box, and return the private key ONCE; enables exec_command. Stored only encrypted server-side.
viaNoOptional attribution tag (e.g. the calling skill name). Analytics only; does not affect provisioning.

TDQS

A4.3/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 transparency burden. It discloses key behaviors: real payment via on-chain x402, return values (server id, IP, ssh target), typical reachability within 60 seconds, auto-destroy after lease, and consequences of omitting ssh_key. It does not cover error cases or rate limits.

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 somewhat long but tightly packed with useful information. It front-loads the critical warning about spending real USDC and then details parameters and return values. Every sentence earns its place, though minor trimming could be possible.

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 complexity of provisioning (5 parameters, no output schema), the description covers core aspects: payment, return values, lease duration, SSH options, and mentions auto-destruction and extension via sibling. It lacks error handling details but is sufficient for an AI agent to use the tool 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% as all parameters have descriptions. The description adds value beyond schema: it explains that omitting ssh_key blocks SSH access, managed_key enables exec_command, and via is analytics-only. It also recommends choosing the smallest plan that fits the workload.

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 provisions a Linux VPS and pays for it in a single call. It uses specific verbs ('provision', 'pay') and resource ('server'), and distinguishes from sibling tools like list_servers and destroy_server.

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 says when to use: 'when an agent needs its own compute to build, run, or host something with no human signup.' It provides guidance on passing or omitting ssh_key but does not explicitly list alternatives or when not to use another tool.

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

reboot_serverReboot a serverA

Soft-reboot a server (graceful ACPI restart) without destroying it or losing data. Use to recover a box that has become unresponsive or to apply changes that need a restart. Requires an account API key (AGENTMETAL_API_KEY) and ownership of the server; without one this returns an auth error. Does not charge money. Returns immediately with status "rebooting"; the box is back in well under a minute.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesServer id to reboot, e.g. "srv_abc123".

TDQS

A4.5/5.0
Behavior5/5

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

No annotations, so description covers all: non-destructive, no charge, immediate return with status, quick recovery, auth error. Full behavioral disclosure.

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 action and key constraints. Every sentence adds value without redundancy.

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?

Single parameter, no output schema. Description covers purpose, usage, behavior, prerequisites, and result fully. No gaps given simplicity.

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 100% with clear 'id' description. Description adds no extra parameter info beyond schema, meeting baseline expectation.

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 it soft-reboots a server gracefully without data loss, distinguishing from sibling destroy_server. Verb 'reboot' and resource 'server' are specific.

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 for unresponsive box or applying changes needing restart. Mentions prerequisites (API key, ownership) and auth error. Lacks explicit alternatives, but context from siblings suffices.

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

server_logsServer diagnostics (hypervisor-level)A

Hypervisor-level diagnostics for a server WITHOUT logging into it: current status, recent provider actions (with any error messages), a VNC console URL + one-time password, and live CPU / disk / network metrics. Use to diagnose a stuck, unreachable, or misbehaving box from the outside. Requires an account API key (AGENTMETAL_API_KEY) and ownership; does not charge money. NOTE: the cloud provider exposes no text serial-console / boot log, so this returns actions + console access + metrics, not a plain-text log — open the VNC console URL for screen-level access.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesServer id to diagnose, e.g. "srv_abc123".

TDQS

A4.6/5.0
Behavior5/5

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

No annotations provided, so description fully covers requirements (API key, ownership), confirms no charge, explains limitation of no text serial console, and clarifies what is returned versus what is not.

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?

Description is somewhat long but all information is relevant and front-loaded. No redundant sentences.

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?

For a tool with no output schema, description fully explains return values (status, actions, console, metrics). Parameter is well described. Complete for the complexity.

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?

Only one parameter 'id' with schema description; description adds example format and clarifies it's the server to diagnose. Schema coverage is 100%, baseline 3, and description adds value.

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 it's for hypervisor-level diagnostics without logging in, and lists specific outputs (status, actions, console, metrics). Differentiates from siblings like get_server and exec_command.

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 to diagnose stuck/unreachable boxes. Could be improved by contrasting with get_server or exec_command, 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.

verify_claimVerify an account claimA

Complete an account claim using the 6-digit code emailed by claim_account. Returns a long-lived account API key (am_live_…) — store it securely; it authorizes destroy_server and account-scoped calls. Optionally link a wallet so its existing servers attach to the account. The code expires 10 minutes after claim_account and is invalidated after 5 wrong attempts (re-run claim_account to retry).

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesThe same email address you passed to claim_account.
codeYesThe 6-digit code from the claim email.
walletNoOptional wallet address (0x…) to link to the account, attaching its existing servers.

TDQS

A5/5.0
Behavior5/5

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

Despite no annotations, the description fully discloses behaviors: returns a long-lived API key that authorizes other tools, optionally links a wallet to attach servers, and details expiry and invalidation rules. No annotation contradiction.

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?

Three sentences with no redundancy. Front-loaded with main purpose, then key security note about API key, then wallet option, then retry logic. Every sentence 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 no output schema or annotations, the description covers all needed information: inputs, output (API key), side effects, error conditions, and relationship to sibling tools. Completely adequate for an AI agent to use correctly.

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

Parameters5/5

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

Schema description coverage is 100%, but the description adds context beyond the schema: emphasizes that email must match claim_account, code is 6-digit, and wallet is optional with specific effect (attaching servers). This enriches parameter understanding.

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 completes an account claim with a 6-digit code, and references the related 'claim_account' tool. It distinguishes by explaining the output (API key) and optional wallet linking, making its purpose unambiguous.

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?

Provides explicit context on when to use (after claim_account), with critical usage constraints: code expires in 10 minutes, invalidated after 5 wrong attempts, and instruction to re-run claim_account to retry. This guides appropriate invocation and failure handling.

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. 11 tool updatesv0.2.1
    • Changedclaim_account1 field changed
      • changedInput schema / properties / email / description
        Previous value: -"Email to receive the code"New value: +"Email address that should receive the one-time 6-digit claim code."
    • Changeddestroy_server1 field changed
      • changedInput schema / properties / id / description
        Previous value: -"Server id"New value: +"Server id to destroy, e.g. \"srv_abc123\". This action cannot be undone."
    • Addedexec_command
    • Changedextend_server2 fields changed
      • changedInput schema / properties / days / description
        Previous value: -"Days to add (1–30)"New value: +"Whole days to add to the current lease (1–30)."
      • changedInput schema / properties / id / description
        Previous value: -"Server id"New value: +"Server id to extend, e.g. \"srv_abc123\"."
    • Addedget_catalog
    • Changedget_server1 field changed
      • changedInput schema / properties / id / description
        Previous value: -"Server id, e.g. srv_…"New value: +"Server id returned by provision_server, e.g. \"srv_abc123\"."
    • Changedlist_servers1 field changed
      • changedInput schema / properties / wallet / description
        Previous value: -"Payer wallet to list; defaults to the configured wallet"New value: +"Optional payer wallet address (0x…) whose servers to list. Defaults to this MCP server's configured wallet."
    • Changedprovision_server5 fields changed
      • changedInput schema / properties / days / description
        Previous value: -"Lease length in days (1–30)"New value: +"Lease length in whole days (1–30). The server auto-destroys at expiry unless extended; you pay up front for the whole lease."
      • addedInput schema / properties / managed_key
        Added value: +{
        +  "description": "Generate a server-side SSH keypair, authorize it on the box, and return the private key ONCE; enables exec_command. Stored only encrypted server-side.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / plan / description
        Previous value: -"Server size"New value: +"Server size / price tier: \"nano\" (smallest, cheapest), \"small\", or \"medium\". Choose the smallest that fits the workload."
      • changedInput schema / properties / ssh_key / description
        Previous value: -"SSH public key to authorize on the box"New value: +"Optional single-line OpenSSH public key (e.g. \"ssh-ed25519 AAAA…\") authorized for root SSH. Omit and the box has NO inbound SSH access."
      • changedInput schema / properties / via / description
        Previous value: -"Attribution tag, e.g. the calling skill name"New value: +"Optional attribution tag (e.g. the calling skill name). Analytics only; does not affect provisioning."
    • Addedreboot_server
    • Addedserver_logs
    • Changedverify_claim3 fields changed
      • changedInput schema / properties / code / description
        Previous value: -"The 6-digit code from the email"New value: +"The 6-digit code from the claim email."
      • addedInput schema / properties / email / description
        Added value: +"The same email address you passed to claim_account."
      • changedInput schema / properties / wallet / description
        Previous value: -"Wallet address to link to the account"New value: +"Optional wallet address (0x…) to link to the account, attaching its existing servers."
  2. 7 tool updatesv0.1.2
    • First observedclaim_account
    • First observeddestroy_server
    • First observedextend_server
    • First observedget_server
    • First observedlist_servers
    • First observedprovision_server
    • First observedverify_claim

TDQS

A4.5/5.0

Scored across 11 tools

Disambiguation5/5

Each tool targets a distinct operation: account claiming, server provisioning, lifecycle management, diagnostics, and catalog browsing. No overlapping purposes.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., claim_account, provision_server, get_catalog).

Tool Count5/5

11 tools are well-scoped for a VPS provisioning service, covering account management, server CRUD, diagnostics, and catalog without being overly numerous or sparse.

Completeness4/5

Covers core lifecycle: account creation, provision, destroy, extend, reboot, list, get details, execute commands, logs, and catalog. Minor gaps like no explicit SSH key management beyond initial provision.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers