Skip to main content
Glama

join_pool

Joins a public research pool by first showing a signable grading statement, then signing it with your trading key and writing a member file for a pull request. No order is placed and no funds move.

Instructions

Join the research pool, which grades your public fills on a public scoreboard. Two steps: without confirm it shows the exact statement and signs nothing; with confirm=true and the joined_at that first call returned, it SIGNS that statement with your key and writes the member file for a pull request. No order is placed and no money moves. Call only when the user asked to join, and confirm only after they read the statement. Check get_pool_status first. Needs a trading key and mainnet: on testnet it returns {error, code: testnet} and signs nothing. The user opens the pull request; leave_pool undoes it. Returns the statement, then the signed member file path.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "join_pool"
  }
}

Input Schema

NameRequiredDescriptionDefault
confirmNotrue only after the user read the statement and said yes
joined_atNothe joined_at value the dry run returned

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.6.1

TDQS

A4.6/5.0
Behavior4/5

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

Annotations only give destructiveHint=false, so the description carries the burden and does well: it discloses the two-step dry-run-then-sign flow, that signing uses the user's key and writes a member file, that no order is placed and no money moves, that mainnet and a trading key are required, and the exact testnet failure shape ({error, code: testnet}). It stops short of stating whether an existing membership is overwritten or what happens if the joined_at is stale, which keeps it from a 5.

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

Conciseness4/5

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

Front-loaded with purpose and the two-step model, and every sentence carries operational weight (side effects, preconditions, testnet behavior, undo). It is dense to the point of being run-on, with several clauses stacked into single sentences, which slightly hurts scannability.

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

Completeness5/5

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

No output schema, but the description states what each call returns (the statement, then the signed member file path), covers preconditions (trading key, mainnet), the failure mode, and who performs the follow-up (the user opens the pull request). Nothing an agent needs to call this correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3; the description still adds cross-parameter meaning by framing confirm as the second step and joined_at as the token echoing the first call's return, which the schema notes only partially. It clarifies the dependency between the two parameters rather than restating them.

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

Purpose5/5

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

Specific verb+resource ('Join the research pool') with the notable scope spelled out (grades public fills on a public scoreboard), and it distinguishes itself from get_pool_status and leave_pool by describing the two-step confirm flow and the undo path. An agent can identify exactly what this tool does and produces.

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

Usage Guidelines5/5

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

Gives explicit when-to-call ('Call only when the user asked to join'), sequencing ('Check get_pool_status first'), a gate on the second step ('confirm only after they read the statement'), and names the alternative (leave_pool undoes it). Both the trigger and the exclusion conditions are stated.

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