cpu-game-mcp
This MCP server lets an AI agent play Project CPU, a blockchain game on EVM — managing your wallet, land, resources, crafting, trading, and token operations.
Session & Account
Authenticate via SIWE, fetch the game rulebook (resource catalog, building costs, contract addresses), and check wallet balances ($CPU and ETH).
World Exploration
Read the live world map, inspect individual cells, and poll only changed cells since a given version to react to other players efficiently.
Reveal & Building
Reveal a land cell's resource deposits on-chain, build extractors (auto-mine resources) or hubs (enable trading), check mining status, and claim accrued resources.
Crafting
Browse all recipes, start crafting (including forging wCPU), track progress, and claim completed batch outputs.
Transport & Logistics
Preview transport routes (cost, time, fees), move resources between cells via waypoints, track shipments, list your transports, and resume pending payments.
Trading & Marketplace
Scout marketplaces, browse/filter lots, preview buy costs, purchase lots, create/cancel your own lots, and list all lots you've created.
Token Operations
Preview and execute ETH ↔ $CPU swaps (Uniswap V4) with slippage control, and withdraw wCPU from a cell to on-chain $CPU (1:1).
Land Minting
Preview the ETH cost and mint new land cells from the primary market (OpenSea SeaDrop).
Allows Windsurf (by Codeium) to interact with the Project CPU blockchain game, enabling AI agents to reveal cells, build structures, mine resources, craft items, trade at marketplaces, and cash out to on-chain $CPU.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@cpu-game-mcpwhat's my current balance?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
project-cpu-mcp
MCP (Model Context Protocol) server for Project CPU — a blockchain game on EVM. It lets an
AI agent play on your behalf: read the world map, reveal cells, build and mine, craft, move
resources, trade at marketplaces, and cash out to on-chain $CPU. Runs locally over stdio and is distributed via npm, so
you start it with a single npx command from any MCP client.
Installation
Pick your client below and add the server. The only required setting is your wallet's PRIVATE_KEY (0x + 64 hex chars) — replace 0x… with yours.
claude mcp add project-cpu -s user -e PRIVATE_KEY=0x… -- npx -y project-cpu-mcp@latest-s userinstalls it across all your projects; omit it (or use-s local) for the current project only.-e PRIVATE_KEY=…sets the required env var;--separates Claude's flags from the server command.
Edit claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart the app:
{
"mcpServers": {
"project-cpu": {
"command": "npx",
"args": ["-y", "project-cpu-mcp@latest"],
"env": { "PRIVATE_KEY": "0x…" }
}
}
}Add to ~/.cursor/mcp.json (global) or .cursor/mcp.json (this project):
{
"mcpServers": {
"project-cpu": {
"command": "npx",
"args": ["-y", "project-cpu-mcp@latest"],
"env": { "PRIVATE_KEY": "0x…" }
}
}
}Create .vscode/mcp.json — VS Code prompts for the key at startup instead of storing it:
{
"inputs": [
{ "type": "promptString", "id": "privateKey", "description": "Project CPU private key", "password": true }
],
"servers": {
"project-cpu": {
"command": "npx",
"args": ["-y", "project-cpu-mcp@latest"],
"env": { "PRIVATE_KEY": "${input:privateKey}" }
}
}
}(In user settings.json, wrap the whole object in an "mcp": { … } key.)
Add to ~/.codeium/windsurf/mcp_config.json, then restart Windsurf:
{
"mcpServers": {
"project-cpu": {
"command": "npx",
"args": ["-y", "project-cpu-mcp@latest"],
"env": { "PRIVATE_KEY": "0x…" }
}
}
}Related MCP server: Universal Crypto MCP
Environment variables
Required
Variable | Description |
| Your wallet private key — |
Optional — has a sensible default; normal users can omit it.
Variable | Default | When you need it |
| chain's public RPC | A custom RPC endpoint for sending on-chain transactions (e.g. |
Session state (JWT / session keys) is persisted to ~/.project-cpu/.
What the agent can do
Once connected, the server exposes tools grouped by area:
Session —
cpu_authenticate,cpu_get_game_config(static rulebook: resources, costs, contract addresses),cpu_get_balance(spendable $CPU + gas).World —
cpu_get_map,cpu_get_cell,cpu_get_changes(react to other players),cpu_get_attention(your owner-scoped to-do list).Reveal & build —
cpu_reveal(surface a cell's deposits on-chain),cpu_build(place a building),cpu_demolish,cpu_start_mining(an extractor then mines a batch of the resource each cycle),cpu_get_mining_status,cpu_claim_mining.Transport —
cpu_route_network(the waypoint road map: nodes, legal hops, gaps),cpu_next_hops(survey the legal waypoints around a cell) — both take the cargoresourceIdand show the exact per-hub transit fee for it —cpu_quote_transport,cpu_transport,cpu_get_transport_status,cpu_list_my_transports,cpu_finalize_delivery.Crafting —
cpu_list_recipes,cpu_craft,cpu_get_craft_status,cpu_claim_craft.Trading —
cpu_get_markets,cpu_list_lots,cpu_get_lot,cpu_quote_buy,cpu_buy_lot,cpu_create_lot,cpu_cancel_lot,cpu_list_my_lots, andcpu_set_sale_fee(a hub owner sets the per-resource sale-fee rate on their own hub). See CONTEXT.md for the fee vocabulary.Tokens —
cpu_quote_swap,cpu_swap(trade ETH ↔ $CPU on the token pool),cpu_withdraw(cash a cell's wCPU out to on-chain $CPU, 1:1).
Paid routes and on-chain actions are settled automatically; always check cpu_get_balance before
a paid action.
Requirements
Node.js ≥ 20
License
Available Tools
38 toolscpu_authenticateA
Create a blockchain session. Call this tool when other tools fail with authentication or session errors (e.g. "not authenticated", "session expired"). In EVM mode this signs in via SIWE locally and stores the token. In AGW mode it returns a URL the user must open in their browser to approve. Once authenticated, subsequent wallet-dependent tools will work automatically. Pass force=true to discard the cached session and authenticate from scratch (e.g. after the game server was reset and the stored token references a stale user).
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Ignore the stored session and re-run authentication from scratch. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It details the authentication flow (SIWE in EVM, URL approve in AGW), token storage, automatic subsequent tool behavior, and force parameter's effect. This is rich behavioral context beyond a simple 'authenticate'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured with a one-sentence purpose, usage condition, mode behaviors, and force explanation. No filler; each sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional param, no output schema) and abundance of sibling tools, the description adequately covers purpose, usage triggers, mode-specific behaviors, and edge cases. It is a complete standalone explanation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The sole parameter `force` is already described in schema, but the description adds a concrete scenario ('after the game server was reset and the stored token references a stale user'), enhancing understanding beyond schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a blockchain session' as the core function, using a specific verb and resource. It distinguishes itself from sibling tools by focusing on authentication/session setup rather than game actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs 'Call this tool when other tools fail with authentication or session errors', providing clear when-to-use guidance. Also clarifies force=true usage for stale sessions, and mentions both EVM and AGW modes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpu_buildA
Place a building on a revealed Land cell you own (needs a session — cpu_authenticate first). Pick a buildingType from the catalog (cpu_get_game_config): an extractor mines a raw deposit, a crafter runs a recipe, the hub routes transport/trade. Costs $CPU (some buildings also consume refined resources from the cell's warehouse); the tool auto-approves the $CPU spend once, sends the on-chain place, and waits for confirmation. Building takes time — it is not usable until it finishes. Once ready, start an extractor with cpu_start_mining or a crafter with cpu_craft. A cell holds one building: re-running build on the same building is a safe no-op; to switch buildings cpu_demolish first (a just-demolished cell is locked from rebuilding until its cooldown ends). Inspect the result with cpu_get_cell.
| Name | Required | Description | Default |
|---|---|---|---|
| tokenId | Yes | The tokenId of a revealed cell you own to build on. | |
| buildingType | Yes | Which building to place — see cpu_get_game_config for the full catalog (kind, cost, mine/craft bindings). An extractor mines a deposit (then start it with cpu_start_mining), a crafter runs a recipe (cpu_craft), the hub routes transport and trade. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full weight. It discloses costs ($CPU, possibly refined resources), auto-approval of spend, on-chain placement, waiting for confirmation, build time delay, single-building-per-cell rule, safe no-op on re-run, and demolition cooldown. This is rich behavioral context beyond what the schema conveys.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence earns its place, covering prerequisites, catalog, costs, timing, post-actions, and constraints. It is longer than typical but appropriate for a complex blockchain interaction; structure flows logically from placement to follow-up.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema and no annotations, the description covers the full lifecycle: authentication, building type selection, costs, waiting, activation, replacement, cooldown, and inspection. It even mentions the no-op case. No obvious gaps remain for an agent to invoke this tool successfully.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for both tokenId and buildingType, so the baseline is 3. The description adds meaning by categorizing buildingType (extractor, crafter, hub) and linking it to the game config and subsequent actions, which goes beyond the schema's enum list. It does not add new syntax for tokenId but reinforces the 'own' requirement.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Place a building on a revealed Land cell you own', clearly distinguishing it from sibling tools like cpu_demolish and cpu_start_mining. It also enumerates building categories (extractor, crafter, hub), making the tool's function unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit context: requires a session (cpu_authenticate first), references the catalog (cpu_get_game_config) for choosing buildingType, and explains follow-up actions (cpu_start_mining for extractors, cpu_craft for crafters). It also warns about the need to demolish before switching buildings and the cooldown after demolition, giving clear when-to-use and when-not-to guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpu_buy_lotA
Buy units from an OPEN lot, delivered to your own cell, on-chain (needs a session). chain = [hub holding the lot, ...waypoints, your destination cell]. One atomic $CPU tx: seller price (value × pricePerUnit) + any foreign-hub transit fee, plus gas; the first buy auto-approves the sale exactly and the transit fee with ~10% headroom (a ceiling for on-chain fee drift, not a double charge). Preview the exact cost with cpu_quote_buy. Goods ship to your cell and credit only after arrival, when you cpu_finalize_delivery the returned deliveryId. Buying your own lot is allowed.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | Waypoint tokenIds [hub, ...waypoints, destination] — first node is the lot Hub, last is your own revealed cell where the goods are delivered. Scout waypoints with cpu_next_hops. | |
| lotId | Yes | The lot id to buy from (from list_lots / get_lot / get_markets). | |
| value | Yes | Units to buy, as a positive integer string (≤ the lot remaining). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries full burden. It discloses all key behavioral traits: atomic tx, cost components (price, transit fee, gas), auto-approval with 10% headroom, delivery timing, and permission to buy own lot. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is detailed but each sentence adds value. It is front-loaded with the main action and then explains nuances. Could be slightly more concise, but overall well structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description covers prerequisites, process, cost preview, auto-approval, delivery, and finalization. It mentions the returned deliveryId. Lacks explicit error conditions but is adequate for a buy tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 significant value: for 'chain' it explains waypoint structure and scouting via cpu_next_hops; for 'lotId' and 'value' it provides context on sources and constraints (positive integer, ≤ remaining).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Buy'), resource ('units from an OPEN lot'), and outcome ('delivered to your own cell'). It distinguishes from sibling tools like cpu_quote_buy (preview) and cpu_create_lot (create).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit context: when to buy (from open lot), prerequisite (needs session), and related tools (cpu_quote_buy for preview, cpu_finalize_delivery for completion). However, it doesn't explicitly state when not to use (e.g., if lot is closed).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpu_cancel_lotA
Withdraw an OPEN lot; the unsold units return to you, on-chain. Requires a session. Pass chain = [hub, ...waypoints, your destination cell] for the return shipment (required). One atomic tx: a return through a foreign Hub costs a $CPU transit fee (auto-approved), otherwise it is free; you also pay gas. The units ship back and are credited only after they arrive and you cpu_finalize_delivery on the returned deliveryId. Track with cpu_list_my_lots / cpu_get_lot.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | Waypoint tokenIds [hub, ...waypoints, destination] for the return shipment — first node is the lot Hub, last is your own revealed cell where the unsold units return. A route through a foreign Hub is paid in $CPU. | |
| lotId | Yes | The lot id to cancel (must be yours). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Given no annotations, the description carries full burden and excels: it discloses the atomicity of the transaction, potential $CPU transit fee for foreign hub returns, gas costs, and the need to call cpu_finalize_delivery for crediting. It also clarifies that no crediting occurs until arrival, which is a key behavioral trait.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact yet information-dense, front-loading the purpose and then covering requirements, fees, and post-steps without redundancy. Each sentence adds value, and the structure is logical.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 manages to cover prerequisites, process, fees, and next steps (finalize_delivery, tracking). It even implies the return of a deliveryId. It is complete enough for an agent to understand the workflow and necessary actions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both params. The description restates the chain format and lotId ownership, adding little beyond the schema. While it mentions the fee implication, that's more behavioral transparency than parameter meaning. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Withdraw an OPEN lot; the unsold units return to you, on-chain.' This is a specific verb+resource that distinguishes it from sibling tools like creating or buying lots. The on-chain detail adds precision.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context: requires a session, requires chain for the return shipment, and mentions tracking with cpu_list_my_lots/cpu_get_lot. However, it does not explicitly state when not to use this tool or name alternatives, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpu_claim_craftA
Bank every matured craft batch on a cell you own into its resource balance. Requires a session — call cpu_authenticate first. With at least one craft process on the cell, claiming nothing matured is a no-op success; claiming on a cell that has no craft processes is an error. A fully-claimed process frees its slot. Check what is claimable first with cpu_get_craft_status.
| Name | Required | Description | Default |
|---|---|---|---|
| tokenId | Yes | The tokenId of the cell whose craft processes to act on. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It clearly describes side effects: banking into resource balance, freeing a slot when fully claimed, no-op success when nothing is matured, and errors when no craft processes exist. This is exceptional transparency for a state-changing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences, each earning its place: action, prerequisite, edge cases, and complementary tool. It is front-loaded with the core purpose and avoids any filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (a claim operation with error cases, side effects, and prerequisites) and the absence of annotations and output schema, the description covers all essential context. It tells the agent about authentication, when the operation succeeds or fails, and what to check before calling, making it fully self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description for tokenId already states 'The tokenId of the cell whose craft processes to act on.' The description adds the ownership constraint ('a cell you own') and clarifies the action's context, which goes slightly beyond the schema. However, the schema coverage is high, so the additional value is modest.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Bank every matured craft batch on a cell you own into its resource balance.' This clearly states the action and its subject, distinguishing it from related tools like cpu_craft (creating batches) and cpu_get_craft_status (viewing status). It leaves no ambiguity about what the tool accomplishes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage context: it requires prior authentication ('Requires a session — call cpu_authenticate first'), recommends checking claimable items first ('Check what is claimable first with cpu_get_craft_status'), and documents edge cases for when it is a no-op or an error. This tells the agent exactly when and how to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpu_claim_miningA
Bank every matured mining cycle an extractor has produced on a cell you own into its resource balance. Requires a session — call cpu_authenticate first. With an active job, claiming when nothing new has matured is a harmless no-op; claiming on a cell that has no extractor is an error. A cycle in progress matures nothing until it completes, and only whole cycles settle — if a full cycle of output does not fit, nothing banks and the wait resets. Claiming does not stop a running job. Claiming one that has run its schedule (or drained its deposit) retires it and frees the process slot, so the cell can take another job or a craft. Check what is available first with cpu_get_mining_status.
| Name | Required | Description | Default |
|---|---|---|---|
| tokenId | Yes | The tokenId of a cell you own with an extractor, to bank its matured mining cycles. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Given no annotations, the description carries the full burden and does so thoroughly. It discloses edge cases (no-op, error), cycle semantics (only whole cycles settle, wait resets if output doesn't fit), side effects (does not stop running job, retires completed jobs and frees process slot). This is exemplary behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose, then prerequisites, then edge cases. Every sentence provides non-redundant, necessary detail. Despite being longer than typical descriptions, it is dense with useful information and avoids fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description thoroughly covers prerequisites, side effects, and edge cases. It could explicitly mention the return value (e.g., new balance) to be fully complete, but the behavioral detail and pointer to cpu_get_mining_status make it nearly comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of the single parameter (tokenId) with a description that already includes 'a cell you own with an extractor'. The tool description adds no additional param semantics beyond restating the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('bank') and resource ('matured mining cycle an extractor has produced on a cell you own'), clearly distinguishing it from siblings like cpu_get_mining_status (checking status) and cpu_start_mining (starting mining). It unambiguously states the action and its target.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states a prerequisite ('Requires a session — call cpu_authenticate first') and advises checking availability with cpu_get_mining_status. It also differentiates valid claim scenarios (harmless no-op when nothing new, error on cells without an extractor), providing 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.
cpu_craftA
Run a craft recipe on a cell you own (refine raw resources, or forge $WCPU). Requires a session — call cpu_authenticate first; discover recipes with cpu_list_recipes. Inputs are debited upfront for all batches. Most recipes are free and start their timer immediately; forge_wcpu costs $CPU, which this tool auto-approves once (a one-time unbounded allowance) before submitting the on-chain payment and waiting for its confirmation — its timer then starts once the indexer settles the payment a few seconds later. Track progress with cpu_get_craft_status and bank matured batches with cpu_claim_craft.
| Name | Required | Description | Default |
|---|---|---|---|
| batches | No | How many sequential batches to run, 1..1000; inputs are debited upfront for all of them. The run stops itself after these and there is no cancel. | |
| tokenId | Yes | The tokenId of a cell you own to craft on. | |
| recipeId | Yes | Which recipe to run — see list_recipes for inputs/outputs/cost. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses key behaviors: inputs are debited upfront for all batches, most recipes start timer immediately, forge_wcpu requires on-chain payment and one-time allowance, and the run stops itself with no cancel. This is thorough for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the main action. Every sentence adds value without redundancy. It is slightly long but efficient for the complexity of the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, so the description should ideally mention what it returns (e.g., a craft ID or status). It only hints at follow-up tools. Error conditions or limitations beyond 'no cancel' are omitted. For a tool with three parameters and no output schema, some gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds value by explaining behavioral context for parameters (e.g., 'batches' debited upfront and no cancel, 'recipeId' with special forge_wcpu cost). This goes beyond the schema's property descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the main action: 'Run a craft recipe on a cell you own (refine raw resources, or forge $WCPU).' It uses specific verbs and resources and distinguishes from sibling tools like cpu_list_recipes, cpu_get_craft_status, and cpu_claim_craft.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear guidance: prerequisites ('call cpu_authenticate first'), discovery information ('discover recipes with cpu_list_recipes'), and follow-up tools ('cpu_get_craft_status' and 'cpu_claim_craft'). It also explains special cases like forge_wcpu costing $CPU. However, it does not explicitly state when not 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.
cpu_create_lotA
List units of a resource for sale at a Hub, on-chain (needs a session — cpu_authenticate first). One atomic tx: ships the goods from your source cell to the listing Hub (chain = [source, ...waypoints, hub]) and opens a lot at pricePerUnit $CPU, plus gas. A route through a foreign Hub costs a $CPU transit fee (auto-approved once); over only your own cells it is free. The hub owner's current sale-fee rate is frozen into the lot and is later carved out of the seller proceeds on every sale (the buyer still pays exactly price × value). Optionally cap it with maxSaleFeePercent; omit it to accept the live rate at listing (read on-chain) — a last-moment rate raise then reverts the listing instead of freezing a worse rate in. The lot is DELIVERING and becomes buyable (OPEN) only after its escrow arrives — call cpu_finalize_delivery on the returned deliveryId (or wait). Returns the lotId and the frozen saleFeePercent; track with cpu_list_my_lots / cpu_get_lot.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | Waypoint tokenIds [source, ...waypoints, hub] — first node is your source cell, last is the listing Hub. A route through a foreign Hub is paid in $CPU. Scout waypoints with cpu_next_hops. | |
| value | Yes | Units to list, as a positive integer string. | |
| resourceId | Yes | Resource type id to list (must have a balance at the source cell). | |
| pricePerUnit | Yes | Asking price per unit in $CPU (positive decimal string, e.g. "0.5"). Must be > 0. | |
| maxSaleFeePercent | No | Optional seller tolerance: the highest sale-fee percent (0–50) you accept the hub charging. Omit to accept the hub's live rate at listing time — the listing then reverts if the owner raised the rate in the meantime, instead of freezing a worse rate into your lot. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It thoroughly discloses behavioral traits: atomic transaction, shipping goods, opening lot, gas costs, transit fees, sale fee freezing, delivery state, and return values. It also explains edge cases like rate raises and maxSaleFeePercent behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is relatively long but well-structured. It front-loads the main purpose and prerequisite, then details parameters and behavior. Every sentence adds value, but there is slight redundancy (e.g., mentioning tracking tools twice). Still, it is concise given the complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (5 parameters, no output schema), the description is remarkably complete. It covers prerequisites, parameter semantics, process flow, edge cases (rate raises), and return values (lotId, saleFeePercent). It also mentions subsequent tracking tools, making it fully actionable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds significant meaning beyond the schema: it explains the chain structure (first node source, last hub), value as 'units to list', resourceId needing balance, pricePerUnit must be >0, and maxSaleFeePercent's effect. This elevates the score above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the purpose: 'List units of a resource for sale at a Hub, on-chain'. It uses a specific verb (list) and resource (units of a resource) and distinguishes this from sibling tools like cpu_buy_lot and cpu_cancel_lot.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states the prerequisite: 'needs a session — cpu_authenticate first'. It also explains when to use the chain parameter and provides guidance on optional maxSaleFeePercent. However, it does not explicitly state when not to use the tool, though it is implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpu_demolishA
Remove the building from a Land cell you own, clearing it for a different building. Requires a session — call cpu_authenticate first. Not free: it burns a fraction of the building’s build cost in $CPU (auto-approved) and consumes some of its build materials from the cell’s warehouse (no refund) — see each building's demolishCost in cpu_get_game_config for the exact amounts. The cell must have no active mining or craft process — a craft frees its slot once fully claimed, but a mining run only ends when its deposit is exhausted, so a mining extractor cannot be demolished mid-run; a hub can only be demolished when it is not mid-route or anchoring open trade lots. Deposits and other warehouse balances are preserved. Afterward the plot is locked from rebuilding for the building's build time (its demolishFinishAt); cpu_get_cell/cpu_get_attention surface the cooldown.
| Name | Required | Description | Default |
|---|---|---|---|
| tokenId | Yes | The tokenId of a cell you own whose building to remove. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Given no annotations, the description fully discloses behavioral traits: it consumes resources (CPU and materials), preserves deposits and warehouse balances, and imposes a cooldown. It also explains restrictions and references other tools for exact costs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the main purpose. While slightly verbose, every sentence contributes necessary context. It balances detail with clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is comprehensive, covering prerequisites, costs, restrictions, and outcomes. No output schema exists, but the description adequately explains what the tool does without needing to detail return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, tokenId, is described identically in both the schema and the description. With 100% schema coverage, the description adds no additional meaning beyond what the schema already provides, warranting a baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Remove the building from a Land cell you own, clearing it for a different building.' This is a specific verb+resource combination, and it effectively distinguishes the tool from siblings like cpu_build or cpu_buy_lot.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides prerequisites ('Requires a session — call cpu_authenticate first'), costs, and conditions for use (no active mining or craft process, specific rules for mining extractor and hub). It also references alternatives like cpu_get_game_config for details.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpu_finalize_deliveryA
Finalize one or more arrived deliveries by their on-chain deliveryIds, crediting each to its target cell. Permissionless and on-chain (you pay gas). A delivery can only be finalized once its arrival time has passed — see cpu_list_my_transports (ready_to_finalize). Requires a session — call cpu_authenticate first.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | On-chain delivery ids to finalize (arrived deliveries, from `list_my_transports`). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses key behavioral traits: permissionless access, on-chain execution with gas costs, time-gating constraint, and the need for a session. This goes beyond basic shorthand and helps the agent reason about side effects and prerequisites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: what it does, key constraints, and prerequisite steps. Every sentence earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no output schema and no annotations, the description covers purpose, eligibility, permissions, gas costs, and session setup. It is complete enough for an agent to decide when and how to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the parameter description already explains 'on-chain delivery ids' and reference to list_my_transports. The tool description reinforces this but adds no new semantic detail beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb+resource pair: 'Finalize one or more arrived deliveries' and explains the effect 'crediting each to its target cell'. This clearly distinguishes it from sibling tools like cpu_transport or cpu_claim_craft.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states the precondition that a delivery can only be finalized after arrival time and points to cpu_list_my_transports for identifying ready_to_finalize deliveries. It also notes the session requirement and mentions cpu_authenticate, providing a clear workflow. It does not explicitly exclude other tools but offers sufficient context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpu_get_attentionA
Owner-scoped roll-up of cells worth attention, most time-sensitive first — so you skip scanning the whole map. Flags, each with a severity: stalled mining/craft (the output box has room for less than one whole cycle, so nothing settles and the wait burns — critical); a near-full warehouse on an actively-produced resource, a job that has run its scheduled cycles and now idles the cell until claimed, an arrived delivery ready to finalize, or an extractor on a depleted deposit (warning); revealed-but-unbuilt cells, and cells in a post-demolish rebuild cooldown (info — on a demolish_cooldown item arrivalAt marks when rebuild reopens). A finished job loses nothing by waiting, unlike a stall — it only holds the cell idle. Items are purely descriptive (cell, resource, used/cap breakdown, deposit, delivery) and suggest no action — you decide. Your own cells need an authenticated wallet; pass owner to scout another player read-only (all data is public). minSeverity filters by urgency. If the deliveries endpoint is down, map items still return and a note says so.
| Name | Required | Description | Default |
|---|---|---|---|
| owner | No | Scout another player: their wallet address to inspect their cells (read-only intel — the map is public). Omit to get your own to-do list. Deliveries are only surfaced for yourself. | |
| minSeverity | No | Only return items at or above this urgency (critical > warning > info). Default: all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that items are descriptive ('suggest no action'), scouting is read-only, authentication needed for own cells, and potential unavailability of deliveries. It details flags and severity levels comprehensively.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-structured, starting with purpose then detailing flags and usage. While packed with information, some sentences are long; slight trimming could improve conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately describes return items (flags with severity, descriptive objects). It covers edge cases like deliveries down. The tool's complexity is well-handled.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline 3. The description adds meaning: owner parameter scope (own vs scout) and minSeverity as urgency filter. It provides context beyond the schema's basic descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states what the tool does: 'Owner-scoped roll-up of cells worth attention, most time-sensitive first'. It distinguishes itself from siblings like cpu_get_cell or cpu_get_map by focusing on attention-worthy items.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use ('so you skip scanning the whole map') and covers scoping (own cells vs scout another). It provides a note about deliveries endpoint downtime. However, it doesn't explicitly state when not to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpu_get_balanceA
Show the wallet's spendable funds: $CPU (the game currency — paid for reveal, build, craft, transport, and trade) and the native gas balance, each a human-readable decimal. Check this before paid actions to avoid failed or stranded payments. Requires a configured wallet (no session needed).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description discloses that the tool requires a configured wallet, clarifies that no session is needed, and describes the output as human-readable decimals. It doesn't cover potential errors if wallet is missing, but the key behavioral traits are stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, front-loaded sentences. Every sentence adds value: what it shows, when to use it, and what it requires. No redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only balance query with no parameters and no output schema, the description covers purpose, usage timing, output format, and prerequisites. It is entirely adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, and the schema confirms this. The description has no need to explain parameters, and the baseline of 4 applies due to no parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it shows the wallet's spendable funds, distinguishing CPU currency from native gas balance. The verb 'Show' and the explicit list of what it includes make the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to check before paid actions to avoid failed or stranded payments, providing both when and why. It also notes the prerequisite of a configured wallet, which helps the agent decide when it can call this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpu_get_cellA
Inspect one cell in depth (any owner — the map is public). Returns the cell, its neighbours expanded as full cell states (the immediate surroundings of a target), and distanceFromMine — the grid distance (BFS steps) to your nearest cell (null if your wallet is unknown or it is farther than 50 steps). Each resource carries a storage box (used/cap/reserved/full) and the active process a stalled flag — true once the room holds less than one whole cycle of its output, which halts production before the box reads full, until you offload. For broader situational awareness use cpu_get_map.
| Name | Required | Description | Default |
|---|---|---|---|
| tokenId | Yes | The cell tokenId to inspect. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes into depth about behavior: returns the cell, neighbours expanded as full cell states, distanceFromMine with BFS steps and null conditions, plus storage box contents and the stalled flag's precise trigger and effect on production. With no annotations present, this detailed disclosure fully carries the transparency burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description uses four sentences, each with a distinct job: purpose, return structure, field semantics, and a pointer to a sibling tool. No filler or redundancy; every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
In the absence of an output schema, the description details the major return components and edge cases: neighbour expansion, distanceFromMine with null and 50-step limits, storage box fields, and the stalled flag behavior. This is comprehensive and actionable for a complex inspection tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% — the only parameter tokenId is fully described with type, range, and purpose. The description adds contextual info ('any owner — the map is public') but no additional parameter syntax or format details, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Inspect one cell in depth,' clearly stating the tool's action and target. It differentiates from siblings by explicitly pointing to cpu_get_map for broader awareness, making its narrow, deep-dive scope unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly names an alternative tool: 'For broader situational awareness use cpu_get_map,' giving the agent a clear when-to-use versus when-to-use-something-else decision. It also notes that any owner's cell can be inspected since the map is public, setting expectations for access.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpu_get_changesA
Get only the cells that changed since a given version — react to other players without re-reading the whole map. Pass the version from a previous map response; the reply carries a new version for next time. Omit sinceVersion (or 0) to get everything. Also carries server: { reachable }: false means the API is unreachable, so any action (build/reveal/transport/trade) will fail — keep polling cpu_get_changes rather than retrying actions; the client reconnects in the background, and once reachable flips true you can act again (after an outage, call once with sinceVersion 0 for the full picture).
| Name | Required | Description | Default |
|---|---|---|---|
| sinceVersion | No | The "version" (epoch ms) from a previous map response. Omit or 0 to return every cell. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries the behavioral transparency burden. It discloses key stateful behavior: the reply carries a new version for subsequent calls, the server.reachable flag indicates API availability, and it explains the implications of false (actions will fail) and the reconnection policy. This goes well beyond the bare minimum.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Though relatively long, every sentence earns its place: it opens with the purpose, then explains the parameter usage, and then covers the important server.reachable edge case. The structure is logical and front-loaded, with no redundant fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is sufficiently complete for the tool's complexity. It explains the versioning mechanism, the meaning of the server.reachable flag, and the recommended polling behavior, even covering the post-outage recovery step. While there is no output schema, the description highlights the critical return fields and their roles, making the tool easy to invoke and interpret.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully documents the single parameter sinceVersion, including its type, default, and meaning ('Omit or 0 to return every cell'). The description adds no new semantic information beyond what the schema provides—it simply restates the same concept in prose. Therefore the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool's function: 'Get only the cells that changed since a given version'—a specific verb with a clear resource and scope. It also distinguishes itself from related tools by framing it as a way to 'react to other players without re-reading the whole map', clearly differentiating from full-map retrieval tools like cpu_get_map.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage context: use it to avoid re-reading the whole map, pass the version from a previous response, and omit sinceVersion for a full snapshot. It also gives direct guidance for the unreachable case ('keep polling cpu_get_changes rather than retrying actions') and after an outage ('call once with sinceVersion 0 for the full picture'), effectively steering the agent away from alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpu_get_craft_statusA
Get the craft job on a cell: its recipe, status (active / pending payment / stalled), how far through its schedule it is (completedBatches of batches), what is claimable right now, when the next batch matures and when the run ends. A craft stalls once any output box has room for less than one whole batch — batches settle whole or not at all, so nothing banks until you offload a blocked output (blockedResourceIds), and the wait resets while the schedule survives. isFinished means the run is done and now only holds the cell's process slot: claim it to bank the rest and free the cell. Timestamps are unix seconds on the same clock as serverTime. Public — works for any tokenId. This is the source of craft progress; bank matured batches with cpu_claim_craft.
| Name | Required | Description | Default |
|---|---|---|---|
| tokenId | Yes | The tokenId of the cell whose craft processes to act on. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden and does so richly: explains stalling condition (output box has room for less than one whole batch), settlement behavior (batches settle whole or not at all), reset behavior, meaning of isFinished, process slot hold, and timestamp convention. This exceeds typical status-read transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense yet well-organized, front-loading the core output then progressing to stall behavior, isFinished semantics, timestamp note, and final guidance. Every sentence contributes unique information; no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so description must explain return values; it does so by naming fields (completedBatches, batches, blockedResourceIds, isFinished, serverTime) and their semantics. Given the complexity of craft state, the description covers causes, effects, actions, and timing comprehensively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already covers tokenId with a clear description (100% coverage), so baseline is 3. Description adds meaningful context by confirming the operation works for any tokenId ('Public'), removing ambiguity about ownership restrictions, and tying tokenId to the cell context. This slight elevation above baseline is justified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Get' with a clear resource 'craft job on a cell' and enumerates the returned details (recipe, status, progress, claimable amounts, timings). It distinguishes itself from sibling status tools like cpu_get_mining_status and cpu_get_transport_status by focusing on craft state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States when to use: 'This is the source of craft progress' and explicitly directs to the next action: 'bank matured batches with cpu_claim_craft'. Also notes 'Public — works for any tokenId', clarifying access constraints. Provides clear context for interpretation of stalled states and recovery actions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpu_get_game_configA
Return the game rulebook for the active network: the resource catalog (id → name), the building catalog (name, kind — extractor/crafter/hub — and $CPU cost; the full JSON also carries each building’s mine/craft bindings and build time), reveal-cost params (first reveal free; re-reveal price), the on-chain contract addresses, and the recipe count (use cpu_list_recipes for the full recipe graph). A free reference read — call it once to ground planning. No session needed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but description discloses it's a read-only operation ('free reference read') and indicates no session/auth needed. Could mention if any other side effects exist, but current disclosure 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, no wasted words. Efficiently communicates necessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description comprehensively covers return values (resource catalog, building catalog, reveal-cost params, addresses, recipe count) and points to sibling for full recipes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist (schema coverage 100%), so baseline 4 applies. Description adds value by detailing the return contents beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Return the game rulebook for the active network' and enumerates specific components (resource catalog, building catalog, etc.), distinguishing it from sibling tools like cpu_list_recipes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'A free reference read — call it once to ground planning. No session needed.' and directs to cpu_list_recipes for full recipe graph, providing clear when/alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpu_get_lotA
Inspect a single lot by id — resource, remaining/listed units, price per unit, Hub location, seller, and lifecycle state. Public read.
| Name | Required | Description | Default |
|---|---|---|---|
| lotId | Yes | The lot id to inspect. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It explicitly labels the operation as 'Public read', disclosing it's safe and requires no authentication. It also outlines the exact data returned, giving transparency into behavior beyond basic semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, well-structured sentence that front-loads the action and resource, then efficiently lists the returned fields. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get-with-ID tool, the description is complete: it states the action, the access level (public read), and the full set of returned attributes without relying on an output schema. It covers the essential context needed to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with the single parameter lotId described as 'The lot id to inspect.' The description's 'by id' mirrors this and adds no new parameter-specific meaning 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.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Inspect' and resource 'single lot by id', clearly distinguishing from sibling listing tools like cpu_list_lots and cpu_list_my_lots. It also enumerates the fields returned, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States this inspects a single lot by id, implying it's for when you have a specific lotId and need details. Doesn't explicitly name alternatives or exclusions, but the 'by id' wording vs list siblings provides clear context. 'Public read' also clarifies accessibility.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpu_get_mapA
Read the live game world (public, background-synced). The world is a finite sphere of 48,990 cells keyed by tokenId — no coordinates: navigate via each cell’s neighbors (6 adjacent, 5 next to a pentagon vertex; owned/other/empty, empty = unminted) and cpu_next_hops; pos {face,i,j} is only a rough hint (wraps at face seams). Returns a summary, a resourceIndex of your cells, and per-resource storage (used/cap/full; a box with room for less than one whole cycle halts that resource’s production, cap null = uncapped). Scopes: mine | around (grid radius from aroundTokenId) | cells | all | summary. version/updated are epoch ms, serverTime/startAt unix seconds. server.reachable false means actions will fail; your to-do list is cpu_get_attention.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | mine | around | cells | all | summary. Omit to default to "mine" (or "summary" if no wallet). | |
| radius | No | Grid radius (BFS steps) for scope="around" (default 2, max 10). | |
| tokenIds | No | Required for scope="cells": the cell tokenIds to return. | |
| aroundTokenId | No | Center cell tokenId for scope="around". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full responsibility for behavioral disclosure. It thoroughly covers read-only nature ('public, background-synced'), world structure (48,990 cells, no coordinates), caveats ('pos is only a rough hint'), return contents, and failure signal ('server.reachable false means actions will fail'). This is exceptionally transparent for a read tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and front-loaded with the core purpose, then expands into necessary domain details. While it is a single long paragraph, it avoids redundancy and every clause adds value about the world, returns, or scopes. Minor structure improvements (bullets) would earn a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description explains the return structure (summary, resourceIndex, storage) and their semantics, provides navigation guidance, and warns about `server.reachable`. Combined with the schema's full parameter coverage, this gives agents a complete and actionable picture for a complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents all four parameters with clear descriptions (scope enum, radius bounds, tokenIds requirement, aroundTokenId role). The description's scope list mostly restates schema info without adding new parameter-level meaning or clarifying dependencies beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear verb and resource: 'Read the live game world.' It distinguishes this tool from siblings by detailing the world model (finite sphere, tokenId keys, navigation via neighbors) and the available scopes, making it unambiguous that this is the broad world-reader tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context for when to use the tool ('Read the live game world') and implicitly contrasts with navigation via `cpu_next_hops` and action-related to-dos via `cpu_get_attention`. However, it does not explicitly state when not to use it or name alternatives like `cpu_get_cell`, so some inference is required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpu_get_marketsA
Scout the marketplace: one compact row per (Hub, resource) with open-vs-incoming lot counts, lowest price, distance, and the hub's live sale-fee percent for that resource (liveSaleFeePercent, enriched from the local world map — advisory, may trail the chain; null when the rate is unknown, i.e. the map has no read on the hub or it isn't serving sale fees yet). The recommended first look at what is for sale and where — compare hubs by fee in one call, then drill into specific lots with cpu_list_lots. Public read; supports hub / resourceId filters and an optional zone (aroundTokenId + radius in grid steps).
| Name | Required | Description | Default |
|---|---|---|---|
| hub | No | Filter to a Hub by its cell token id. | |
| radius | No | Zone radius in grid steps around aroundTokenId (server clamps to 50). | |
| resourceId | No | Filter by resource id. | |
| aroundTokenId | No | Zone anchor as a cell token id. |
TDQS
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 discloses 'Public read' (indicating a non-mutating operation), and explains that liveSaleFeePercent is 'enriched from the local world map — advisory, may trail the chain' and is 'null when the rate is unknown'. These are valuable behavioral caveats about data freshness and null semantics, though it does not mention pagination, rate limits, or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences and front-loaded with 'Scout the marketplace'. It efficiently covers the output structure, usage guidance, and important behavioral caveats in under 80 words. Each phrase adds value, though the density of details makes it slightly more information-rich than a simple two-sentence description would be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description thoroughly explains the return structure (one row per Hub/resource with counts, lowest price, distance, and fee) and the null/unknown fee behavior. It also covers all four parameters and provides usage recommendations, despite not mentioning ordering, pagination, or response size limits. This is complete enough for a read-only marketplace overview tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with descriptions for all four parameters, so the baseline is 3. The description adds only a light relational grouping by calling aroundTokenId and radius an 'optional zone', but it does not deepen understanding beyond what the schema already provides. This is adequate but not exceptional.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it 'Scout[s] the marketplace' and specifies the exact output: one compact row per (Hub, resource) with open-vs-incoming lot counts, lowest price, distance, and live sale-fee percent. It also distinguishes itself from the sibling tool cpu_list_lots by positioning this as the first look and that as the drill-down, so there is no ambiguity about what this tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says it is 'The recommended first look at what is for sale and where' and advises to 'then drill into specific lots with cpu_list_lots'. This provides clear when-to-use context and names an alternative, satisfying the 5-level requirement for explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpu_get_mining_statusA
Read a cell's mining job: whether an extractor is active, which resource it mines, its yield per cycle and cycle length, how far through its schedule it is (completedBatches of batches), the units and whole cycles claimable right now, when the next cycle matures and when the job ends, the remaining deposit, and whether it is stalled. Mining matures in whole cycles — a cycle in progress banks nothing until it completes — and settles in whole cycles too: if one full cycle of output does not fit, nothing settles. That is a stall, and it begins before the box reads full. A stall burns time (the schedule survives, the wait does not), so offload to resume — transport it out, sell via create_lot, craft with it, or withdraw wCPU; a null cap means the warehouse is uncapped. isFinished means the job has run its schedule and will produce nothing more: claim it to bank the rest and free the cell for another job or a craft. Timestamps are unix seconds on the same clock as serverTime. Public — works for any cell, no session required. The owner banks matured cycles with cpu_claim_mining.
| Name | Required | Description | Default |
|---|---|---|---|
| tokenId | Yes | The tokenId of the cell to inspect mining for. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden and excels: it discloses that mining matures in whole cycles (banking nothing mid-cycle), that stalls begin before the box reads full, that a stall burns time (schedule survives, wait does not), and that timestamps use the same clock as serverTime. This goes well beyond what annotations could provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Although lengthy, every clause adds necessary behavioral nuance (stall mechanics, offload options, isFinished meaning, public access, timestamp reference). It opens with the core purpose and flows logically through return fields, edge cases, and related actions — no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of mining state and the absence of an output schema, the description is remarkably complete. It covers return values, timing semantics, stall conditions, what happens when finished, public accessibility, and indicates the companion claim tool — enough for an agent to invoke and interpret results correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter tokenId is fully described in the schema (100% coverage, min/max, and a clear explanation). The description adds no additional parameter semantics, leaving the schema to carry the burden. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with 'Read a cell's mining job' — a specific verb and resource — and enumerates exactly what data is returned (active extractor, resource, yield, cycle length, progress, claimable units, timing, deposit, stall status). It clearly distinguishes from sibling tools like cpu_start_mining and cpu_claim_mining by focusing on read-only status inspection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides strong context: it states the tool is public (no session required), explains when results indicate the job is finished ('isFinished' means nothing more will be produced, claim it), and points to cpu_claim_mining for the owner to bank cycles. It also mentions offload options to resume from a stall, giving practical guidance on when to use this status read versus acting on it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpu_get_transport_statusA
Get one delivery by its on-chain deliveryId: source and target cells, resource and amount, arrival time, whether it has been delivered, and whether it is ready to finalize. Reads the deliveries projection.
| Name | Required | Description | Default |
|---|---|---|---|
| deliveryId | Yes | The on-chain delivery id (from `transport` or `list_my_transports`). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It explicitly says 'Reads the deliveries projection,' signaling a read-only operation with no side effects. It also discloses the returned status fields (delivered, ready to finalize). It does not mention not-found behavior or auth requirements, but for a simple read this 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence that front-loads the action ('Get one delivery...') and lists all relevant output details without any redundant or extraneous words. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema, the description covers the input (deliveryId), the nature of the operation (reads a projection), and the exact returned data points (source/target cells, resource, amount, arrival time, delivered status, finalize readiness). This is complete for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter `deliveryId` is already well-documented in the schema, including where to obtain it ('from `transport` or `list_my_transports`'). The description merely restates 'on-chain deliveryId' and adds no new semantic value. Schema coverage is 100%, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Get one delivery by its on-chain deliveryId' with a specific verb and resource. It enumerates the exact fields returned, distinguishing it from sibling tools like `list_my_transports` (which lists multiple) and mutating actions like `cpu_finalize_delivery`.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you already have a delivery ID and need its status, but it does not explicitly state when to prefer this tool over alternatives or mention exclusions. The schema adds context (ID comes from `transport` or `list_my_transports`), but that is outside the description itself. There is no explicit when-to-use/when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpu_list_lotsA
Browse marketplace lots with filters (hub, resourceId, seller, minPrice/maxPrice), sort (price_asc | recent | nearest — nearest needs a zone), pagination (limit ≤ 200, offset), and an optional zone (aroundTokenId + radius in grid steps). availability defaults to open (buyable now); use incoming for en-route lots or all. Public read — start with cpu_get_markets for a compact overview, then drill in here.
| Name | Required | Description | Default |
|---|---|---|---|
| hub | No | Filter to a Hub by its cell token id. | |
| sort | No | price_asc | recent | nearest (nearest requires aroundTokenId). | |
| limit | No | Page size (default 50, max 200). | |
| offset | No | Page offset. | |
| radius | No | Zone radius in grid steps around aroundTokenId (server clamps to 50). | |
| seller | No | Filter by seller address. | |
| maxPrice | No | Maximum price per unit ($CPU decimal string). | |
| minPrice | No | Minimum price per unit ($CPU decimal string). | |
| resourceId | No | Filter by resource id. | |
| availability | No | open (default) | incoming (paid & en route) | all. | |
| aroundTokenId | No | Zone anchor as a cell token id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, but the description states 'Public read,' confirming no side effects. It also notes that the server clamps radius to 50 and indicates defaults. This is sufficient transparency for a read-only browse tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that packs in many details efficiently. It uses punctuation effectively to separate ideas. Slightly more structured formatting (e.g., bullet points) could improve readability, but it is still concise and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a browse tool with 11 parameters and no output schema, the description covers filters, sort, pagination, availability, and zone constraints. It also references a related tool for further context. Missing details like exact return format are compensated by the schema richness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds value beyond schema by explaining 'nearest needs a zone' and 'limit ≤ 200', and clarifying availability values. This helps the agent use parameters correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it's for browsing marketplace lots with filters, and distinguishes from sibling tools such as cpu_get_markets (compact overview) and cpu_list_my_lots (own lots). The verb 'browse' and target 'marketplace lots' is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear workflow hint: 'start with cpu_get_markets for a compact overview, then drill in here.' It also explains the availability default and alternatives (open, incoming, all). However, it does not explicitly list when not 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.
cpu_list_my_lotsA
List the lots you have created, across all lifecycle states (optionally filtered by state). Requires a session. Use this to find your lotIds and track create / cancel progress.
| Name | Required | Description | Default |
|---|---|---|---|
| state | No | Optional lifecycle filter (draft, delivering, open, cancel_pending, cancelling, cancelled, reverted). Omit for all. |
TDQS
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 mentions authentication ('Requires a session') and the scope of results ('across all lifecycle states'). However, it does not disclose whether results are paginated, sorted, or limited, nor any side effects. For a list operation, this is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no redundant words. Front-loaded with the core action, followed by optional filter and use case. Every sentence contributes to understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one optional parameter and no output schema, the description is mostly complete. It covers purpose, prerequisite, and use case. However, it omits the structure of the returned data (e.g., each lot object fields), which could be useful but is not critical given the simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides full description for the single parameter 'state' (enum values and default). The tool description adds usage context ('track create / cancel progress') but doesn't enhance parameter semantics beyond the schema. With 100% schema coverage, baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'List the lots you have created'. It specifies scope ('across all lifecycle states') and optional filtering by state. This distinguishes it from sibling tools like cpu_list_lots, which likely lists all lots, not just user's.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a use case: 'Use this to find your lotIds and track create / cancel progress.' It also notes a prerequisite ('Requires a session'). While it doesn't explicitly mention alternatives, the context of sibling tools implies it's for personal lots. Slight gap in excluding 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.
cpu_list_my_transportsA
List your deliveries (the ones you paid for), optionally filtered: all, in_transit, delivered, or ready_to_finalize. Each entry shows source/target, amount, arrival time, and whether it is delivered or ready to finalize. Use it to find deliveries to complete with cpu_finalize_delivery.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Filter your deliveries: all, in_transit, delivered, ready_to_finalize. | all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden. It discloses behavioral traits beyond the name: it lists only 'the ones you paid for' (ownership scope) and specifies output fields ('source/target, amount, arrival time, and whether it is delivered or ready to finalize'). It does not mention pagination/ordering, but for a simple list tool it is reasonably transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly-written sentences, front-loaded with the main action. The first sentence states the purpose and filter options, the second describes the output, the third gives usage guidance. No fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter, no annotations, and no output schema, this description is complete. It covers what the tool lists, the filtering options, the output content, and the primary use case (completing deliveries via cpu_finalize_delivery). No critical context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the filter parameter already has a description and enum in the schema. The description adds meaning by explaining the filter values in context ('in_transit', 'delivered', 'ready_to_finalize') and the purpose of the filter, reinforcing the parameter's role in the delivery lifecycle beyond the schema's bare enum.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'List your deliveries (the ones you paid for)' with specific verb and resource. It distinguishes from siblings like cpu_transport (which likely creates transports) and cpu_get_transport_status (which likely gets a single transport status) by explicitly scoping to the user's paid deliveries and including filtering options.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage context: 'Use it to find deliveries to complete with `cpu_finalize_delivery`.' This tells the agent when to use the tool and names the follow-up sibling. However, it does not explicitly contrast with alternative listing/status tools like cpu_get_transport_status, so it lacks exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpu_list_recipesA
List the craft recipes available in the game: each recipe’s inputs, outputs, duration per batch and $CPU cost. Public — no session needed. Use it before cpu_craft to pick a recipe and see what a paid forge will cost up front.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosure. It clearly states the operation is public and lists the returned data fields, implying a read-only action. However, it does not explicitly state 'read-only' or mention any absence of side effects, though a 'list' operation strongly suggests no mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. The first sentence states the core functionality with specific detail; the second provides actionable usage context. Information is front-loaded and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless read-only list tool with no output schema, the description sufficiently explains the payload (recipe details) and usage timing. It also clarifies access requirements. Nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4 per guidelines. The description adds meaningful context about what the operation returns (recipes with inputs, outputs, duration, cost), which enriches the user's understanding beyond the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'List' and identifies the resource 'craft recipes,' detailing exactly what information is provided (inputs, outputs, duration, cost). It also distinguishes itself from sibling tools by pointing to cpu_craft 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use the tool ('before cpu_craft') and names the alternative/succeeding tool. The note 'Public — no session needed' also clarifies access requirements, providing clear context for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpu_mint_cellA
Mint new land cells on the primary market, straight from the collection’s OpenSea SeaDrop public drop — paid in native ETH, no $CPU involved. quantity cells are minted to your connected wallet at the on-chain drop price; preview the exact ETH cost first with cpu_quote_mint. The mint is submitted on-chain and this waits for confirmation. Check cpu_get_balance for enough ETH (mint price × quantity, plus gas) before calling. For existing cells on the secondary market, use OpenSea listings instead (see the land contract link in the server instructions).
| Name | Required | Description | Default |
|---|---|---|---|
| quantity | No | Number of land cells to mint, as a positive integer string (e.g. "1"). Default "1". | 1 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses key behaviors: payment in native ETH (not $CPU), minting to connected wallet, on-chain submission with confirmation wait, and need for sufficient balance. It doesn't describe the return value after confirmation, which is a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, with each sentence serving a purpose: purpose, cost preview, payment method, balance check, and secondary market alternative. No redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description covers usage, prerequisites, and alternatives thoroughly. It misses the return value after the on-chain wait, which would be useful, but overall it is quite complete for a single-parameter mint tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage for the single 'quantity' parameter, so baseline is 3. The description adds meaning by relating quantity to the mint price and balance check, giving context beyond the schema's basic definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Mint new land cells on the primary market, straight from the collection’s OpenSea SeaDrop public drop'. It uses a specific verb 'mint' and resource 'land cells', and distinguishes itself from related tools like cpu_quote_mint and secondary market operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use and alternatives: preview cost with cpu_quote_mint, check ETH balance with cpu_get_balance, and for secondary market use OpenSea listings. It also states prerequisites like having enough ETH for price × quantity plus gas.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpu_next_hopsA
Survey the legal next waypoints from a cell (read-only). Lists every eligible waypoint — your revealed cells and every finished Hub — within one hop under the reach rule: hop ≤ radius(from)+radius(to)−1 grid steps (default balance: own↔own 1 = adjacent only, own↔hub 3, hub↔hub 5). A Hub counts only once its construction finishes: until then it grants no hub reach and charges no fee, and a foreign one is no waypoint at all — fromReady says whether your own origin is still building, which is why its reach may be smaller than you expect. Foreign cells are never waypoints, so even a single foreign cell between two plain cells is a WALL — only a finished Hub reaches across; empty hops means goods can only be hauled up to here. Facts per candidate: hop distance, owner, hub flag, ready build state, the exact per-unit transit fee for your resourceId cargo, and — with towards — the remaining grid distance (a compass, not a route). Planning is YOUR job: pick each hop yourself (cheap vs short vs whose hub you trust), chain them into path, and verify with cpu_quote_transport. To break a wall: build a border Hub (it still needs an eligible landing cell within reach on the far side), buy land across, or go around. WHEN: the cheap point check — call it right before each leg and after cpu_get_changes shows movement (hubs get demolished, fees change while goods travel); replan via cpu_route_network only when a local fix is impossible.
| Name | Required | Description | Default |
|---|---|---|---|
| from | Yes | The cell to hop from (your revealed cell, or a Hub). | |
| towards | No | Optional destination — adds the remaining grid distance to it for each candidate (a compass). | |
| resourceId | Yes | The cargo resource id — each candidate hub shows its exact per-unit transit fee for it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It fully discloses read-only nature, the subtle 'fromReady' build-state quirk, hub construction implications (no reach/fee until finished), foreign cells as walls, and the meaning of empty hops. This goes far beyond basic safety to explain genuinely non-obvious behavioral semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but well-structured: purpose first, then mechanics, then planning responsibility, then when-to-use. Every sentence adds value, though the length (5+ sentences) prevents a perfect score. The 'WHEN' marker helps skimmability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with no output schema and no annotations, the description fully compensates: explains the reach rule formula, candidate facts, walls, hub building, fee behavior, and workflow integration. It covers edge cases (foreign cells, unfinished hubs) and gives actionable planning guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
While schema coverage is 100%, the description adds critical meaning beyond field names: it explains that 'towards' is 'a compass, not a route,' clarifies that 'resourceId' determines the exact per-unit transit fee shown, and explains how 'from' being a hub or self-owned affects reach. This transforms dry schema definitions into actionable semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: "Survey the legal next waypoints from a cell (read-only)." It clearly distinguishes this from siblings like cpu_quote_transport (which quotes transport cost) and cpu_route_network (which plans routes), while precisely defining the one-hop reach rule. This is a textbook example of a purpose that differentiates from alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: "the cheap point check — call it right before each leg and after cpu_get_changes shows movement," and when to escalate: "replan via cpu_route_network only when a local fix is impossible." This is excellent guidance that maps directly to workflow context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpu_quote_buyA
Preview the cost of buying from a lot — read-only, reserves nothing, sends no tx (needs a session). Pass chain = [hub, ...waypoints, your destination cell] for the exact total cpu_buy_lot would charge; omit it for a seller-only estimate (pricePerUnit × value). Returns decimal $CPU: sale (value × pricePerUnit, exact) + transitFee, summed as total. The sale split (the hub sale fee + the burn) comes out of the seller proceeds, not on top — as a buyer you pay exactly sale for the goods, so it does not change your total. cpu_buy_lot re-quotes transit on-chain, so that part can move slightly and it authorizes ~10% over as headroom (a ceiling, not an extra charge). Use before cpu_buy_lot.
| Name | Required | Description | Default |
|---|---|---|---|
| chain | No | Waypoint tokenIds [hub, ...waypoints, destination] to include transit fees (the exact total buy_lot would charge); omit for a seller-only estimate (price × value). | |
| lotId | Yes | The lot id to preview a buy on. | |
| value | Yes | Units to buy, as a positive integer string. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Fully describes read-only nature, no transaction, session requirement. Discloses transit fee re-quoting with ~10% headroom as ceiling, not extra charge. No annotations, so description bears full burden and does so excellently.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with front-loaded purpose. Contains valuable details but is slightly lengthy; still every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers behavior, parameters, return values, and comparison to sibling. Completing the lack of output schema by describing returns. For a complex preview tool, it is fully adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All parameters have schema descriptions (100% coverage). Description adds meaning by explaining chain as waypoints for transit fees, and returns (sale, transitFee, total) beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it's a read-only preview for buying from a lot, reserves nothing, sends no tx. Distinguishes from sibling cpu_buy_lot by advising use before it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains two usage modes: with chain for exact total, without for seller-only estimate. Explicitly says 'use before cpu_buy_lot', providing clear when-to-use and alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpu_quote_mintA
Preview a primary-market land mint without committing: reads the live OpenSea SeaDrop public drop and returns the per-cell ETH price and the total for quantity cells, plus the drop window and per-wallet limit. It has no side effects — no transaction. Use it before cpu_mint_cell to size the buy and confirm the drop is active.
| Name | Required | Description | Default |
|---|---|---|---|
| quantity | No | Number of land cells to mint, as a positive integer string (e.g. "1"). Default "1". | 1 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and explicitly discloses 'It has no side effects — no transaction' and that it 'reads the live public drop.' This is transparent about the read-only nature. It could additionally describe edge cases (e.g., if drop is inactive), but the core behavior is well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Exactly two sentences, front-loaded with purpose, and every phrase adds value. No filler words or redundant information; the description is tightly written and well-organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one optional parameter, no output schema). The description explicitly lists the return values (per-cell ETH price, total, drop window, per-wallet limit) and the use case (pre-mint sizing), making it complete for this request/response model. No annotations are needed because the description covers the safety profile.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description references `quantity` in context ('total for `quantity` cells') but adds no new meaning beyond what the schema's description already provides. It reinforces the usage without expanding semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states this tool previews a primary-market land mint without committing. It specifies the action (reads live OpenSea SeaDrop drop) and the exact outputs (per-cell ETH price, total, drop window, per-wallet limit), and distinguishes itself from cpu_mint_cell by naming it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states 'Use it before cpu_mint_cell to size the buy and confirm the drop is active.' This gives direct guidance on when to use and identifies the alternative execution tool, effectively covering the usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpu_quote_swapA
Preview an ETH↔$CPU swap without committing: returns the expected output from the Uniswap v4 Quoter (already net of the pool fee) and the minimum you would receive after slippage (a percent, e.g. 0.5 = 0.5%). It has no side effects — no approval, no transaction. Use it before cpu_swap to size the trade.
| Name | Required | Description | Default |
|---|---|---|---|
| sell | Yes | Token to spend: ETH (to buy $CPU) or CPU (to sell for ETH). | |
| amount | Yes | Amount of the `sell` token to spend, as a decimal string (e.g. "0.5"). 18 decimals. | |
| slippage | No | Max slippage as a percent (e.g. 0.5 = 0.5%); the floor on what you receive. Default 0.5. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: no side effects, no transaction, output is net of pool fee, and slippage is applied. This goes beyond a basic description and gives the agent critical safety information for a quote-only tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly written sentences. Front-loaded with the core action and non-committal nature, then necessary details and usage pointer. No redundant words or repetition of schema fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description explains exactly what is returned (expected output and minimum after slippage) and the context (pre-swap sizing). The tool is a simple quote with 3 well-documented parameters, so the description is sufficient for an agent to select and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all parameters with descriptions, so baseline is 3. The description adds value by explaining the output is net of pool fee and that slippage determines the minimum received, connecting the parameter to its behavioral effect beyond just its type/default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Preview' and clarifies it's an ETH↔$CPU swap without committing, immediately distinguishing it from the actual `cpu_swap` tool. It clearly states the tool's function: returns expected output and minimum after slippage.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to use it before `cpu_swap` to size the trade. It also states what the tool does NOT do ('no approval, no transaction'), which sets clear expectations and guides the agent away from using it for execution.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpu_quote_transportA
Preview a transport route (a waypoint chain of tokenIds) without committing: returns the $CPU transit fee (decimal), the summed grid distance, and the arrival timestamp. Read-only on-chain view with no side effects. It also validates the route, surfacing the rejection reason if the chain is invalid (hop out of range, unrevealed or ineligible waypoint). Scout waypoints with cpu_next_hops; use this before cpu_transport.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Waypoint chain of cell tokenIds [source, ...intermediate, target]. Every waypoint must be revealed and eligible (your own cell, or a Hub); each hop must span at most radius(from)+radius(to)−1 grid steps (a plain cell reaches moveRadius, a Hub hubRadius — see get_game_config transport). Scout legal hops with cpu_next_hops and chain them yourself; the Transport contract validates. | |
| amount | Yes | Units to move, as a positive integer string (matches on-map resource balances). | |
| resourceId | Yes | Resource type id to move (must have a balance at the source cell). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, but description fully covers: read-only, no side effects, validation, surfacing rejection reasons. Discloses return values.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with purpose, each sentence provides value. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-param tool with no output schema, description covers return values, validation behavior, and integration with sibling tools. Complete for its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and descriptions in schema are detailed. Description adds no new info beyond referencing `cpu_next_hops`. Baseline 3 per rules.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool previews a transport route without committing, returns fee/distance/timestamp, and distinguishes from `cpu_transport` (commits) and `cpu_next_hops` (scouts). Specific verb and resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'use this before cpu_transport' and 'Scout waypoints with cpu_next_hops', providing clear when-to-use guidance and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpu_revealA
Reveal the deposits of a cell you own (call cpu_authenticate first). Sends an on-chain Cell tx requesting Pyth Entropy randomness, paying the fee in ETH — keep some ETH. First reveal is free; a re-reveal needs all deposits depleted and costs $CPU (auto-approved once). Deposits land asynchronously — read with cpu_get_cell.
| Name | Required | Description | Default |
|---|---|---|---|
| tokenId | Yes | The tokenId of a cell you own to reveal. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses on-chain transaction, ETH fee requirement, free first reveal vs re-reveal conditions, asynchronous deposit behavior. Lacks details on failure modes or exact consequences of conditions not met.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is brief and well-structured, with main purpose first, then prerequisites, then fee and async details. Every sentence adds value, no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers essential workflow: authenticate, reveal (with ETH fee), async deposit, and reading with cpu_get_cell. Missing details on tool's return value and edge cases like insufficient ETH or re-reveal conditions, but still adequate for a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage with clear parameter description. Overall description does not add new information about the parameter beyond what 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.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it reveals deposits of a cell you own. The verb 'reveal' and resource 'deposits of a cell' are specific. It distinguishes from siblings like cpu_get_cell (which reads after reveal) and cpu_authenticate (prerequisite).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: must call cpu_authenticate first, mentions asynchronous deposits and alternative tool cpu_get_cell for reading results. However, does not explicitly state when to use or avoid using this tool relative to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpu_route_networkA
The road map of the world (read-only): every legal waypoint — your revealed cells and every finished Hub — as graph nodes (owner, hub flag, ready build state, the exact per-unit transit fee for your resourceId cargo, pos, connected-component id) plus every hop the contract would accept as edges (within radius(a)+radius(b)−1 grid steps; default balance: own↔own 1 = adjacent only, own↔hub 3, hub↔hub 5). A Hub counts only once its construction finishes: an unfinished one grants no hub reach and charges no fee, and a foreign one is not a node at all — your own cells stay nodes while they build, just with normal reach (ready: null = nothing built, false = under construction, true = finished). Foreign cells are never nodes: even a single foreign cell between two plain cells is a WALL — only a finished Hub reaches across. Different component ids show exactly that — no chain crosses today, goods stop at the border. Bridging is a strategic decision: a border Hub (it still needs an eligible landing point within reach on the far side), buying land across, or a detour — the sphere is closed, so a wall must encircle to truly seal. Pass from/towards to annotate each node with grid distances (a potential field to reason over). Routing over this map is YOUR job: pick the chain, then verify with cpu_quote_transport. WHEN: the heavy read — plan a journey or a big replan; for point checks while executing use the cheap cpu_next_hops.
| Name | Required | Description | Default |
|---|---|---|---|
| from | No | Optional source cell — annotates every waypoint with its grid distance from here. | |
| towards | No | Optional destination cell — annotates every waypoint with its remaining grid distance. | |
| resourceId | Yes | The cargo resource id — every foreign-hub waypoint shows its exact per-unit transit fee for it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so exceptionally well. It discloses read-only nature, node/edge construction rules, hub states, foreign cell walls, component id meaning, bridging strategies, and the closed sphere. It goes far beyond typical descriptions in explaining edge cases and strategic implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but dense with relevant information. It is front-loaded with 'road map of the world (read-only)' and follows a logical structure. Some sentences could be tightened, but the verbosity is justified given the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description enumerates node fields (owner, hub flag, ready state, fee, pos, component id) and edge rules. It covers hub construction states, foreign cell behavior, component meaning, and strategic use cases. This is more than sufficient for an agent to correctly invoke the tool and interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 valuable context: from/towards are for annotating distances 'to reason over', and resourceId determines the fee shown. Although the schema already describes the parameters, the description ties them to the map's purpose and strategy, slightly exceeding baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('road map of the world') and clearly identifies the resource (graph nodes/edges for movement). It distinguishes itself from siblings by explicitly saying 'Routing over this map is YOUR job' and comparing with cpu_next_hops and cpu_quote_transport.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit usage guidance is provided: 'WHEN: the heavy read — plan a journey or a big replan; for point checks while executing use the cheap cpu_next_hops.' It also tells the agent to verify via cpu_quote_transport, giving clear when-to-use and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpu_set_sale_feeA
Set the sale-fee rate for one resource on a Hub you own, on-chain (needs a session — cpu_authenticate first). The rate is a percent of every sale of that resource settled on your hub (0–50, 0.01 granularity), carved out of the seller proceeds; set 0 to list that resource for free. One resource per call (loop for several). The rate applies only to lots listed after it lands — open lots keep the rate frozen at their own listing. Settable on a hub still under construction, so it is already in place when the hub becomes Ready. Reverts if you do not own the hub or the rate exceeds the 50% cap. Returns the confirmed rate and tx hash.
| Name | Required | Description | Default |
|---|---|---|---|
| feePercent | Yes | New sale-fee rate as a percent, 0–50 (0.01 granularity, i.e. whole basis points). 0 = listed free. | |
| hubTokenId | Yes | The Hub cell token id whose sale-fee rate you are setting (you must own it). | |
| resourceId | Yes | Resource type id the rate applies to (one resource per call). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must fully detail behavior. It explains that rates only apply to new listings, not open lots, and can be set on a hub under construction. Also mentions revert conditions and return value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is informative but slightly verbose (5 sentences). Key information is front-loaded, but could be more concise. However, it contains no wasted words and is well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 required parameters, no output schema, and no annotations, the description covers all necessary context: prerequisites, parameter semantics, behavioral nuances, return value, and error conditions. Fully sufficient for correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all parameters. Description adds minor context ('loop for several' for resourceId) but largely aligns with schema. Baseline score of 3 is appropriate given high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: setting a sale-fee rate on a Hub you own. It specifies the resource and lists the range (0-50, 0.01 granularity), distinguishing it from any sibling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states prerequisites: requires a session via cpu_authenticate. Provides guidance on looping for multiple resources, setting 0 for free, and reverts conditions. Clear when to use and what to avoid.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpu_start_miningA
Start a bounded extraction job on a cell you own that holds a finished extractor. Requires a session — call cpu_authenticate first. Pass the targetResourceId to mine — it must be a resource the extractor can mine (see cpu_get_game_config) with an active deposit on the cell; omit it when the extractor mines a single resource. Costs no $CPU. The building must have finished construction — building takes time after cpu_build. batches is how many cycles the job runs, and it is a commitment you cannot undo: the job ends itself once it has run them, or sooner if the deposit runs dry, and there is no cancel — the target cannot be switched nor the building demolished mid-job. It never overruns its schedule, so coming back late banks exactly what you booked and no more. Until the job ends it holds the cell's only process slot, so nothing can be crafted there; claiming a finished job frees the slot. Size batches against the cycle length in cpu_get_game_config and the deposit in cpu_get_cell — scheduling past the deposit just ends early. Track it with cpu_get_mining_status and bank matured cycles with cpu_claim_mining.
| Name | Required | Description | Default |
|---|---|---|---|
| batches | Yes | How many cycles to run, 1..1000. The job stops itself after these — it never produces past them, so arriving late banks exactly what was scheduled, no more. There is no cancel: restarting costs a claim plus a new start. Read the cycle length from cpu_get_game_config and size the run to how long you want the cell committed. | |
| tokenId | Yes | The tokenId of a cell you own holding a finished extractor. | |
| targetResourceId | No | Resource id to extract — must be one the extractor can mine and have a live deposit on the cell. Omit (null) to auto-pick when the extractor mines a single resource. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses important traits: costs no CPU, job is non-cancellable, holds process slot, cannot demolish mid-job, does not overrun, and effects on other operations. This is thorough and beyond the minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is detailed but well-organized, starting with the action and prerequisites, then explaining behavior. It could be slightly more concise, but every sentence adds value. No redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all aspects: prerequisites, side effects (cell slot lock), scheduling advice, and references to related tools (cpu_get_mining_status, cpu_claim_mining). No output schema, but the return value is implied through tracking tools. Complete for a complex operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with detailed descriptions. The tool description adds context (e.g., 'batches is a commitment you cannot undo', 'omit targetResourceId when extractor mines a single resource'), enhancing understanding beyond the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Start a bounded extraction job on a cell you own that holds a finished extractor.' It uses specific verbs and resources, and distinguishes from siblings like cpu_claim_mining and cpu_get_mining_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly mentions prerequisites: session via cpu_authenticate, cell ownership, finished extractor, and building construction. It also gives guidance on when to omit targetResourceId and advises checking cpu_get_game_config and cpu_get_cell beforehand. It does not explicitly list when not to use it, but provides sufficient context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpu_swapA
Swap between native ETH and $CPU on the game token pool (Uniswap v4), in either direction: sell: "ETH" buys $CPU, sell: "CPU" sells it for ETH. amount is how much of the sold token to spend. Preview the result first with cpu_quote_swap. The swap is exact-input: you spend amount and receive at least the quoted output minus slippage (a percent, e.g. 0.5 = 0.5%). Selling $CPU auto-approves it (via Permit2) once before the first swap; the trade is submitted on-chain and this waits for confirmation. A 1% pool fee applies.
| Name | Required | Description | Default |
|---|---|---|---|
| sell | Yes | Token to spend: ETH (to buy $CPU) or CPU (to sell for ETH). | |
| amount | Yes | Amount of the `sell` token to spend, as a decimal string (e.g. "0.5"). 18 decimals. | |
| slippage | No | Max slippage as a percent (e.g. 0.5 = 0.5%); the floor on what you receive. Default 0.5. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries the behavioral burden. It discloses exact-input semantics, slippage application as a floor, Permit2 auto-approval for CPU, on-chain submission and confirmation waiting, and the 1% pool fee. This is comprehensive and gives the agent a clear safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence earns its place. It front-loads the core purpose and direction, then logically explains amount, workflow, slippage, approval, and fee. It could be slightly shorter, but the structure is clear and no information is redundant with the structured schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description covers all the important aspects of the swap: direction, amount, slippage, fee, and on-chain behavior. The only gap is that it does not describe the expected return value (e.g., transaction hash or receipt), which would help the agent know what to do with the result. Still, it is complete enough for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (all three parameters have descriptions). The description reinforces the schema's meaning (e.g., `sell` directions, `amount` as spend amount, `slippage` as a percent) but adds little beyond what the schema already states. The Permit2 approval detail is behavioral, not parameter-specific, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Swap between native ETH and $CPU'), the resource ('game token pool (Uniswap v4)'), and supports both directions with explicit `sell` enum mapping. It also distinguishes itself from the sibling `cpu_quote_swap` by labeling that as a preview and this as the execution.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: it tells the agent to preview with `cpu_quote_swap` first, implies this tool is for executing the actual swap after quoting, and explains the slippage and exact-input behavior. It does not explicitly mention alternatives or when not to use, but for a swap tool the guidance is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpu_transportA
Move a resource between cells along a waypoint chain of tokenIds, on-chain (needs a session — cpu_authenticate first). One atomic move: debits the source, pays the $CPU transit fee for every foreign Hub on the route (auto-approved once) plus gas, and escrows a time-delayed delivery. Every waypoint must be revealed and yours-or-a-finished-Hub; each hop must be within radius(from)+radius(to)−1 grid steps (default balance: own↔own 1 = adjacent only, own↔hub 3, hub↔hub 5). Recommended flow: cpu_next_hops (scout waypoints) → chain them yourself → cpu_quote_transport (verify fee/ETA) → cpu_transport. Returns the deliveryId and arrival time; the goods credit to the target only after arrival, when you call cpu_finalize_delivery (cpu_list_my_transports shows what is ready). A route over only your own cells pays no fee.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Waypoint chain of cell tokenIds [source, ...intermediate, target]. Every waypoint must be revealed and eligible (your own cell, or a Hub); each hop must span at most radius(from)+radius(to)−1 grid steps (a plain cell reaches moveRadius, a Hub hubRadius — see get_game_config transport). Scout legal hops with cpu_next_hops and chain them yourself; the Transport contract validates. | |
| amount | Yes | Units to move, as a positive integer string (matches on-map resource balances). | |
| resourceId | Yes | Resource type id to move (must have a balance at the source cell). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: on-chain execution, atomic debit, transit fee payment (auto-approved once), escrow with time-delayed delivery, hop radius constraints, and that goods credit only after calling cpu_finalize_delivery. It also mentions return values and fee waiver conditions. This is comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well structured, front-loading the core action then layering prerequisites, constraints, and flow. It is longer than average but every clause adds useful information; could be slightly trimmed for conciseness but remains efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with no output schema, the description covers prerequisites, authentication, constraints, recommended flow, return values, post-conditions, and edge cases (e.g., own-cells fee waiver). It gives the agent everything needed to invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description repeats path constraints already in the schema and adds minimal new parameter-specific meaning; the additional context (fees, atomicity) is more about general behavior than the parameters themselves. It does not significantly enhance beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Move a resource between cells along a waypoint chain of tokenIds', giving a specific verb, resource, and method. It clearly distinguishes from siblings like cpu_next_hops, cpu_quote_transport, and cpu_finalize_delivery by placing transport as the action that executes the move.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit recommended flow: scout with cpu_next_hops, chain waypoints, verify with cpu_quote_transport, then execute. Also states when not to pay fees (own cells only) and prerequisites (session via cpu_authenticate). This offers clear when-to-use and alternative tooling context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpu_withdrawA
Cash out a cell’s wCPU (resource id 1, the CPU Forge output) to the on-chain $CPU token in your wallet, 1:1 (needs a session — cpu_authenticate first; you must own the cell). Pass the amount in whole wCPU units up to the cell’s wCPU balance; it debits the cell and mints $CPU to your wallet (no approve needed), waits for confirmation, and returns the tx hash — check the result with cpu_get_balance. wCPU lives on the cell, so selling or transferring the cell takes it along: withdraw before you sell.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | How much wCPU (resource id 1) to convert to on-chain $CPU, 1:1, in whole units (e.g. "100"). Must be greater than 0 and at most the cell’s wCPU balance. See it with get_cell. | |
| tokenId | Yes | The tokenId of a cell you own holding wCPU to cash out. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: debits the cell, mints $CPU, waits for confirmation, returns tx hash. It also mentions no approve needed and warns that wCPU is tied to the cell.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph that front-loads the main action. It contains necessary detail but could be slightly more concise. However, it is well-structured and informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without an output schema, the description covers return value (tx hash) and suggests checking with cpu_get_balance. It includes prerequisites, constraints, and consequences, making it fully complete for a 2-param tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and already describes parameters. Description adds value by providing examples (e.g., '100'), clarifying units ('whole wCPU units'), and referencing get_cell to check balance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Cash out a cell’s wCPU to the on-chain $CPU token'. It includes the resource ID, conversion rate, and prerequisites. Differentiates from siblings by being the only tool for converting wCPU to $CPU.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies when to use (to convert wCPU to $CPU) and prerequisites: need a session via cpu_authenticate and own the cell. It warns about selling the cell. Does not explicitly state 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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
7 tool updates
v0.7.0- Changed
cpu_claim_mining1 field changed- changed
Input schema / properties / tokenId / descriptionPrevious value: -"The tokenId of a cell you own with an extractor, to bank its matured mining batches."New value: +"The tokenId of a cell you own with an extractor, to bank its matured mining cycles."
- Changed
cpu_craft1 field changed- changed
Input schema / properties / batches / descriptionPrevious value: -"How many sequential batches to run; inputs are debited upfront for all of them."New value: +"How many sequential batches to run, 1..1000; inputs are debited upfront for all of them. The run stops itself after these and there is no cancel."
- Changed
cpu_create_lot1 field changed- added
Input schema / properties / maxSaleFeePercentAdded value: +{ + "anyOf": [ + { + "maximum": 50, + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Optional seller tolerance: the highest sale-fee percent (0–50) you accept the hub charging. Omit to accept the hub's live rate at listing time — the listing then reverts if the owner raised the rate in the meantime, instead of freezing a worse rate into your lot." +}
- Changed
cpu_next_hops2 fields changed- added
Input schema / properties / resourceIdAdded value: +{ + "description": "The cargo resource id — each candidate hub shows its exact per-unit transit fee for it.", + "type": "integer" +} - changed
Input schema / requiredPrevious value: -[ - "from" -]New value: +[ + "from", + "resourceId" +]
- Changed
cpu_route_network2 fields changed- added
Input schema / properties / resourceIdAdded value: +{ + "description": "The cargo resource id — every foreign-hub waypoint shows its exact per-unit transit fee for it.", + "type": "integer" +} - added
Input schema / requiredAdded value: +[ + "resourceId" +]
- Added
cpu_set_sale_fee - Changed
cpu_start_mining2 fields changed- added
Input schema / properties / batchesAdded value: +{ + "description": "How many cycles to run, 1..1000. The job stops itself after these — it never produces past them, so arriving late banks exactly what was scheduled, no more. There is no cancel: restarting costs a claim plus a new start. Read the cycle length from cpu_get_game_config and size the run to how long you want the cell committed.", + "maximum": 1000, + "minimum": 1, + "type": "integer" +} - changed
Input schema / requiredPrevious value: -[ - "tokenId" -]New value: +[ + "tokenId", + "batches" +]
70 tool updates
v0.6.1- Removed
authenticate - Removed
build - Removed
buy_lot - Removed
cancel_lot - Removed
claim_craft - Removed
claim_mining - Added
cpu_authenticate - Added
cpu_build - Added
cpu_buy_lot - Added
cpu_cancel_lot - Added
cpu_claim_craft - Added
cpu_claim_mining - Added
cpu_craft - Added
cpu_create_lot - Added
cpu_demolish - Added
cpu_finalize_delivery - Added
cpu_get_attention - Added
cpu_get_balance - Added
cpu_get_cell - Added
cpu_get_changes - Added
cpu_get_craft_status - Added
cpu_get_game_config - Added
cpu_get_lot - Added
cpu_get_map - Added
cpu_get_markets - Added
cpu_get_mining_status - Added
cpu_get_transport_status - Added
cpu_list_lots - Added
cpu_list_my_lots - Added
cpu_list_my_transports - Added
cpu_list_recipes - Added
cpu_mint_cell - Added
cpu_next_hops - Added
cpu_quote_buy - Added
cpu_quote_mint - Added
cpu_quote_swap - Added
cpu_quote_transport - Added
cpu_reveal - Added
cpu_route_network - Added
cpu_start_mining - Added
cpu_swap - Added
cpu_transport - Added
cpu_withdraw - Removed
craft - Removed
create_lot - Removed
get_balance - Removed
get_cell - Removed
get_changes - Removed
get_craft_status - Removed
get_game_config - Removed
get_lot - Removed
get_map - Removed
get_markets - Removed
get_mining_status - Removed
get_pending_transports - Removed
get_transport_status - Removed
list_lots - Removed
list_my_lots - Removed
list_my_transports - Removed
list_recipes - Removed
mint_cell - Removed
quote_buy - Removed
quote_mint - Removed
quote_swap - Removed
quote_transport - Removed
resume_transport - Removed
reveal - Removed
swap - Removed
transport - Removed
withdraw
6 tool updates
v0.5.0- Changed
cancel_lot1 field changed- changed
Input schema / properties / chain / descriptionPrevious value: -"[hub, ...waypoints, destination] for the return shipment — REQUIRED to cancel an OPEN lot; omit for a DRAFT lot (nothing has shipped yet)."New value: +"[hub, ...waypoints, destination] for the return shipment — REQUIRED to cancel an OPEN lot. DRAFT lots cannot be cancelled manually (they auto-revert once their signature lapses)."
- Added
mint_cell - Added
quote_mint - Added
quote_swap - Added
swap - Added
withdraw
28 tool updates
v0.1.2- First observed
authenticate - First observed
build - First observed
buy_lot - First observed
cancel_lot - First observed
claim_craft - First observed
claim_mining - First observed
craft - First observed
create_lot - First observed
get_balance - First observed
get_cell - First observed
get_changes - First observed
get_craft_status - First observed
get_game_config - First observed
get_lot - First observed
get_map - First observed
get_markets - First observed
get_mining_status - First observed
get_pending_transports - First observed
get_transport_status - First observed
list_lots - First observed
list_my_lots - First observed
list_my_transports - First observed
list_recipes - First observed
quote_buy - First observed
quote_transport - First observed
resume_transport - First observed
reveal - First observed
transport
TDQS
Scored across 38 tools
Each tool targets a clear resource or action: quote/execute pairs preview before committing, get/list tools separate single-item lookup from browsing, and mining/craft/transport/market systems each have their own lifecycle tools. Even the marketplace reads (get_markets vs list_lots) are explicitly differentiated as overview vs drill-down.
The cpu_ prefix plus snake_case applies everywhere and most names follow a verb_noun pattern (cpu_get_cell, cpu_create_lot, cpu_claim_craft). Minor deviations like cpu_authenticate, cpu_withdraw, and cpu_next_hops are slightly less pattern-consistent but do not create real confusion.
38 tools is a heavy surface, well above the 16-25 range already considered borderline. The game's many subsystems partly justify the count, but an agent facing this many options will struggle with selection and context load.
The tool set covers the full game loop: authenticate, mint, reveal, build, demolish, mine, craft, claim, transport, finalize deliveries, marketplace create/buy/cancel, fee setting, and ETH/CPU swap. Each major workflow has preview, execution, status, and claim/finalize steps, leaving no obvious dead ends.
Maintenance
Related MCP Connectors
Create, test and play AI-native games through server-authoritative contracts.
A world built and run by AI agents. Join as a citizen: artifacts, quests, governance.
A persistent AI world where agents walk, build, own things, talk, and make agreements.
Agentic AI runtime: persistent memory, vault, autonomous agents, deep research, DeFi execution.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA powerful toolkit that enables seamless interaction with EVM-compatible networks through natural language processing and AI assistance, allowing users to manage wallets, launch tokens, and interact with blockchain networks.2 npmMIT
- AlicenseCqualityCmaintenanceEnables AI agents to interact with any EVM-compatible blockchain through natural language, supporting token swaps, cross-chain bridges, staking, lending, governance, gas optimization, and portfolio tracking across networks like Ethereum, BSC, Polygon, Arbitrum, and more.10030 npm41-
- AlicenseAqualityDmaintenanceThe first blockchain & cryptocurrency MCP server that connects AI agents to Ethereum, Solana, Bitcoin, and cryptocurrency markets.99 npmMIT
- AlicenseAqualityCmaintenanceAn MCP server that lets AI agents build on GenLayer by searching documentation, inspecting contracts and transactions over RPC, and scaffolding, linting, and testing Intelligent Contracts.4620 npm1MIT