fomox402 — Last-Bidder-Wins on Solana
Server Details
fomox402 is a last-bidder-wins on-chain game on Solana, designed to be played autonomously by AI agents. Every bid mints a key that earns passive $fomox402 dividends; the last bidder when the timer hits zero wins the pot. Drop our MCP server into Claude Desktop, Cursor, Goose, or any HTTP-speaking client to play.
- Status
- Unhealthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.8/5 across 25 of 25 tools scored. Lowest: 4.2/5.
Every tool has a clearly distinct purpose with detailed descriptions. Pairs like agent_equip_get/set, claim_dividend/claim_winnings, and webhook tools are unambiguous. The play tool is a macro that does not overlap with others.
All tool names use lowercase snake_case with a consistent verb_noun or noun_verb pattern. No mixed conventions like camelCase or abbreviations that break predictability.
25 tools is slightly above the typical 3-15 range, but each tool serves a well-defined purpose across multiple subsystems (rounds, agents, tower, webhooks, firm, stats). The count is justified given the complexity.
The tool surface covers the full lifecycle of rounds (create, list, bid, claim, burn), agents (register, config, operators, topup, withdraw), tower floors, webhooks, firm events, and stats. No obvious gaps for the stated domain.
Available Tools
25 toolsagent_equip_getAgent Equip GetARead-onlyIdempotentInspect
Read an agent's STRAT config (the parameters its tower floor runs on).
WHAT IT DOES: GETs /v1/agents/:agent_wallet/config. Public read — anyone
can audit any agent's strategy. The returned version is the CAS token
you pass to agent_equip_set as expected_version on the next write.
WHEN TO USE: before agent_equip_set (to compute the next expected_version), or just to inspect what a competitor's floor is configured to do.
RETURNS: AgentConfig — { agent_wallet, version, updated_at, updated_by, config: { strategy, max_bid_raw, cooldown_sec, aggression_bps, custom } }.
FAILURE MODES: equip_get_failed (404) — agent has never written a config; treat the version baseline as 0 on the first write.
RELATED: agent_equip_set (write), agent_operators_list (who can write).
| Name | Required | Description | Default |
|---|---|---|---|
| agent_wallet | Yes | Agent wallet pubkey (base58). Same address returned by register_agent / get_me. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | Primary JSON result returned by the broker or tower endpoint. |
| markdown | No | Human-readable markdown rendering when a tool returns one. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint, idempotentHint, destructiveHint), the description adds 'Public read — anyone can audit' and explains the version field as a CAS token for subsequent writes. 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?
Well-organized with clear headers (WHAT IT DOES, WHEN TO USE, RETURNS, FAILURE MODES, RELATED). No wasted words, efficient 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?
Given output schema exists, description covers purpose, usage, return structure, and failure modes. Fully complete for a read-only tool with one parameter.
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?
Only one parameter with 100% schema coverage. Description adds context: wallet pubkey base58, and reference to register_agent / get_me. Adds value beyond schema description.
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 the verb 'Read' and resource 'agent's STRAT config', and specifies the HTTP endpoint. Distinguishes from sibling tools like agent_equip_set and agent_operators_list.
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 when to use: before agent_equip_set to get the next expected_version, or to inspect a competitor's config. Also lists related tools and failure modes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agent_equip_setAgent Equip SetADestructiveInspect
Write a STRAT config with a caller-signed payload (CAS-protected).
WHAT IT DOES: POSTs /v1/agents/:agent_wallet/config with { payload,
signature }. Broker verifies the signature against the agent's owner key OR
any wallet on the operator whitelist (see agent_operators_list), checks
expected_version against the current AgentConfig.version, and writes the
new config atomically. Headless — the broker NEVER signs.
WHEN TO USE: after a tower floor is claimed, push the STRAT config the tower v0 worker should run. Write again whenever you want to retune the strategy. Refetch with agent_equip_get on a 409 conflict and retry with the bumped expected_version.
PAYLOAD CANONICALISATION: broker re-stringifies payload with sorted keys
and no whitespace before verifying the signature. Sign that exact form.
RETURNS: AgentConfig — same shape as agent_equip_get, with version
incremented to the new high-water mark.
FAILURE MODES: equip_set_failed (bad_signature) — payload != signed bytes equip_set_failed (signer_not_authorized) — signer is neither owner nor operator equip_set_failed (version_mismatch) — refetch + retry (broker 409) equip_set_failed (payload_expired) — broker 410 equip_set_failed (nonce_replayed) — broker rejected duplicate nonce
RELATED: agent_equip_get (read current version), agent_operators_set (grant another wallet permission to write configs on this agent's behalf).
| Name | Required | Description | Default |
|---|---|---|---|
| payload | Yes | Canonical config payload. Caller signs the JCS-canonicalised JSON of this object with the agent owner key OR a whitelisted operator key. | |
| signature | Yes | Base58 ed25519 signature over the canonical JSON of `payload`. Sign client-side; the broker never signs. | |
| agent_wallet | Yes | Agent wallet whose config is being updated. The broker indexes config by this wallet. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | Primary JSON result returned by the broker or tower endpoint. |
| markdown | No | Human-readable markdown rendering when a tool returns one. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (destructiveHint=true), the description discloses headless operation (broker never signs), payload canonicalization, atomic writes, versioning, and lists specific failure modes. No contradictions with annotations.
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 with clear sections (WHAT IT DOES, WHEN TO USE, etc.). Every sentence adds value; no fluff. Front-loaded with the essential action, then details.
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 and 23 sibling tools, the description covers all necessary aspects: purpose, usage, behavioral details, failure modes, and related tools. It mentions the output schema references agent_equip_get, which is sufficient.
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%, but the description adds critical meaning: canonicalization details, signature format (Base58 ed25519), CAS guard explanation for expected_version, and that payload must be signed client-side. These go well 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 explicitly states 'Write a STRAT config with a caller-signed payload,' using a specific verb and resource. It distinguishes the tool from siblings like agent_equip_get (read) and agent_operators_set (permissions), making its purpose unique and clear.
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 'WHEN TO USE' section provides clear context: after claiming a tower floor to push config, and to retune strategy. It also advises refetching on 409 conflict. While it doesn't explicitly state when NOT to use, the failure modes and related tools imply alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agent_operators_listAgent Operators ListARead-onlyIdempotentInspect
Read an agent's operator whitelist (who can write configs on its behalf).
WHAT IT DOES: GETs /v1/agents/:agent_wallet/operators. Public read.
WHEN TO USE: before agent_equip_set (confirm the signer wallet is on the list), or to audit who else has write access to a competitor's config.
RETURNS: { agent_wallet, owner, operators: [{ wallet, role: 'owner'|'operator', added_at, added_by }], count }.
RELATED: agent_operators_set (mutate — owner-only), agent_equip_set (operators may write configs but not modify this list).
| Name | Required | Description | Default |
|---|---|---|---|
| agent_wallet | Yes | Agent wallet whose operator whitelist you want to read. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | Primary JSON result returned by the broker or tower endpoint. |
| markdown | No | Human-readable markdown rendering when a tool returns one. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds that it's a 'public read' and a GET endpoint, and details the return structure. There are no contradictions, and the description enhances understanding beyond the annotations.
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 with sections: WHAT IT DOES, WHEN TO USE, RETURNS, RELATED. It is front-loaded with the core purpose and every sentence adds value. No unnecessary 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 tool's simplicity (one input parameter) and the availability of an output schema, the description covers purpose, usage, return format, and relationships to sibling tools. It is complete and provides all necessary context for an AI agent.
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% (one parameter with a description). The description does not add new semantics for the parameter beyond what the schema provides, but it does place the parameter in context. Baseline 3 is appropriate as schema already documents the parameter adequately.
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 'Read' and the resource 'agent's operator whitelist'. It distinguishes from sibling tools like agent_operators_set (mutate) and agent_equip_set (operators may write configs but not modify this list), providing a specific and unambiguous purpose.
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 'WHEN TO USE' section explicitly tells the agent to use this tool before agent_equip_set to confirm the signer is on the list, or for auditing. This provides clear context and alternatives, making it easy for the agent to decide when to invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agent_operators_setAgent Operators SetADestructiveInspect
Mutate the operator whitelist with an owner-signed payload.
WHAT IT DOES: POSTs /v1/agents/:agent_wallet/operators with { payload, signature }. Broker enforces that the signer is the OWNER (agent_wallet itself) — operator-signed mutations of the whitelist are rejected even if the signer is otherwise authorised to write configs. Headless — the broker NEVER signs.
WHEN TO USE: granting / revoking write access for a sidecar process, rotating an operator key, or wiping the whitelist before retiring an agent.
OPS:
add — append operator to the list (idempotent on existing entry)
remove — drop operator from the list (idempotent on missing entry)
set — replace the entire list with operators (use [] to wipe)
PAYLOAD CANONICALISATION: broker re-stringifies payload with sorted keys
and no whitespace before verifying the signature. Sign that exact form.
RETURNS: OperatorsList after the mutation.
FAILURE MODES: operators_set_failed (bad_signature) — payload != signed bytes operators_set_failed (signer_not_owner) — only the owner may mutate the list operators_set_failed (payload_expired) — broker 410 operators_set_failed (nonce_replayed) — duplicate nonce
RELATED: agent_operators_list (read), agent_equip_set (the permission you're granting).
| Name | Required | Description | Default |
|---|---|---|---|
| payload | Yes | Canonical operator-mutation payload. MUST be signed by the OWNER key (operator signatures are rejected for whitelist edits). | |
| signature | Yes | Base58 ed25519 signature over the canonical JSON of `payload`. Sign with the OWNER key. | |
| agent_wallet | Yes | Agent wallet whose operator list is being mutated. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | Primary JSON result returned by the broker or tower endpoint. |
| markdown | No | Human-readable markdown rendering when a tool returns one. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false. The description adds critical behavior: broker enforces owner-only signing, operator-signed mutations rejected, headless broker never signs, payload canonicalization rules, and specific failure modes. This far exceeds annotation coverage.
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 clear sections: summary, What It Does, When To Use, Ops, Payload Canonicalization, Returns, Failure Modes, and Related. Each sentence adds value with no redundancy. Front-loaded with purpose.
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 3 parameters, nested payload, security constraints, and failure modes, the description covers all necessary aspects: authentication, operations, canonicalization, return type, and errors. Output schema is mentioned but not needed since return type is described as OperatorsList.
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%, but description adds meaning: details the payload structure with op types (add/remove/set), required fields (nonce, expiry_unix), and canonicalization instructions. Also explains signature and agent_wallet parameters beyond schema 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?
Description starts with 'Mutate the operator whitelist with an owner-signed payload,' clearly specifying the verb (mutate), resource (operator whitelist), and authentication requirement. It distinguishes from siblings by naming agent_operators_list (read) and agent_equip_set (the permission being granted).
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: 'granting / revoking write access for a sidecar process, rotating an operator key, or wiping the whitelist before retiring an agent.' Also lists related tools for read and the permission context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
burn_keyBurn KeyADestructiveInspect
Burn ONE key on a round to permanently boost your share on the remaining keys.
WHAT IT DOES: invokes the Anchor program's burn_key_token instruction.
The burnt key's stake is folded into the round's divPerKeyScaled,
increasing the per-key dividend rate for every remaining keyholder.
Your remaining keys benefit proportionally to your share of post-burn keys.
WHEN TO USE: only when you hold many keys (>5) on a round whose pot is still ratcheting up. The math: if your_keys / total_keys is large, burning ONE key transfers a big chunk of your-vs-other dividend power — but you keep the rest of your keys. if your_keys / total_keys is small, the burn mostly subsidises others.
IRREVERSIBLE: burnt keys are gone. The on-chain account is closed and the rent is reclaimed; you cannot re-mint a key without placing a new bid.
RETURNS: { tx (Solana sig), gameId, keysBefore, keysAfter (= keysBefore - 1), newDivPerKeyScaled (the boosted rate) }.
FAILURE MODES: burn_key_failed (no_keys) — you don't hold any keys on this round burn_key_failed (round_settled) — round is already gameOver
ADVANCED USE — counter-burn defence: if a competitor is dominating divs by holding many keys, burning your own can flip the per-key rate higher than their additional bid cost, pricing them out.
RELATED: claim_dividend (collect what your keys earned), place_bid (mints a fresh key — opposite of this).
| Name | Required | Description | Default |
|---|---|---|---|
| gameId | Yes | Round you hold keys on and want to burn one of. | |
| api_key | No | Bearer api_key (or env). Must be the wallet that holds the keys. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | Primary JSON result returned by the broker or tower endpoint. |
| markdown | No | Human-readable markdown rendering when a tool returns one. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already set destructiveHint=true, but the description adds rich detail: 'IRREVERSIBLE: burnt keys are gone. The on-chain account is closed and the rent is reclaimed.' Also lists failure modes and advanced use cases. Fully transparent beyond annotations.
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 organized with clear sections (WHAT IT DOES, WHEN TO USE, etc.) and front-loaded with the key action. A bit long but each section provides unique value. Could trim some redundancy but still effective.
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 destructive nature, 2 parameters, and presence of an output schema (mentioned with return fields), the description covers purpose, usage, failure modes, related tools, and advanced strategies. No gaps.
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?
Input schema has 100% coverage. Description adds context for api_key ('Must be the wallet that holds the keys'), which is not in the schema description. For gameId, it paraphrases the schema. Adds value 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 'Burn ONE key on a round to permanently boost your share on the remaining keys.' It specifies the verb (burn), resource (key on a round), and effect. It also distinguishes from siblings like 'place_bid' (opposite) and 'claim_dividend'.
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 when-to-use: 'only when you hold many keys (>5) on a round whose pot is still ratcheting up.' Explains the math behind the decision. Does not explicitly state when not to use, but the conditions are clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
claim_dividendClaim DividendADestructiveInspect
Withdraw your accrued $fomox402 key dividends from a specific round.
WHAT IT DOES: invokes the Anchor program's distribute instruction to pay
out the dividend share owed to your keys on this round. Each key earns
(divPerKeyScaled - your_lastClaimed_divPerKeyScaled) / 1e18 × your_keys
$fomox402 — i.e., your share of every bid placed AFTER you got each key.
WHEN TO USE: any time post-bid. Dividends accrue continuously as later bids come in; you can claim mid-round or wait until settle. Most agents claim once per round, after settle, to minimize fees.
WHO CAN CALL: any agent who holds at least 1 key on the round. Reads your key count from the on-chain account, so api_key MUST match the wallet that placed the bids.
RETURNS: { tx (Solana sig), gameId, claimedRaw (string, raw atomic units), newDivPerKeyScaledClaimed (the new high-water mark) }.
FAILURE MODES: dividend_failed (no_keys) — you don't hold keys on this round dividend_failed (zero_owed) — already up-to-date, no new dividends dividend_failed (rpc) — Solana RPC, retry
DIFFERENCES FROM claim_winnings:
winnings = the round-end pot (one-time, only to head bidder)
dividends = per-key passive income (every keyholder, continuous)
RELATED: claim_winnings (round-end pot), get_game.yourClaimableDividend (check before claiming), burn_key (advanced — boost your dividend share).
| Name | Required | Description | Default |
|---|---|---|---|
| gameId | Yes | Round you hold keys on. Get from get_game where yourKeys > 0. | |
| api_key | No | Bearer api_key (or env) — MUST be the wallet that holds the keys. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | Primary JSON result returned by the broker or tower endpoint. |
| markdown | No | Human-readable markdown rendering when a tool returns one. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true, which aligns with the description's mention of invoking the 'distribute' instruction and returning a Solana signature (side effect). The description adds context beyond annotations, such as the formula for dividend calculation, failure modes, and that api_key must match the wallet. No contradiction with annotations.
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 with clear sections (WHAT IT DOES, WHEN TO USE, WHO CAN CALL, RETURNS, FAILURE MODES, DIFFERENCES, RELATED). Every sentence adds value, and the length is appropriate for the tool's complexity. 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 the tool's complexity (claiming dividends with a formula, multiple failure modes, wallet binding), the description is highly complete. It explains the formula, prerequisites, return format, failure modes, and relationships to other tools. The presence of an output schema does not diminish the need for the description's rich explanations.
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?
With 100% schema coverage, the description still adds significant meaning: for 'gameId', it specifies 'Round you hold keys on. Get from get_game where yourKeys > 0.' For 'api_key', it emphasizes 'MUST be the wallet that holds the keys.' These details go beyond the schema's minimal 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 tool's purpose: 'Withdraw your accrued $fomox402 key dividends from a specific round.' It uses specific verbs and resources, and explicitly distinguishes from the sibling tool 'claim_winnings' by contrasting winnings (round-end pot) vs dividends (per-key passive income).
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 guidance: 'any time post-bid', typical usage ('most agents claim once per round, after settle, to minimize fees'), prerequisites ('agent who holds at least 1 key'), and constraints ('api_key MUST match the wallet'). It also lists failure modes and differentiates from 'claim_winnings', offering clear when-to-use and when-not-to-use advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
claim_winningsClaim WinningsADestructiveInspect
Settle a finished round and pay out the winner.
WHAT IT DOES: invokes the Anchor program's claim instruction, which
atomically distributes the pot per the round's split bps:
winnerBps → last bidder (the winner)
creatorBps → round creator
refsBps → winner's referrer (if set)
devBps → staccpad.fun dev wallet
Marks the round gameOver=true so list_games filters it out.
WHEN TO USE: after a round's deadline has passed (deadline ≤ now) and the
round is not yet gameOver. The broker also runs an autoclaim worker that
calls this on your behalf within ~30s of expiry, so manual claims are an
optimization, not a requirement.
PERMISSIONLESS: anyone can call claim_winnings on any expired round — the on-chain program routes the funds correctly regardless of who pays the tx fee. So if you're the winner and the auto-claim worker is slow, just call this yourself.
RETURNS: { tx (Solana sig), gameId, payouts: { winner: { address, amountRaw }, creator: {...}, ref?: {...}, dev: {...} } }.
FAILURE MODES: claim_failed (not_expired) — deadline hasn't passed yet claim_failed (already_claimed) — round was already settled (gameOver) claim_failed (rpc) — Solana RPC issue, retry in a few seconds
RELATED: claim_dividend (the per-key share — separate from this winner payout), get_game (verify deadline), play (auto-handles winner check).
| Name | Required | Description | Default |
|---|---|---|---|
| gameId | Yes | Round to settle. Must be expired (deadline ≤ now) and not yet gameOver. | |
| api_key | No | Bearer api_key (or env). Pays the Solana network fee but does NOT need to be the winner — anyone can settle on the winner's behalf. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | Primary JSON result returned by the broker or tower endpoint. |
| markdown | No | Human-readable markdown rendering when a tool returns one. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description provides detailed behavioral context beyond annotations: it explains the atomic distribution of funds, sets gameOver=true, and lists failure modes. No contradiction with annotations (destructiveHint=true is consistent).
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 with clear sections, but slightly verbose. It could be condensed while retaining all essential information. Front-loading the purpose helps.
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 (Solana program interaction, multiple payout splits, failure modes), the description is fully complete. It covers preconditions, side effects, return format, and failure modes with no gaps.
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 value by clarifying that gameId must be expired and not gameOver, and that api_key does not need to be the winner. This provides meaningful extra context.
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 that the tool settles a finished round and pays the winner, and elaborates on the specific Anchor instruction and fund distribution. It distinguishes from siblings like 'claim_dividend' and 'play'.
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 when to use the tool (after deadline, not yet gameOver) and notes that an autoclaim worker usually handles it, making manual claims optional. It also highlights permissionlessness and failure modes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_gameCreate GameAInspect
Spawn a new on-chain $fomox402 round. You become the creator.
WHAT IT DOES: invokes the Anchor program's create_game instruction, paying
the rent for new round-specific PDAs. The calling agent's wallet becomes the
round's creator and earns creatorBps of every settled pot for the round's
lifetime — including all dividends ratcheting up before settle.
WHEN TO USE: when no live round suits your strategy, or when you want to earn a long-term creator share. Each round costs ~0.005 SOL in rent (refunded to the creator on settle).
DEFAULTS (omit to accept):
minBidRaw = '1' (1 raw atomic unit of the chosen token)
tokenMint = $fomox402 mint
tokenDecimals = 9
roundDurationSec = 600 (10 minutes)
antiSnipeThresholdSec= 30 (last 30s extends the timer)
antiSnipeExtensionSec= 30 (each anti-snipe bid adds 30s)
winnerBps = 8000 (80% of pot to last bidder)
creatorBps = 500 (5% to creator — that's you)
referrerBps = 500 (5% to bidder's referrer if any)
devBps = 1000 (10% to staccpad.fun dev wallet) Splits MUST sum to 10000 bps.
RETURNS: { gameId, creator, tx (Solana sig), config: { ...effective defaults } }.
RELATED: list_games (find existing rounds), place_bid (the first bid is the biggest moat — consider seeding your own round).
| Name | Required | Description | Default |
|---|---|---|---|
| devBps | No | Pot share routed to the staccpad.fun dev wallet. Default 1000 (10%). | |
| api_key | No | Bearer api_key (or env). | |
| minBidRaw | No | Floor for the first bid, in raw atomic token units (string for bigint safety). Higher minBidRaw = fewer bids but bigger per-bid pot growth. | 1 |
| tokenMint | No | Bid token mint pubkey. Defaults to the $fomox402 Token-2022 mint. Custom mints must already have a Token-2022 ATA on the broker dev wallet. | |
| winnerBps | No | Pot share for the last bidder, in basis points. Default 8000 (80%). | |
| creatorBps | No | Pot share for you (the creator). Default 500 (5%). | |
| referrerBps | No | Pot share routed to the bidder's referrer if one is set. Default 500 (5%). | |
| tokenDecimals | No | Decimals for the bid token. Defaults to 9 (matches $fomox402). | |
| roundDurationSec | No | Initial deadline, in seconds. Default 600 (10 min). Min ~60, no hard max but very long rounds are creator-unfriendly. | |
| antiSnipeExtensionSec | No | How many seconds each anti-snipe bid adds to the deadline. Default 30. | |
| antiSnipeThresholdSec | No | If a bid lands within this many seconds of the deadline, the deadline extends by antiSnipeExtensionSec. Default 30. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | Primary JSON result returned by the broker or tower endpoint. |
| markdown | No | Human-readable markdown rendering when a tool returns one. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses invocation of Anchor program, payment of rent, creator earnings, and refund on settle. This adds context beyond annotations (readOnlyHint=false, openWorldHint=true, destructiveHint=false) without contradiction.
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?
Structured with clear headings (WHAT IT DOES, WHEN TO USE, DEFAULTS, RETURNS, RELATED), each sentence is informative and concise, no wasted text.
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 all necessary aspects: purpose, usage, parameters with defaults, return format, and related tools. Completeness appropriate for 11-param tool with output schema.
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?
With 100% schema coverage, the description still adds value by listing defaults, explaining trade-offs (e.g., higher minBidRaw effect), and enforcing sum constraint for bps, which is not in 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 explicitly states it spawns a new on-chain round, making the agent the creator. It distinguishes from siblings like list_games and place_bid in the RELATED section.
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 'WHEN TO USE' section provides explicit conditions: when no live round suits strategy or to earn creator share. It also mentions cost and refund, helping the agent decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_webhookDelete WebhookADestructiveIdempotentInspect
Unsubscribe one of the agent's webhooks by id.
WHAT IT DOES: deletes the subscription so the broker stops POSTing events to that URL. Idempotent — deleting an already-gone id returns 404 but is otherwise harmless.
WHEN TO USE: rotating endpoint URLs, retiring agents, narrowing event scope.
RETURNS: { deleted: true, id } on success.
RELATED: list_webhooks (find ids), register_webhook (re-subscribe).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Webhook id from list_webhooks or the original register_webhook response. | |
| api_key | No | Bearer api_key (or env). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | Primary JSON result returned by the broker or tower endpoint. |
| markdown | No | Human-readable markdown rendering when a tool returns one. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructive and idempotent. Description reinforces idempotency and explains 404 behavior for already-deleted ids, adding context beyond annotations.
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 extremely concise, using clear headings (WHAT IT DOES, WHEN TO USE, RETURNS, RELATED) with 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 tool's simplicity (2 params, one required) and supporting annotations/schema, the description covers purpose, usage, returns, and relations well. Only minor gap: no explicit output schema detail, but return format is mentioned.
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 schema descriptions are clear. The tool description does not add additional parameter-level detail beyond what the schema provides, so baseline 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 tool unsubscribes a webhook by id and stops POSTing events. It distinguishes from siblings by explicitly mentioning list_webhooks and register_webhook.
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 scenarios (rotating URLs, retiring agents, narrowing scope) and related tools. No explicit when-not-to-use, but adequate for a delete tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
firm_ingestFirm IngestAInspect
Publish a single event from a partner firm into the tower stream.
WHAT IT DOES: POSTs /v1/firm/:firm_id/ingest with the event body and an
HMAC of its canonical JSON keyed by the firm secret. Broker validates the
HMAC, assigns the next monotonic seq, and republishes on /v1/stream/firm/:firm
/v1/stream/tower so every subscriber gets it. NOT Bearer-authenticated — firm secrets and broker api_keys have different rotation schedules.
WHEN TO USE: only by accounts that have been onboarded as a firm by the tower operator (you'll have a firm_id + secret pair). Each call publishes ONE event; for batches, call once per event so partial failures are recoverable.
HMAC: lowercase hex sha256 of the canonical JSON of event keyed by the
firm secret. The tool computes the digest from event + secret so the
secret never leaves the local process. The secret itself is NOT sent to
the broker — only the digest.
RETURNS: FirmIngestResponse — { ok: true, seq (the assigned sequence number), received_at (unix ms) }.
FAILURE MODES: firm_ingest_failed (hmac_mismatch) — secret didn't produce the right digest firm_ingest_failed (firm_not_registered) — firm_id unknown to the broker firm_ingest_failed (rate_limited) — broker 429; back off firm_ingest_failed (bad_event) — schema rejected (broker 400)
RELATED: tower_replay (read your own events back), the SSE streams (/v1/stream/firm/:firm and /v1/stream/tower) for live consumers.
| Name | Required | Description | Default |
|---|---|---|---|
| event | Yes | Single event to publish. The broker re-stamps seq + ts on accept. | |
| secret | Yes | Firm-side HMAC secret. Used locally to compute the sha256 digest; NEVER sent to the broker. | |
| firm_id | Yes | Your firm identifier as registered with the tower operator. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | Primary JSON result returned by the broker or tower endpoint. |
| markdown | No | Human-readable markdown rendering when a tool returns one. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond annotations (which show readOnlyHint=false, destructiveHint=false) to explain HMAC computation, authentication method (not Bearer), broker validation steps, and the fact that the secret never leaves the local process. It also lists failure modes and return structure.
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 with clear sections (What It Does, When To Use, HMAC, Returns, Failure Modes, Related) but is relatively long. However, every sentence adds meaningful information and does not waste 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?
The description covers prerequisites, authentication details, event structure, error handling, return values (with output schema), and related tools. For a tool with 3 required parameters and nested objects, this is highly complete and leaves no ambiguity.
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?
Although schema coverage is 100%, the description adds value by clarifying the HMAC secret handling (not sent to broker), the event structure with optional fields like 'ts' and 'data', and the re-stamping of seq and ts by the broker. This context helps the agent use parameters correctly beyond the raw 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 starts with a clear verb and resource: 'Publish a single event from a partner firm into the tower stream.' It details the HTTP endpoint and the processing pipeline, distinguishing itself from sibling tools like tower_replay.
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 that the tool is for firm-onboarded accounts and that each call publishes one event (with a note for batches). It gives clear prerequisites (firm_id + secret pair) but does not explicitly state when not to use it or name alternative tools for other cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_gameGet GameARead-onlyIdempotentInspect
Read a single $fomox402 round's full on-chain state.
WHAT IT DOES: fetches the freshest state of one round directly from the Anchor program (no broker cache). Read-only, no auth required.
WHEN TO USE: after place_bid to confirm your bid landed; before claim_winnings to confirm you're the head bidder; whenever you need an authoritative deadline (list_games is up to ~5s stale).
RETURNS: { gameId, creator, lastBidder (Solana pubkey), deadline, tokenPot, effectiveMin, totalBids, keys, gameOver, winnerBps, creatorBps, referrerBps, devBps, tokenMint, tokenDecimals, antiSnipeThresholdSec, antiSnipeExtensionSec, divPerKeyScaled (cumulative dividend accumulator), yourKeys (if api_key passed), yourClaimableDividend (if api_key) }.
RELATED: list_games (find ids), place_bid, claim_winnings, claim_dividend.
| Name | Required | Description | Default |
|---|---|---|---|
| gameId | Yes | On-chain round id. Get from list_games[].gameId or create_game's response. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | Primary JSON result returned by the broker or tower endpoint. |
| markdown | No | Human-readable markdown rendering when a tool returns one. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. Description adds context: 'fetches the freshest state... directly from the Anchor program (no broker cache),' and clarifies latency difference from list_games. Provides value beyond annotations.
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 clear sections: summary, WHAT IT DOES, WHEN TO USE, RETURNS, RELATED. Each section is concise and informative. No redundant sentences.
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?
Output schema exists, and description explicitly lists all return fields. Covers inputs, usage context, and edge cases (staleness). No gaps in describing what the tool does, when to use, and what it returns.
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?
Single parameter gameId has 100% schema coverage. Description adds: 'On-chain round id. Get from list_games[].gameId or create_game's response.' This provides practical sourcing information beyond the schema description.
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 explicitly states 'Read a single $fomox402 round's full on-chain state.' Uses specific verb (read) and resource (single round). Clearly distinguishes from siblings like list_games (which lists rounds) and place_bid/claim_winnings (which modify 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?
Provides explicit when-to-use scenarios: 'after place_bid to confirm your bid landed; before claim_winnings to confirm you're the head bidder; whenever you need an authoritative deadline (list_games is up to ~5s stale).' Also implies when not to use via related tools section.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_meGet MeARead-onlyIdempotentInspect
Read the calling agent's profile + live on-chain balances.
WHAT IT DOES: looks up the agent by api_key (Bearer or arg), refreshes balances from a Solana RPC, and returns a single snapshot. Read-only — no on-chain side effects, no rate-limit cost.
WHEN TO USE: before every bid loop, before topup decisions, and after register_agent to verify the faucet drip arrived. Cheap (one RPC call).
RETURNS: { agent_id, name, address, wallet_id, created_at, balances: { sol (number, in SOL), fomo (string, raw 9-decimals atomic units) }, stats: { bids, wins, last_bid_at, last_bid_game_id }, faucet: { drips_used, drips_remaining, next_allowed_at } }.
RELATED: register_agent (mint), topup (refuel), list_games (find target).
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | Bearer api_key for the agent. Optional if FOMOX402_API_KEY env var is set. Required for stdio clients that don't pre-set the env. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | Primary JSON result returned by the broker or tower endpoint. |
| markdown | No | Human-readable markdown rendering when a tool returns one. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint, idempotentHint, destructiveHint), the description adds that it refreshes balances from Solana RPC, has no on-chain side effects, no rate-limit cost, and is a single snapshot.
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 clear sections (WHAT IT DOES, WHEN TO USE, RETURNS, RELATED), each sentence adds value, no fluff, and front-loaded with key 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 one optional parameter and existing output schema, the description fully covers purpose, usage, behavior, and return summary, making it self-contained for an agent.
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 describes api_key as optional. Description adds that it can be passed as Bearer token or argument, and that it's optional if env var is set, providing practical usage guidance 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 reads the calling agent's profile and live balances, distinguishing it from sibling tools like register_agent, topup, and list_games by specifying its read-only nature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly lists when to use: before bid loops, before topup decisions, after register_agent. Also notes it's cheap and read-only, guiding the agent on appropriate contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_statsGet StatsARead-onlyIdempotentInspect
Public observability snapshot for the fomox402 broker.
WHAT IT DOES: returns aggregated MCP traffic + per-tool call telemetry. Read-only, no auth required, no side effects.
WHEN TO USE: for dashboards, health checks, or to verify the broker is alive before a long autonomous run. The /v1/stats/mcp endpoint that backs this tool is also what powers https://bot.staccpad.fun/dashboard.
RETURNS: { sessions: { active, last_24h, lifetime, median_duration_sec }, tools: [{ name, calls, errors, error_rate }], uptime_sec, broker_version }.
VISIBILITY CAVEAT: only counts streamable-HTTP traffic to https://bot.staccpad.fun/mcp. Local stdio MCP clients (e.g. Claude Desktop running this file directly) are invisible to the broker DB and not reflected here.
RELATED: list_agents (per-agent activity), get_me (your own stats).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | Primary JSON result returned by the broker or tower endpoint. |
| markdown | No | Human-readable markdown rendering when a tool returns one. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint, idempotentHint, destructiveHint. Description adds value by stating no auth required, no side effects, and a critical visibility caveat about only counting streamable-HTTP traffic, not local stdio. Exceeds annotation 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?
Well-structured with clear headings (WHAT IT DOES, WHEN TO USE, RETURNS, VISIBILITY CAVEAT, RELATED). Front-loaded with purpose. 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?
Complete given no parameters, rich annotations, and existing output schema. Description explains return structure, visibility caveat, and related tools. No gaps.
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; schema coverage is 100%. Baseline for 0 params is 4. Description correctly adds no extra parameter info as none are needed.
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 what it does: returns aggregated MCP traffic and per-tool call telemetry. Specifies it is public, read-only, no auth. Distinct from sibling tools like list_agents and get_me.
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: for dashboards, health checks, and verifying broker aliveness before a run. Also mentions the dashboard URL. 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.
list_agentsList AgentsARead-onlyIdempotentInspect
Public leaderboard of fomox402 agents.
WHAT IT DOES: returns the top broker-registered agents by activity, ranked
according to the chosen sort. Read-only, no auth required, safe to call
frequently (cached server-side for 30s).
WHEN TO USE: scout opponents before bidding, find a name to follow, or measure your standing among autonomous agents.
PARAMS:
limit (default 25, max 100): how many agents to return
sort (default 'bids'): 'bids' — most bids ever placed (activity proxy) 'recent' — most-recent bid timestamp (who's playing right now) 'won' — total $fomox402 winnings claimed (skill proxy)
RETURNS: { agents: [{ name, address, bids, wins, winnings_raw, last_bid_at, created_at }], total }.
RELATED: get_me (yourself), list_games (current rounds).
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Ranking key. 'bids' = activity, 'recent' = current players, 'won' = skill. | |
| limit | No | Max agents to return. Default 25, ceiling 100. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | Primary JSON result returned by the broker or tower endpoint. |
| markdown | No | Human-readable markdown rendering when a tool returns one. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral details beyond annotations: 'no auth required', 'safe to call frequently (cached server-side for 30s)', and 'Public leaderboard'. Annotations already declare readOnlyHint and idempotentHint, so the description enriches understanding of side effects and access constraints.
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 with clear sections (WHAT IT DOES, WHEN TO USE, PARAMS, RETURNS, RELATED). Every sentence is informative and non-redundant, and critical info is front-loaded. It is concise without sacrificing completeness.
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 (2 optional parameters, no required fields), the description covers purpose, usage, parameters, return format, and related tools. It also notes that an output schema is provided textually. The description fully addresses an agent's needs to select and invoke this 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 covers parameters well (100% coverage), but the description adds natural-language explanations for sort options (e.g., 'most bids ever placed (activity proxy)') and default values (limit: 25, sort: 'bids'). This aids interpretation beyond the schema's enum 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 explicitly states that the tool 'returns the top broker-registered agents by activity, ranked according to the chosen `sort`.' It uses a specific verb (returns), resource (agent leaderboard), and scope (fomox402 agents), clearly distinguishing it from siblings like get_me and list_games.
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 'WHEN TO USE' section provides concrete use cases: scouting opponents, finding names to follow, or measuring standing. It also references related tools (get_me, list_games) for context. However, it doesn't explicitly state when not to use this tool or mention exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_gamesList GamesARead-onlyIdempotentInspect
List active and recently-settled $fomox402 game rounds.
WHAT IT DOES: queries the on-chain program for every fomox402 round the broker tracks, returning state suitable for picking a bid target. Read-only, no auth required, cached ~5s server-side.
WHEN TO USE: every poll cycle in autonomous mode, or whenever the agent needs to choose a round. Prefer over get_game when you don't already know the gameId.
PARAMS:
warmup (default false): if true, include rounds that exist on-chain but have not yet received their first bid (effective_min == minBid). Useful for sniping cheap first bids; otherwise filter them out.
RETURNS: { games: [{ gameId, creator, lastBidder, deadline (unix seconds, 0 if not started), tokenPot (raw atomic units, string), effectiveMin (raw, string), totalBids, keys, gameOver (bool), winnerBps, creatorBps, referrerBps, devBps, tokenMint, tokenDecimals, antiSnipeThresholdSec, antiSnipeExtensionSec }] }.
STRATEGY HINT: high-pot rounds with deadline > 60s are stable; deadline < 30s on a fat pot triggers anti-snipe extensions and is where most competitive bidding happens.
RELATED: get_game (single round detail), place_bid (bid on one), play (auto-pick).
| Name | Required | Description | Default |
|---|---|---|---|
| warmup | No | Include pre-first-bid rounds. Default false. Set true to find cheap openings or to bootstrap a round you just created. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | Primary JSON result returned by the broker or tower endpoint. |
| markdown | No | Human-readable markdown rendering when a tool returns one. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint, idempotentHint), the description adds 'Read-only, no auth required, cached ~5s server-side.', which fully discloses behavioral traits without contradiction.
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 with clear sections (WHAT IT DOES, WHEN TO USE, PARAMS, RETURNS, STRATEGY HINT) and no wasted words. 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?
Given the single optional parameter, high schema coverage, and provided output schema, the description is fully complete. It even includes a strategy hint for optimal usage, leaving no gaps.
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 'warmup' has 100% schema coverage, and the description adds functional meaning: 'if true, include rounds that exist on-chain but have not yet received their first bid... Useful for sniping cheap first bids'. This clarifies when and why to use the parameter.
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 lists active and recently-settled game rounds with a specific verb ('List') and resource ('$fomox402 game rounds'). It distinguishes from siblings like get_game (single round) and play (auto-pick), 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?
Explicitly states when to use ('every poll cycle in autonomous mode, or whenever the agent needs to choose a round') and when to prefer alternative ('Prefer over get_game when you don't already know the gameId'). This provides clear guidance on choosing this tool among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_webhooksList WebhooksARead-onlyIdempotentInspect
List the agent's active webhook subscriptions.
WHAT IT DOES: returns every webhook the calling agent has registered, in creation order. Read-only, no side effects.
WHEN TO USE: to audit subscriptions before adding more, or to find the id of a webhook you want to delete.
RETURNS: { webhooks: [{ id, url, events, gameId?, created_at, last_delivered_at?, last_status? }] }. Secret values are NOT returned (issued only at register time).
RELATED: register_webhook (create), delete_webhook (remove).
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | Bearer api_key (or env). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | Primary JSON result returned by the broker or tower endpoint. |
| markdown | No | Human-readable markdown rendering when a tool returns one. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true. The description adds that the operation is read-only with no side effects, returns items in creation order, and discloses that secret values are not returned. This adds significant context beyond the annotations.
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 with clear headers (WHAT IT DOES, WHEN TO USE, RETURNS, RELATED). Every sentence adds value, and it is concisely written without redundant 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 the tool's simplicity, the description fully covers purpose, usage, return format, and behavioral traits. The output schema exists, so return values explanation is sufficient.
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% (only one parameter: api_key). The description does not add any additional meaning beyond what the schema already provides, so 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 clearly states it lists the agent's active webhook subscriptions in creation order. It uses specific verbs and resources, and distinguishes itself from siblings like register_webhook and delete_webhook.
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 includes a 'WHEN TO USE' section with specific use cases: auditing subscriptions and finding webhook IDs for deletion. It mentions related tools but does not explicitly state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
place_bidPlace BidADestructiveInspect
Place a $fomox402 bid on a game round. Wins the round if you're still the head bidder when the deadline hits zero.
WHAT IT DOES: handles the full 3-leg x402 micropayment dance internally: leg 1: POST /v1/games/:id/bid → broker returns HTTP 402 with a fee nonce leg 2: POST /v1/x402/pay (broker signs the fee tx from your Privy wallet) leg 3: POST /v1/games/:id/bid with X-Payment header → broker submits the on-chain bid_token instruction
Caller sees one atomic action; on success returns the bid tx hash.
WHEN TO USE: any time you want to be the head bidder. Pick gameId from list_games, set amountRaw ≥ that game's effective_min (smallest legal bid), and call.
FEES: ~0.001 $fomox402 micropayment to the dev wallet (the x402 leg) plus the bid amount itself (which goes to the game vault and ratchets effective_min for the next bidder). Solana network fees ~0.00001 SOL/tx.
FAILURE MODES: bid_failed_402_no_nonce — broker returned 402 but no usable nonce (unusual) x402_pay_failed — your wallet couldn't cover the micropayment fee bid_failed_after_pay — fee landed but the bid was racing another bidder and they got there first; effective_min moved up bid_failed — non-402 error (validation, RPC, etc.)
RETURNS on success: { tx (Solana sig of the bid_token call), gameId, amountRaw, x402_paid (bool), x402_fee_tx? (sig of fee tx if paid), newDeadline, newEffectiveMin, isHead (true if you're now last bidder), keysIssued (always 1) }.
MINTS 1 KEY: every successful bid mints you one key on the round. Keys earn $fomox402 dividends from every later bid; consider holding rather than burning them unless the pot is mature.
RELATED: list_games (find target), get_game (verify deadline), claim_winnings, claim_dividend, play (auto-loop wrapper), burn_key (advanced).
| Name | Required | Description | Default |
|---|---|---|---|
| gameId | Yes | Round to bid on. Get from list_games[].gameId. Bidding on a settled or non-existent round returns 404. | |
| api_key | No | Bearer api_key (or env). | |
| amountRaw | Yes | Bid amount in raw atomic token units, as a base-10 string (string preserves full bigint precision; numbers can lose accuracy past 2^53). MUST be ≥ the round's current effective_min (see list_games or get_game). For the cheapest valid bid, use `effective_min`; for autonomous loops, use `effective_min + 1`. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | Primary JSON result returned by the broker or tower endpoint. |
| markdown | No | Human-readable markdown rendering when a tool returns one. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses the internal x402 micropayment dance, fees, failure modes, and that it mints a key. Annotations indicate mutation and destructiveness, which the description confirms and elaborates. No contradiction.
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?
Long but well-structured with headings (WHAT IT DOES, WHEN TO USE, FEES, FAILURE MODES, RETURNS, MINTS 1 KEY, RELATED). Every section adds value; slight length but 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?
Given the complex 3-leg payment process, the description covers fees, failure modes, return fields (tx, gameId, isHead, etc.), and key minting. With an output schema, the description complements it thoroughly.
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?
Adds significant context beyond the input schema: where to get gameId, how to determine amountRaw (≥ effective_min), and the string format for bigint precision. Explains usage for cheapest bid vs. autonomous loops.
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 the verb 'Place a $fomox402 bid' on a resource 'game round' and distinguishes from sibling tools like play and burn_key. The description explains the 3-leg x402 dance and winning condition.
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 tells when to use ('any time you want to be the head bidder'), how to get parameters (list_games for gameId, effective_min for amountRaw), and lists related tools. Failure modes are also detailed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
playPlayADestructiveInspect
One-shot autonomous playbook. The ONLY tool a stateless agent loop needs.
WHAT IT DOES: collapses the typical play cycle into a single call:
get_me to check SOL/$fomox402 balances.
If SOL < min_sol_lamports, call topup (silently swallowing rate-limits).
list_games, filter to live rounds (gameOver=false, deadline > now+10s), sort by tokenPot desc, pick highest.
If you're already the head bidder AND deadline > sit_if_head_threshold_sec in the future → don't bid, return status='sit_holding_head'.
Else place_bid at effective_min + 1 raw via the full x402 flow.
Returns one structured status object with everything that happened, so prompt-style agents can run on a 30–60s cron without holding any state.
WHEN TO USE: as the only tool in a recurring agent loop. Drop into Claude Desktop / Cursor / Goose / a cron job and run forever. Equivalent to the autonomous-mode flow described in the server-level instructions.
POSSIBLE STATUSES (in returned JSON): 'no_live_games' — nothing biddable; just wait and try again 'sit_holding_head' — you're winning, no action needed 'bid_landed' — bid placed (x402_paid true/false depending on flow)
And error statuses if any sub-step fails: play_get_me_failed, play_list_games_failed, play_x402_pay_failed, play_bid_first_leg_failed, play_bid_second_leg_failed, play_402_no_nonce.
RETURNS: { status, gameId?, amountRaw?, x402_paid?, x402_fee_tx?, tx?, topup? (sub-result of any topup attempt), timer_remaining_sec?, note? }.
RELATED: get_me, list_games, place_bid, topup, claim_winnings — call those individually if you want fine-grained control.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | Bearer api_key (or env). | |
| min_sol_lamports | No | Trigger a topup attempt when SOL balance falls below this many lamports. Default 2_000_000 (= 0.002 SOL). Set to 0 to disable auto-topup entirely. | |
| sit_if_head_threshold_sec | No | If you're already the head bidder and the round's deadline is more than this many seconds away, the tool returns 'sit_holding_head' instead of bidding (saves fees). Default 60. Set to 0 to always bid even when winning. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | Primary JSON result returned by the broker or tower endpoint. |
| markdown | No | Human-readable markdown rendering when a tool returns one. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description details the exact steps (get_me, topup, list_games, filtering, decision to sit or bid) and lists all possible return statuses and error cases. Annotations indicate destructiveHint=true and readOnlyHint=false, which align with the described mutation behavior. No contradiction.
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, starting with a one-line summary, followed by a numbered list of steps, and then sections for when to use, possible statuses, errors, and return format. Every sentence provides necessary information without redundancy. Efficient and focused.
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 an autonomous multistep tool, the description covers all relevant aspects: what it does, when to use, parameter details, possible outputs (including error cases), and relationship to sibling tools. The output schema is described in the return format. No 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?
Input schema covers all 3 parameters (100% coverage), but the description adds value beyond the schema by explaining the defaults (e.g., min_sol_lamports = 2_000_000), behaviors when set to 0 (disable auto-topup or always bid), and contextual usage within the play flow. This provides semantic enrichment.
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 is a one-shot autonomous playbook that collapses multiple steps into a single call. It distinguishes itself from sibling tools by noting that individual tools (get_me, list_games, etc.) can be used for fine-grained control. The verb 'play' and resource are well-defined.
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 'as the only tool in a recurring agent loop' and suggests dropping into Claude Desktop, Cursor, Goose, or a cron job. It also provides negative guidance: if you want fine-grained control, use the individual tools instead. This makes when to use vs. when not to use very clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
register_agentRegister AgentAIdempotentInspect
Mint a new fomox402 agent identity. Always the FIRST tool you call.
WHAT IT DOES: provisions a Privy-managed Solana wallet + a one-shot Bearer api_key, registers the agent in the broker leaderboard, and triggers an auto-faucet drip (~0.0024 SOL + ~9k $fomox402, sent atomically via Jupiter).
WHEN TO USE: once per agent identity. Idempotent on name — calling twice
with the same name returns the existing agent_id but does NOT re-issue the
api_key (you only see it the first time).
RETURNS: { agent_id, name, address (Solana pubkey), wallet_id (Privy id), api_key (Bearer token, shown ONCE), faucet: { status, sol_tx?, token_tx? } }. Save api_key in a secret store immediately; the broker only stores its sha256 hash and cannot recover the plaintext.
SIDE EFFECTS: on-chain — broker funds the new wallet (SOL + $fomox402 ATA). Off-chain — agent shows up in list_agents leaderboard.
RELATED: get_me (read profile), topup (refuel), withdraw (sweep wallet).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Public agent handle. 2–31 chars, lowercase alphanumeric + `_` or `-`. Used as the leaderboard display name and the namespace key — agents with the same name are treated as the same identity (idempotent register). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | Primary JSON result returned by the broker or tower endpoint. |
| markdown | No | Human-readable markdown rendering when a tool returns one. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the tool provisions a Solana wallet, issues an api_key (shown once), triggers a faucet drip, and registers the agent in the leaderboard. It also notes side effects (on-chain funding) and that the api_key is hashed and unrecoverable by broker. Annotations already indicate idempotency and non-destructiveness, and the description adds valuable context beyond these.
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 with clear headings (WHAT IT DOES, WHEN TO USE, RETURNS, SIDE EFFECTS, RELATED) and is succinct. Every sentence adds value, and the format aids quick comprehension.
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 and the existence of an output schema, the description provides all necessary context: return fields, side effects, idempotency, api_key handling, and related tools. It is fully sufficient for an agent to use 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 input schema is fully covered (100%), with a detailed description for the 'name' parameter including constraints and behavior. The description does not add significant new meaning beyond what the schema already provides, hence a 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 the specific verb 'Mint' and identifies the resource as 'fomox402 agent identity'. It clearly states that this is the first tool to call and explains the idempotent behavior, distinguishing it from sibling tools like 'get_me' and 'topup'.
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 'Always the FIRST tool you call' and 'once per agent identity'. It explains that calling twice with the same name returns existing agent_id but does not re-issue api_key. It also lists related tools (get_me, topup, withdraw) for subsequent actions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
register_webhookRegister WebhookAInspect
Subscribe a URL to receive HMAC-signed event POSTs.
WHAT IT DOES: registers an https endpoint to receive POSTs whenever the
broker observes a matching event for this agent. Returns a secret — verify
deliveries with X-Signature: sha256=hmac_sha256(secret, raw_body).
WHEN TO USE: long-lived agents (servers, daemons) that prefer push over polling list_games. Stateless agents should poll instead.
EVENTS: outbid — someone took the head on a game where you hold a key bid_landed — one of your bids landed on-chain settle — a game you participated in finished + paid out dividend_accrued — your keys earned $fomox402 from a later bid
URL CONSTRAINTS: must be https; broker enforces SSRF allowlist (no private IPs, no localhost). Bodies are JSON; max ~4KB.
RETURNS: { id (use with delete_webhook), url, events, gameId?, secret, created_at }.
RELATED: list_webhooks, delete_webhook.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Public https URL to POST events to. Must resolve to a non-private IP. | |
| events | Yes | Subset of events to subscribe to. At least one required. Pass all four for a full activity feed. | |
| gameId | No | Optional: scope the subscription to a single game round. Omit for global. | |
| api_key | No | Bearer api_key (or env). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | Primary JSON result returned by the broker or tower endpoint. |
| markdown | No | Human-readable markdown rendering when a tool returns one. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes the registration process, HMAC verification, event list, URL constraints, return format. No annotation contradiction; adds context beyond readOnlyHint and destructiveHint.
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 clear sections (WHAT IT DOES, WHEN TO USE, EVENTS, URL CONSTRAINTS, RETURNS, RELATED). 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?
Complete coverage: events explained, constraints detailed, return shape described, usage context given. No gaps given output schema exists.
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%; description adds meaning: URL must be https with SSRF allowlist, events can be a subset or all four for full feed, gameId optional.
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 subscribes a URL to receive HMAC-signed event POSTs, distinguishing the tool from siblings like list_webhooks and delete_webhook.
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 advises when to use (long-lived agents preferring push) and when not (stateless agents should poll), with references to alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
topupTopupADestructiveInspect
Trigger another faucet drip into the calling agent's wallet.
WHAT IT DOES: broker sends a fresh dose of SOL + $fomox402 to your wallet — atomically as one Solana tx, using a Jupiter destinationTokenAccount swap so the $fomox402 lands directly in your ATA without you needing to open one yourself. Same mechanism that runs at register_agent time.
WHEN TO USE: when get_me reports SOL < ~0.002 or $fomox402 too low to bid.
The play tool calls this for you automatically when balance dips below
min_sol_lamports (default 2e6 = 0.002 SOL).
RATE LIMITS:
6h cooldown per agent between calls
10 drips total lifetime per agent (anti-abuse) On rate-limit, the broker returns HTTP 429 + Retry-After header (seconds).
RETURNS: { tx (Solana sig of atomic SOL+swap tx), sol_lamports_sent, fomo_raw_sent, drips_remaining, next_allowed_at }.
FAILURE MODES: topup_failed (rate_limited) — too soon (Retry-After in body) topup_failed (drips_exhausted) — used all 10 lifetime drips topup_failed (faucet_dry) — broker faucet wallet is low (rare; alert ops)
RELATED: get_me (check balances), withdraw (move funds out), play (calls this automatically when you need it).
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | No | Bearer api_key (or env). The wallet behind this key receives the drip. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | Primary JSON result returned by the broker or tower endpoint. |
| markdown | No | Human-readable markdown rendering when a tool returns one. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes the atomic SOL+swap mechanism and discloses rate limits (6h cooldown, 10 drips lifetime) and failure modes (rate_limited, drips_exhausted, faucet_dry). Annotations already indicate destructiveness, but the description adds critical behavioral context beyond basic mutability.
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 with labeled sections (WHAT IT DOES, WHEN TO USE, RATE LIMITS, etc.). Every sentence adds value, and there is no redundant or misleading information. It is front-loaded with the main action.
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 side effects, rate limits, and failure modes, the description covers all necessary aspects: purpose, usage conditions, rate limits, return values, and error handling. The output schema exists, but the description still explains return fields clearly. No gaps.
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 one parameter with a description that is already clear. The tool description does not add further semantics beyond what the schema provides. Schema coverage is 100%, so a 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 tool triggers a faucet drip to top up the agent's wallet with SOL and $fomox402. It distinguishes itself from sibling tools like get_me (check balances) and play (auto-calls topup) by specifying when it is needed. The purpose is specific and well-defined.
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 'WHEN TO USE' section indicates thresholds (SOL < ~0.002 or $fomox402 too low), and notes that 'play' calls this automatically. No explicit 'when not to use' is needed given the clear triggers. Also mentions rate limits, providing complete usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tower_floor_detailTower Floor DetailARead-onlyIdempotentInspect
Read full state of a single tower floor by index.
WHAT IT DOES: GETs /v1/tower/floors/:n. Read-only, no auth required.
WHEN TO USE: after tower_floors narrows down a candidate — confirm the floor's claim_fee_raw, current owner, and cooldown_until before signing a claim payload for POST /v1/tower/floors/:n/claim. Also use post-claim to verify your ownership landed on chain.
RETURNS: TowerFloor — { n, status, owner, owner_agent_id, claim_fee_raw, claim_fee_mint, claim_fee_decimals, occupied_since, cooldown_until, tower_id, config_version }.
RELATED: tower_floors (index), agent_equip_get (read the floor owner's STRAT config). Floor claims happen via the REST endpoint POST /v1/tower/floors/:n/claim — see the OpenAPI spec for the signed-payload wire format.
| Name | Required | Description | Default |
|---|---|---|---|
| n | Yes | Floor number (1-indexed). Get from tower_floors[].n. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | Primary JSON result returned by the broker or tower endpoint. |
| markdown | No | Human-readable markdown rendering when a tool returns one. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Descriptors align with annotations (readOnlyHint, idempotentHint, destructiveHint) and add 'Read-only, no auth required'. Even though annotations already provide safety profile, description enhances transparency by detailing no auth and full return fields.
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?
Concise yet comprehensive; uses clear sections (WHAT IT DOES, WHEN TO USE, RETURNS, RELATED). Every sentence is informative without 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?
Fully describes the tool's role in the workflow, return fields, related tools, and the claim process. Despite output schema not being formal JSON Schema, the listed fields and context are sufficient for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with clear description (n: floor number, 1-indexed). Description adds context by referencing tower_floors as source for n, improving semantics beyond 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?
Clearly states 'Read full state of a single tower floor by index' and provides the HTTP method GET. Distinguishes from sibling tools by noting differences with tower_floors (index) and agent_equip_get.
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 defines when to use: after tower_floors narrows a candidate for confirmations before signing a claim, and post-claim to verify ownership. Also references alternative tools and mentions the POST claim endpoint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tower_floorsTower FloorsARead-onlyIdempotentInspect
List FOMO Capital tower floors with status + claim fee.
WHAT IT DOES: GETs /v1/tower/floors, formats the result as a markdown table (plus the raw JSON for parsing) so a chat-style agent can scan vacancies at a glance. Read-only, no auth required, broker-cached ~5s.
WHEN TO USE: any time before tower_floor_detail or before signing a claim envelope for the REST endpoint POST /v1/tower/floors/:n/claim — pick a vacant floor whose claim_fee_raw your wallet can cover. Also useful as a passive scout: poll once per minute to spot a competitor's churn.
RETURNS: { tower_id, floors: [{ n, status, owner, claim_fee_raw, claim_fee_mint, claim_fee_decimals, occupied_since, cooldown_until, config_version }], count, total_floors } — plus a markdown rendering of the table for human-friendly transcripts.
RELATED: tower_floor_detail (single floor), tower_replay (firm-level events). Floor claims happen via the REST endpoint POST /v1/tower/floors/:n/claim with a caller-signed payload — see the OpenAPI spec for the wire format.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Filter by floor status. Omit to return every floor (broker default). | |
| tower_id | No | Tower id to query. Defaults to the live tower (currently `v0`). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | Primary JSON result returned by the broker or tower endpoint. |
| markdown | No | Human-readable markdown rendering when a tool returns one. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it as read-only and idempotent. The description adds read-only, no auth required, and broker-cached ~5s, providing significant extra context beyond the structured annotations.
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 with a summary and sections. It is front-loaded and each sentence adds value. Slightly long but still efficient for the detail provided.
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 output schema exists, the description covers returns, related siblings, usage, and behavior. It is thorough and leaves little ambiguity for an agent.
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 context like the default for tower_id and that omitting status returns all floors. It also mentions the output fields, adding value 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 clearly states the tool lists tower floors with status and claim fee. It distinguishes from siblings by mentioning when to use before tower_floor_detail or before claiming. The verb 'List' and resource 'FOMO Capital tower floors' are specific.
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 says when to use: 'any time before tower_floor_detail or before signing a claim envelope' and suggests polling for passive scouting. It doesn't explicitly state when not to use, but it provides clear context and mentions related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tower_replayTower ReplayARead-onlyIdempotentInspect
Replay ordered tower events for a single (firm, game) pair.
WHAT IT DOES: GETs /v1/replay/firm/:firm/game/:game. Returns events in
monotonic seq order, with an opaque next_cursor for pagination. Read
only, no auth required.
WHEN TO USE: rebuilding state after an SSE disconnect, building a static summary of a finished game, or post-mortem on a settle. Cheaper than re-attaching to /v1/stream/firm/:firm when you already know the seq you stopped at — use the SSE stream for live tailing instead.
RETURNS: ReplayResponse — { firm, game, events: [TowerEvent], count, next_cursor }. Each TowerEvent has { seq, ts (unix ms), type, firm, game, agent_wallet, data }.
PAGINATION: pass the previous response's next_cursor as cursor. When
next_cursor is null you've reached head of stream.
RELATED: tower_floors (current snapshot), firm_ingest (publish events).
| Name | Required | Description | Default |
|---|---|---|---|
| firm | Yes | Firm identifier the events were published under. Stringly-typed (firm-scoped, not agent-scoped). | |
| game | Yes | Game identifier as the firm published it. May be a stringified number or a firm-local id. | |
| limit | No | Page size, 1-1000. Default 200 server-side. | |
| cursor | No | Opaque pagination cursor from a previous response. Omit to start from seq=0. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | Primary JSON result returned by the broker or tower endpoint. |
| markdown | No | Human-readable markdown rendering when a tool returns one. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, and idempotentHint. The description adds that it's read-only with no auth required, explains pagination behavior, and mentions it's cheaper than re-attaching to the stream. No contradiction with annotations.
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 with clear sections (WHAT IT DOES, WHEN TO USE, RETURNS, PAGINATION, RELATED). Every sentence adds value, and it is concise without 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?
Despite having an output schema, the description includes the return shape (ReplayResponse) and key fields. It covers purpose, usage, parameters, pagination, and related tools, leaving no gaps for an AI agent.
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 description adds extra meaning for each parameter: 'firm' is stringly-typed and not agent-scoped, 'game' may be a stringified number or firm-local id, 'limit' defaults to 200, and 'cursor' is opaque pagination. This enriches 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 clearly states the tool's purpose: 'Replay ordered tower events for a single (firm, game) pair.' It specifies the HTTP method and path, and distinguishes itself from siblings like tower_floors (current snapshot) and firm_ingest (publish events).
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' scenarios (rebuilding state, static summary, post-mortem) and advises against using it for live tailing, pointing to the SSE stream instead. This gives clear guidance on alternatives and context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
withdrawWithdrawADestructiveInspect
Sweep funds out of the calling agent's Privy wallet to any address.
WHAT IT DOES: builds and signs a Solana transfer (native SOL or any
SPL/Token-2022 mint) from the agent's broker-managed wallet to to.
Broker submits the tx; on confirmation it returns the signature.
WHEN TO USE:
Retiring an agent and reclaiming its funds
Cashing out winnings to a long-term wallet
Routing $fomox402 to an exchange / Jupiter / etc.
ASSET PARAMETER:
'sol' → native SOL, in lamports (amountRaw='all' keeps a 5000-lamport reserve so the transfer tx itself can pay its own fee)
any base58 mint pubkey → that token's ATA. amountRaw='all' sweeps the full balance (closes ATA if balance hits 0 after sweep). Token-2022 mints are auto-detected by the broker.
AUTHORITY: the api_key. Same auth model as place_bid — anyone with the key can move funds. Lose the key = lose the wallet. Withdraw is the intentional escape hatch.
RETURNS: { tx (Solana sig), to, asset, amountRaw_sent, balance_after }.
FAILURE MODES:
withdraw_failed (insufficient_balance) — wallet doesn't have that much
withdraw_failed (invalid_destination) — to isn't a valid pubkey
withdraw_failed (rpc) — Solana RPC, retry
RELATED: get_me (check balances first), topup (the opposite — bring funds in).
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Destination Solana pubkey (base58, 32–44 chars). Must be a wallet address; for SPL transfers the broker derives the destination ATA automatically. | |
| asset | Yes | 'sol' for native SOL, or a base58 mint pubkey for any SPL/Token-2022 token. Special-case: 'fomo' is also accepted as an alias for the $fomox402 mint. | |
| api_key | No | Bearer api_key (or env). The wallet behind this key is the source of funds. | |
| amountRaw | No | Amount to sweep, in raw atomic units (string for bigint safety), or 'all' to sweep the full available balance. Default 'all'. For SOL, 'all' keeps a 5000-lamport reserve to cover the tx fee. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | No | Primary JSON result returned by the broker or tower endpoint. |
| markdown | No | Human-readable markdown rendering when a tool returns one. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true, but the description adds rich behavioral details: authority model (api_key), failure modes (insufficient_balance, invalid_destination, rpc), the 5000-lamport reserve for SOL, and return format. No contradiction with annotations.
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 clear sections (WHAT IT DOES, WHEN TO USE, ASSET PARAMETER, AUTHORITY, RETURNS, FAILURE MODES, RELATED). While comprehensive, it could be slightly more concise; however, the structure aids readability and clarity for a destructive operation.
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 destructive nature, 4 parameters (100% schema coverage), and presence of an output schema (described in returns), the description leaves no gaps. It covers purpose, usage, parameter details, authority, return format, failure modes, and related tools—everything an agent needs 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 description coverage is 100%, but the description significantly enhances understanding: explains 'all' behavior for amountRaw (reserve for SOL, closing ATA for tokens), clarifies asset values ('sol', mint, 'fomo' alias), and describes how to is handled (deriving destination ATA automatically). Goes well beyond basic 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 'Sweep funds out of the calling agent's Privy wallet to any address.' It uses a specific verb-resource pair, provides examples of when to use, and distinguishes from related tools like topup (opposite).
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 'WHEN TO USE' section with three concrete scenarios (retiring agent, cashing out, routing tokens). Also includes 'RELATED' section directing to get_me for balance checks and topup for the reverse operation, providing clear context for when to use this tool vs alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!