Skip to main content
Glama

splinterlands-mcp

A read-only Model Context Protocol (MCP) server for Splinterlands' public API. It lets an MCP-capable assistant (Claude Desktop, Claude Code, and other MCP clients) answer questions about Land, cards, and players by calling Splinterlands' own public endpoints. Version 0.0.0 is an unpublished pre-release. Use a current Node.js 22 or 24 LTS patch release (minimum 22.13).

Status: pre-release. 163 tools are registered (src/server.ts). 66 call vapi.splinterlands.com: 40 Land routes covering deeds, projects, counts, staking, resources and liquidity pools, plus seven market reads, ten delegation-rental reads, three delegation reads, five collector configuration/account reads and the health root. 90 call api.splinterlands.com: eight card tools, one item-metadata tool, and 30 player and ranking tools, plus 15 market and purchase-read tools, three battle reads, ten tournament reads, six guild reads, five game metadata reads, and eleven conflict/proposal reads. Three tools work offline: list_endpoints and describe_endpoint report the catalogue's 190 endpoints and their evidence; land_lineup_estimate evaluates supplied lineup snapshots and comparisons. See library/endpoint-knowledge-tools.md for the evidence model.

A sixth offline resource, splinterlands://hive/transaction-limits, explains source-dated transaction limits and terminology. Three additional tools provide bounded Hive history, full transactions and combined game evidence; see Hive transaction evidence.

Five offline JSON resources provide dated public Land rules: splinterlands://land/rules/terrain (14 terrains by six elements), splinterlands://land/rules/production (baseline output and food rates), splinterlands://land/rules/cap (worksite cap and Runi exception), and splinterlands://land/rules/card-abilities (edition-19 level tables for five observed cards, activation and stacking rules), plus splinterlands://land/rules/screen-fields (public-client worker screen labels, cap allocation order and power slots). Discover them with resources/list and read them with resources/read; they make no API calls. Sources and scope are included. The offline lineup estimator uses these reference rules. Snapshot reads verify their baseline against current backend values before returning estimator inputs; this does not establish eligibility for a proposed change.

The 13 standard plot-scoped tools accept exactly one plot_id (a numeric ID or a display label such as 001-02-001 / 1-2-1) or deed_uid. Routes with the original deedUID spelling still accept it. Shared resolution verifies the deed before requesting project, staking or resource data and may use two logical GET requests. The collection metadata join permits two GETs, or three when include_plot_references is explicitly enabled. The additional compound tool described below permits ten; other game tools retain the one-request budget. Verified results include plot_reference with numeric ID, padded label and deed UID; resolution and target freshness are reported separately. Empty or mismatched resolution is unverified, not proof that the location does not exist. See library/observations/plot-labels-2026-09-12.md.

land_lineup_snapshot accepts an explicit player and one plot reference, plus candidate card IDs or UIDs. It gathers current workers, regional power, production, candidates, verified available location labels and Power Core facts within ten logical GETs. The collection is streamed once, at most 100 matching cards are retained, and there is no automatic pagination. Only an agreeing backend baseline is returned for the offline estimator; reads are non-atomic and candidate cooldown/eligibility caveats remain visible. Use its baseline and selected candidate workers in a second land_lineup_estimate call. The two-call snapshot and estimator workflow has been verified against a populated Grain plot. Other scenarios still require their own agreeing baseline. Land stake changes are per plot; these tools perform no changes.

cards_collection streams the complete upstream collection and retains at most 100 projected cards for the requested local page. Optional include_plot_references adds verified reported_stake_plot_reference (padded label, numeric ID and deed UID) through one account-scoped deed search limited to 200 rows. Missing, conflicting or unavailable references remain null with separate status and freshness; there is no per-card lookup or pagination loop. A cooling card’s retained reference describes its former plot. Toggling only this option reuses the projected collection cache and reads plot references afresh. Card definitions add name, primary/secondary color and subtype; color and sub_type filters match case-insensitively before paging. The definition map is cached for 24 hours with separate provenance. Missing definitions are counted and retain the instance without invented metadata. Returned cards retain land_base_pp as the upstream decimal string when present; min_land_base_pp filters numerically before paging. Missing power does not count as zero. A later cursor re-streams the collection; an identical page request can use the 60-second page cache. The route has a 90-second timeout, a 128 MiB heap guard, and a 358 MiB RSS ceiling instead of a fixed response-byte ceiling. The largest measured live response was 155 MiB; the separate synthetic memory measurements and their limits are recorded in library/observations/collection-streaming-memory-2026-09-08.md.

The player tools include profiles, balances, rewards, quests, skins, public authority assignments, recent teams, purchase information, airdrop records, and delegation history. Each account tool requires its own explicit selector. player_dec instead reports global DEC accounting and has no player selector. player_balances accepts players and optional token_type; player_archived_balances also requires players, despite the upstream error text incorrectly asking for username. player_profile uses name, and player_recent_teams uses player.

The fourteen additional player tools make one logical GET each and do not auto-fetch continuation pages. Array results are locally bounded to 100 rows and 256 KiB, with truncation stated in text and metadata. Oversized object responses or single rows are refused without returning partial records. player_lp_claim_history repeated the same rows with offset=1; player_reward_delegation_history returned an empty array with that offset. Neither behaviour establishes a working next page. The recent-teams tool does not accept decryption keys. Dated evidence and capture limits are in library/observations/player-completion-2026-09-12.md and library/observations/player-routes-2026-09-08.md.

The ranking tools distinguish upstream top lists from complete rankings. player_richlist exposes a measured limit for leading rows; its tested offsets repeated the same accounts, so no offset is exposed. The regular leaderboard ignored both tested paging parameters. Burn-event and presale tools bound their named list fields while retaining totals and any separately requested player record. In particular, presale leaders are now callable: the list can be shortened without dropping its surrounding fields. Every local cut is reported; the server does not claim to return a full ranking. player_season reads GET /season with a required id. See library/observations/rankings-2026-09-12.md.

The three land-count and volume tools add separate catalogue-derived views for region counts, tract counts, and the upstream's volume figures. Captured named-player responses contain 150 populated region rows and 36 populated tract rows, respectively. Their captured row fields are recorded in the catalogue and in tests/evidence/land-result-contract-evidence.json; unscoped captures returned successful empty envelopes.

The two staking tools return the upstream's per-asset rows and deed-level staking record separately. A deed with nothing staked is a successful answer with empty asset arrays on one route and a fully present zeroed record on the other. The routes report equivalent figures with different JSON wire types, and this server converts neither. They also differ on a bad deed uid: one returns an error and the other returns a successful empty answer.

The four DEC staking tools return the upstream's overall figure, per-region rows, region figures, and pending claim figure separately. The overall route returns a bare JSON number, while the region route returns either a record or an empty array for an incomplete request; a valid no-stake region returns a zero-valued record. All four tools refuse a call without an account because the upstream answers such a call with a plausible zero or empty result. This server never adds one figure to another.

The four land-project tools expose separate active, history, count, and requirements responses. History is returned in one upstream response and is also bounded locally to 100 rows and 256 KB. The recorded history probes were bare, offset=1, limit=2, and limit=2&offset=2: limit=2 returned the leading two rows, while offset=1 and offset=2 did not reach later rows in those requests.

land_deeds_search makes one logical upstream request per call and does not auto-fetch a continuation. Its limited response is bounded by a 256 KB serialized-result limit and is all-or-nothing if oversized; request a smaller limit rather than expecting partial data. The recorded probes were offset=0, offset=5, limit=10000, three calls omitting all parameters, and orderBy=desc: offset=0 returned zero rows, offset=5 returned the first four rows of the omitted-offset response, and no offset value tried reached later rows. limit=10000 returned 10000 rows; the three omitted-parameter calls returned zero bytes; and orderBy=desc returned an empty data array. No total or has-more field was observed, so this response is not evidence of a complete listing or count. The tool requires either player or a place selector (tract_id or region_number); a bare search is refused before any upstream request. This is a project policy for honest scope reporting, not a requirement declared by the upstream specification. Each upstream result records whether the request used an explicit account or explicit geography; it never records an account value.

Tools and upstream routes

This table is the complete registration-to-route mapping in src/server.ts, matched to pathTemplate in src/catalogue/catalogue.json. The two knowledge tools are local and make no upstream request.

Tool

Upstream route

vapi_market_player_asset_detail_stats

GET /market/player/asset-detail-stats

vapi_market_player_all_listings

GET /market/player/all_listings

vapi_market_player_listings

GET /market/player/listings

vapi_market_player_activity

GET /market/player/activity

player_inventory

GET /players/inventory

battle_queue

GET /battle/battle_queue

battle_result

GET /battle/result

battle_status

GET /battle/status

cards_collection

GET /cards/collection/{username}

cards_find

GET /cards/find

cards_get_details

GET /cards/get_details

cards_history

GET /cards/history

cards_lore

GET /cards/lore

cards_pack_data_wax

GET /cards/pack_data_wax

cards_skins

GET /cards/skins

cards_trx_lookup

GET /cards/trx_lookup

collector_stickers_tradeable

GET /collector/{player}/stickers/tradeable

collector_config

GET /collector/config

collector_player

GET /collector/{player}

collector_binder

GET /collector/{player}/{binderRef}

collector_stickers

GET /collector/{player}/stickers/all

conflict_airdrop_distribution

GET /conflicts/airdrop_distribution

conflict_eligible_cards

GET /conflicts/wagon_eligible_cards

conflict_leaderboard

GET /conflicts/leaderboard

conflict_player_rank

GET /conflicts/leaderboard_with_player

conflict_players

GET /conflicts/players

conflict_seasons

GET /conflicts/seasons

conflict_status

GET /conflicts/status

conflict_wagon

GET /conflicts/wagon

describe_endpoint

Offline; reads the local endpoint catalogue

game_last_block

GET /last_block

game_maintenance

GET /maintenance_schedule

game_settings

GET /settings

game_vapi_health

GET /

guild_brawl_records

GET /guilds/brawl_records

guild_brawl_sps_rewards

GET /guilds/brawl_sps_rewards

guild_contributions

GET /guilds/contributions

guild_find

GET /guilds/find

guild_list

GET /guilds/list

guild_members

GET /guilds/members

land_deed_by_plot

GET /land/deeds/{plot_id}

land_deed_by_uid

GET /land/deeds/details/{deed_uid}

land_deeds_owned

GET /land/deeds/owned/{player}

land_deeds_search

GET /land/deeds

land_liquidity_allrewards

GET /land/liquidity/allrewards

land_liquidity_pool_by_id

GET /land/liquidity/pools/{id}

land_liquidity_pool_by_symbol

GET /land/liquidity/poolsbysymbol/{symbol}

land_liquidity_pools

GET /land/liquidity/pools

land_liquidity_quote

GET /land/liquidity/quote/{poolId}

land_liquidity_region

GET /land/liquidity/region/{player}

land_liquidity_resources

GET /land/liquidity/resources/{player}/{token}

land_projects_active

GET /land/projects/deed/{deed_uid}/active

land_projects_count

GET /land/projects/deed/{deed_uid}/list/count

land_projects_history

GET /land/projects/deed/{deed_uid}/list

land_projects_requirements

GET /land/projects/deed/{deed_uid}/requirements

land_regions_counts

GET /land/regions/counts

land_resources_balances_history_count

GET /land/resources/balances/history/{player}/count

land_resources_balances_history

GET /land/resources/balances/history/{player}

land_resources_fragment_history

GET /land/resources/fragment_history/{trx_id}

land_resources_history

GET /land/resources/history/{trx_id}

land_resources_leaderboards

GET /land/resources/leaderboards

land_resources_liquidity_swaps

GET /land/resources/liquidity/swaps/{player}

land_resources_owned

GET /land/resources/owned

land_resources_production_region_harvestable

GET /land/resources/production/region/harvestable

land_resources_rewardactions_count

GET /land/resources/rewardactions/{deedUID}/count

land_resources_rewardactions

GET /land/resources/rewardactions/{deedUID}

land_resources_richlist

GET /land/resources/richlist

land_resources_taxes

GET /land/resources/taxes/{deedUID}

land_resources_titles_assigned

GET /land/resources/titles/assigned

land_resources_titles

GET /land/resources/titles

land_power_core_available

GET /land/stake/items/{stakeTypeUid}/available

land_power_core_grouped

GET /land/stake/items/{stakeTypeUid}/grouped

land_stake_assets

GET /land/stake/deeds/{deedUid}/assets

land_stake_dec_overall

GET /land/stake/dec/overall

land_stake_dec_region

GET /land/stake/dec/region

land_stake_dec_staked

GET /land/stake/decstaked

land_stake_deed_details

GET /land/stake/deed/details/{deedUid}

land_stake_evp_pending_claim

GET /land/stake/evp/pending-claim

land_tracts_counts

GET /land/tracts/counts

land_volume

GET /land/volume

land_lineup_snapshot

Bounded compound GETs; at most ten logical requests

land_lineup_estimate

Offline; calculates a supplied Land lineup

hive_account_history

Read-only RPC: condenser_api.get_account_history

hive_transaction

Read-only RPC: condenser_api.get_transaction

transaction_inspect

Read-only Hive transaction RPC + GET /transactions/lookup

list_endpoints

Offline; reads the local endpoint catalogue

market_active_rentals

GET /market/active_rentals

market_active_status

GET /market/active_status

market_completed_status

GET /market/completed_status

market_for_rent_grouped

GET /market/for_rent_grouped

market_for_sale_grouped

GET /market/for_sale_grouped

market_for_sale_packages

GET /market/for_sale_packages

market_history

GET /market/history

market_query_by_card

GET /market/market_query_by_card

market_query_grouped

GET /market/market_query_grouped

market_rental_history

GET /market/rental_history

market_status

GET /market/status

market_volume

GET /market/volume

player_archived_balances

GET /players/archived_balances

player_authorities

GET /players/authorities

player_balances

GET /players/balances

player_burn_event_full_leaderboard

GET /players/burn_event_full_leaderboard

player_burn_event_leaderboard

GET /players/burn_event_leaderboard

player_card_airdrop

GET /players/card_airdrop

player_current_rewards

GET /players/current_rewards

player_dec

GET /players/dec

player_energy_purchase_information

GET /players/energy_purchase_information

player_last_focus_rewards

GET /players/last_focus_rewards

player_last_season_rewards

GET /players/last_season_rewards

player_leaderboard_with_player

GET /players/leaderboard_with_player

player_leaderboard

GET /players/leaderboard

player_lp_claim_history

GET /players/lp_claim_history

player_pack_purchases

GET /players/pack_purchases

player_presale_leaders

GET /players/rebellion_presale_leaders

player_avatar

GET /players/avatar/{name}

player_custom_avatar

GET /players/player_avatar/{name}

player_profile

GET /players/details

player_quests

GET /players/quests

player_recent_teams

GET /players/recent_teams

player_reward_delegation_history

GET /players/reward_delegation_history

player_reward_delegations

GET /players/reward_delegations

player_richlist_ranking

GET /players/richlist_ranking

player_richlist

GET /players/richlist

player_season

GET /season

player_skins

GET /players/skins

player_unclaimed_balance_history

GET /players/unclaimed_balance_history

player_unclaimed_balances

GET /players/unclaimed_balances

player_voucher

GET /players/voucher

players_item_details

GET /players/item_details

proposal_list

GET /proposals/

proposal_pending_count

GET /proposals/pending_proposal_count

proposal_votes

GET /proposals/votes

purchase_settings

GET /purchases/settings

purchase_stats

GET /purchases/stats

purchase_uniswap_reward

GET /purchases/check_uniswap_reward

rental_bids_lowest_price

GET /delegation-rental/v3/bids/lowest-price

rental_bids

GET /delegation-rental/v3/bids

rentals_by_player

GET /delegation-rental/rentals/player/{player}

rentals_by_bid

GET /delegation-rental/rentals/bid/{bid}

rental_offers_lowest_price

GET /delegation-rental/v3/offers/lowest-price

rental_offers_by_player

GET /delegation-rental/v3/offers/player/{player}

rental_bids_by_player

GET /delegation-rental/v3/bids/player/{player}

rentals_v3_by_player

GET /delegation-rental/v3/rentals/player/{player}

rentals_v3_by_role

GET /delegation-rental/v3/rentals/player/{player}/{role}

delegations_outgoing

GET /delegation/outgoing/{player}

delegations_incoming

GET /delegation/incoming/{player}

delegation_to_target

GET /delegation/delegation/{player}/{target}

rental_offers

GET /delegation-rental/v3/offers

tournament_battles

GET /tournaments/battles

tournament_cancelled

GET /tournaments/cancelled

tournament_completed

GET /tournaments/completed

tournament_find_brawl

GET /tournaments/find_brawl

tournament_find

GET /tournaments/find

tournament_in_progress

GET /tournaments/in_progress

tournament_mine

GET /tournaments/mine

tournament_prizes

GET /tournaments/prizes

tournament_upcoming_official

GET /tournaments/upcoming_official

tournament_upcoming

GET /tournaments/upcoming

transaction_lookup

GET /transactions/lookup

transaction_metrics

GET /transactions/metrics

vapi_market_asset_metadata

GET /market/meta/asset/{assetName}

vapi_market_estimated_price

GET /market/estimated-price

vapi_market_landing

GET /market/landing

Related MCP server: Splunk MCP Server

Worked example

Question: “Show me <ACCOUNT_NAME>’s land plots, and which of them are producing the most.” This is a two-call example.

  1. Call land_deeds_owned with player: "<ACCOUNT_NAME>". Its response gives the account’s per-region plot counts.

  2. Call land_deeds_search with player: "<ACCOUNT_NAME>" and a suitable limit. Its limited response contains deeds, worksite_details, and staking_details arrays. Join rows from all three arrays on their shared deed_uid; rank the deeds by staking_details[].total_work_per_hour.

The second response is bounded by a 256 KB serialized-result limit. If it is too large, request a smaller limit; the server does not return partial data. In the recorded probes, offset=0 returned zero rows and offset=5 returned the first four rows of the omitted-offset response; no offset value tried reached later rows. This ranks the returned page, not necessarily every plot counted by the first call.

What it is, and what it will never do

  • Read-only. Catalogue endpoint tools wrap GET requests. The isolated Hive reader permits only two read-only JSON-RPC methods over POST. The two knowledge tools make no upstream request. Nothing in this server issues a write.

  • No keys, ever. This server never asks for, stores, or transmits a Splinterlands account credential, a Hive posting/active key, or any other secret. If you need an endpoint that requires login, this is the wrong tool for that endpoint — it will tell you so rather than pretend to work.

  • Unsupported catalogue routes are excluded. 34 of the 190 catalogued routes are not advertised as tools because their dated probes did not produce a usable, distinct, or honestly-selected response. The first group contains three Land routes classified 2026-09-07 and six market, rental and collector routes classified 2026-09-12:

    Upstream route

    Why it is unsupported

    Classified

    GET /collector/{player}/stickers/for_sale

    Empty lists from two featured accounts; populated sale-list contract remains unverified.

    2026-09-13

    GET /collector/me

    Official specification explicitly requires authentication; not called.

    2026-09-12

    GET /collector/me/stickers

    Official specification explicitly requires authentication; not called.

    2026-09-12

    GET /collector/me/binders/{binderId}

    Official specification explicitly requires authentication; not called.

    2026-09-12

    GET /delegation-rental/v3/offers/pending/{player}

    Three public participants returned empty lists; populated pending-offer shape remains unverified.

    2026-09-13

    GET /delegation-rental/bids

    Two bounded anonymous reads timed out after 20 seconds; no usable body or auth determination. Distinct from working V3 bids.

    2026-09-12

    GET /market/debug/listing

    Diagnostic debug route outside public game-data scope; not called.

    2026-09-12

    GET /market/debug/listing-item

    Diagnostic debug route outside public game-data scope; not called.

    2026-09-12

    GET /land/deeds/details/id/{plotId}

    Probed with a real plot id, a real item id, and an implausible id; every request returned an empty success envelope rather than a deed record.

    2026-09-07

    GET /land/stake/cards/{stakeTypeUid}/available

    Across the tested query shapes, every request returned no usable rows or populated response; the route has never been observed to provide an availability result.

    2026-09-07

    GET /land/stake/cards/{stakeTypeUid}/grouped

    Across the tested query shapes, every request returned no usable rows or populated response; the route has never been observed to provide a grouped result.

    2026-09-07

    A further ten were classified 2026-09-08, across five distinct hazard kinds — gated, evidenced non-functional, functional-but-redundant, fabricates a plausible answer, and a parameter whose name misdescribes what it selects:

    Upstream route

    Why it is unsupported

    Classified

    GET /land/resources/production/overview

    Called without credentials as part of ~17 paced requests; every call returned HTTP 401. Gated.

    2026-09-08

    GET /land/resources/production/region/overview

    Called without credentials as part of ~17 paced requests; every call returned HTTP 401. Gated.

    2026-09-08

    GET /land/resources/balances/history/{player}/{regionuid}

    Called with real region uids, a numeric region number, and garbage inputs; every input returned HTTP 500, including real region uids.

    2026-09-08

    GET /land/resources/balances/history/{player}/{regionuid}/count

    Called with real region uids and invalid inputs; every input returned HTTP 500, including real region uids.

    2026-09-08

    GET /land/liquidity/landpools

    Pure duplicate of the land-resource subset of GET /land/liquidity/pools; its rows are byte-identical to rows already returned by land_liquidity_pools.

    2026-09-08

    GET /land/liquidity/voucherpool

    Pure duplicate of the voucher/SPS subset of GET /land/liquidity/pools; its rows are byte-identical to rows already returned by land_liquidity_pools.

    2026-09-08

    GET /land/resources/titles/assigned/{player}

    Functional but redundant: returns the same title, player, and created_date data as GET /land/resources/titles?player=, which is covered by land_resources_titles and enforces a better parameter contract.

    2026-09-08

    GET /land/resources/liquidity/history/swaps/{pool}/{player}

    Duplicates land_resources_liquidity_swaps, but its days parameter is inert — every tested value (including omitted, 0, negative, and non-numeric) returned the identical 682-row set.

    2026-09-08

    GET /land/liquidity/pools/{player}/{token}

    Fabricates content rather than being gated, broken, or redundant: a garbage player and garbage token are silently accepted and echoed into a synthesised VESTING-{token} entry with balance: null, indistinguishable from a genuine no-position response.

    2026-09-08

    GET /land/liquidity/pool/rewards/{token}/{poolId}

    The {poolId} path parameter's name misdescribes what it selects: it is matched against an individual reward-record id, not liquidity_pool_idDEC/69 returned a row whose actual pool was 1. A tool built around "this pool's rewards" would misrepresent every answer.

    2026-09-08

    GET /cards/stats

    The upstream returned a functional 481 KB array with no filter, so it cannot pass through this server's 256 KB result bound. This is a distinct server-bound classification, not an upstream failure or one of the five semantic hazard kinds above.

    2026-09-08

    Full evidence for the 2026-09-08 batch is in the generated catalogue (src/catalogue/catalogue.json, notes field per entry) and in library/decisions.md. These player routes are excluded based on the dated observations above:

    Upstream route

    Why it is unsupported

    Classified

    GET /players/history

    Unauthenticated probes returned HTTP 401.

    2026-09-09

    GET /players/balance_history

    Unauthenticated probes returned HTTP 401.

    2026-09-09

    GET /players/referral_payments

    All probed accounts returned zero rows; no populated response or paging behaviour was established.

    2026-09-09

    GET /players/referral_users

    All probed accounts returned zero rows; no populated response or paging behaviour was established.

    2026-09-09

    GET /battle/history

    Unauthenticated read returned HTTP 401.

    2026-09-12

    GET /battle/history2

    Unauthenticated read returned HTTP 401.

    2026-09-12

    GET /battle/battle_teams_info

    Unauthenticated read returned HTTP 401.

    2026-09-12

    GET /battle/submit_ptr

    Submission operation; never called or exposed by this read-only server.

    2026-09-12

    GET /tournaments/frays

    HTTP 200 contained a nested authentication error in frays; public counts do not establish an accessible roster.

    2026-09-12

    GET /tournaments/crown_pot

    Captured brawl status was ineligible; no successful crown-pot contract established.

    2026-09-12

    GET /purchases/status

    Only empty objects captured; no verified populated receipt contract or purchase ID.

    2026-09-12

    GET /players/inventory

    A measured response was about 986 KB, above this server's 256 KB result bound.

    2026-09-09

    GET /players/details_by_id

    A genuine numeric player id was not available in the profile response, so a successful lookup was not established.

    2026-09-09

  • No design hook for authentication. There is no config field, no commented-out branch, and no environment variable this server reads to attach credentials to a request. Adding one is out of scope for this project, by design.

Install

This 0.0.0 release is not published to npm. From a checkout, use Node.js 20 or newer, install dependencies, and build the executable:

npm install
npm run build

Claude Desktop

Add to your Claude Desktop MCP config (claude_desktop_config.json):

{
  "mcpServers": {
    "splinterlands": {
      "command": "node",
      "args": ["<checkout>/dist/index.js"]
    }
  }
}

Claude Code

claude mcp add splinterlands -- node "<checkout>/dist/index.js"

Safety toward Splinterlands' servers

The transport follows Splinterlands' official API specification and vapi specification. These defaults apply process-wide, separately for each approved API host:

Control

Default

Request rate

2 requests/second, burst 4; SPLINTERLANDS_MCP_RATE is capped at 5/second

Concurrent requests

2 in flight per host

Timeout

20 seconds

Retries

3 total attempts for 408, 429, 500, 502, 503, and 504 only

Retry backoff

Exponential with jitter, starting at 1 second and capped at 8 seconds

Circuit breaker

5 consecutive failures; open for 60 seconds

Response cap

2 MB, streamed

Per-call budget

1 logical upstream request; retries of that request are allowed

Cache

In-memory only; settings/card-details TTLs are wired at the tool layer (later release), and only the auth-tier cache is active in this version

Access changes

401 is cached for 15 minutes; 403 stops traffic across both hosts for 60 seconds

Catalogue requests are HTTPS GETs to the two approved game hosts, with redirect following and URL credentials rejected. Responses include a trace ID and retrieval freshness. Empty, malformed, gated, blocked, and temporarily unavailable responses remain separate outcomes so a tool can explain what happened without making claims about the account.

Maintenance posture

Nightly response checks, weekly specification comparisons and monthly fixture renewal are implemented. The four account-role secrets and complete request recipes have offline validation commands in the maintenance runbook. Hosted operation still needs configuration and verification before release; this working tree is unpublished.

  • Run npm run drift:check with approved MCP_DRIFT_INPUTS to compare bounded endpoint reads. Changes update endpoint-specific issues; two blocked endpoints stop the sweep and produce one runner-blocked issue.

  • Run npm run drift:spec to compare both official API specifications without GitHub writes. The hosted job prepares specification changes in a review PR, preserving verified runtime access rules.

  • Run npm run drift:fixtures with approved MCP_FIXTURE_INPUTS to prepare sanitized captures. The hosted publish path validates changes before opening a review PR.

  • Run npm run drift:baseline to regenerate the response baseline from reviewed fixtures.

A drift issue reports a dated API change; it does not by itself mean the server is down. Review the affected contract and evidence before changing code. Unknown response-key names are withheld until reviewed because map keys can identify accounts. Setup, limits and PR review steps are in the maintenance runbook.

GitHub can disable scheduled workflows in a public repository after 60 days without repository activity. Merging reviewed maintenance PRs provides activity, but an unchanged API does not guarantee a PR. If schedules stop, open the repository's Actions tab, select each disabled workflow and choose Enable workflow, then run it manually to verify configuration. See GitHub's recovery instructions. No automatic empty commits are made.

If drift notifications prove noisy rather than useful, the maintainer can mark the repository unsupported in this README and disable its schedules.

When Splinterlands changes something

The official API specifications are linked above, and the catalogue records where each contract came from, using specification provenance and recorded observations as applicable. Observed behaviour has repeatedly differed from what a reader might expect—for example, some accepted parameters were inert. For the measured project-history route, offset=1 and limit=2&offset=2 did not reach later rows; for balance history, limit=3&offset=1, offset=2 and offset=3 returned empty arrays; and for reward actions, limit=3&offset=3 and limit=1&offset=1 returned empty arrays. This repository captures response evidence and operational observations rather than assuming declarations are complete. A changed field or response shape is surfaced as a drift signal for review; it is not automatically treated as an outage. If a route starts requiring authentication, the server reports that access change, keeps the tool in the tool list, and does not add credentials to make the request work.

Provenance and recovery

Recorded observations and decisions live in library/; request evidence lives in tests/evidence/; sanitised response fixtures live in tests/fixtures/. When an upstream change makes a contract test fail, recapture the response, review the new evidence and its classifications, and update the contract only when the evidence supports it. Never widen a contract merely to make a test pass.

Contributing

See CONTRIBUTING.md — in particular the clean-room test that every claim in this repository must pass.

License

MIT — see LICENSE.

Market reads

Fifteen market and purchase tools keep sale summaries, rental summaries, individual listings, grouped listings, current rentals, history and status separate. All are read-only. Status accepts exactly one of id or comma-separated ids; the upstream returns an object for a found singular ID and an array for plural IDs. Active rentals requires owner, renter or card_detail_id, observed selectors omitted from Swagger. Sale and rental grouped responses can exceed the local result bound and are explicitly truncated. Nested listing groups and card packages remain intact.

Active-rental offset and skip repeated the first page. They remain forwardable declared parameters, but do not provide working pagination. Rental-history offsets produced empty results despite a populated unoffset response; this does not establish the end of history. Seasonal listing queries used type=rent and rental_type=season. See market observations for exact limits and captures.

Battle reads

battle_queue reads an explicit username's existing queue records. battle_status and battle_result require a queue transaction id. These tools do not submit teams or join queues. Battle details, settings, team and reward fields retain their captured wire types, including JSON-encoded strings. HTTP 200 error strings from unknown IDs are errors. Oversized replays are refused without returning partial rounds. See battle observations.

Tournament reads

Ten tools cover tournament lists, details, brawls, matchups and prize aggregates. Lists are bounded without treating them as complete archives. Detail tools preserve rounds, guilds and totals while bounding the player list. The tested player_limit did not bound entrants upstream. Tournament battles require id, round and either player or swiss_group; the captured group 1 worked, while group 0 and username alone did not. The mine route is not proven to list an account's participation history. See tournament observations.

Guild reads

Six tools cover scoped guild search, details, members, building contributions, brawl records and global brawl SPS rewards. Guild search requires a name because the unfiltered response exceeded the 2 MiB transport cap. Member rows are not assumed active: status=active reduced the captured 230 rows to 30. Contributions require a building type. Reward include flags use the string 1 and select totals and cycle records independently; the total is global even when cycle filters narrow records. See guild observations.

Game metadata

Settings come from live API responses and use a one-hour success cache keyed by exact supplied query, capped at 32 entries. Freshness retains the original retrieval time and advances the reported age. Matching version/config_version returned the full body, not a delta. Block, maintenance, transaction and health reads do not use this settings cache. Transaction metrics requires explicit metric names and a from date; each series stays intact under the output bound. See metadata observations.

Conflicts and proposals

Eight conflict tools cover seasons, player reward points, recorded airdrops, rankings, status, wagons and eligible card groups. Conflict status flags use the string 1 and preserve omitted sections; wagon lists are bounded while returned totals and configuration remain intact. max_group_size limits sampled UIDs within eligible groups, not qty or total_cards. Three proposal tools read listings, counts and votes; no tool votes, claims an airdrop or stakes a wagon. Paired proposal and voter pages matched a four-row request in the capture. See conflict and proposal observations.

The land_stake_assets response includes worker_view with Base Production, Base PP after cap, Terrain Boost, Boostable Production and Total Production beside unchanged source cards/items. Values retain upstream precision and response freshness. Explicitly unpowered display values are zero; absent evidence stays unknown. The view uses no extra request and shares the result byte limit.

Collection staking filters: staked=yes selects active workers, staked=no selects explicitly unstaked cards, and staked=plot requires stake_plot_id (numeric). Optional staking dates and numeric stake_plot retain source values. Missing fields produce unknown state; cooling and pending cards are separate states. Cached pages retain staking_observed_at. Numeric references are not presented as verified padded plot labels. Field behavior is supported by public-client inspection, synthetic cases and a populated live collection check; returned staking references retain their observation time and do not establish current action eligibility.

land_lineup_estimate computes an ordered, explicitly supplied worker snapshot without API calls: Base/capped Base, Boostable, Total PP, gross resource/hour, food/hour and validity/ability checks. Core/Energized, Runi, cap order and strongest duplicate abilities are included. Supply source values, not bare UIDs. This initial estimator handles Grain/Wood/Stone/Iron worksites with neutral and dual-element selection and all 14 terrain assignments; Castles/Keeps and SPS/Research remain outstanding. Output is a dated client-preview estimate, not live ownership or backend verification. See library/observations/lineup-food-client-2026-09-12.json.

For worker-swap power estimates, supply regional_power with staked_dec, current_required_dec (including this plot) and current_plot_required_dec instead of plot.efficiency. Supply each ordinary worker’s raw land_dec_stake_needed before cap and Dark Discount. The estimator replaces this plot’s old demand, applies cap/discount/Runi rules, and reports new regional demand, efficiency and shortfall. Other plots are held fixed; moving a worker from another plot requires accounting for that change in the supplied regional snapshot. No balances are fetched. See library/observations/lineup-regional-power-2026-09-12.json.

Joined collection rows also expose normalized element/secondary_element and selected-level land_abilities with a known/level_missing status. The element filter matches either element. Raw land_dec_stake_needed is retained when supplied upstream; absent demand stays unknown. No Land-ability table means none in that definition; an unavailable level is not treated as an empty list. The estimator resolves known edition-19 abilities internally, so omit an abilities override for those cards. Other returned codes may remain unsupported by the estimator and must not be silently dropped.

The offline land_lineup_estimate tool accepts optional comparisons: up to ten uniquely labelled { label, lineup } entries alongside the ordinary baseline fields. Each lineup contains a complete independent estimator input. This evaluates several alternatives in one MCP call without HTTP; it does not gather missing card, plot or power facts. Results preserve input order and each alternative's validity. An invalid alternative marks the tool response as an error while preserving valid results. Alternatives do not update one another's regional balances, and the tool does not rank different resources.

The land_stake_deed_details response adds plot_view: the public overview's PRODUCTION / HR numeric value and separate reference values for raw/capped Base, Boostable, Total PP and resource output. Effective PP applies efficiency except with Runi. Reference labels are explanatory; they do not assert identical screen columns. Raw upstream data remains unchanged, and missing display inputs remain unknown.

player_inventory requires username and an upstream type filter. The observed Land filter still includes Token rows. Optional item_detail_id filters all received rows locally before the 100-row/256-KiB result bound; upstream_rows, matched_rows and truncated describe the scope. It does not infer staking eligibility or full holdings. See library/observations/player-inventory-2026-09-12.json.

Four account market tools read activity, per-asset listings, all-listing rows and owned/listed stats. Activity requires player, types and sort; the observed client defaults are purchase,sale and desc. asc returned older rows and sale selected sales. offset=1 did not select the second unoffset record; do not assume conventional row-offset paging. The existing landing tool also returns player-specific numOwned when supplied. See library/observations/vapi-market-account-2026-09-12.json.

player_avatar resolves a legacy profile image redirect, which may return RUNI artwork rather than the custom character. It returns avatar_url, image_url and redirect_status without downloading the image.

player_custom_avatar returns saved avatar-builder settings, including numeric level as metadata. Set render=true to compose official artwork layers into a PNG image content block. The artwork contains no level numeral, badges or exemplar level frame/gem; those remain separate interface data. Unknown cosmetics and failed assets return an error instead of partial artwork. See custom avatar data and artwork.

Available Tools

163 tools
battle_queueA

Read the existing battle queue records for an explicit username. This does not join a queue or submit a team. Captured queue fields such as mana_cap and team may be null even when status returns fuller data. Settings and team values retain their JSON-encoded string wire types. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYes

TDQS

A4/5.0
Behavior5/5

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

With no annotations, the description takes the full burden: it discloses GET semantics, nullability, JSON string wire types, no continuation-paging, array limits, truncation reporting, and refusal of oversized records. This is a comprehensive behavioral profile.

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?

Purpose is front-loaded, and each subsequent sentence conveys a distinct behavioral or limitation fact. Some boilerplate lines (e.g., 'required inputs reflect tool policy') could be trimmed, but the structure is largely efficient.

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

Completeness4/5

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

For a one-parameter read-only tool with no output schema, this description covers request type, paging behavior, row/size limits, truncation, and nullability—enough to call correctly. It does not detail error structures, but that is not mandatory without an output schema.

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

Parameters2/5

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

Schema description coverage is 0% and the description adds little about 'username' beyond 'explicit' or the vague 'required inputs reflect tool policy'. The phrase about 'other declared filters' is misleading given additionalProperties=false in the supplied schema.

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

Purpose5/5

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

The description states a specific verb+resource ('Read the existing battle queue records') scoped to a username, and explicitly excludes join/submit actions, distinguishing it from any write-flavored siblings.

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

Usage Guidelines3/5

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

It clearly says this does NOT join a queue or submit a team, but it never names alternative battle tools (e.g., battle_status) or gives a decision rule for when to use this tool instead.

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

battle_resultA

Read a battle result by explicit queue transaction ID. Either captured opponent queue ID returned the same battle. Details, settings and reward information retain their original wire types, including JSON-encoded strings. Unknown IDs returned an error string. Oversized results are refused without dropping rounds or player data. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so thoroughly. It discloses error behavior for unknown IDs, refusal of oversized results, no auto-fetching of continuation pages, local row/size limits with truncation reporting, and preservation of wire types. This is exceptional transparency for a tool.

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

Conciseness4/5

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

The description is long but information-dense, with the purpose front-loaded. However, there is redundancy ('Oversized results are refused without dropping rounds or player data' vs later 'Oversized records are refused without partial fields') and a vague sentence about 'Required inputs reflect tool policy' that could be tightened.

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

Completeness4/5

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

Given a single parameter and no output schema, the description covers many operational details (error strings, size limits, wire types, no pagination) that an agent needs. It hints at response contents (details, settings, rewards) but could be more explicit about the overall response structure, though the absence of an output schema makes that less critical.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate. It does: it defines the ID as a 'queue transaction ID' and clarifies that either the captured opponent queue ID or the original works. This adds meaning beyond the bare string schema, though it could be more explicit about format.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Read a battle result by explicit queue transaction ID.' It clearly distinguishes the tool from battle_queue and battle_status by focusing on results and the input type. The added note about captured opponent queue IDs further clarifies scope.

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

Usage Guidelines3/5

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

The description implies usage (for reading battle results by queue ID) but does not explicitly compare with alternatives like battle_status or tournament_battles. It provides no exclusions or conditions for when to use this tool over siblings, leaving selection partly to inference.

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

battle_statusA

Read battle status by explicit queue transaction ID. Obtain an ID from battle_queue. Team and settings are returned as upstream JSON-encoded strings. Unknown IDs returned HTTP 200 with an error string and are reported as errors, not successful battle records. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations provided, the description carries full behavioral burden and does so impressively. It discloses the single logical GET request, no auto-pagination, HTTP 200 error body for unknown IDs, array limits, truncation reporting, and refusal of oversized records—all beyond what the schema could convey.

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

Conciseness4/5

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

The description is front-loaded with the core purpose, and every major claim supports correct invocation or interpretation. It is denser than necessary in places—especially the policy/requirements and 'other filters' phrasing—but compression would risk losing nuance.

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

Completeness5/5

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

For a tool with one parameter, no annotations, and no output schema, the description is exceptionally complete: it explains the ID source, the return shape, the error behavior, pagination behavior, and data limits. An agent can confidently invoke and interpret the tool from this description alone.

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 0% and the sole parameter 'id' is serviced by the description: it is an explicit queue transaction ID obtained from battle_queue. However, the boilerplate about 'other declared filters being forwarded as supplied' fits poorly with the schema's additionalProperties: false, so the parameter semantics are strong but slightly clouded by a mismatched generic statement.

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

Purpose5/5

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

The description opens with 'Read battle status by explicit queue transaction ID', giving a specific verb, resource, and selection mechanism. It further clarifies the ID comes from the sibling battle_queue tool and that team and settings are returned, which usefully distinguishes it from battle_result and other battle-related siblings.

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

Usage Guidelines4/5

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

The tool states 'Obtain an ID from battle_queue', which implies the intended sequence and gives context for when to call it. It does not explicitly name alternatives such as battle_result or state when not to use it, so there are no clear exclusions.

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

cards_collectionA

Optional include_plot_references adds reported_stake_plot_reference with verified padded label, numeric ID and deed UID to returned cards using at most one account-scoped deed search (limit 200); the call then permits three logical GETs instead of two. Unresolved or conflicting references remain null with explicit status and separate freshness. This is not complete holdings discovery. Cooling cards have left their old plot; a retained reference is historical. The projected collection cache is reused when only this option changes, and plot references are read afresh. Joined metadata exposes normalized element and secondary_element, plus only the selected level’s land_abilities and land_abilities_status. Missing level entries are unknown, never an invented empty ability list; absent ability tables mean no Land abilities in that definition. Raw numeric land_dec_stake_needed is retained if present. The element filter matches either normalized element. For known edition-19 cards, land_lineup_estimate resolves its dated abilities itself; omit an explicit abilities override there. Other cards can use the returned ability tuples, subject to estimator-supported codes. Optional stake_start_date, stake_end_date and numeric stake_plot are retained when present. staking_status and staking_observed_at classify one capture as staked, unstaking, unstaked, pending or unknown; cached pages preserve that classification time. Missing dates are unknown, not unstaked. Local staked=yes selects active staking, staked=no selects explicitly unstaked cards (not cooling or pending), and staked=plot requires numeric stake_plot_id. Plot labels are not inferred from an unverified numeric reference. These filters make no extra request. Stream the projected collection returned by GET /cards/collection/{username}. The upstream response has exactly {player,cards[]} and no total, count, cursor, page token or other pagination field; no narrower query was available in the measured collection evidence. The route-size and memory measurements are recorded in library/observations/collection-streaming-memory-2026-09-08.md. The server never materialises the upstream body: it parses cards[] incrementally, skips unprojected fields, counts matching cards, and retains only the projected cards in the requested page, up to 100. Each emitted card contains uid, card_detail_id, edition, gold, foil, level, xp, bcx, collection_power and card_set. The source card object carried 56 fields; this projection keeps the ten core fields plus land_base_pp when present, and makes no byte-saving claim. In the upstream wire types, land_base_pp and last_buy_price are numeric-looking JSON strings, while bcx, xp, collection_power and level are real JSON numbers; land_base_pp is retained as its original decimal string and last_buy_price is not projected. A missing land_base_pp stays absent; an observed null stays null. Both mean unknown production and never pass a min_land_base_pp filter, including a zero threshold. Malformed or non-finite production strings are refused; the latter four fields are returned as numbers. Card definitions are joined by card_detail_id, adding name, color, secondary_color when present and sub_type. Color and subtype filters are case-insensitive exact matches; color matches either primary or secondary color. Unknown definitions retain the instance without invented fields, never match metadata filters, and are counted in definition_missing_count across the full scanned collection before filtering. The complete definition catalogue is fetched under the existing 2 MiB cap and projected into one 24-hour cache; only joined page fields are returned. This tool may use two logical GET requests (definitions plus collection). Definition failure stops before reading the collection. Definition refresh invalidates the joined page cache, and metadata freshness is separate. Local filters are color, sub_type, gold, edition, foil, card_set, min_level, min_collection_power and min_land_base_pp; cursor is a zero-based filtered-result offset and limit defaults to 100 with a maximum of 100. This server's heap-occupancy guard is 128 MiB: the highest observed production-path value was 90.71 MiB of unforced heapUsed; the occupancy backstop is wider because GC timing can vary, so it needs operational slack. Production normally has no --expose-gc, so heapUsed is high-water heap occupancy including uncollected garbage, not a retention bound. If global.gc is exposed, as it may be in a diagnostic/test process, the server calls it before sampling to reduce transient garbage. Retention was measured separately at about 9.4 MiB flat under forced GC and is verified by test, not at runtime. A separate 358 MiB RSS operational ceiling is based on the highest RSS observed across the measurement rounds: 286.4 MiB in the forced-GC diagnosis, higher than the 278.08 MiB RSS maximum of the final production-path runs. RSS is a separate process-occupancy backstop, not a retention bound, and includes memory outside the V8 heap and uncollected garbage. Neither runtime number bounds retention: both are occupancy guards at different scopes, while retention is verified by measurement, not enforced at runtime. Memory is sampled every 256 parsed cards, plus once at the end when needed; on the measured 51,799-card run that means at most 203 cadence samples, and a regression is detected within 256 parsed cards without a memory call on every card. The route uses a 90-second timeout chosen by this server behind the measured 41-second fetch; a timeout is attempted once and is not retried. The global 2 MB response cap is unchanged for every other route and is not raised for this exception. One successful page is cached for 60 seconds per username, retaining at most that page; cache reuse requires the same filter, cursor and limit request. A different page or filter is a cache miss, re-streams and re-parses the full collection, and replaces that username's cached page because the upstream has no pagination; the cached page re-streams after expiry. The fixture is deliberately trimmed to three cards with representative raw fields rather than the measured 155 MiB response; the fixture declares every concrete array index and is only a contract sample. No account name is embedded in this server source, and this server remains version 0.0.0 with no remote delivery path.

ParametersJSON Schema
NameRequiredDescriptionDefault
foilNo
goldNo
colorNo
limitNo
cursorNo
stakedNo
editionNo
elementNo
card_setNo
sub_typeNo
usernameYes
min_levelNo
stake_plot_idNo
min_land_base_ppNo
min_collection_powerNo
include_plot_referencesNo

TDQS

A3.7/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure, and it is exceptionally thorough: it covers caching behavior, absence of pagination, timeout and retry policy, memory/occupancy guards, projection semantics, null-vs-missing distinctions, and exact response shape. It also explains consequences like unresolved plot references remaining null and cached pages being replaced per username.

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

Conciseness2/5

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

The description is a single massive paragraph with no front-loaded summary; the core operation appears only after several sentences about plot references and caching. It contains extensive operational memory measurements, RSS ceilings, fixture details, and GC internals that are far beyond what an agent needs to select or invoke the tool, making it inappropriately sized and poorly structured.

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

Completeness5/5

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

Given no annotations and no output schema, the description must fully define inputs, outputs, and edge behavior, and it does: it states the response is exactly {player, cards[]}, enumerates every emitted card field, explains unknown-definition treatment, filter semantics, cache invalidation, timeout behavior, and pagination absence. Nothing needed to call the tool correctly is missing, even if the information is harder to find than it should be.

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 description coverage is 0%, so the description must compensate, and it does for most parameters: cursor is a zero-based offset, limit defaults to 100 with max 100, staked enum values are defined, color/sub_type matching rules are specified, and min_land_base_pp has detailed null semantics. A few parameters like foil, edition, and card_set are only listed as 'local filters' without elaborating their exact accepted values or matching behavior.

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

Purpose4/5

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

The description eventually identifies the operation as 'Stream the projected collection returned by GET /cards/collection/{username}' and lists the returned card fields and available filters, so an agent can infer this is a card-collection query tool. However, the purpose is buried mid-paragraph behind implementation details like include_plot_references and logical GET counts, and no explicit sibling differentiation is given.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance, prerequisites, or named alternatives among the many sibling tools. The statement 'This is not complete holdings discovery' hints at a scope limit, and the edition-19 note about land_lineup_estimate gives parameter-level advice, but the description never tells an agent when to choose cards_collection over cards_find, cards_get_details, or other card tools.

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

cards_findA

Look up per-instance card records through GET /cards/find. Supply ids as one comma-separated string of full per-instance card UIDs; real 2-ID and 3-ID requests returned exactly the requested UIDs in order. Repeated ids=, ids[]= and JSON-array encodings are not valid: repeated and bracketed parameters return an unable-to-parse error, while a JSON array is split as literal comma-separated text. A matched record carries player, uid, card_detail_id, xp, gold, edition, card_set, collection_power, market and rental fields, and the measured bcx and bcx_unbound fields. BCX is therefore promised for this per-instance route only; it is not a claim about definition routes. player is current-owner attribution, not donor provenance, and donor was absent in the measured record. This result is bounded by this server's 100-row and 256 KB limits and is not cached as static metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYes

TDQS

A4.5/5.0
Behavior4/5

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

No annotations were provided, so the description carries the full burden of behavioral disclosure. It thoroughly discloses input format constraints, error behavior ('repeated and bracketed parameters return an unable-to-parse error'), output fields ('player, uid, card_detail_id, xp, gold, edition, card_set, collection_power, market and rental fields'), and limits ('100-row and 256 KB limits'). It also clarifies semantic nuances: 'player is current-owner attribution, not donor provenance.' This is far beyond typical descriptions, though it doesn't mention auth requirements or rate limits, which are minor given the detail provided.

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

Conciseness3/5

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

The description is quite long but dense with essential information. It is front-loaded with the primary purpose and input format, followed by constraints and output fields. However, some sentences are wordy and could be tightened; for instance, the phrase 'real 2-ID and 3-ID requests returned exactly the requested UIDs in order' is a test result, not a specification, and could be a separate note. Still, every sentence adds value for correct usage, though the length may dilute impact.

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

Completeness5/5

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

Given the tool's moderate complexity (one parameter, no output schema) and the complete absence of annotations, the description covers everything necessary for correct invocation: input format, error cases, output fields, semantics of the player field, and server limits. No output schema exists, so the explicit field list is crucial and provided. The description is fully sufficient for an agent to call this tool correctly and interpret the response.

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?

The schema has only one parameter 'ids' with just minLength: 1 and no description (schema description coverage 0%). The description compensates fully by explaining the expected format: 'a comma-separated string of full per-instance card UIDs' and explicitly listing invalid encodings. This gives the agent the exact meaning of the parameter beyond the schema. It does not specify a maximum length or example, but the format is clear enough for correct invocation.

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

Purpose5/5

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

The description states exactly what the tool does: 'Look up per-instance card records through GET /cards/find.' It specifies the resource (card records) and the endpoint, and distinguishes itself from definition routes ('BCX is therefore promised for this per-instance route only; it is not a claim about definition routes'). It also implies a lookup, contrasting with many sibling market/land/player tools, making its purpose unmistakable.

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

Usage Guidelines5/5

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

The description explicitly tells the agent how to supply ids: 'one comma-separated string of full per-instance card UIDs' and states what is not valid: 'Repeated ids=, ids[]= and JSON-array encodings are not valid.' This is a clear usage guideline that prevents common errors. It also qualifies the scope ('per-instance route only') and explains the result is bounded by limits, giving context for when to use it. It does not explicitly name an alternative, but the distinction from definition routes and the presence of sibling cards_get_details etc. implies exclusion.

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

cards_get_detailsA

List the card-definition rows returned by GET /cards/get_details. The type query is a real upstream filter: type=Summoner returned 107 rows versus 1101 rows from the bare route. The bare upstream response measured about 1.17 MB, so this server refuses an unfiltered call before sending it because the response exceeds this server's 256 KB result bound and would otherwise be reduced to status alone with the data dropped. That refusal is this server's size-based choice from the measured response, not an upstream rule; provide type to make a filtered call. Each returned definition carries id, name, color, type, sub_type, rarity, drop_rate, per-level stats, abilities, editions, total_printed and distribution fields. The measured route carried no BCX, donor or account-attribution field. Successful filtered metadata responses are cached for 24 hours; provenance reports the route and the original fetch time. This tool reports the filtered rows returned and does not add per-instance ownership data.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNo

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and exceeds it. It discloses the server's size-based refusal (1.17 MB upstream vs. 256 KB bound), that this refusal is this server's choice rather than an upstream rule, 24-hour caching, provenance reporting, and the absence of ownership fields. This is rich, honest behavioral context.

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

Conciseness5/5

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

The description is long but every sentence earns its place: the core action is front-loaded, then each subsequent sentence adds essential behavioral or data details. There is no fluff, repetition, or vague filler.

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?

Despite having no annotations and no output schema, the description is complete enough to call the tool correctly: it explains the required filter, enumerates the returned fields, describes caching and provenance behavior, and warns about the refusal condition. Nothing critical is missing for an agent to make an informed call.

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

Parameters5/5

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

The input schema provides only `type` with `minLength: 1` and no description (0% coverage). The description fully compensates by explaining that `type` is a real upstream filter, illustrating with concrete row counts (107 vs 1101), and making clear that providing `type` is necessary in practice to avoid the size-based refusal.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'List the card-definition rows returned by GET /cards/get_details.' It further distinguishes itself from siblings by explicitly stating it 'does not add per-instance ownership data,' clarifying what this tool is and is not among the many card-related endpoints.

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

Usage Guidelines4/5

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

The description gives clear operational guidance: provide `type` to make a filtered call because an unfiltered call is refused due to size. It also implies when not to use it by noting the route carries no BCX, donor, or account-attribution fields and adds no ownership data. However, it never names a specific alternative tool, so it stops short of 5.

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

cards_historyA

List the transfer records returned by GET /cards/history for one per-instance card UID. id is a card UID, not a card_detail_id: numeric ids silently returned [], while a real UID returned transfer records. A returned record carries card_id, transfer_date, transfer_type, transfer_tx, from_player, to_player, card_detail_id, xp, gold, edition, payment_amount, payment_currency and combined_cards. from_player and to_player are account-attribution fields for the transfer, not donor provenance. Donor and BCX were absent in the measured response. This route is a per-instance event lookup, not a card-definition lookup or an enumeration of history for a numeric card_detail_id. The result is limited by this server's 100-row and 256 KB bounds and is not cached as static metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
limitNo
transfer_typesNo

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure, and it does so thoroughly. It discloses that numeric ids silently return [], that donor and BCX fields are absent, that from_player/to_player are attribution fields rather than donor provenance, and that results are bounded by 100-row and 256 KB limits and not cached. This goes well beyond a basic read/list description.

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

Conciseness5/5

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

The description is dense but every sentence earns its place: purpose, id caveat, response fields, attribution nuance, endpoint semantics, and limits/caching. It front-loads the core operation before diving into caveats, and there is no filler or tautology.

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

Completeness4/5

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

For a tool with no output schema and no annotations, the description covers the operation, id semantics, response record fields, field interpretation, response size limits, and caching behavior. It is nearly complete, but the lack of guidance for `limit` and `transfer_types` leaves a small practical gap for an agent constructing a full request.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate for undocumented parameters. It strongly clarifies the critical `id` parameter: 'id is a card UID, not a card_detail_id.' However, it does not explain the semantics or allowed formats of `limit` or `transfer_types`, leaving two of three parameters under-specified.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'List the transfer records returned by GET /cards/history for one per-instance card UID.' It also explicitly contrasts itself with 'a card-definition lookup or an enumeration of history for a numeric card_detail_id,' which clearly differentiates it from sibling tools like cards_get_details and cards_collection.

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

Usage Guidelines4/5

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

The description gives clear when-not guidance: 'This route is a per-instance event lookup, not a card-definition lookup or an enumeration of history for a numeric card_detail_id.' It also warns that numeric ids 'silently returned []' versus real UIDs, which guides correct input selection. However, it does not explicitly name an alternative tool to use when the user needs card-definition lookup or numeric history enumeration.

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

cards_loreA

Get the lore object returned by GET /cards/lore for one card_detail_id. The measured successful response was a bare object with numeric card_detail_id and string text. Omitting card_detail_id returned HTTP 200 with an empty body and no JSON, so this tool requires card_detail_id before making the request. The measured response carried no BCX, donor or account-attribution field. Successful lore responses are cached for 24 hours; provenance reports the route and the original fetch time. This tool returns the lore object unchanged and does not derive card attributes from its text.

ParametersJSON Schema
NameRequiredDescriptionDefault
card_detail_idYes

TDQS

A4.2/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and does so thoroughly. It discloses that the response is a bare object with card_detail_id and text, that omitting the parameter yields an empty body, that the response has no BCX or attribution fields, that responses are cached for 24 hours, that provenance is reported, and that the tool returns the object unchanged without deriving attributes. This is comprehensive behavioral disclosure.

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

Conciseness4/5

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

The description is concise and front-loaded, leading with the main purpose and then adding important behavioral details. Each sentence provides distinct information: endpoint, response shape, parameter requirement, caching, provenance, and non-derivation. It is not overly verbose and avoids repeating schema information. Slightly longer than necessary but efficient.

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

Completeness5/5

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

For a simple tool with a single integer parameter and no output schema, this description is exceptionally complete. It covers the response structure, the required parameter behavior, caching behavior, provenance reporting, and clarifies that no additional derived attributes are included. An agent has all the information needed to call this tool correctly and interpret the response.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It states that card_detail_id is required and that omitting it returns an empty body, which adds behavioral context. However, it does not explain what the id represents or how it relates to other card identifiers across the API. While the field name is self-explanatory, the description adds minimal semantic value beyond the schema's basic integer type.

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

Purpose5/5

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

The description clearly states the tool's function: it gets the lore object for a given card_detail_id via a specific endpoint. It distinguishes itself from siblings by focusing on lore specifically, which is unique among the many list/sibling tools. The verb 'Get' and resource 'lore object' are specific and unambiguous.

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

Usage Guidelines3/5

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

The description implies when to use this tool (when you need a card's lore) but does not explicitly state alternatives or when not to use it. It mentions that it does not derive card attributes, which hints that other tools might be needed for that, but it does not name any sibling tool or provide explicit routing guidance. This is adequate but not explicit.

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

cards_pack_data_waxA

List the pack metadata rows returned by GET /cards/pack_data_wax. The measured public response was a six-object bare array for ALPHA, BETA, ORB, UNTAMED, DICE and CHAOS, with symbol, template_id, max, minted and burned fields as JSON numbers. The measured response carried no BCX, donor or account-attribution field because it is WAX-bridge mint/burn metadata rather than per-card or per-owner data. Successful metadata responses are cached for 24 hours; provenance reports the route and the original fetch time. This tool returns the rows unchanged.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations, the description fully carries the burden, and it does so richly: it reveals the measured six-object array shape, the set names, the exact fields and types, the absence of BCX/donor/account fields, the 24-hour caching, provenance behavior, and that rows are returned unchanged. This goes well beyond a generic list description.

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

Conciseness5/5

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

The description is densely informative but not bloated; every sentence provides distinct value: the endpoint, the response shape, the excluded fields, the cache behavior, and the unchanged-return guarantee. The core purpose is front-loaded.

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

Completeness5/5

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

For a parameterless list endpoint with no output schema, the description is complete enough for an agent to call it correctly and interpret results. It covers what data is returned, what is absent, and how caching/provenance behave. Nothing critical 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?

The tool has zero parameters and an empty input schema, so there are no parameter semantics to document. Per the baseline for zero-parameter tools, a score of 4 is appropriate, and the description compensates by detailing the output structure instead.

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

Purpose5/5

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

The description names a specific verb ('List') and resource ('pack metadata rows returned by GET /cards/pack_data_wax'), and then distinguishes the data from per-card or per-owner data. This makes the tool's purpose unmistakable and differentiates it from siblings like cards_get_details or cards_collection.

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

Usage Guidelines3/5

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

The description provides useful context by stating that this is WAX-bridge mint/burn metadata and not per-card or per-owner data, implying when it should be selected. However, it does not explicitly name alternative tools or state when-not-to-use it, leaving some inference to the agent.

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

cards_skinsA

List the skin rows returned by GET /cards/skins. The measured public response was a bare array of 74 objects, each carrying card_detail_id, skin, total, remaining, cost, set_cost and set; the captured body was 8,893 bytes. The measured response carried no BCX, donor or account-attribution field. Successful metadata responses are cached for 24 hours; provenance reports the route and the original fetch time. This tool returns the rows unchanged and does not calculate availability or prices.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the burden, and it does so well by disclosing that responses are cached for 24 hours, provenance includes the route and original fetch time, and rows are returned unchanged with no computed fields. It also gives concrete response-shape details such as a bare array and field names, which is meaningful behavioral context beyond a generic list description.

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

Conciseness4/5

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

The description is front-loaded with the core purpose and then adds supporting behavioral details. The byte count and 'measured public response' phrasing are slightly more specific than necessary, but no sentence is filler and the structure is logical.

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

Completeness5/5

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

For a zero-parameter, no-output-schema metadata tool, the description is complete: it states the source route, the response shape and fields, caching behavior, provenance reporting, and what the tool does not do. Nothing essential for selecting or invoking this tool 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?

The tool has zero parameters, so the baseline is 4. The description compensates further by documenting the exact fields returned, which is the only semantic information an agent would need for this no-input tool.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'List the skin rows returned by GET /cards/skins.' It further clarifies scope by naming the exact fields in each row and explicitly noting that no BCX, donor, or account-attribution field is present, which helps distinguish it from player- or account-level tools.

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

Usage Guidelines3/5

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

Usage context is implied rather than explicit: it is a raw metadata list, and the statement that it 'does not calculate availability or prices' signals when not to use it. However, it does not name alternatives or state a concrete condition for choosing this tool over siblings such as player_skins or cards_find.

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

cards_trx_lookupA

Look up the transaction object returned by GET /cards/trx_lookup for a real trx_id. A bare call, card_detail_id alone and username alone returned the same HTTP-200 application error saying that trx_id was missing; a real trx_id returned a trx_info object with id, block_id, prev_block_id, type, player, data, success, error, block_num, created_date, result, steem_price and sbd_price. data and result are JSON-encoded strings inside the JSON response and are returned as strings; this server does not parse them a second time. player is transaction account attribution, not donor provenance. BCX and donor were absent in the measured response. This route is a single-transaction event lookup and is not cached as static metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
trx_idYes
usernameNo
card_detail_idNo

TDQS

A4.1/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and does so extensively. It discloses error behavior for missing trx_id, the exact response fields, the fact that data and result are JSON-encoded strings returned without double-parsing, the semantic caveat that player is transaction attribution rather than donor provenance, the absence of BCX/donor fields, and the non-cached behavior. This is outstanding behavioral disclosure.

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

Conciseness4/5

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

The description is longer than average but every sentence carries useful operational information: endpoint mapping, failure mode, response shape, encoding quirk, field semantics, and caching behavior. It is front-loaded with its purpose. It could be slightly tighter by trimming the empirically-listed response fields, but given the lack of an output schema, the detail is justified.

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

Completeness4/5

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

For a tool with no annotations and no output schema, the description is remarkably complete: it covers required input, typical failure, response structure, data types, field semantics, absent fields, and caching. The main gap is the unclear semantics of the two optional parameters in the presence of a valid trx_id, and what happens for an invalid or non-existent trx_id.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It clearly explains that trx_id must be a real trx_id and is required, and it documents that username and card_detail_id alone are insufficient. However, it does not explain what username and card_detail_id do when combined with trx_id, nor their intended roles as optional parameters. This is partial compensation, leaving meaningful gaps.

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

Purpose4/5

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

The description opens with a clear verb and resource: 'Look up the transaction object returned by GET /cards/trx_lookup for a real trx_id.' It precisely identifies the tool's operation. It does not explicitly name or contrast a sibling tool like transaction_lookup, so it stops short of full sibling differentiation, but the 'single-transaction event lookup' wording helps separate it from cached metadata endpoints.

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

Usage Guidelines4/5

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

The description gives strong usage context: a real trx_id is required, and bare calls or calls with only username/card_detail_id fail with an HTTP-200 application error. It also states the route is a single-transaction event lookup and not cached as static metadata, implying when this tool is appropriate. However, it never names an alternative tool or explicitly says 'use X instead', so the when-not-to-use guidance is implied rather than explicit.

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

collector_binderA

Read one public collector binder by player and binder reference; the observed slug selected three pages and 27 card slots, plus sticker placements. Preserve original fields and relative asset paths. One GET, no card metadata fan-out, purchases or layout changes. Oversized objects are refused as a whole. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
playerYes
binderRefYes

TDQS

A3.5/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and is exceptionally transparent: one logical GET, no continuation pages, no card metadata fan-out, no purchases/layout changes, oversized objects refused as a whole, array limits with truncation reporting, and no partial fields on refusal. It also notes preservation of original fields and relative asset paths.

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

Conciseness2/5

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

The main purpose is front-loaded, but the description is padded with redundancy: 'Oversized objects are refused as a whole' and 'Oversized records are refused without partial fields' say nearly the same thing, and 'One GET' appears twice. The 'observed slug selected three pages and 27 card slots' example is unexplained and adds noise, while the filter-forwarding note conflicts with a schema that has additionalProperties=false.

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

Completeness4/5

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

For a simple read with two string parameters and no output schema, the description covers the operational envelope well: request type, continuation behavior, size limits, refusal behavior, and field preservation. It lacks a concrete return-shape description and precise parameter semantics, but the behavioral coverage is strong enough for safe invocation.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It only restates 'by player and binder reference,' leaving the meaning, format, and valid values of player and binderRef unspecified. The generic sentence about required inputs and declared filters adds no concrete parameter guidance and does not match the actual two-parameter schema.

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

Purpose4/5

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

The description opens with a specific verb and resource: 'Read one public collector binder by player and binder reference.' This clearly identifies the tool's core action and distinguishes it from bulk or fan-out endpoints, though it does not explicitly name sibling tools.

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

Usage Guidelines3/5

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

It implies usage context by stating this is a single GET with no auto-fetching, no fan-out, and no purchases or layout changes. However, it never explicitly states when to prefer this tool over alternatives such as collector_stickers or collector_config, nor 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.

collector_configA

Read the complete public collector configuration: page/slot limits, claim availability, shop metadata, featured accounts and cosmetic definitions. The captured response was about 15 KiB. These are upstream configuration values; reading shop or claim metadata performs no purchase or claim. Preserve relative asset paths, nullable asset URLs and every returned field. Oversized configuration is refused as a whole, not partially truncated. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and goes well beyond a simple read statement. It discloses that the operation performs no purchase/claim, makes one logical GET request, does not auto-fetch continuation pages, refuses oversized configuration as a whole, and reports truncation for array responses limited to 100 rows and 256 KiB. This is extensive behavioral disclosure.

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

Conciseness3/5

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

The description is front-loaded with the purpose and contains important behavioral caveats, but for a zero-parameter tool it is noticeably verbose. Sentences about 'required inputs' and 'other declared filters' are generic boilerplate that add little value here, and the 15 KiB note is of marginal usefulness. Some trimming or tightening would improve the structure.

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?

Despite having no output schema and no annotations, the description is nearly complete for an agent to invoke the tool correctly. It specifies what data will be returned, how to treat asset paths and nullable URLs, how to handle oversized responses, and what request behavior to expect. Nothing critical appears 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?

The tool has zero parameters and 100% schema coverage, so the schema fully defines the input surface. The description adds general notes about required inputs and forwarded filters, but these are broad and not tied to any actual parameter. Per the zero-parameter baseline, a 4 is appropriate.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Read the complete public collector configuration,' followed by the concrete categories contained (page/slot limits, claim availability, shop metadata, featured accounts, cosmetic definitions). This clearly distinguishes the tool from its collector-related siblings like collector_binder, collector_stickers, and collector_player.

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

Usage Guidelines4/5

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

The description gives clear context for when the tool is appropriate: retrieving full public collector configuration and related metadata. It also clarifies a key boundary by stating that reading shop or claim metadata 'performs no purchase or claim.' However, it does not explicitly name alternative tools or state when-not-to-use this one relative to siblings.

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

collector_playerA

Read one player collector overview with binder summaries. Preserve original fields and relative asset paths. One GET, no card metadata fan-out, purchases or layout changes. Oversized objects are refused as a whole. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
playerYes

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations present, the description carries the full behavioral burden and does a thorough job: it covers one-GET semantics, refusal of oversized objects, no continuation-page fetching, row and byte caps, truncation reporting, and the non-guarantee of filter effectiveness. This is substantial behavior disclosure beyond the bare schema.

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

Conciseness5/5

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

The description is dense but efficient, starting with the core purpose and then adding behaviorally important constraints without filler or repetition. Each sentence contributes meaningful information.

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

Completeness4/5

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

For a one-parameter read tool with no output schema or annotations, the description is unusually complete: it covers limits, truncation, refusal behavior, and no auto-fetching. It could be slightly more complete by naming the return shape or not-found behavior, but it is not a significant gap.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate, but it does not explain what 'player' means beyond the schema's generic string type. It does add useful policy context around required inputs, but the single parameter's semantics are left mostly to inference from the tool name.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Read one player collector overview with binder summaries,' which is unambiguous and frames the tool's scope. It also distinguishes it from broader or mutation-style siblings by explicitly ruling out 'card metadata fan-out, purchases or layout changes.'

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

Usage Guidelines4/5

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

It gives clear usage context by stating this is a single GET with no pagination, no purchases, no layout changes, and it cautions about forwarded filters. It does not name an alternative tool or explicitly say 'use X instead,' so it stops short of fully explicit when-to-use guidance.

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

collector_stickersA

Read the full sticker-list route for one player; the observed four rows included ownership and trade/list flags plus cosmetic metadata. Preserve original fields and relative asset paths. One GET, no card metadata fan-out, purchases or layout changes. Lists are locally bounded; the route name does not promise complete holdings. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. The data list are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
playerYes

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure, and it does so thoroughly. It discloses that it makes one GET request, does not fan out to card metadata, does not auto-fetch continuation pages, preserves original fields and relative asset paths, limits lists to 100 rows and 256 KiB, reports truncation in text and metadata, and refuses oversized records without partial fields. This is exemplary transparency for a read tool.

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

Conciseness4/5

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

The description is dense but every sentence earns its place, covering scope, behavior, limits, and error handling. It is front-loaded with the core purpose and then details constraints. It is longer than strictly necessary, but given the lack of annotations and the need to disclose behavioral traits, the length is justified. A 4 reflects that it is well-structured but not maximally concise.

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

Completeness5/5

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

Given the tool has only one parameter, no output schema, and no annotations, the description is remarkably complete. It tells the agent what the tool does, what it does not do, its limits, truncation behavior, and refusal behavior. There is no output schema to explain return values, but the description mentions the observed four rows and metadata, which is sufficient context for a single-parameter read tool. Nothing critical 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 description coverage is 0%, so the description must compensate for the single required parameter 'player'. It does so by stating the tool reads the sticker-list route 'for one player', which clarifies that 'player' identifies the player whose list is read. It also notes that required inputs reflect tool policy and measured upstream requirements, adding context beyond the schema. However, it doesn't specify the exact format or constraints of the player identifier beyond the schema's minLength 1, so a 4 is appropriate rather than a 5.

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

Purpose4/5

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

The description clearly states the tool reads the full sticker-list route for one player, with a specific verb ('Read'), resource ('sticker-list route'), and scope ('for one player'). It distinguishes itself from siblings like collector_stickers_tradeable and collector_player by noting it is the full list route with ownership/trade/list flags and cosmetic metadata. However, it doesn't explicitly name a sibling alternative, so it falls just short of a 5.

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

Usage Guidelines4/5

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

The description provides clear context on when to use this tool: to read a player's sticker list, and it notes the route does not promise complete holdings and does not auto-fetch continuation pages, implying it is for a single bounded page. It does not explicitly name alternative tools for fetching more pages or complete holdings, so it lacks explicit exclusions, but the guidance is strong enough for an agent to select it appropriately.

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

collector_stickers_tradeableA

Read one player's tradeable collector stickers. Two public featured accounts returned 26 and 49 rows with isTradeable=true. Preserve sticker identities, trade/list flags, cosmetic metadata and relative asset paths. One bounded GET, no automatic paging; at most 100 complete rows and 256 KiB. This is not the for-sale route and does not list, transfer or buy anything. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. The data list are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
playerYes

TDQS

A3.8/5.0
Behavior5/5

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

With no annotations present, the description carries the full burder and delivers a strong behavioral profile: read-only semantics, one bounded GET, no auto-paging, 100-row/256 KiB limits, truncation reporting, and refusal of oversized records without partial fields. It clearly discloses that nothing is listed, transferred, or purchased.

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

Conciseness2/5

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

The purpose sentence is front-loaded, but much of the description repeats itself: paging/request limits appear twice and the size cap (100 rows / 256 KiB) is stated in multiple. The 'Two public featured accounts...' example and awkward phrasing ('data list are locally limited') add clutter without earning their place.

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

Completeness4/5

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

Given one simple parameter, no annotations, and no output schema, the description covers the essential operational context: safety, size limits, pagination, truncation behavior, oversized-record refusal, and the caveat about forwarded filters. It stops short of describing the exact returned data structure, so it is not fully complete, but it is more than sufficient for a single-parameter read tool.

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

Parameters2/5

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

The schema coverage is 0% and the only parameter, 'player', has no schema description. The description hints that 'player' identifies the subject ('one player's'), but never states the expected format (account name, ID, etc.) or how it maps to upstream requirements. The phrase 'Required inputs reflect tool policy...' adds no usable semantic detail.

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

Purpose5/5

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

The description states a specific action and resource ('Read one player's tradeable collector stickers') and adds delimiting scope with 'This is not the for-sale route and does not list, transfer or buy anything.' This clearly distinguishes the tool from market/listing siblings even without naming them explicitly.

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

Usage Guidelines3/5

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

There is a negative scoping statement ('not the for-sale route'), but no explicit 'use this when...' guidance or named alternatives like collector_stickers. The description implies usage based on the tool name rather than telling an agent when to choose it over its closest siblings.

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

conflict_airdrop_distributionA

Read a player's recorded airdrop distribution for an explicit id or conflict. The conflict alias also returned conflict metadata, while id returned only distribution. No prizes are claimed; num_prizes is not recomputed. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. The distribution list are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNo
loreNo
modeNo
playerYes
conflictNo
order_byNo

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does an unusually thorough job: it states the operation is a read ('Read'), that no prizes are claimed, that num_prizes is not recomputed, that it makes one logical GET request, that it does not auto-fetch continuation pages, that filters are forwarded as supplied without implied effectiveness, that results are locally limited to 100 rows and 256 KiB, that truncation is reported, and that oversized records are refused without partial fields. This is rich behavioral context beyond what any schema could convey.

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

Conciseness4/5

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

The description is dense but well-organized: it front-loads the core purpose, then covers behavioral constraints, then limits. Every sentence adds information. It is longer than ideal, but the density of useful behavioral detail justifies the length. The structure is logical: purpose → behavior → limits.

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

Completeness4/5

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

Given the tool's complexity (6 parameters, no output schema, no annotations), the description covers a lot: read semantics, id vs conflict behavior, pagination, filtering caveats, size limits, and truncation reporting. It doesn't describe the return format or the exact meaning of all parameters, but for a read-only lookup tool with this much behavioral disclosure, it is nearly complete. The main gap is parameter semantics for 'lore', 'mode', and 'order_by'.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate for the schema's lack of parameter documentation. The description explains the semantic difference between 'id' and 'conflict' (id returns only distribution; conflict also returns conflict metadata) and mentions 'Other declared filters are forwarded as supplied.' However, it doesn't explain the meaning of 'lore', 'mode', 'order_by', or 'player' beyond the obvious, and it doesn't clarify which parameters are mutually exclusive or how they combine. The description adds some value but leaves several parameters semantically under-documented.

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

Purpose4/5

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

The description states a specific verb and resource: 'Read a player's recorded airdrop distribution for an explicit id or conflict.' It distinguishes the two lookup modes (id vs conflict) and notes that conflict returns metadata while id does not. It doesn't explicitly name a sibling alternative, but the distinction between id and conflict modes is clear enough to differentiate from other conflict_* tools.

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

Usage Guidelines4/5

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

The description gives clear context on when to use the tool: for reading a player's recorded airdrop distribution by id or conflict. It also states what the tool does NOT do ('No prizes are claimed; num_prizes is not recomputed') and that it does not auto-fetch continuation pages. It doesn't explicitly name alternatives, but the behavioral constraints provide practical usage guidance.

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

conflict_eligible_cardsA

Read eligible card groups for an explicit username. max_group_size=1 or 2 limited the UID sample inside each group, while qty and total_cards retained the full counted quantities. Do not equate returned UID count with all eligible cards. Each group remains intact and groups are locally bounded. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. The groups list are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYes
max_group_sizeNo

TDQS

A3.7/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and delivers richly: it discloses max_group_size sampling behavior, warns against equating UID counts with eligible cards, explains local bounding, single GET request behavior, forwarding of filters, 100-row/256 KiB limits, truncation reporting, and refusal of oversized records. This exceeds the minimum and gives an agent realistic expectations.

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

Conciseness3/5

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

The description is front-loaded with a clear purpose sentence, but then becomes dense with multiple caveats and technical limitations. It is not wasteful, but it is verbose and may overwhelm an agent scanning quickly. The structure is logical (purpose → behavioral details) but could be tightened.

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

Completeness4/5

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

For a read tool with no annotations and no output schema, the description covers many critical aspects: request semantics, pagination, size limits, error handling, and filter behavior. It hints at output fields (qty, total_cards) but does not fully describe the response structure. Given the complexity, it is quite complete but lacks explicit output format details.

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?

Given 0% schema description coverage, the description compensates by explaining max_group_size's effect ('1 or 2 limited the UID sample') and clarifies the username is explicit. It also mentions 'Other declared filters' forwarded as supplied, though the schema only has two properties. This adds value beyond the schema, though it could be more explicit about value ranges.

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

Purpose4/5

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

The description states a specific verb ('Read') and resource ('eligible card groups') for an explicit username, which is distinct enough from siblings like conflict_players or conflict_leaderboard. However, it does not explicitly name a sibling or contrast its scope, so it misses a point for direct differentiation.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It only implies usage for a username but does not mention conditions, exclusions, or superior alternatives. An agent cannot tell whether this is the right tool for a given query beyond the obvious resource match.

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

conflict_leaderboardA

Read the conflict leaderboard, totals and prize metadata by id. The upstream returned 200 rows; the server returns a bounded leading portion while retaining totals and leaderboard_prizes. No working upstream pagination is established. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. The leaderboard list are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A4/5.0
Behavior5/5

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

With no annotations, the description fully shoulders the burden and does so excellently. It discloses that the upstream returns 200 rows, the server truncates to a bounded leading portion, totals and prizes are retained, pagination is not functional, only one GET is made, filters are forwarded without effectiveness guarantees, the list is limited to 100 rows/256 KiB, truncation is reported, and oversized records are refused without partial fields. This is exceptionally transparent about behavior, limits, and failure modes.

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

Conciseness5/5

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

The description is thorough yet efficient. It leads with purpose, then systematically covers upstream behavior, request characteristics, filter semantics, local limits, truncation handling, and refusal behavior. Every sentence adds distinct value with no filler or redundancy. The logical flow makes it easy to scan.

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

Completeness4/5

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

For a simple one-parameter tool with no output schema, the description is nearly complete. It explains what the response contains (totals and prize metadata, truncation reported), key constraints (100 rows, 256 KiB, single request), and failure behavior (refusal of oversized records). It does not detail the exact output schema, but that is not required. Minor omission: it doesn't describe error formats for non-oversized failures, but overall it is sufficient.

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

Parameters3/5

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

Schema coverage is 0% and there is only one parameter (id). The description adds only 'by id', which is minimal and somewhat tautological given the tool name. It does not explain what kind of id this is (e.g., a leaderboard id, season id) or where to obtain it. The sentence 'Required inputs reflect tool policy as well as measured upstream requirements' does not clarify semantics. This is adequate but leaves a clear gap about the id's meaning and provenance.

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

Purpose5/5

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

The description opens with a specific verb ('Read') plus a precise resource ('conflict leaderboard, totals and prize metadata by id'). It clearly distinguishes this from other conflict_* tools by focusing on leaderboard data keyed by id, and the phrase 'by id' sets it apart from list-style endpoints. It is unambiguous about what the tool does.

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

Usage Guidelines2/5

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

The description gives behavioral context (no pagination, single GET, bounded response) but does not provide any guidance on when to use this tool over sibling conflict endpoints like conflict_players or conflict_player_rank. It never names alternatives or exclusion criteria, leaving the agent to infer from the name alone. This is a clear gap.

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

conflict_player_rankA

Read one player's conflict ranking by id and username. Despite the upstream leaderboard_with_player name, the captured response contained only player, not the whole leaderboard. Rank and contribution values retain their string wire types. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
usernameYes

TDQS

A3.7/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses that rank and contribution values retain string types, that it makes one logical GET without auto-fetching continuation pages, applies local array limits (100 rows, 256 KiB) with truncation reporting, and refuses oversized records. These are substantial behavioral details beyond the schema, though some statements appear generic (e.g., 'Array responses' may not apply to this single-object tool).

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

Conciseness3/5

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

The first sentence is concise and front-loads the purpose. However, subsequent sentences include generic caveats like 'Other declared filters are forwarded as supplied' and 'Array responses are locally limited...' that seem boilerplate and may not apply given additionalProperties:false and a single-player response. This adds noise and reduces overall conciseness.

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

Completeness4/5

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

For a simple read tool with two simple string parameters, the description covers the purpose, hints at response content (rank and contribution), and details pagination and size limits. It does not describe the exact response structure, but no output schema exists, so the description can only go so far. It adequately covers operational concerns, despite some generic statements.

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

Parameters2/5

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

Schema coverage is 0%, so the description must compensate. It only says 'by id and username', naming the parameters without explaining their meaning, format, or examples. The phrase 'Required inputs reflect tool policy as well as measured upstream requirements' is vague and does not clarify parameter semantics, leaving the agent to infer from names alone.

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?

States 'Read one player's conflict ranking by id and username' – a specific verb, resource, and parameters. It explicitly distinguishes itself from the upstream leaderboard_with_player by noting the response contains only player, not the whole leaderboard, which differentiates it from a similarly named sibling.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool instead of alternatives. It mentions the upstream name and the single-player scope, implying use for individual rankings, but does not name sibling tools like conflict_leaderboard or provide a decision rule. The note about forwarded filters is behavioral, not usage guidance.

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

conflict_playersB

Read a player's conflict reward-point record and reward_point_threshold with an explicit id or conflict selector. Both aliases selected the captured current conflict. Other declared mode/filter inputs are forwarded without presumed effectiveness. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. The players list are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNo
loreNo
modeNo
uidsNo
playerYes
conflictNo
order_byNo
non_zero_rpNo
airdrop_dataNo

TDQS

B3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and does a relatively good job: it discloses that the tool makes one logical GET request, does not auto-fetch continuations, limits results to 100 rows and 256 KiB, reports truncation, and refuses oversized records without partial fields. The phrase 'Both aliases selected the captured current conflict' is unclear and slightly undermines transparency, but overall the behavioral disclosure is strong.

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

Conciseness3/5

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

The purpose is front-loaded and the constraints are dense, but the description is repetitive: sentences about forwarded filters without implied effectiveness are stated twice. Sentence 2 is also confusing. It is structured enough to be parseable, but several words could be cut without losing meaning.

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

Completeness2/5

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

Given no output schema, no annotations, and zero schema parameter descriptions, the description is incomplete. It covers limits and forwarding behavior well, but it does not describe expected return structure, how to choose between id/conflict/player, or what each filter does. An agent would likely need to resolve significant ambiguity before invoking the tool correctly.

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

Parameters2/5

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

Schema description coverage is 0%, so the description needed to explain the nine parameters, but it does not. It vaguely refers to 'id or conflict selector' and 'mode/filter inputs', but never explains player, uids, order_by, non_zero_rp, airdrop_data, lore, or how the required player parameter should be formatted. This leaves the agent without enough information to construct a correct call.

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

Purpose4/5

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

The description states a clear purpose: read a player's conflict reward-point record and reward_point_threshold. This distinguishes it from broader conflict tools like conflict_leaderboard or conflict_status. However, it does not explicitly differentiate from the similarly named conflict_player_rank sibling, so full disambiguation is left to the agent.

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

Usage Guidelines2/5

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

There is no explicit guidance about when to use this tool versus alternatives. The description focuses on internal behavior and forwarding caveats rather than when to select conflict_players over conflict_player_rank or conflict_leaderboard. Any usage context is only implied by the word 'Read' and the resource name.

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

conflict_seasonsA

Read conflict seasons. Without id the upstream returned 24 records; an explicit id returned one object, so the response shape depends on the selector. All wire values, including nullable prize settings, are preserved. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNo
loreNo

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations, the full burden falls on the description. It discloses several key behaviors: response shape depends on selector, wire values are preserved including nullable prize settings, it makes one logical GET with no auto-pagination, array responses are limited to 100 rows/256 KiB with truncation reported, and oversized records are refused. This is exceptional disclosure and goes far beyond a generic read.

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

Conciseness4/5

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

The description is dense and covers multiple caveats in a compact form. It front-loads the core read statement and then adds necessary behavioral constraints. While it is longer than average, every sentence adds value; minor redundancy like 'tool policy as well as measured upstream requirements' could be tightened.

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

Completeness4/5

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

There is no output schema, so the description needs to explain return behavior. It explains the response-shape dependency on id, preservation of wire values, and output limits/reporting. It does not enumerate the actual fields of a conflict season, but for selecting and invoking the endpoint the description provides enough operational context.

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

Parameters3/5

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

Schema has no parameter descriptions (0% coverage), so the description must compensate. It explains id's role as a selector, but 'lore' is not explicitly described, only grouped into 'Other declared filters' with a warning that effectiveness is not guaranteed. Partial compensation, but the meaning of lore remains under-specified.

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

Purpose5/5

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

The description opens with 'Read conflict seasons,' using a specific verb and resource. This clearly identifies the operation and differentiates it from the many conflict_* siblings (e.g., conflict_status, conflict_leaderboard). The resource scope is explicit.

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

Usage Guidelines4/5

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

Provides concrete selector guidance: without id you get 24 records, with an explicit id you get one object, so agents know how to choose id usage. It also cautions that declared filters may not actually constrain results and that continuation pages are not auto-fetched. No alternative tool is named, but the advice is clear enough for this endpoint's own usage.

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

conflict_statusB

Read conflict configuration, current conflict, player statistics and wagons for an explicit username. Flag strings use 1: only_config=1 returned config alone, only_wagons=1 returned stats and wagons, and exclude_wagons=1 omitted wagons. only_config=true did not reduce the response. Returned wagons are bounded with other requested sections unchanged. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. The wagons list are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
loreNo
usernameYes
only_statsNo
only_configNo
only_playerNo
only_wagonsNo
exclude_statsNo
only_conflictNo
exclude_configNo
exclude_playerNo
exclude_wagonsNo
exclude_conflictNo

TDQS

B3.3/5.0
Behavior5/5

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

With no annotations, the description carries the full burden, and it is unusually transparent: it declares one logical GET request, no auto-fetching of continuation pages, wagon limits of 100 rows and 256 KiB, truncation reporting, refusal of oversized records, and a caveat that declared filters may be forwarded without guaranteed effectiveness. This is genuinely useful behavioral context.

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

Conciseness3/5

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

The purpose is front-loaded and the content is dense rather than padded, but the middle section mixes flag behavior, pagination policy, filter caveats, and limit details into a single wall of text. It is compact enough, yet the lack of visual structure makes it harder to scan.

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

Completeness3/5

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

Given no annotations and no output schema, the description covers request behavior, limits, truncation, and oversized-record handling well. However, it omits the meaning of most filters and does not describe the shape of the returned sections, leaving meaningful gaps for a tool with 12 parameters.

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

Parameters2/5

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

Schema description coverage is 0%, so the description needed to define all 12 string parameters, but it only clarifies three flags (only_config, only_wagons, exclude_wagons) plus a generic 'forwarded as supplied' caveat. Parameters such as lore, only_stats, only_conflict, and the remaining exclude_* flags are left to inference, which does not sufficiently compensate for the coverage gap.

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

Purpose4/5

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

The opening sentence identifies a specific operation ('Read') and enumerates the exact resource bundle: conflict configuration, current conflict, player statistics, and wagons for a username. It is clear what the tool returns, but it does not explicitly contrast it with related conflict_* siblings such as conflict_players or conflict_wagon.

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

Usage Guidelines2/5

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

There is no guidance on when conflict_status should be chosen over conflict_wagon, conflict_players, or conflict_seasons. Statements like 'required inputs reflect tool policy' are policy notes, not usage conditions, and no alternatives or exclusions are mentioned.

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

conflict_wagonA

Read one wagon by explicit uid, retaining its complete card list and original contribution values. An unknown uid returned an empty object, which is reported as an error rather than a fabricated wagon. This never stakes or removes cards. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
uidYes

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and discloses a great deal: no staking/removing, unknown-uid error semantics, one GET with no continuation-page auto-fetch, truncation limits of 100 rows and 256 KiB, and refusal of oversized records. This gives the agent a solid safety and output-contract model.

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

Conciseness4/5

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

The description is dense but front-loaded with the core read action, and every behavioral sentence adds information. The phrases about tool-policy requirements and forwarded filters are generic and slightly redundant against the one-property schema, keeping it from a 5.

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

Completeness4/5

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

With no output schema, it explains the key return expectations: complete card list, original contribution values, truncation reporting, and error behavior. It does not describe the exact response object shape or status-code details, but for a one-parameter read tool the essentials are covered.

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?

The schema only says uid is a required string with no description, so the description adds meaning: 'explicit uid' and the unknown-uid error behavior imply that the value is the wagon identifier and must exist. It could go further with format or source guidance, but for a single required parameter this is sufficient.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Read one wagon by explicit uid,' and clarifies scope with 'complete card list and original contribution values.' This clearly distinguishes it from the many conflict_* sibling tools, which are lists, seasons, players, or rankings.

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

Usage Guidelines4/5

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

It gives a clear triggering condition: use this when you have an explicit wagon uid, and it describes single-GET/no-pagination behavior. It does not, however, name a sibling alternative for cases like needing filtered or paginated wagon data, so it stops short of a 5.

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

delegations_incomingA

Read incoming SPSP delegation records; each returned player is a delegator to the explicitly requested player. A populated record matched the corresponding outgoing and pairwise reads. Paging is declared but not independently demonstrated on the one-row sample. Preserve amount strings, rental fields and nullable dates. No currency conversion or card-delegation inference. One bounded GET; no automatic paging. Sort effectiveness is unmeasured. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. The data list are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNo
limitYes
orderNo
offsetNo
playerYes

TDQS

A3.8/5.0
Behavior5/5

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

With no annotations provided, the description carries the full behavioral burden, and it excels. It discloses paging behavior (one bounded GET, no auto-paging), data preservation rules (amount strings, rental fields, nullable dates), absence of inference, measurement caveats (sort effectiveness unmeasured), local limits (100 rows, 256 KiB), truncation reporting, and refusal of oversized records without partial fields. This is exemplary transparency.

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

Conciseness2/5

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

The description is verbose and dense, with many hedging caveats like 'Paging is declared but not independently demonstrated' and 'Sort effectiveness is unmeasured'. While informative, it lacks conciseness; the key purpose is front-loaded, but the subsequent sentences are numerous and could be tightened. It reads more like a QA report than a tool description, reducing scannability.

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

Completeness4/5

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

Given the tool has 5 parameters, no output schema, and no annotations, the description covers a wide range of operational concerns: paging behavior, size limits, truncation, refusal policy, filter forwarding, and data preservation. It is nearly complete, though it does not describe the response format in any detail (e.g., field names, structure) or the meaning of 'SPSP' for domain novices. Still, it addresses most practical invocation concerns comprehensively.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for parameter meaning. It only states that required inputs reflect tool policy and that filters are forwarded as supplied, but it does not explain the semantic role of sort, order, offset, or even the player/limit parameters beyond the schema's basic types. The note about size limits relates to limit but not its meaning or defaults. The description adds minimal semantic value beyond the schema, leaving agents to guess at valid sort/order values or offset behavior.

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

Purpose5/5

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

The description opens with a clear verb and resource: 'Read incoming SPSP delegation records', and immediately clarifies that each returned player is a delegator to the explicitly requested player. This distinguishes it from sibling tools like delegations_outgoing and delegation_to_target, which handle the opposite direction or specific targets. The purpose is unambiguous.

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

Usage Guidelines3/5

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

The description offers some context about what the tool does not do (no currency conversion, no card-delegation inference) and hints at relationships with outgoing/pairwise reads, but it never explicitly states when to use this tool versus alternatives. It mentions 'Required inputs reflect tool policy' but gives no concrete selection criteria. There is no direct comparison to sibling tools or conditions for choosing this endpoint, so usage guidance is partial.

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

delegations_outgoingA

Read outgoing SPSP delegation records; each returned player is a recipient of the explicitly requested player. Two pages of two matched the first four records. Preserve amount strings, rental fields and nullable dates. No currency conversion or card-delegation inference. One bounded GET; no automatic paging. Sort effectiveness is unmeasured. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. The data list are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNo
limitYes
orderNo
offsetNo
playerYes

TDQS

A3.5/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden and does it reasonably well: it discloses no currency conversion, no card-delegation inference, one bounded GET, no automatic paging, local row/size limits, truncation reporting, and refusal of oversized records. The value is slightly diluted by confusing repetition and the odd 'Two pages of two' clause, but the behavioral disclosures are substantive.

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

Conciseness2/5

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

The description is overlong and repetitive: paging is stated twice in different words, and 'Two pages of two matched the first four records' reads like stray implementation/test detail. Useful disclaimers are buried among vague policy language, so the structure is neither tight nor well front-loaded.

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

Completeness3/5

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

For a simple bounded read endpoint, it covers truncation, paging behavior, and absence of inference/conversion, which is valuable. However, with no output schema and 0% parameter description coverage, it leaves the return shape only weakly implied and does not define what each parameter actually controls.

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

Parameters2/5

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

Schema description coverage is 0%, so the description needed to compensate, but it does not explain player, limit, offset, sort, or order semantics. Phrases like 'Required inputs reflect tool policy as well as measured upstream requirements' and 'Other declared filters are forwarded as supplied' are vague and not parameter-specific. The only concrete hint is the 100-row/256 KiB local limit, which loosely matches the limit maximum.

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

Purpose5/5

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

The first sentence names a specific verb ('Read'), a specific resource ('outgoing SPSP delegation records'), and defines the directionality clearly: each returned player is a recipient of the requested player. This distinguishes it from incoming-delegation tools even without naming a sibling.

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

Usage Guidelines3/5

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

Directionality is implied enough for an agent to infer when this tool applies, but the description never explicitly says 'use this for outgoing delegations' or points to alternatives like delegations_incoming or delegation_to_target. It provides no when-to-use or when-not-to-use guidance.

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

delegation_to_targetA

Read the directed SPSP delegation from explicit player to explicit target. The positive pair matched outgoing/incoming evidence; reversing that pair returned HTTP 404. A zero-amount historical object was also observed: object presence does not imply a current positive delegation. Preserve amount strings, rental fields and nullable dates. No currency conversion or card-delegation inference. One bounded GET; no automatic paging. Sort effectiveness is unmeasured. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
playerYes
targetYes

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden, and it delivers: it discloses the 404-on-reversal behavior, the zero-amount object observation, preservation of fields, no currency conversion, no card-delegation inference, no automatic paging, array limits, truncation reporting, and refusal of oversized records. This is far more than a typical description provides.

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

Conciseness2/5

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

The description is front-loaded with the purpose statement, but it is bloated and repetitive: 'One bounded GET; no automatic paging' is essentially restated as 'Makes one logical GET request and does not auto-fetch continuation pages.' Generic caveats about filters and sort effectiveness also appear for a tool with only two required parameters, so several sentences do not earn their place.

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

Completeness5/5

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

For a simple two-parameter GET with no output schema and no annotations, the description is unusually complete: it covers request semantics, directional constraints, edge cases, data-preservation behavior, paging, truncation, and hard failure modes. An agent has enough context to invoke the tool correctly and interpret unexpected results.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate, and it does by explaining that 'player' and 'target' form a directed delegation pair and that order matters ('reversing that pair returned HTTP 404'). It adds directional meaning the schema cannot convey, though it stops short of giving concrete value formats or examples.

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

Purpose5/5

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

The first sentence names a specific verb ('Read'), a specific resource ('directed SPSP delegation'), and the exact scope ('from explicit player to explicit target'). This clearly differentiates the tool from list-style siblings like delegations_outgoing or delegations_incoming, which do not target one directed pair.

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

Usage Guidelines4/5

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

The description gives strong contextual guidance: this is for a directed player-to-target pair, and reversing the pair returns 404, so the agent knows both arguments and their order are essential. It does not explicitly name alternative tools or state when not to use it, but the directed-pair framing makes the intended use clear.

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

describe_endpointA

Describe one catalogued endpoint, its parameters, result contract, evidence dimensions, and provenance. This tool is offline and makes no upstream request.

ParametersJSON Schema
NameRequiredDescriptionDefault
entryIdYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It explicitly discloses the key behavioral trait: the tool is offline and makes no upstream request. This is a significant transparency point. It does not cover other behaviors (e.g., error handling, output format), but for a single-parameter description tool, this covers the main guarantee.

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

Conciseness5/5

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

Two sentences with no waste. The main action is front-loaded, and the offline note is placed second. Both sentences serve distinct purposes, making the description efficient and well-structured.

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

Completeness5/5

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

For a simple tool with one parameter and no output schema, the description is complete. It specifies the tool's scope (one endpoint), the content of the result (parameters, result contract, evidence dimensions, provenance), and its operational characteristic (offline). Nothing essential for an agent to call it correctly is missing.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It implies entryId refers to a catalogued endpoint but does not provide format, source, or validation details beyond the schema's minLength. The single parameter name is self-explanatory, but the description adds minimal semantic value.

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

Purpose5/5

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

The description clearly states the tool's purpose: to describe one catalogued endpoint, listing the exact aspects covered (parameters, result contract, evidence dimensions, provenance). It distinguishes itself from sibling tools like list_endpoints and data-fetching tools by focusing on metadata rather than data retrieval.

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

Usage Guidelines4/5

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

The description provides clear context that the tool is offline and makes no upstream request, implying it's safe and fast. However, it does not explicitly mention when to use this versus alternatives like list_endpoints or when not to use it. The offline note is a helpful usage signal but lacks explicit direction.

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

game_last_blockA

Read the latest block number reported by the game API. This is not cached by the settings cache. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does well: it discloses the uncached nature, the single GET request behavior, the lack of auto-pagination, the local 100-row/256 KiB array limit with truncation reporting, and refusal of oversized records. This is substantial behavioral context beyond what the empty schema provides.

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

Conciseness4/5

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

The description is compact and front-loaded with the core purpose, then adds important behavioral caveats. Every sentence earns its place, though the phrasing around 'required inputs' and 'declared filters' is slightly abstract and could be clearer for an agent. It is not overly long and avoids redundancy.

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

Completeness4/5

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

For a zero-parameter, no-output-schema tool, the description covers the essential operational details: what it reads, how it behaves (single GET, no pagination), and its limits (100 rows, 256 KiB, truncation reporting, refusal of oversized records). It does not describe the exact response format, but with no output schema and a simple 'latest block number' purpose, the description is sufficiently complete for an agent to invoke it correctly.

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

Parameters4/5

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

The tool has zero parameters, and the schema is empty with 100% coverage. The description adds context about 'required inputs reflect tool policy as well as measured upstream requirements' and that other declared filters are forwarded as supplied, which is meaningful for a no-parameter tool because it clarifies that any filters are not guaranteed to be effective. Since there are no params, the baseline is 4, and the description adds extra clarity about the policy-driven input behavior.

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

Purpose5/5

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

The description states a specific verb ('Read') and resource ('latest block number reported by the game API'), which clearly distinguishes it from the many sibling tools. It also adds a key differentiator: it is not cached by the settings cache, which helps an agent understand its unique role among the game data endpoints.

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

Usage Guidelines4/5

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

The description explains that it makes one logical GET request and does not auto-fetch continuation pages, giving clear context for when to use it (simple, single-page read). It does not explicitly name alternative tools or state when not to use it, but the scope is clear enough that an agent can infer it is for a quick, uncached block-number check rather than a paginated or cached query.

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

game_maintenanceA

Read scheduled maintenance windows and window_buffer_ms. Explicit date bounds are forwarded; the tested September range retained the same upcoming window, so complete filtering semantics are not established. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. The maintenance_windows list are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNo
start_dateNo

TDQS

A4.1/5.0
Behavior5/5

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

No annotations are provided, so the description carries full burden. It discloses pagination behavior (no auto-fetch), local limits (100 rows/256 KiB), truncation reporting, and refusal of oversized records. It also notes that filtering semantics are not fully established, which is honest about limitations. This is exemplary transparency.

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

Conciseness4/5

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

The description is dense but well-structured, front-loading the core purpose and then enumerating limitations. It is longer than ideal but each sentence adds value about behavior, limits, or semantics. No fluff; it is appropriately sized for the complexity.

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

Completeness4/5

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

The tool is simple with 2 optional params and no output schema. The description covers most operational details: pagination, limits, truncation, refusal. It does not describe the shape of the output or how maintenance windows are structured, but given the lack of output schema, some additional detail on return format would help. Still, it is reasonably complete.

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

Parameters3/5

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

Schema coverage is 0%, so the description must compensate. It mentions start_date and end_date are forwarded but does not describe format or requiredness beyond schema. It provides some context on date bounds being forwarded but not enough to fully document the parameters. Baseline for low coverage is higher, but description falls short of full compensation.

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

Purpose4/5

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

The description clearly states the tool reads maintenance windows and window_buffer_ms, which is a specific resource. However, it does not explicitly differentiate it from siblings like game_settings, which may also cover maintenance-related data. The purpose is clear but sibling differentiation is implicit.

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

Usage Guidelines4/5

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

The description provides explicit notes on behavior (no auto-pagination, limits, truncation reporting) and clarifies that filter effectiveness is not implied. It does not name alternative tools for when to use this instead, but the context of reading maintenance windows is clear enough for an agent to decide.

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

game_settingsA

Read current public settings from the API, cached for one hour per exact query. Matching version and config_version still returned the full settings body; they are not a delta protocol. The server never transcribes configuration constants into this tool. Uses a bounded success cache keyed by exact supplied query, otherwise makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
versionNo
config_versionNo

TDQS

A3.9/5.0
Behavior5/5

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

Even with no annotations, the description thoroughly discloses behavior: one-hour caching per exact query, no delta protocol, no auto-fetching, bounded cache, response size limits, truncation reporting, and refusal of oversized records. This goes well beyond what the schema or annotations provide and gives the agent concrete expectations.

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

Conciseness4/5

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

The description is front-loaded with the core purpose and then packs in caveats about caching, delta behavior, limits, and truncation. It is dense but not bloated; each sentence conveys a distinct behavioral constraint. It could be tightened slightly, but the structure is logical and efficient.

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

Completeness4/5

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

For a simple read tool with two optional parameters and no output schema, the description is quite complete: it covers cache behavior, request semantics, response limits, and error handling for oversized records. It does not describe the shape of the settings body, but 'full settings body' gives a basic sense of the return value. The ambiguous 'Required inputs' sentence slightly weakens completeness.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It adds meaning for version and config_version by explaining they are not a delta protocol and that matching values still return the full settings body. However, it does not clarify valid formats, whether values are matched against current versions, or what happens when they are omitted.

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

Purpose4/5

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

The description states a clear verb and resource: 'Read current public settings from the API.' This distinguishes it from many player- or market-specific siblings, and the 'public settings' scope adds meaning. However, it does not explicitly differentiate it from other settings-like siblings such as purchase_settings or game_maintenance.

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

Usage Guidelines3/5

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

The opening sentence implies the tool is for retrieving current public settings, giving clear context. But it does not state when to use this tool versus alternatives, nor does it mention any exclusions or sibling alternatives. With a large sibling list containing several similar settings-related tools, this guidance is only implicit.

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

game_vapi_healthA

Read the public VAPI health root, which reports status and application/version/environment metadata. This is a health read, not a claim that all game routes are available. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral burden and does so well. It discloses that this is a public read, makes one logical GET, does not auto-fetch continuation pages, limits array responses, reports truncation, and refuses oversized records without partial fields. It also prevents over-interpretation by noting it is not a route-availability claim.

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

Conciseness3/5

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

The opening sentence is clear and front-loaded, and the health-read caveat is useful. However, 'Required inputs reflect tool policy as well as measured upstream requirements' and 'Other declared filters are forwarded as supplied' are generic statements that add little for a zero-parameter tool and could mislead an agent into expecting inputs that do not exist.

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

Completeness4/5

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

For a simple health endpoint with no parameters, the description is largely complete: it names the returned metadata, notes the single-request behavior, and documents truncation limits. A small gap is the absence of any detail about response status values or error behavior, but with no output schema this is not a major omission.

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?

The tool has zero parameters, so the baseline is 4 and no parameter documentation is needed. The description does add a note that required inputs reflect tool policy and upstream requirements, but since the schema is empty this is not critical. It neither confuses nor substantively improves parameter understanding.

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

Purpose5/5

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

The description states a specific verb and resource: 'Read the public VAPI health root'. It also clarifies that this reports status and application/version/environment metadata, and explicitly distinguishes this from a claim about game route availability. This clearly separates it from the many data-route siblings.

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

Usage Guidelines3/5

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

The description gives clear context that this is a health read and warns it is not a guarantee that all game routes are available. However, it does not explicitly say when to choose this tool over alternatives or name any sibling as the right choice for route-level status checks. Usage is implied rather than stated.

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

guild_brawl_recordsA

Read brawl records for an explicit guild. cycle selected one row; start_cycle and end_cycle selected the two captured inclusive endpoint cycles. Other tournament and date selectors remain forwarded but unverified. SPS payout quantities remain decimal strings and the bounded list does not establish a complete history. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. The results list are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
cycleNo
end_dateNo
guild_idYes
end_cycleNo
start_dateNo
start_cycleNo
tournament_idNo

TDQS

A3.7/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure, and it does so thoroughly. It explicitly discloses single-GET behavior, no auto-pagination, local row and byte limits, truncation reporting, refusal of oversized records, decimal-string payout quantities, and incomplete-history caveats.

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

Conciseness3/5

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

The description is front-loaded with a clear purpose statement, but the later sentences are dense and partially redundant. 'Other tournament and date selectors remain forwarded but unverified' and 'Other declared filters are forwarded as supplied' convey nearly the same caveat, and 'Required inputs reflect tool policy' adds little concrete value.

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

Completeness4/5

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

For a read-only tool with no annotations and no output schema, the description covers invocation behavior, filter reliability, limits, truncation, and refusal semantics. It does not describe the shape or fields of individual brawl records, but it provides enough operational context to call the endpoint correctly.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must supply parameter meaning itself. It explains cycle as a single-row selector and start_cycle/end_cycle as inclusive endpoints, and it groups tournament/date filters as forwarded-but-unverified. guild_id is implied by 'explicit guild,' though date formats and per-parameter validation expectations are left vague.

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

Purpose4/5

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

The description opens with a clear verb and resource: 'Read brawl records for an explicit guild.' This states the tool's action and scope unambiguously. It does not explicitly differentiate from sibling tools like guild_brawl_sps_rewards, relying on the 'records' versus 'rewards' distinction to carry that weight.

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

Usage Guidelines2/5

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

The description provides no guidance on when to choose this tool over alternatives such as guild_brawl_sps_rewards or tournament_find_brawl. It explains how certain selectors behave and that some inputs are unverified, but this is filter semantics rather than usage routing.

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

guild_brawl_sps_rewardsC

Read global brawl SPS payout totals and/or cycle records. Use the string 1 for include_total or include_cycles: true returned an empty object. Each section can be selected independently. The total is global even when cycle narrows records; it is not a guild or selected-cycle sum. Cycle records are bounded while a requested total is retained. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. The sps_reward_records list are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
cycleNo
end_cycleNo
start_cycleNo
include_totalNo
include_cyclesNo

TDQS

C2.7/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It does disclose several important behaviors: it makes one logical GET request without auto-fetching continuation pages, locally limits results to 100 rows and 256 KiB with truncation reporting, and refuses oversized records. It also clarifies that filters are forwarded as supplied and their effectiveness is not guaranteed. However, the sentence 'Use the string 1 for include_total or include_cycles: true returned an empty object' is confusing and could mislead an agent about how to set boolean-like parameters, detracting from clarity.

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

Conciseness2/5

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

The description is verbose and poorly structured. It front-loads the purpose but immediately follows with a confusing, run-on note about parameter usage. Subsequent sentences jump between filtering semantics, request behavior, and output limits without clear organization. The length is not justified by clarity; it could be tightened significantly.

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

Completeness2/5

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

Given no annotations, no output schema, and five parameters, the description needs to be thorough. It does cover request behavior, pagination, limits, and filtering semantics, but it fails to explain the core parameter semantics (especially cycle, start_cycle, end_cycle) and never defines what 'sps_reward_records' is or what the response structure looks like. The description assumes domain knowledge that an agent may not have, leaving critical gaps.

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

Parameters2/5

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

Schema coverage is 0%, so the description must compensate by explaining the parameters. It only mentions include_total and include_cycles, and even then in a confusing way ('Use the string 1 for include_total or include_cycles: true returned an empty object'). It does not explain the meaning of cycle, start_cycle, or end_cycle, leaving most parameters undefined. The hint that 'Cycle records are bounded while a requested total is retained' gives some context but is insufficient.

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

Purpose4/5

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

The description opens with a clear verb and resource: 'Read global brawl SPS payout totals and/or cycle records.' It explicitly uses 'global' to distinguish from guild-specific sums, which helps separate it from siblings like guild_brawl_records. However, it does not explicitly name an alternative tool or state the exact differentiation, so it's clear but not perfectly disambiguated.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this tool versus alternatives. The description mentions 'The total is global even when cycle narrows records; it is not a guild or selected-cycle sum,' which implies scope but does not say 'use this when you need global totals' or reference any sibling. It also does not describe any prerequisites or fallback conditions, so an agent has to infer the appropriate use case.

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

guild_contributionsA

Read contributions for a guild and explicit building type. guild_hall and arena each returned 50 rows, while omitted type returned empty. Amounts and cumulative fields retain their original units and wire values; no complete contribution history or working pagination is established. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYes
guild_idYes

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and succeeds: it discloses GET semantics, the absence of auto-fetching continuation pages, local array limits of 100 rows and 256 KiB, truncation reporting, refusal of oversized records, and that amounts/cumulative fields keep original units and wire values. This is unusually transparent.

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

Conciseness4/5

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

The first sentence is an excellent front-loaded purpose statement, and the caveats are dense but relevant. Some boilerplate ('Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema') is vague given the schema has only two required fields, so it is not perfectly tight.

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

Completeness4/5

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

For a two-parameter read tool with no output schema, it covers purpose, parameter semantics, request behavior, pagination limitations, response limits, truncation, and oversized-record handling. It does not describe the exact response shape or field names, which is the main gap given the absence of an output schema.

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 description coverage is 0%, so the description must compensate. It maps guild_id to the guild and type to the building type, supplies concrete valid type examples ('guild_hall and arena'), and explains that required inputs reflect upstream policy. It stops short of an exhaustive list of valid type values or ID formats.

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?

Opens with a specific verb+resource statement: 'Read contributions for a guild and explicit building type.' This clearly identifies both the action and the target, and 'contributions' distinguishes it from sibling guild tools such as guild_members or guild_brawl_records.

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

Usage Guidelines4/5

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

Provides clear context that the tool is for reading guild contributions but requires an explicit building type. It also warns that it is not suitable for complete contribution history because pagination is not established, which functions as a usage exclusion. It does not name an alternative sibling, so it stops short of a 5.

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

guild_findA

Read one guild by its explicit ID. The default capture included extra fields absent with ext=true; do not assume ext=true expands the response. Building, tournament and crest data retain their JSON-encoded string wire types. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
extNo
usernameNo

TDQS

A4/5.0
Behavior5/5

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

With no annotations provided, the description carries full responsibility, and it delivers unusually rich behavioral detail: no continuation-page auto-fetch, JSON-encoded string wire types, local truncation limits, truncation reporting, and refusal of oversized records. It also clarifies that 'ext=true' does not imply response expansion, which is a valuable non-obvious behavior.

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

Conciseness4/5

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

The description is long but front-loaded with the core purpose, followed by caveats that earn their place. The final sentences about truncation and oversized records are precise and useful. Some wording, such as 'Required inputs reflect tool policy as well as measured upstream requirements', is vaguer than ideal but not wasteful.

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

Completeness2/5

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

The description provides many behavioral details but omits essential parameter semantics for ext and username and does not describe the response shape beyond scattered wire-type and truncation notes. Since there is no output schema and no annotations, an agent cannot confidently construct all valid inputs or interpret the full response.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It explains that id is an explicit required ID and vaguely refers to 'other declared filters', but it does not define what ext values are valid or what username does. The ext warning is confusing rather than clarifying.

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

Purpose5/5

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

The opening sentence, 'Read one guild by its explicit ID', identifies a specific verb, resource, and selection criterion. This clearly distinguishes guild_find from sibling list/search tools such as guild_list and guild_members.

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

Usage Guidelines4/5

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

The phrase 'by its explicit ID' provides a clear context for when this tool should be used: when the caller already has a specific guild ID. It does not explicitly name alternatives or say when not to use it, but the ID-based selection criterion is enough to route an agent appropriately.

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

guild_listA

Search guilds by an explicit name filter. The unfiltered response exceeded the 2 MiB transport limit; a specific name returned one guild and an unmatched name returned no guilds. Other declared filters are forwarded without assuming their effectiveness. The bounded list preserves num_actionable_mail and other surrounding fields. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. The guilds list are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
sort_byNo
languageNo
usernameNo
membership_typeNo

TDQS

A4/5.0
Behavior5/5

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

Without any annotations, the description carries the full burden and does so thoroughly: it discloses the transport limit motivation, exact results for matched/unmatched names, lack of pagination, one GET request, local row/byte limits, truncation reporting, and refusal of oversized records. This goes well beyond minimal disclosure.

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

Conciseness3/5

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

The description is front-loaded with the core purpose, but it becomes verbose and repeats the same idea: 'Other declared filters are forwarded without assuming their effectiveness' appears twice in slightly different wording. Some sentences ('Required inputs reflect tool policy...') add little actionable information.

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

Completeness4/5

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

Despite no output schema and no annotations, the description covers the operational essentials: required name, result cardinality, no continuation pages, local truncation at 100 rows/256 KiB, truncation reporting, and oversized-record handling. The remaining gap is per-parameter semantics and full return fields, which prevents a 5.

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

Parameters3/5

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

Schema coverage is 0%, so the description must compensate. It clarifies that name must be explicit and that other declared filters are forwarded without guaranteed effectiveness, but it does not explain the semantics of sort_by, language, username, or membership_type. The parameter names are self-descriptive, but the agent gets no values or allowed options.

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

Purpose4/5

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

The opening clause 'Search guilds by an explicit name filter' states a specific action and resource with a clear scope. It does not explicitly compare with sibling guild_find, but the emphasis on explicit name filtering differentiates the tool enough for selection.

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

Usage Guidelines4/5

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

The description explains when this tool is appropriate: a specific name is needed because unfiltered calls exceed the transport limit and unmatched names return no guilds. It cautions that non-name filters may not be effective, effectively telling the agent not to rely on them. It stops short of naming alternative tools, so it is not a 5.

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

guild_membersA

Read guild membership rows for an explicit guild_id. The default capture returned 230 rows across statuses; status=active returned 30. Membership status is not inferred. Undocumented limit=2 and offset=2 did not shorten or advance active members, so no paging controls are exposed. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNo
guild_idYes

TDQS

A4.2/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and excels: it reveals no paging controls, one logical GET request, no auto-fetched continuation pages, 100-row/256 KiB local array limits, truncation reporting, refusal of oversized records, and non-inferred membership status. This is unusually thorough behavioral disclosure.

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

Conciseness4/5

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

The purpose is front-loaded and nearly every sentence contributes an operational constraint. It is dense and there is mild redundancy between the tested limit/offset finding and the 'does not auto-fetch continuation pages' sentence, but this does not significantly hurt readability.

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

Completeness4/5

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

For a tool with no output schema and no annotations, the description covers the required input, query semantics, paging absence, size limits, truncation, and oversized-record refusal. It does not describe the output row fields or the full set of allowed status values, leaving a minor gap in the contract.

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 description coverage is 0%, so the description must compensate, and it does meaningfully. It gives status behavioral semantics (not inferred, example with active, forwarded as supplied) and treats guild_id as explicit and policy-required. It does not enumerate valid status values, but for two parameters the added guidance is substantial.

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

Purpose4/5

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

Opens with a precise action/object pair: 'Read guild membership rows for an explicit guild_id.' This clearly states what the tool does and the required resource. It does not explicitly contrast with sibling tools such as guild_list or guild_contributions, so it misses the top score for differentiation.

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

Usage Guidelines4/5

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

The phrase 'for an explicit guild_id' provides clear context for when this tool is appropriate, and the note that required inputs reflect tool policy/upstream requirements adds practical guidance. However, it never states when not to use this tool or names alternatives, leaving exclusion criteria unstated.

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

hive_account_historyA
Read-onlyIdempotent

Search one bounded window of an explicit Hive account's authority-indexed history. Default: newest 100 records. Optional custom_json_id filter is applied locally. Returns next_start for an explicit later call, even when no matches occur. No automatic pagination; this is not complete incoming-recipient history. Oversized results are refused whole.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
startNo
accountYes
custom_json_idNo
operation_typeNo

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false. The description adds substantial behavior beyond those: bounded window semantics, local custom_json_id filtering, next_start returned even on empty matches, no automatic pagination, and refusal of oversized results. This is rich, non-redundant behavioral disclosure.

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

Conciseness5/5

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

Four sentences, each carrying distinct information: scope, default, filter behavior, pagination behavior, limitation, and error behavior. The most important scoping detail is front-loaded and nothing is wasted.

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

Completeness4/5

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

Given the read-only annotations and the detailed behavioral notes, an agent has most of what it needs to call this tool correctly. The missing explanation of operation_type and the absence of any output schema/return-shape note prevent a perfect score, but the core invocation and pagination contract are well covered.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It explains custom_json_id filtering semantics and implies limit/start windowing through 'bounded window' and 'next_start', but operation_type is not explained at all, and start's cursor behavior is only indirectly hinted at. Partial compensation with a clear remaining gap.

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

Purpose5/5

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

The description states a specific verb ('Search') and a specific resource ('one bounded window of an explicit Hive account's authority-indexed history'). It further distinguishes itself by explicitly noting this is not complete incoming-recipient history, which helps separate it from sibling history tools.

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

Usage Guidelines4/5

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

The description gives clear context about the bounded window, the default of newest 100 records, and the lack of automatic pagination. It warns that oversized results are refused, and that this tool is not complete incoming-recipient history, but it does not name an alternative sibling for complete history, so it stays just short of explicit alternative routing.

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

hive_transactionA
Read-onlyIdempotent

Read a full signed Hive transaction by transaction ID. Preserve every operation and signature; decode custom JSON and count recognized gift-card items separately. Does not establish game processing or irreversibility. One read-only RPC.

ParametersJSON Schema
NameRequiredDescriptionDefault
trx_idYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context: it preserves every operation and signature, decodes custom JSON, counts gift-card items separately, and explicitly states it does not establish game processing or irreversibility. It also notes 'One read-only RPC', which is useful operational context. 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.

Conciseness5/5

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

The description is three sentences, each earning its place: the first states the core action, the second adds key behavioral details, and the third clarifies limitations and RPC cost. It is front-loaded with the primary purpose and avoids redundancy with annotations.

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

Completeness4/5

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

For a single-parameter read-only tool with rich annotations, the description is nearly complete. It covers the main purpose, key behaviors, and a limitation. It does not describe the return format or output structure, but there is no output schema, and the description's mention of 'count recognized gift-card items separately' gives some hint of the response. The absence of explicit alternatives or error conditions is a minor gap, but overall the description is sufficient for an agent to select and invoke the tool correctly.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. The description explains what the tool does with the transaction ID (reads full signed transaction, decodes custom JSON, counts gift-card items) but does not add specific parameter-level details beyond the schema's pattern. The single parameter trx_id is well-defined by the schema pattern, and the description implies its use. Baseline 3 is appropriate because the schema defines the parameter format clearly, and the description adds functional context but no additional parameter semantics.

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

Purpose5/5

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

The description states a specific verb ('Read') and resource ('full signed Hive transaction by transaction ID'), and distinguishes itself from siblings like transaction_inspect and transaction_lookup by emphasizing preservation of every operation/signature and custom JSON decoding. It clearly identifies what the tool does and its scope.

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

Usage Guidelines4/5

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

The description implies when to use this tool: when a full signed transaction with all operations and signatures is needed, and when custom JSON/gift-card item counts are relevant. It does not explicitly name alternatives or exclusions, but the context signals and sibling list suggest transaction_inspect/transaction_lookup as related tools. It provides clear context but no explicit when-not-to-use guidance.

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

land_deed_by_plotA

Get a public deed by numeric plot_id or a region-tract-plot display label, padded or unpadded (for example 001-02-001 or 1-2-1). A label uses an observed candidate ID and verifies the returned coordinates before returning a deed. Empty or mismatched label resolution is explicitly unverified, not proof that the location does not exist. Successful populated responses include plot_reference with numeric ID, padded label and deed UID. Supply exactly one plot_id (numeric or display label) or deed_uid; the original UID spelling is also accepted. Reference resolution may add one verified deed GET before the target GET, with a hard two-request limit. Populated resolved results include all three plot identities and resolution freshness.

ParametersJSON Schema
NameRequiredDescriptionDefault
plot_idNo
deed_uidNo

TDQS

A4.2/5.0
Behavior5/5

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

With zero annotations, the description carries the entire behavioral burden and does so thoroughly: it discloses coordinate verification, the 'unverified, not proof of absence' caveat, the possible extra internal GET with a hard two-request limit, 'successful responses include plot_reference', and includes all three identities and freshness.

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

Conciseness3/5

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

The text is dense and the key guidance is front-loaded, but there is redundancy between 'plot_reference with numeric ID, padded label and deed UID' and 'all three plot identities and resolution freshness'. Two overlapping sentences could be merged without losing value.

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

Completeness5/5

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

Given no annotations and no output schema, the description provides everything an agent needs: accepted forms, uniqueness constraint, verification behavior, failure semantics, extra-request behavior, and response contents. For this medium-complexity tool, the definition is complete.

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

Parameters5/5

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

Schema description coverage is 0%, and the description compensates by giving meaning to both parameters: plot_id can be numeric or a padded/unpadded label, deed_uid accepts original UID spelling, and the 'supply exactly one' constraint clarifies the schema's all-optional structure.

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

Purpose4/5

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

The description states a specific verb-resource pair ('Get a public deed') and identifies two lookup paths: numeric plot_id and region-tract-plot display label. However, it also accepts deed_uid without distinguishing itself from the sibling land_deed_by_uid, which slightly blurs purpose and tool selection.

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

Usage Guidelines3/5

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

It clearly says to supply exactly one plot_id or deed_uid and explains padded/unpadded label formats. It never mentions when to prefer alternatives like land_deed_by_uid or land_deeds_search, so the exclusion/alternative guidance is only implied, not explicit.

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

land_deed_by_uidA

Get the public land-deed record for one deed uid. Supply exactly one plot_id (numeric or display label) or deed_uid; the original UID spelling is also accepted. Reference resolution may add one verified deed GET before the target GET, with a hard two-request limit. Populated resolved results include all three plot identities and resolution freshness.

ParametersJSON Schema
NameRequiredDescriptionDefault
plot_idNo
deed_uidNo

TDQS

A4.7/5.0
Behavior5/5

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

No annotations are present, so the description carries full responsibility for behavioral disclosure. It reveals the possible extra verification GET, the hard two-request limit, and the content of populated results, going well beyond a simple 'get by UID' statement.

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

Conciseness5/5

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

Three dense sentences with no filler. The core purpose is front-loaded, followed by parameter constraints and behavioral caveats, each earning its place.

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

Completeness4/5

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

For a single-record lookup with no output schema, the description gives enough invocation detail plus result-summary hints. It does not specify error cases or behavior when both parameters are supplied, though 'exactly one' partially addresses that.

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

Parameters5/5

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

Schema description coverage is 0%, but the description compensates fully by explaining that plot_id accepts numeric or display-label forms, deed_uid accepts the original spelling, and exactly one must be supplied. This adds meaning the raw schema lacks.

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?

States a specific verb ('Get'), a precise resource ('public land-deed record'), and the lookup key ('one deed uid'). It also mentions accepted alternative identifiers, making the tool's scope readily distinguishable from sibling lookups.

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

Usage Guidelines4/5

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

Clearly instructs the agent to supply exactly one of plot_id or deed_uid, which is critical usage context given the schema marks no parameters required. However, it does not explicitly name or differentiate from the sibling land_deed_by_plot, so the alternative-selection guidance is incomplete.

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

land_deeds_ownedA

Return the per-region plot counts reported for one account; the tool name is historical, and the response contains region rows rather than individual land records. A successful response has {status, data}, where data is an array of {count, uid} rows and uid is the region identifier. data: null was observed for an unrecognised account; behaviour for a known account with no land was not captured. Query probes limit=2 and offset=5 returned bodies byte-identical to the no-query response, so those tried values had no effect.

ParametersJSON Schema
NameRequiredDescriptionDefault
playerYes

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses the response shape ({status, data} with {count, uid} rows), the historical naming caveat, the observed null data for unrecognized accounts, and the fact that limit=2 and offset=5 had no effect in probes. This is substantial behavioral context beyond the schema. It doesn't cover every possible behavior (e.g., known account with no land), but it is transparent about what was observed.

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

Conciseness4/5

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

The description is compact and front-loaded with the core purpose, then adds caveats and observed behavior. Every sentence adds information: the historical name caveat, response shape, null behavior, and query probe results. It is slightly dense but not bloated, and the structure is logical.

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

Completeness4/5

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

Given one required parameter, no output schema, and no annotations, the description covers the essential call semantics, response shape, and known edge cases. It doesn't explain return values in exhaustive detail, but it provides enough for an agent to call the tool and interpret the response. The main gap is not specifying the exact player identifier format, but overall it is reasonably complete for a simple one-parameter tool.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It explains that 'player' identifies the account and that the response contains per-region counts for that account. However, it doesn't add details about the player parameter format, whether it's a username or account name, or any constraints beyond minLength 1. The description adds some meaning but leaves the parameter semantics partially underspecified.

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

Purpose4/5

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

The description states a specific verb and resource: 'Return the per-region plot counts reported for one account.' It also clarifies the historical name and that the response contains region rows rather than individual land records, which distinguishes it from land_deed_by_plot and land_deed_by_uid. It doesn't explicitly name a sibling alternative, but the scope is clear enough to differentiate it from the many land-related siblings.

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

Usage Guidelines3/5

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

The description implies usage: call it with one account to get per-region plot counts. It does not explicitly state when to use this tool versus alternatives like land_deeds_search or land_regions_counts, nor does it state exclusions. The context about unrecognized accounts and query probes gives some practical guidance, but no explicit when-to-use or when-not-to-use guidance is present.

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

land_lineup_estimateA
Read-onlyIdempotent

Optionally supply up to ten uniquely labelled comparisons, each with a complete lineup snapshot, to evaluate alternatives alongside the baseline in one offline call. Each result retains its own validity; any invalid result sets isError while valid alternatives remain available. Alternatives are independent, not sequential moves. Offline deterministic Land what-if for Grain/Wood/Stone/Iron worksites. Supply an ordered worker snapshot (UID, detail ID, level, base PP, element and bloodline), plot terrain and efficiency, Power Core, optional Runi and item boost fractions. Bare UIDs cannot be resolved offline. Known edition-19 abilities use the dated resource; other workers require explicit ability tuples or an empty array. Returns raw/capped Base, Boostable and Total PP, gross resource/hour, food/hour, cap losses, ability activation and validity checks. Five ordinary slots with Core/Energized; Runi alone powers four plus itself. No HTTP, signing, ownership or live staking validation. Supply exactly one of plot.efficiency or regional_power (staked_dec, current_required_dec including this plot, current_plot_required_dec). Regional mode also needs each worker’s raw land_dec_stake_needed before cap/discount; it replaces old plot demand with the estimated new demand and holds all other plots unchanged. Output reports per-worker/plot demand, regional efficiency and shortfall. Runi needs no plot DEC and runs at full efficiency. Neutral workers have zero terrain modifier; dual-element workers use the better modifier. Terrain eligibility is checked for all four resources. Castles/Keeps, SPS and Research are outside this current estimator. Public-client formula evidence is dated; use an agreeing land_lineup_snapshot baseline for live comparisons.

ParametersJSON Schema
NameRequiredDescriptionDefault
plotYes
runiNo
workersYes
power_coreYes
comparisonsNo
title_boostNo
totem_boostNo
regional_powerNo

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already mark it read-only, idempotent, and non-destructive. The description adds substantial behavioral detail: alternatives are independent, invalid comparisons set isError while valid ones remain, bare UIDs cannot be resolved offline, edition-19 abilities use dated data, regional mode replaces only the target plot demand, and Runi behaves differently from normal workers. 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.

Conciseness4/5

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

The description is dense and packed with unique, useful information; nearly every sentence adds value. However, it is a single long wall-of-text rather than a structured or front-loaded explanation, which makes it harder to scan quickly.

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

Completeness4/5

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

Given the high complexity, zero schema coverage, and no output schema, this description is remarkably complete: it explains input requirements, regional mode specifics, output values, error behavior, exclusions, and caveats. Minor gaps remain around exact output structure and a few nested input fields, but nothing critical 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 description coverage is 0%, so the description carries the burden. It adds meaningful semantics for comparisons, workers, plot efficiency vs regional_power, land_dec_stake_needed, Runi, and item boosts. It does not spell out every parameter group (e.g., runi's required fields, title_boost/totem_boost exact structure, base_cap), so it is strong but not exhaustive.

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

Purpose5/5

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

The description states a specific verb and resource: it is an 'offline deterministic Land what-if for Grain/Wood/Stone/Iron worksites'. It also explains the comparison capability and explicitly distinguishes itself from land_lineup_snapshot, which is for live comparisons.

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

Usage Guidelines4/5

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

It provides clear context: this is offline, deterministic, and does not perform HTTP, signing, or live staking validation. It names land_lineup_snapshot as the alternative for live comparisons and lists exclusions (Castles/Keeps, SPS, Research). However, it stops short of an explicit 'use this when / use that when' formulation.

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

land_lineup_snapshotA
Read-onlyIdempotent

Gather an explicit player's current Grain/Wood/Stone/Iron plot and selected candidate cards for land_lineup_estimate. Supply exactly one numeric/display plot_id or deed_uid. Select up to ten card detail IDs or twenty UIDs; current workers are always included. At most ten logical GETs, including one bounded-memory full collection stream; no automatic pagination or per-card lookup loops. Fetches deed, worker/project/plot facts, regional DEC, Power Core availability, definitions and up to 200 owner deeds for verified candidate locations. At most 100 matching cards; a larger selection is refused. Returns an estimator-ready baseline only when identity and backend production checks agree, candidate eligibility caveats, verified locations where returned, and per-source freshness. Reads are not atomic. Missing, cooling-down or unsupported cards are not presented as ready to stake. No stake changes are performed; Land stake changes remain scoped per plot.

ParametersJSON Schema
NameRequiredDescriptionDefault
playerYes
plot_idNo
deed_uidNo
candidate_uidsNo
candidate_card_detail_idsNo

TDQS

A4.6/5.0
Behavior5/5

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

The description goes far beyond the annotations with concrete operational details: 'At most ten logical GETs, including one bounded-memory full collection stream; no automatic pagination or per-card lookup loops,' plus limits like 'up to 200 owner deeds' and 'At most 100 matching cards; a larger selection is refused.' It also discloses non-atomicity ('Reads are not atomic') and that missing cards are not presented as ready to stake – all valuable behavioral context beyond the simple readOnlyHint flags.

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

Conciseness4/5

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

The description is dense but each sentence earns its place: purpose, input constraints, operational limits, data fetched, output condition, and safety guarantee. It is front-loaded with the primary purpose and uses precise, no-nonsense language. It is slightly longer than average but justified by the tool's multifaceted behavior.

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

Completeness5/5

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

Given the complexity (5 parameters, no output schema, 0% schema coverage), the description is remarkably complete. It covers input selection rules, internal execution limits, what data is fetched, output shape ('estimator-ready baseline'), edge-case behavior (missing cards, non-atomic reads), and explicitly states that no stake changes occur. An agent would be well-equipped to call this tool without further context.

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

Parameters4/5

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

With 0% schema description coverage, the description must compensate – and it does. It explains the interaction between plot_id/deed_uid ('Supply exactly one... or...'), differentiates candidate_uids vs candidate_card_detail_ids ('up to ten card detail IDs or twenty UIDs'), and adds semantic detail like 'current workers are always included.' It doesn't explicitly map 'player,' but that parameter is trivially self-explanatory.

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

Purpose5/5

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

The description states a specific verb and resource – 'Gather an explicit player's current Grain/Wood/Stone/Iron plot and selected candidate cards' – and explicitly ties it to the land_lineup_estimate sibling toolnovel. It also differentiates itself from stake-changing tools by noting 'No stake changes are performed,' making its role unambiguous.

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

Usage Guidelines4/5

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

The description clearly conveys its use as a preparatory step for land_lineup_estimate and imposes explicit input constraints ('Supply exactly one numeric/display plot_id or deed_uid,' 'Select up to ten card detail IDs or twenty UIDs'). It does not explicitly name alternatives or say when *not* to use it, but the reference to the estimator and the 'No stake changes' disambiguate it from stake-related siblings.

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

land_liquidity_allrewardsA

List the 12 real (token, liquidity_pool_id) reward-total pairs returned by GET /land/liquidity/allrewards. DEC appeared once for each of the six observed pools, and each pool's own resource token appeared once. reward_total and liquidity_pool_id are JSON numbers and token is a string. This tool returns the rows unchanged and does not derive totals or pool membership.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It proactively discloses that the tool 'returns the rows unchanged and does not derive totals or pool membership,' and explains the observed pool/reward pattern. This is valuable beyond the tool's name and schema.

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

Conciseness4/5

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

The description is well-structured, starting with the primary action and then providing detail. A couple of sentences are somewhat verbose (e.g., the six-pool explanation), but each sentence adds meaningful context without redundancy.

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

Completeness5/5

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

Despite having no output schema and no annotations, the description fully specifies what is returned: exact row count, field types, and behavioral guarantees. For a zero-parameter list tool, this is complete and sufficient for an agent to understand the result.

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

Parameters4/5

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

There are zero parameters, so the baseline is 4. The description does not need to add parameter meaning. It does clarify the data types and row composition, which compensates for the absence of an output schema.

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

Purpose4/5

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

The description clearly states the verb 'List' and the resource: 'the 12 real (token, liquidity_pool_id) reward-total pairs' from GET /land/liquidity/allrewards. It is specific and distinct in content, though it does not explicitly compare against sibling tools.

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

Usage Guidelines2/5

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

No guidance is given about when to use this tool versus alternatives. While the endpoint is unique among siblings, the description does not mention selection criteria, use cases, or exclusions, leaving the agent to infer usage from the name alone.

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

land_liquidity_pool_by_idA

Get one liquidity-pool object by id, as GET /land/liquidity/pools/{id} returns it. A real id returned a single object with a narrower field set than the list route, omitting the one-day and thirty-day volume fields. An unknown well-formed id returned HTTP 200 with data:null, while a malformed id returned HTTP 400; these are distinguishable upstream outcomes. The object fields retain the mixed wire types observed on the list route: resource_quantity, dec_quantity and total_shares are JSON strings, while prices are JSON numbers. This server returns the upstream response unchanged and does not turn data:null into an error or manufacture a pool object.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries full disclosure burden. It thoroughly discloses return field omissions, type inconsistencies (strings vs numbers), error handling (data:null vs 400), and the server's pass-through behavior. No contradictions; every behavioral trait is explained.

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

Conciseness5/5

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

Every sentence earns its place: the purpose is front-loaded, behavioral nuances are grouped logically, and there is minimal redundancy. The description is detailed but efficient, fitting several critical facts into a compact paragraph.

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

Completeness5/5

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

For a tool with no annotations and no output schema, this description is remarkably complete. It covers the return shape, field types, error semantics, and upstream behavior, leaving little for an agent to infer. It also explains the difference from the list route, which is essential for correct selection.

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?

The single parameter 'id' is covered by the schema with type and minimum, and the description adds context about how different id validity states affect the response, effectively giving semantic meaning beyond the raw schema. Since schema coverage is 0%, this compensation is valuable.

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?

States a precise verb ('Get') and resource ('liquidity-pool object by id'), and explicitly distinguishes it from the list route by noting it returns a single object with a narrower field set. The route pattern is given, making the tool's purpose unambiguous and differentiated from siblings like land_liquidity_pools.

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

Usage Guidelines4/5

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

Provides clear behavioral expectations for different id scenarios (real, unknown well-formed, malformed) and explains the resulting HTTP outcomes, which guides usage. However, it does not explicitly name alternative tools (e.g., land_liquidity_pool_by_symbol) or state when to prefer this over them, though the 'by id' nature is implicit.

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

land_liquidity_pool_by_symbolA

Get one liquidity-pool object by symbol, as GET /land/liquidity/poolsbysymbol/{symbol} returns it. All five tested casings GRAIN, grain, Grain, VOUCHER and voucher returned the correct matching pool; this records five observed working casings and is not a general rule about every possible input. An unknown symbol returned HTTP 200 with data:null. The object fields retain the mixed wire types observed on the list route: resource_quantity, dec_quantity and total_shares are JSON strings, while prices are JSON numbers. This server sends the symbol as supplied, returns the upstream response unchanged and does not manufacture a pool object.

ParametersJSON Schema
NameRequiredDescriptionDefault
symbolYes

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations to carry safety or behavior, the description fully shoulders the burden and does so richly: it documents case-sensitivity observations with five concrete examples, notes that they are not a general guarantee, reports the unknown-symbol HTTP 200/data:null response, and calls out the mixed JSON string/number wire types and pass-through behavior.

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

Conciseness4/5

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

The description is dense but efficient, with all four sentences adding behavioral value and the main purpose front-loaded in the first sentence. It is longer than strictly necessary, but no sentence is filler given the lack of annotations and output schema.

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

Completeness5/5

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

For a single-parameter lookup with no annotations and no output schema, this is complete: it covers the lookup key, the endpoint contract, edge-case behavior, and the response's wire types. An agent can invoke it correctly and interpret the result without additional context.

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

Parameters4/5

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

The schema only describes 'symbol' as a non-empty string, so the description adds meaningful semantics: it supplies observed working casings (GRAIN, grain, Grain, VOUCHER, voucher), warns that casing behavior is not guaranteed for unobserved inputs, and explains how the server treats the supplied symbol. It does not enumerate every valid value, but compensates well for the 0% schema coverage.

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

Purpose5/5

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

The description opens with a specific verb ('Get one liquidity-pool object') and a precise lookup key ('by symbol'), then names the exact upstream route. This leaves no ambiguity about what the tool returns and how it is addressed, and it is clearly distinct from list-level and by-id pool tools.

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

Usage Guidelines4/5

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

The intended use is evident: when a caller has a single symbol and wants the corresponding liquidity pool. It does not explicitly name sibling alternatives or state when not to use it, but the 'by symbol' framing and endpoint path provide clear context without exclusions.

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

land_liquidity_poolsA

List the six liquidity-pool rows the upstream returns, as GET /land/liquidity/pools returns them. A successful response is {status, data}, where data is an array of pool objects. The wire types are intentionally mixed: resource_quantity, dec_quantity and total_shares are JSON strings, while resource_price and the resource and DEC volume fields are JSON numbers. This server returns every field exactly as received; it does not convert the string-valued decimals, and a wire-type change would be reported as a malformed response rather than converted silently. The six observed rows had ids 1, 34, 67, 68, 69 and 100 with symbols GRAIN, VOUCHER, WOOD, STONE, IRON and SPS. This tool reports the rows returned by the upstream and does not derive prices, volumes or shares.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior4/5

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

With no annotations present, the description carries a heavy behavioral burden and meets it well: it discloses mixed wire types, pass-through behavior, non-conversion, malformed-response handling, and non-derivation. It still lacks explicit side-effect/read-only guarantees, but the 'report' language implies read-only; the detail is substantial.

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

Conciseness3/5

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

The description is front-loaded with the purpose but then extends into several long sentences with overlapping messages (e.g., 'as the native returns' appears twice via first and last sentences, and 'does not derive' tracks the same as earlier statement). As a result it feels a bit detailed, though mostly informative.

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

Completeness4/5

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

Given that there is no output schema and no annotations, the description covers the response shape, field types, known values and non-conversion behavior. It does not fully enumerate all pool object fields, but for a zero-parameter, read-only-list tool, it is sufficiently complete to invoke and understand the response. Minor gaps like error behavior beyond malformed-rate changes remain.

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?

The schema has zero parameters, so the baseline is 4. The description adds the GET endpoint context and confirms the tool takes no arguments indirectly, but there is nothing else needed for parameters. It does not need to add param-level semantics since none exist.

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

Purpose5/5

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

The description explicitly states 'List the six liquidity-pool rows' and references the upstream endpoint GET /land/liquidity/pools, clearly identifying both verb and resource. This distinguishes it from siblings like land_liquidity_pool_by_id and land_liquidity_pool_by_symbol, and it further clarifies what it does not do (derivation).

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

Usage Guidelines3/5

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

The description implies the tool is for retrieving the full list of six liquidity pools, but it never explicitly mentions it should be used over `land_liquidity_pool_by_id`/`by_symbol` for single-pool lookup, nor does it provide when/when-not guidance. The context is clear but not explicit about alternatives.

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

land_liquidity_quoteA

Get the best route in this liquidity family: a genuine linear, pool-specific quote from GET /land/liquidity/quote/{poolId}. resource_amount and dec_amount are optional inputs and the response carries both quoted amounts. The relationship was verified arithmetically from observed pairs: at the values tested, doubling dec_amount from 100 to 200 exactly doubled resource_amount from 12144.988 to 24289.976, and the relationship held at 1e14. This is an observed relationship at those tested values, not a formula this project has verified across the whole input range. Pool ids 1, 34 and 67 returned different quotes for the same amount. Zero and negative amounts clamp to 0/0, non-numeric amounts return HTTP 400, and an unknown well-formed pool returns 0/0. The one trap is that supplying both resource_amount and dec_amount silently lets resource_amount win, so a caller providing both receives an answer to only one of their questions. This tool reports the upstream quote unchanged.

ParametersJSON Schema
NameRequiredDescriptionDefault
poolIdYes
dec_amountNo
resource_amountNo

TDQS

A4/5.0
Behavior5/5

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

With no annotations, the description must carry all behavioral disclosure, and it does: it discloses the observed linear relationship and its limits, different quotes across pools, clamping of zero/negative values, HTTP 400 for non-numeric amounts, 0/0 for unknown pools, and the precedence trap when both amounts are supplied. It also states the tool reports the upstream quote unchanged, giving a clear behavioral contract.

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

Conciseness4/5

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

The essential purpose is front-loaded in the first sentence, and every subsequent sentence provides a distinct behavioral fact rather than filler. The description is long but earns its length with edge-case and empirical information, though it is a dense wall of text that would benefit from bullets or clearer separation of caveats.

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

Completeness4/5

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

For a tool with no annotations and no output schema, this description covers a great deal: input options, the response carrying both quoted amounts, edge cases, and the one-input-wins trap. It is slightly incomplete only around what happens when neither amount is supplied and around the exact response shape, but overall an agent could call this correctly with high confidence.

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 0%, so the description compensates by explaining resource_amount and dec_amount are optional, describing the multiplicative relationship between them, and documenting the precedence trap. It does not define the exact token semantics of each field or the behavior when neither amount is supplied, but it adds substantial meaning beyond the bare JSON schema.

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

Purpose4/5

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

The opening sentence names a specific action and target ('Get the best route... pool-specific quote from GET /land/liquidity/quote/{poolId}'), so the tool's core function is unmistakable. It is not a tautology and conveys more than the name. However, it never names a sibling tool or the exact conditions that separate this quote tool from the other land_liquidity_* endpoints, so it falls short of a 5.

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

Usage Guidelines3/5

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

The description implies the tool is for obtaining a pool-specific quote, and the rich behavioral notes tell the agent what to expect. But it contains no explicit 'use when...' / 'instead of...' guidance or mention of any alternative, so it does not actively route the agent among the many sibling liquidity tools.

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

land_liquidity_regionA

Get one row per region from GET /land/liquidity/region/{player}, a pivot of six per-token calls to GET /land/liquidity/resources/{player}/{token}. Relative to that named per-token route, this gains plots_owned and a human-readable region name available from no other measured route, while losing each per-record id, created_date and last_updated_date. It is therefore a one-call regional summary that removes fan-out; choose the per-token route when those record metadata fields are needed. An unknown or case-mismatched player returns a genuine empty array. This tool returns the upstream rows unchanged.

ParametersJSON Schema
NameRequiredDescriptionDefault
playerYes

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations provided, the description carries the full disclosure burden and meets it: it explains the pivot/fan-out behavior, discloses the empty-array edge case for unknown or case-mismatched players, and explicitly states that upstream rows are returned unchanged. This goes well beyond the minimum.

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

Conciseness5/5

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

The description is information-dense yet tightly organized: main function, comparison, selection rule, edge case, and pass-through behavior. Every sentence contributes unique value, and the most important routing guidance appears prominently.

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

Completeness5/5

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

For a one-parameter tool with no output schema, the description covers what an agent needs: endpoint, result shape, sibling distinction, trade-offs, when to choose the alternative, and edge-case behavior. Nothing essential for correct invocation 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 0%, so the description must compensate. It references the {player} path parameter, ties it to the endpoint, and notes case-mismatch behavior. It does not elaborate on player format or constraints beyond the schema, but for a single self-explanatory parameter this is sufficient.

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

Purpose5/5

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

The description states a specific resource and action: 'Get one row per region from GET /land/liquidity/region/{player}' and immediately differentiates it from the related per-token route. It clearly names what the tool returns and how it relates to sibling land_liquidity_resources, leaving no ambiguity.

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?

It explicitly contrasts this tool with the named per-token route, listing what is gained (plots_owned, human-readable region name) and what is lost (id, created_date, last_updated_date), and gives a direct selection rule: choose the per-token route when record metadata is needed. This is exemplary when-to-use guidance.

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

land_liquidity_resourcesA

List per-region resource rows from GET /land/liquidity/resources/{player}/{token}. This route validates properly: a garbage player, a garbage token and both garbage returned genuine empty arrays with no synthesised entry. token matching is case-sensitive. GRAIN, WOOD, STONE, IRON, RESEARCH and AURA were observed; the set is not declared exhaustive. Each row carries id, region_name, region_number, region_uid, player, amount, resource_symbol, created_date and last_updated_date, and this tool returns those fields unchanged.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenYes
playerYes

TDQS

A3.5/5.0
Behavior4/5

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

With no annotations, the description carries the full transparency burden and delivers: it reveals behavior for garbage inputs (genuine empty arrays, no synthesised entry), token case-sensitivity, observed resource symbols, and the pass-through of fields unchanged. It omits explicit error handling or auth notes, but the coverage for a simple read route is strong.

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

Conciseness4/5

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

The description packs the endpoint, validation findings, case-sensitivity, observed resource symbols, and a full field list into a compact set of sentences. It is front-loaded with the route and has no filler, though the validation narrative is slightly dense.

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

Completeness4/5

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

Given no output schema, the description enumerates all row fields and confirms they are returned unchanged, which is critical for invocation. It also covers edge cases for invalid parameters. Missing error conditions or authentication details, but for a simple list tool the context is largely complete.

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

Parameters3/5

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

Schema coverage is 0%, so the description must compensate. It identifies player and token as path parameters and notes token case-sensitivity, but it never defines what constitutes a valid player identifier or what token represents (e.g., API key vs. auth token). This is partial compensation, not full clarity.

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

Purpose4/5

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

The description clearly states the tool lists per-region resource rows from a specific GET endpoint, with a precise route template. It does not explicitly differentiate this from the many land_resources_* and land_liquidity_* siblings, but the route and naming provide strong context.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus similar alternatives. It describes the endpoint and validation behavior but never states a selection condition or names any exclusion context.

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

land_power_core_availableA

Read available Power Core item IDs for an explicit player and deed. Restricted to the verified STK-LND-PCR stake type. A populated public-client-shaped query was observed; earlier other-account empty results remain valid. Preserve UIDs. One bounded page; no automatic continuation. Availability is point-in-time API evidence, not a guarantee that a later stake action will succeed. No staking or bulk stake-change operation is performed. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. The ids list are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields. Supply exactly one plot_id (numeric or display label) or deed_uid; the original UID spelling is also accepted. Reference resolution may add one verified deed GET before the target GET, with a hard two-request limit. Populated resolved results include all three plot identities and resolution freshness.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
limitYes
offsetYes
playerYes
deedUidNo
plot_idNo
deed_uidNo
stakeTypeUidNoSTK-LND-PCR
item_detail_idNo

TDQS

A3.7/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of disclosure, and it does so thoroughly. It specifies exact request counts ('Makes one logical GET request', 'may add one verified deed GET ... hard two-request limit'), pagination behavior ('One bounded page; no automatic continuation'), data limits ('100 rows and 256 KiB, with truncation reported'), error behavior ('Oversized records are refused'), and the point-in-time nature of availability. It also clarifies that no staking or bulk operation is performed, removing ambiguity about side effects.

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

Conciseness4/5

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

The description is long but dense, with each sentence conveying a distinct operational detail relevant to calling the tool correctly. It is front-loaded with the core purpose and then systematically covers constraints, limits, resolution behavior, and output characteristics. While not minimal, the verbosity is justified given the tool's complexity and lack of annotations.

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

Completeness4/5

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

Given the complexity (9 parameters, no output schema, no annotations), the description is admirably complete. It covers request limits, resolution freshness, truncation, and even warns about point-in-time data. The main omission is a structured description of the response format beyond mentions of 'ids list' and metadata, but it does note that populated results include plot identities and freshness. Overall, it is nearly sufficient for an agent to invoke the tool safely and correctly.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It does add meaning for plot_id and deed_uid ('Supply exactly one plot_id (numeric or display label) or deed_uid; the original UID spelling is also accepted') and clarifies that other filters are forwarded without implied effectiveness. However, it does not explain parameters like name, item_detail_id, or the exact role of offset/limit beyond the implicit page bound. Coverage is partial, leaving several parameters underspecified.

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

Purpose4/5

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

The description opens with 'Read available Power Core item IDs for an explicit player and deed' – a clear verb+resource specifying exactly what the tool does. It further scopes the operation to the STK-LND-PCR stake type, which distinguishes it from other land tools. However, it does not explicitly name sibling tools such as land_power_core_grouped, so the differentiation is implicit rather than explicit.

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

Usage Guidelines2/5

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

The description gives constraints (

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

land_power_core_groupedA

Read grouped available Power Core item counts for an explicit player and deed. Restricted to the verified STK-LND-PCR stake type. A populated public-client-shaped query was observed; earlier other-account empty results remain valid. Preserve item_detail_id, name, item_count and string boost. One bounded page; no automatic continuation. Availability is point-in-time API evidence, not a guarantee that a later stake action will succeed. No staking or bulk stake-change operation is performed. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. The items list are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields. Supply exactly one plot_id (numeric or display label) or deed_uid; the original UID spelling is also accepted. Reference resolution may add one verified deed GET before the target GET, with a hard two-request limit. Populated resolved results include all three plot identities and resolution freshness.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
limitYes
offsetYes
playerYes
deedUidNo
plot_idNo
deed_uidNo
order_byYes
order_by_ascYes
stakeTypeUidNoSTK-LND-PCR
item_detail_idNo

TDQS

A4.6/5.0
Behavior5/5

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

The description discloses many behavioral traits beyond annotations: one bounded page with no auto-continuation, point-in-time API evidence not a guarantee, no staking operation, one logical GET request, local limits of 100 rows and 256 KiB with truncation reporting, oversized records refused, and reference resolution may add one verified deed GET with a hard two-request limit. This is exceptionally transparent.

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

Conciseness4/5

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

The description is dense but every sentence adds value. It front-loads the core purpose and then covers behavioral constraints. It's longer than ideal but packed with necessary caveats for correct invocation.

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

Completeness5/5

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

Given the tool's complexity (11 params, no output schema, no annotations), the description covers purpose, parameter selection, behavioral limits, and error handling. The only minor gap is not describing the exact output shape, but the description mentions what fields are preserved (item_detail_id, name, item_count, string boost) and truncation reporting.

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 description coverage is 0%, so the description must compensate. It explains the key parameter semantics: supply exactly one plot_id (numeric or display label) or deed_uid, original UID spelling accepted, required inputs reflect tool policy and measured upstream requirements, other declared filters are forwarded as supplied with effectiveness not implied. It doesn't detail every parameter but covers the critical ones.

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

Purpose5/5

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

The description clearly states the tool reads grouped available Power Core item counts for an explicit player and deed, restricted to the STK-LND-PCR stake type. It distinguishes itself from siblings like land_power_core_available by emphasizing the grouped nature and explicit player/deed requirement.

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

Usage Guidelines4/5

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

The description provides clear context on when to use this tool: for reading grouped available Power Core counts with an explicit player and deed, restricted to STK-LND-PCR. It notes that no staking or bulk stake-change is performed, which helps differentiate from mutation tools. However, it doesn't explicitly name alternative tools for other scenarios.

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

land_projects_activeA

Get the land project record the upstream reports as active for one deed uid. A deed with no active project is a successful answer with no record, not a failure. Supply exactly one plot_id (numeric or display label) or deed_uid; the original UID spelling is also accepted. Reference resolution may add one verified deed GET before the target GET, with a hard two-request limit. Populated resolved results include all three plot identities and resolution freshness.

ParametersJSON Schema
NameRequiredDescriptionDefault
plot_idNo
deed_uidNo

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and does so well. It discloses that no active project is a successful empty response, that reference resolution may add one verified deed GET before the target GET, and that a hard two-request limit applies. It even previews the resolved output contents, which is especially valuable without an output schema.

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

Conciseness5/5

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

The description is front-loaded with the core purpose and each additional sentence adds distinct value: empty-result semantics, input selection, resolution overhead, and output contents. There is no redundancy or filler.

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

Completeness4/5

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

For a simple lookup tool with no output schema, the description covers the essentials: input constraints, empty-result interpretation, request-limit behavior, and key output fields. It could be slightly more explicit about what 'all three plot identities' are and what 'resolution freshness' means, but nothing critical 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?

Since schema description coverage is 0%, the description must compensate, and it does. It clarifies that exactly one of plot_id or deed_uid should be supplied, that plot_id may be numeric or a display label, and that the original UID spelling is accepted. It stops short of fully defining 'display label' or 'original UID spelling,' but the added meaning is substantial.

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

Purpose5/5

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

The description uses a specific verb ('Get'), names the resource ('land project record'), and scopes it to 'the upstream reports as active for one deed uid.' This clearly distinguishes it from related tools like land_projects_history or land_projects_count by emphasizing 'active' and 'one deed uid.'

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

Usage Guidelines4/5

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

It gives strong operational guidance: supply exactly one plot_id or deed_uid, and clarifies that a deed with no active project is a successful empty result. It does not explicitly name alternatives or exclusions, but the context makes when to use the tool clear.

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

land_projects_countA

Get the count of land project records the upstream reports for one deed uid. This is one call and returns the upstream's count only, not the records. Whether that count covers exactly the records the history tool returns has not been verified. Supply exactly one plot_id (numeric or display label) or deed_uid; the original UID spelling is also accepted. Reference resolution may add one verified deed GET before the target GET, with a hard two-request limit. Populated resolved results include all three plot identities and resolution freshness.

ParametersJSON Schema
NameRequiredDescriptionDefault
plot_idNo
deed_uidNo

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations provided, the description carries the full behavioral burden, and it delivers: it discloses this is 'one call,' that reference resolution 'may add one verified deed GET before the target GET' with 'a hard two-request limit,' and that populated resolved results 'include all three plot identities and resolution freshness.' It even surfaces a correctness caveat about count coverage. This is unusually rich disclosure for a count endpoint.

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

Conciseness4/5

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

The description is dense but front-loaded with the core purpose in the first sentence, then layers usage, behavioral, and caveat details in logical order. No sentence is wasted; even the verification caveat earns its place by warning the agent about potential mismatch with the history tool. It is longer than typical but every clause carries signal, so the length is justified.

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

Completeness4/5

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

For a count tool with two optional parameters and no output schema, the description is nearly complete. It states the return is 'the upstream's count only' and describes the resolved-result content. The one gap is the exact return shape—whether the count is a bare integer or wrapped in an object—which is not stated and no output schema exists to fill the gap.

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 description coverage is 0%, so the description must compensate, and it does. It clarifies that plot_id accepts a numeric or display label, that deed_uid accepts the 'original UID spelling,' and that exactly one of the two must be supplied—an exclusivity constraint the schema itself does not express. It explains the reference-resolution side effect of a possible extra GET. Only the integer-versus-string nuance of plot_id is partially implicit rather than explicit.

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

Purpose5/5

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

The description opens with a specific verb-resource-scope statement: 'Get the count of land project records the upstream reports for one deed uid.' It explicitly distinguishes itself from the history sibling by stating it returns 'the upstream's count only, not the records' and even flags that the count's coverage versus the history tool 'has not been verified.' An agent can tell this apart from land_projects_history and land_projects_active without opening their schemas.

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

Usage Guidelines4/5

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

The description gives clear invocation guidance: 'Supply exactly one plot_id (numeric or display label) or deed_uid,' establishing the one-of parameter requirement and accepted input formats. It implicitly routes count-seeking agents here versus the history tool for record retrieval, though it never names an explicit alternative. The caveat that count coverage against the history tool is unverified is a useful when-to-trust signal.

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

land_projects_historyA

List the land project records the upstream returns for one deed uid. The recorded history probes were a bare request, offset=1, limit=2, and limit=2&offset=2: limit=2 narrowed from the start, while offset=1 and offset=2 did not reach later rows in those requests. This answer is additionally bounded to at most 100 rows and 256 KB by this server; if it is cut for that reason, the response reports that local bound. The project-count tool returns the count the upstream reports for this deed; whether that count covers exactly the records this tool would return has not been verified. Supply exactly one plot_id (numeric or display label) or deed_uid; the original UID spelling is also accepted. Reference resolution may add one verified deed GET before the target GET, with a hard two-request limit. Populated resolved results include all three plot identities and resolution freshness.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
plot_idNo
deed_uidNo

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses several non-obvious behaviors: the offset quirk (offset did not reach later rows in probes), the local limits (100 rows, 256 KB) and that the response reports the bound if cut, the possible extra verified deed GET with a two-request limit, and that resolved results include plot identities and freshness. These go beyond a simple 'list records' and are valuable for the agent to set expectations. It does not mention side effects (none expected) or authentication, but the disclosed behaviors are substantial.

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

Conciseness3/5

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

The description is longer than necessary, including a detailed account of probe history ('The recorded history probes were a bare request, offset=1, limit=2...'). While this information is relevant, it could be condensed to 'offset may not behave as expected; limit works.' The core purpose is front-loaded, but the middle section is dense and could be streamlined. It is not excessively verbose, but it lacks the crispness of the best examples.

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

Completeness3/5

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

The description covers many aspects: purpose, parameters, bounds, and extra requests. However, it does not describe the output structure. With no output schema, the agent is left guessing what fields a 'land project record' contains. It does hint at some fields (plot identities, freshness) but not the full record. Given the complexity of the tool (4 parameters, no required ones, no output schema), the description is fairly complete on behavior but incomplete on the return format, which is a notable gap.

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 0%, so the description must compensate. It clarifies that exactly one of plot_id or deed_uid must be supplied, and explains acceptable formats: plot_id can be numeric or display label, deed_uid is a string, and 'original UID spelling is also accepted.' It also gives behavioral hints about limit (narrowed from start) and offset (did not reach later rows), which helps the agent understand their effect. It does not explicitly define the meaning of limit/offset beyond the quirk, but it provides enough guidance for correct invocation.

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

Purpose4/5

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

The first sentence states the core action: 'List the land project records the upstream returns for one deed uid.' This is a clear verb+resource and specifies the scope (one deed uid). It distinguishes from sibling tools like land_projects_count and land_projects_active, though it doesn't explicitly contrast with all of them. The phrasing 'the upstream returns' is slightly indirect but understandable. Overall, purpose is clear and specific.

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

Usage Guidelines4/5

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

The description provides usage context: it says to supply exactly one plot_id or deed_uid, which is essential. It references the sibling land_projects_count and notes that its count may not match this tool's results, giving a clear alternative. It also mentions the server-side bounds (100 rows, 256 KB) which affect usage. However, it does not explicitly exclude other related tools (e.g., land_projects_active) or state when to choose this over them, so it's not exhaustive.

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

land_projects_requirementsA

List the work requirement rows the upstream reports for one deed uid. Some deeds return no rows at all. A row's projected hours and projected end are the upstream's own values, and they can be far in the future: this repository observed rows carrying a projected end roughly five thousand years ahead. This server does not interpret those values and does not treat them as a schedule. Supply exactly one plot_id (numeric or display label) or deed_uid; the original UID spelling is also accepted. Reference resolution may add one verified deed GET before the target GET, with a hard two-request limit. Populated resolved results include all three plot identities and resolution freshness.

ParametersJSON Schema
NameRequiredDescriptionDefault
plot_idNo
deed_uidNo

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations, the description fully discloses behavioral quirks: some deeds return no rows, projected values are uninterpreted upstream data that can be centuries ahead, and the server does not treat them as a schedule. It also reveals the reference-resolution side effect and its request limit. This is unusually candid.

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

Conciseness5/5

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

Every sentence earns its place: purpose, empty-result behavior, data reliability, input constraints, side-effect request, and return contents. It is slightly long but not padded, and the primary purpose is front-loaded.

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

Completeness4/5

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

For a tool with no output schema and no annotations, the description covers key operational context: empty results, non-interpreted future values, input alternatives, extra GET behavior, and included resolution fields. It stops short of describing the full response shape, but the most decision-relevant caveats are present.

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 description coverage is 0%, so the description must compensate, and it does: it explains the mutual exclusivity of plot_id and deed_uid, accepts numeric or display-label plot IDs, and accepts original UID spelling. It could add examples or clarify validation, but for two simple parameters this is sufficient.

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

Purpose4/5

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

The description uses a specific verb and resource ('List the work requirement rows') and scopes it to one deed uid, making the tool's core job clear. It does not explicitly contrast with siblings like land_projects_active or land_projects_history, but the resource type is distinctive enough to infer the difference.

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

Usage Guidelines4/5

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

The description gives concrete invocation guidance: supply exactly one plot_id or deed_uid, and notes that original UID spelling is accepted. It also warns about the possible extra verification GET and the two-request cap. It does not name alternatives or state when-not-to-use, but the invocation context is clear.

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

land_regions_countsA

List the 150 region count rows returned by GET /land/regions/counts. The unscoped call returns {status: "success", data: []}, an empty list. When a player is named, the response still carries all 150 regions rather than only that player's regions. Each row contains region.uid, region.name, region.region_number, for_sale, owned, listed, min_price and dec_stake. owned and dec_stake are the named player's fields. An unknown name returned the 150-row shape with owned and dec_stake zero; behaviour for a known account with no holdings was not captured.

ParametersJSON Schema
NameRequiredDescriptionDefault
playerNo
rarityNo
statusNo
geographyNo
plot_typeNo
magic_typeNo
kingdom_typeNo

TDQS

A3.6/5.0
Behavior5/5

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

With no annotations, the description fully discloses behavior: the unscoped call returns an empty list, named player still gets all 150 rows, which fields belong to the player (owned, dec_stake), and the unknown-name edge case. It even notes a limitation (behavior for known account with no holdings not captured). This is transparent and goes beyond basic expectations.

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

Conciseness4/5

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

The description is somewhat lengthy but packed with necessary behavioral detail. It is front-loaded with the core purpose and then expands into response shape and edge cases. Every sentence adds value, though it could be tightened by moving field details to the schema, but it remains well-structured and readable.

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

Completeness2/5

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

For a tool with 7 undocumented parameters and no output schema, the description should explain all parameters to enable correct invocation. It captures response structure and edge cases but omits the meaning of most parameters, making the definition incomplete for an agent to call it correctly. The complexity of the tool is moderate, but the gap in parameter semantics is significant.

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

Parameters1/5

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

Schema coverage is 0% and there are 7 parameters, yet the description explains only the player parameter implicitly. The other six parameters (rarity, status, geography, plot_type, magic_type, kingdom_type) are completely undocumented in the description, leaving the agent unable to determine their meaning or usage. The description fails to compensate for the lack of schema documentation.

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

Purpose5/5

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

The description clearly states the tool lists region count rows from the endpoint GET /land/regions/counts, specifying the fields contained in each row. This is a specific verb+resource and distinguishes it from the many sibling land tools by naming the exact endpoint and data shape.

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

Usage Guidelines3/5

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

The description explains the effect of the player parameter (response always contains 150 regions) but does not explicitly state when to use this tool versus alternatives among the many land tools. It provides behavioral context but no direct comparisons or conditions for choosing this tool over siblings, leaving the agent to infer applicability.

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

land_resources_balances_historyA

List the resource-balance history rows the upstream returns for one account and optional dates, as GET /land/resources/balances/history/{player} returns them. The player is a path segment on this route, not a query parameter. A successful response is {status, data}, where data is an array of rows carrying id, region_number, player, amount, end_balance, operation_id, resource_id, trx_id, created_date, balance_history and counterparty. The numeric fields are JSON numbers, created_date is a timestamp string, balance_history is an array and counterparty is a string; this server returns these fields unchanged and does not convert, round, total or compare them. Both YYYY-MM-DD and full ISO-8601 timestamps were accepted for startDate and endDate and produced identical results for the same calendar range. A malformed date returned HTTP 500, while a far-past date range returned a successful empty array, so this tool does not describe malformed dates as empty or unfiltered results. An unknown player returned HTTP 200 with an empty array; an empty result therefore does not establish that the account exists or does not exist. The default response contained 100 newest rows. limit=1000 and limit=500 returned HTTP 400; limit=3 with offset=0 returned three rows; limit=3 with offset=1, offset=2 and offset=3 returned HTTP 200 with empty arrays. No offset value tried reached rows beyond the newest 100. This tool reports the rows returned by the upstream and nothing else.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
playerYes
endDateNo
startDateNo

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure, and it does so exceptionally. It details response structure, field types, date handling (both accepted formats and identical results), error cases (malformed dates return HTTP 500, unknown player returns empty array), and pagination behavior (limit/offset limits and their results). It also explicitly states the server does not convert, round, total, or compare fields. This is comprehensive and transparent.

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

Conciseness4/5

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

The description is long but every sentence provides meaningful behavioral detail. It is front-loaded with the core purpose, then response format, then edge cases. While it could be tightened, the length is justified by the lack of annotations and the need to cover many edge cases. No sentence is redundant or wasteful.

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

Completeness5/5

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

For a tool with 5 parameters, no output schema, and no annotations, the description is exceptionally complete. It covers the response shape, field types, accepted inputs, error conditions, pagination behavior, and the absence of transformation. An agent would have everything needed to call it correctly and interpret results without further lookup.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate, and it does. It explains startDate and endDate formats and their behavior, describes limit and offset with concrete examples (limit=1000/500 give HTTP 400, limit=3 works), and implies player is the account from the route. It also clarifies that offset values beyond the newest 100 return empty arrays. This adds significant semantic value beyond the bare schema.

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

Purpose5/5

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

The description clearly states a specific verb (list) and resource (resource-balance history rows), and identifies the exact upstream route (GET /land/resources/balances/history/{player}). It distinguishes itself from siblings like the count variant by describing the raw rows and noting 'This tool reports the rows returned by the upstream and nothing else.'

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

Usage Guidelines3/5

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

The description clearly states what the tool does and the context for its use (listing balance history for one account with optional dates), but it does not explicitly mention alternative tools or conditions for when to prefer a sibling like land_resources_balances_history_count. The behavioral details imply a raw-data tool, but there is no direct comparison to other tools, so usage guidance is only implicit.

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

land_resources_balances_history_countA

Get the resource-balance history count the upstream reports for one account and optional dates, as GET /land/resources/balances/history/{player}/count returns it. The player is a path segment on this route, not a query parameter. A successful response is {status, data}, where data is an object carrying count, a JSON number returned unchanged; this server does not convert, round or derive it. The measured count was 721. In the paired list probes, the default returned 100 newest rows, limit=3&offset=0 returned three rows, limit=3&offset=1, limit=3&offset=2 and limit=3&offset=3 returned empty arrays, and limit=500 and limit=1000 returned HTTP 400; those tried list parameters did not expose rows beyond the 100-row default, leaving 621 rows present in the count but absent from those list responses. The count and the list do not contradict each other: the count reports more rows than those responses contain. Whether the count covers exactly what the list would return was not verified, so this tool does not assert that relationship. A far-past date range returned count 0, matching the list route's empty result for the same range, and a malformed date returned HTTP 500. An unknown player returned count 0; that response does not establish that the account exists or does not exist. This tool reports the count returned by the upstream and nothing else.

ParametersJSON Schema
NameRequiredDescriptionDefault
playerYes
endDateNo
startDateNo

TDQS

A3.9/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so exceptionally well. It discloses the response shape, unchanged numeric count semantics, error behaviors for malformed dates and excessive list limits, zero-count cases, and explicitly refuses to overclaim the count-list relationship.

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

Conciseness2/5

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

The front-loaded first sentence is strong and specific, but the middle section becomes verbose with detailed list-probe results such as limit=3&offset=1/2/3 and HTTP 400 cases. Much of this detail is about a different route/parameter set and could be summarized in one or two sentences without losing value.

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

Completeness4/5

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

Given the lack of annotations and output schema, the description provides a remarkably complete picture: route semantics, response shape, error conditions, edge-case counts, and explicit non-assertions. The main remaining gap is the absence of a concrete date format or date-parameter naming, which leaves a small but real invocation ambiguity.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate for missing parameter documentation. It adds meaningful context by clarifying that player is a path segment and that dates are optional, but it never names startDate/endDate directly, provides no date format, and gives only anecdotal behavior about far-past and malformed dates.

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

Purpose5/5

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

The description states a specific verb/resource ('Get the resource-balance history count'), a specific upstream route, and a clear scope of one account with optional dates. It also distinguishes itself from the list counterpart by emphasizing that it returns only the count.

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

Usage Guidelines3/5

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

The tool is clearly positioned as count-only, and the description compares it with paired list probes, giving useful context. However, it never explicitly names the sibling list tool or states a decision rule for when to choose count versus list, so the usage guidance remains implicit rather than explicit.

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

land_resources_fragment_historyA

List the fragment-history rows the upstream returns for one transaction id, as GET /land/resources/fragment_history/{trx_id} returns them. A successful response is {status, data}, where data is an array of rows carrying id, reward_action_id, land_work_type_id, land_project_number, tract_number, region_number, deed_uid, fragment_type, fragment_found, fragment_chance, fragment_roll, trx_id, block_num, created_date, last_updated_date, labors_luck_uid, labors_luck_chance, labors_luck_roll, labors_luck_pool_pick and labors_luck_treasures_left. The numeric fields are JSON numbers and fragment_found is a boolean; this server returns them unchanged and does not convert, round, total or compare them. The nullable fields are returned as received; the response does not state what fragment_chance or fragment_roll measures, and this tool does not interpret them. These rows are not the private history of the deed whose reward-action row supplied the input: in one captured transaction, the two measured rows carried differing deed_uid values, neither matching the source deed, so that transaction id covered records for more than one deed. The rows carried no player field, so this observation makes no claim about players. This is a bounded observation from those two rows in that one transaction, not a claim about every transaction. This route must not be described as that deed's history. A fake transaction id returned data:[] rather than an error, so an empty array establishes neither that the id exists nor that the transaction has no fragment-history rows. No measured route surfaces a trx_id except reward-action rows, so this tool is reachable only by chaining from one of those rows; otherwise a caller has no measured way to obtain its input. This tool reports the rows returned by the upstream and nothing else.

ParametersJSON Schema
NameRequiredDescriptionDefault
trx_idYes

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and does so thoroughly. It discloses the exact response envelope, field list, JSON number vs boolean behavior, no conversion/rounding/interpretation, nullable field handling, empty-array behavior for fake ids, multi-deed observations, and the fact that it reports only upstream rows. This is exceptional transparency for a one-parameter list tool.

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

Conciseness5/5

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

The description is long but every sentence earns its place: response format, field types, non-interpretation, nullability, multi-deed evidence, empty-array caveat, and reachability constraints. It is front-loaded with the purpose and endpoint, and the caveats are ordered logically. The final sentence reinforces scope without becoming padding.

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

Completeness5/5

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

Given no output schema and no annotations, the description fully compensates by documenting the response shape, all notable fields, data types, edge cases, and the only known input source. A caller can correctly invoke the tool and interpret the results without external documentation. Nothing essential 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 0%, so the description must compensate. It explains that trx_id is a transaction id used in the endpoint path, that a fake id returns data:[] rather than an error, and that the only measured way to obtain a valid id is chaining from reward-action rows. It does not give an example format or explicitly define the parameter's lifecycle, but the added context goes well beyond the bare string schema.

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

Purpose5/5

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

The description begins with a specific verb and resource: 'List the fragment-history rows the upstream returns for one transaction id', and names the exact upstream endpoint. This clearly separates it from sibling history tools like land_resources_history or land_resources_rewardactions. The scope is unambiguous: one transaction id, one upstream response shape.

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

Usage Guidelines4/5

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

The description gives strong context on when the tool can be used: it is reachable only by chaining from reward-action rows because no other measured route exposes a trx_id. It also provides clear when-not guidance, such as not describing the route as a deed's history and noting that an empty array proves neither existence nor absence. However, it does not name alternative sibling tools or explicitly state when to prefer one over another.

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

land_resources_historyA

List the resource-history rows the upstream returns for one transaction id, as GET /land/resources/history/{trx_id} returns them. A successful response is {status, data}, where data is an array of rows carrying id, region_number, player, amount, end_balance, operation_id, resource_id, trx_id, created_date, balance_history and counterparty. The numeric fields are JSON numbers, including signed amount values; balance_history is an array; this server returns these fields unchanged and does not convert, round, total or compare them. These rows are not the private history of the deed whose reward-action row supplied the input: in one captured transaction, both measured rows named the same player, that player was not the source deed's owner, and the rows carried no deed identifier, so nothing in the response ties them to that deed. This is a bounded observation from those two rows in that one transaction, not a claim about every transaction. This route must not be described as that deed's history. A fake transaction id returned data:[] rather than an error, so an empty array establishes neither that the id exists nor that the transaction has no rows. No measured route surfaces a trx_id except reward-action rows, so this tool is reachable only by chaining from one of those rows; otherwise a caller has no measured way to obtain its input. This tool reports the rows returned by the upstream and nothing else, and does not claim what any numeric figure means.

ParametersJSON Schema
NameRequiredDescriptionDefault
trx_idYes

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations present, the description carries the full burden and exceeds it: it discloses exact response shape, passthrough behavior (no convert/round/total/compare), empty-array semantics for fake IDs, and the absence of any linkage to a deed. The caveat that 'This route must not be described as that deed's history' prevents misinterpretation.

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

Conciseness2/5

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

The description is a single block of overly long, repetitive caveats. Core facts are buried under repeated disclaimers ('not a claim', 'bounded observation', 'must not be described', 'does not claim what any numeric figure means'). The first sentence earns its place, but most subsequent sentences could be condensed without losing information.

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?

Despite lacking an output schema, the description supplies the full response shape, field names, types, and key runtime behaviors (empty array, no error, unchanged numbers). The input provenance and scope limitations are also covered, so an agent can invoke the tool and interpret results correctly.

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

Parameters4/5

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

Schema coverage is 0%, but the description compensates by explaining that the trx_id comes from a reward-action row and that a fake ID yields an empty array rather than an error. It does not detail format beyond 'transaction id', but provides enough context for correct use.

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?

States a specific verb and resource: 'List the resource-history rows the upstream returns for one transaction id', and even names the HTTP route. It clearly identifies the unique scope (one trx_id) which distinguishes it from other land_resources_* tools that operate on balances or history by different keys.

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

Usage Guidelines4/5

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

Explicitly says 'this tool is reachable only by chaining from one of those rows; otherwise a caller has no measured way to obtain its input', telling the agent when it can be used displacing any ambiguity. It doesn't name alternative sibling tools, but the prerequisite is clear and actionable.

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

land_resources_leaderboardsA

List the resource-leaderboard rows the upstream returns, as GET /land/resources/leaderboards returns them. A successful response is {status, data}, where data is an array of rows carrying rank, player, amount, amount2, resource_per_hour, guild, title_pre, data and id. The numeric fields are JSON numbers, and this server returns them unchanged; it does not convert, round, total or compare them, and a change in their wire type would be reported as a malformed response rather than converted silently. The nested data field is a JSON-encoded string, not an object; this server returns it exactly as received and does not parse it, and a change in that wire type would be reported as malformed rather than converted. The upstream matches resource case-sensitively against its exact symbol. This tool uppercases resource before making the request, but it does not enforce an enum because the observed symbols are not a declared exhaustive set. Omitting resource returned HTTP 400. Omitting region with no territory produced no HTTP response in two measurements and timed out; territory was observed to work standalone without region, so this tool refuses only when both region and territory are absent. That refusal is this server's safety choice based on the observed hang, not an upstream validation rule. Supplying player returned that player's row in addition to the normal top rows. Paging probes supplied offset=0, offset=5, page=2 and from=5; each returned parsed data equal to the limit=5 baseline. limit=50 returned 50 rows whose first five matched that baseline in the same order, and no ceiling was found at the tested limits 5 and 50. No value tried for offset, page or from produced a later slice. This tool reports the rows the upstream returned and nothing else.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
playerNo
regionNo
resourceYes
territoryNo

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure, and it does so exceptionally well. It reveals that numeric fields are returned unchanged without conversion, the nested data field is a JSON string not parsed, resource is uppercased, and the tool refuses when both region and territory are absent due to an observed hang. It also documents paging probe results and malformed-response handling. This is far beyond minimal disclosure.

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

Conciseness4/5

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

The description is a single dense paragraph, not concise in length, but every sentence contributes unique information about behavior, edge cases, or response format. It is front-loaded with the primary purpose and then expands into necessary details. While not structured with bullets or headings, the content is well-organized and each sentence earns its place.

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

Completeness5/5

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

Given the lack of an output schema and annotations, the description is exceptionally complete. It details the response structure, parameter semantics, paging behavior, and even states 'This tool reports the rows the upstream returned and nothing else.' An agent has everything needed to invoke this tool correctly and anticipate its responses.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate. It thoroughly explains each parameter's behavior: resource is required and uppercased, player adds that player's row, region/territory interaction, and limit/offset/page/from behavior. It even notes that no paging parameter produced a later slice. This adds substantial meaning beyond the bare schema properties.

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

Purpose5/5

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

The description clearly states the tool's function: it lists resource-leaderboard rows as returned by the upstream GET endpoint. It names the specific resource (leaderboards) and distinguishes it from sibling tools by the endpoint path. The verb 'List' plus the resource name and explicit reference to the upstream API make the purpose unambiguous.

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

Usage Guidelines3/5

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

The description provides extensive behavioral notes about parameter usage (e.g., omitting resource returns 400, region/territory interaction, paging behavior) but does not explicitly state when to choose this tool over alternatives. It lacks a clear 'use this when...' statement or mention of sibling leaderboard tools like player_leaderboard. The edge-case guidance is useful but does not address tool selection.

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

land_resources_liquidity_swapsA

List the liquidity-swap rows the upstream returns for one player, as GET /land/resources/liquidity/swaps/{player} returns them. A real account returned 682 rows spanning all six observed pool ids. The rows carry numeric ids, quantities and pool quantities, string player/token/transaction fields and timestamp strings; this server returns each row unchanged and does not interpret or total the figures. An unknown player returned HTTP 200 with data:[], a different empty shape from the data:null used by the two pool lookup routes. An empty array therefore establishes neither that the account exists nor that it has no swaps.

ParametersJSON Schema
NameRequiredDescriptionDefault
playerYes

TDQS

A4.1/5.0
Behavior5/5

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

With no annotations, the description fully carries behavioral disclosure. It explicitly states that rows are returned unchanged without interpretation or totaling, describes the field types (numeric ids, quantities, strings, timestamps), and documents the distinct empty-array response for unknown players versus data:null in pool lookups. This is exceptional detail for a read-only listing.

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

Conciseness4/5

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

The description is about 100 words, front-loaded with the core purpose and then adding relevant behavioral details (example row count, field types, edge case). It is not verbose, but the inclusion of the example and empty-array nuance is justified for understanding the response. Minor redundancy in explaining the unchanged rows could be trimmed, but overall it is efficient.

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

Completeness4/5

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

The description covers the response shape (field types), the fact that rows are passed through, and the critical empty-array behavior. It does not mention pagination, sorting, or limits, but for a simple list endpoint with one parameter and no output schema, this is largely sufficient. The absence of an output schema is mitigated by the detailed field description.

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

Parameters3/5

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

The schema only defines 'player' as a required string with minLength 1. The description implies the parameter is the player identifier via the endpoint path and the phrase 'for one player', but it does not explicitly explain what constitutes a valid player (e.g., account name format). Since schema coverage is 0%, the description compensates only implicitly, not with explicit semantics.

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

Purpose5/5

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

The description clearly states the tool's action: 'List the liquidity-swap rows the upstream returns for one player'. It specifies the resource (liquidity swaps), the scope (for one player), and even references the exact endpoint. This distinguishes it from siblings like land_liquidity_pool_by_id or land_resources_history by focusing on player-specific swap rows.

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

Usage Guidelines3/5

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

The description implies when to use the tool (when you need a player's liquidity swaps) but does not explicitly compare it to alternatives or state when not to use it. It provides no exclusions or routing guidance despite many related sibling tools, leaving the agent to infer applicability.

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

land_resources_ownedA

List the resource-holding rows the upstream returns for one account and one resource, as GET /land/resources/owned returns them. A successful response is {status, data}, where data is an array of rows carrying id, region_uid, player, amount, resource_symbol, created_date, last_updated_date, region_name and region_number. All numeric fields are JSON numbers, and this server returns them unchanged; it does not convert, round, total or compare them, and a change in their wire type would be reported as a malformed response rather than converted silently. The upstream matches resource case-sensitively against its exact symbol. This tool uppercases the resource argument before making the request, but it does not enforce an enum: the observed symbols are not an exhaustive set. An unrecognised symbol returns an empty array that this server cannot distinguish from an account owning none of that resource. A missing player or resource produced data:null at HTTP 200 upstream; data:null therefore indicates a missing parameter in that observation rather than an empty holding, and this tool refuses either missing parameter rather than return that response. An empty array is a successful answer and does not establish that the account exists or that the account owns no resource beyond the request's returned rows. This tool reports the rows the upstream returned and nothing else: it does not infer holdings for symbols or regions the response does not list.

ParametersJSON Schema
NameRequiredDescriptionDefault
playerNo
resourceNo

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure and does so thoroughly. It explains response shape, numeric-wire-type preservation, case-sensitive upstream matching, uppercasing behavior, missing-parameter semantics, the meaning of empty arrays, and the absence of inference. This is exemplary transparency.

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

Conciseness4/5

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

The description is long, but almost every sentence earns its place given the absence of annotations and output schema. It opens with the core purpose and response shape, then layers edge-case caveats in a logical order. It is dense rather than bloated.

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?

There is no output schema and no annotation safety profile, yet the description fully explains return values, expected field names, missing-parameter behavior, empty-array semantics, and the tool's intentional refusal to infer. An agent has what it needs to call this tool correctly and interpret results.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must add meaning beyond the bare string properties. It does for both parameters: player is tied to 'one account' and resource receives detailed treatment around uppercasing, exact upstream matching, and non-enum behavior. Player semantics are slightly less explicit, so not a perfect 5.

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

Purpose5/5

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

The first sentence states a specific verb and resource: list resource-holding rows for one account and one resource, matching a named upstream endpoint. This clearly distinguishes it from the many aggregate land_resources_* siblings.

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

Usage Guidelines4/5

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

The description establishes clear context for when this tool is relevant: it is the per-account, per-resource ownership listing tool. It does not explicitly name sibling alternatives or when-not-to-use exclusions, but the purpose is specific enough that an agent can select it confidently.

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

land_resources_production_region_harvestableA

List the harvestable resource rows the upstream returns for one account and one land region, as GET /land/resources/production/region/harvestable returns them. A successful response is {status, data}, where data is an array of rows carrying amount_claimable, grain_required_for_food, wood_required, stone_required, iron_required and token_symbol. All numeric fields are JSON numbers, and this server returns them unchanged; it does not convert, round, total or compare them, and a change in their wire type would be reported as a malformed response rather than converted silently. The upstream returned HTTP 400 with Invalid parameters passed when either player or region_uid was missing, and this tool requires both before making the request. A fake player or region_uid returned data:[], a successful empty answer. This tool reports the rows the upstream returned and nothing else.

ParametersJSON Schema
NameRequiredDescriptionDefault
playerYes
region_uidYes

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and is exceptionally transparent: it documents the response shape, the exact numeric wire-type preservation, the HTTP 400 behavior for missing parameters, and the empty-array behavior for fake parameters. It also explicitly states that the tool reports only what the upstream returned. There is no contradiction with annotations because none are present.

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

Conciseness4/5

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

The description is front-loaded with purpose and scope, and nearly every sentence adds necessary operational context. It is somewhat repetitive around 'upstream returned' and the final sentence restates the tool's limitation, but there is no filler and the structure is logically ordered.

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

Completeness5/5

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

For a two-parameter read tool with no output schema and no annotations, this description is complete: it covers the endpoint, response structure, field list, numeric fidelity, parameter requirements, error behavior, and empty-data behavior. Nothing an agent needs to call it 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?

The schema provides only names and empty-string constraints, so the description must carry the meaning. It does so by identifying player as 'one account' and region_uid as 'one land region', and by explaining what happens when either is missing or fake. It stops short of giving concrete value formats or examples, but for two simple string parameters this is adequate compensation.

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

Purpose5/5

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

The description opens with a specific verb, 'List', and names the exact resource: harvestable resource rows for one account and one land region. It also cites the exact upstream GET path, so the tool's scope is unambiguous and it is clearly distinguishable from the many sibling land_resources tools.

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

Usage Guidelines4/5

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

It clearly defines the calling context: one account, one land region, with both player and region_uid required before the request is made. It does not explicitly name alternatives or give when-not-to-use conditions, but it does not leave the basic usage context to inference.

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

land_resources_rewardactionsA

List the reward-action rows the upstream returns for one deed uid, as GET /land/resources/rewardactions/{deedUID} returns them. A successful response is {status, data}, where data is an array of rows carrying id, plot_id, tract_id, region_uid, site_efficiency, region_number, land_worksite_id, land_project_id, resource_id, resource_symbol, working_pp, duration, deed_uid, claim_amount, grain_required, claim_amount_eaten, amount_received, tax_burnt, amount_taxed, trx_description, trx_id, block_num, created_date, last_updated_date and fragment_roll. The numeric fields are JSON numbers, and this server returns them unchanged; it does not convert, round, total or compare them, and a change in their wire type would be reported as a malformed response rather than converted silently. fragment_roll is a nested object; this server returns it unchanged and does not interpret its fields. The default response contained 100 rows. A nonzero offset was measured to return data:[] rather than advance the list: limit=3&offset=3 and limit=1&offset=1 both returned empty arrays for a deed with 313 recorded actions. This is not the repeating-offset failure measured on the deeds search; it is an empty-array failure, and no offset value tried reached rows beyond the first 100. Supplying a limit narrows the returned rows from the start, but this tool does not imply that pagination works. A fake deed uid and a real deed with no actions both returned data:[], so an empty array establishes neither that the deed exists nor that it has no reward actions. A trx_id appears in these rows; this tool reports the rows returned by the upstream and nothing else, and does not claim what any numeric figure means. Supply exactly one plot_id (numeric or display label) or deed_uid; the original UID spelling is also accepted. Reference resolution may add one verified deed GET before the target GET, with a hard two-request limit. Populated resolved results include all three plot identities and resolution freshness.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
deedUIDNo
plot_idNo
deed_uidNo

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral burden and does so thoroughly. It discloses the response envelope, field types, the fact that numeric fields are returned unchanged without conversion or rounding, that fragment_roll is an uninterpreted nested object, and the exact pagination failure mode (empty arrays beyond 100 rows). It also explains the significance of empty arrays (do not prove existence) and the reference-resolution behavior. This is exceptional transparency.

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

Conciseness5/5

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

Although lengthy, every sentence adds unique information. The description is front-loaded with the core purpose and response shape, then progressively discloses behavioral caveats and parameter constraints. There is no redundancy or filler; the density is justified given the tool's complexity and lack of annotations.

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

Completeness5/5

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

For a tool with no output schema and no annotations, this description is remarkably complete. It covers response structure, field lists, numeric handling, nested object behavior, pagination and offset quirks, empty-array interpretation, parameter requirements, and upstream request behavior. An agent has everything needed to invoke it correctly and interpret results.

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

Parameters5/5

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

Schema coverage is 0%, so the description must compensate entirely. It does: it explains the required selector (exactly one plot_id or deed_uid), accepts original UID spelling, describes how limit narrows results, and explicitly warns that offset does not advance the list. It also mentions reference resolution with a hard two-request limit. This adds rich meaning beyond the bare schema.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'List the reward-action rows the upstream returns for one deed uid.' It explicitly names the upstream endpoint GET /land/resources/rewardactions/{deedUID}, making the tool's scope unambiguous. It also distinguishes itself from sibling tools by referencing a different failure mode than 'the deeds search', which helps an agent differentiate.

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

Usage Guidelines4/5

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

The description provides clear context: it is for listing reward-action rows for a deed, and it gives explicit input constraints ('Supply exactly one plot_id (numeric or display label) or deed_uid'). It also warns about reference resolution and pagination limitations. However, it does not explicitly name sibling alternatives or state when to prefer this tool over land_resources_rewardactions_count or other related tools, so it stops short of a 5.

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

land_resources_rewardactions_countA

Get the reward-action count the upstream reports for one deed uid, as GET /land/resources/rewardactions/{deedUID}/count returns it. A successful response is {status, data}, where data is an object carrying count, a JSON number; this server returns it unchanged and does not convert, round or derive it. The measured count was 313 for a deed whose reward-actions list returned 100 rows by default; limit=3&offset=3 and limit=1&offset=1 both returned empty arrays, so roughly 213 counted actions were absent from those three list responses. The count and list do not contradict each other: the count reports more actions than those responses contain. Whether the count covers exactly what the list would return was not verified, so this tool does not assert equivalence. A fake deed uid returned count 0, while the list route returned data:[] for both that fake deed and a real deed with no actions; these responses do not establish what an empty deed count would be. This tool reports the count the upstream returned and nothing else, and does not claim what the count means beyond the measured response. Supply exactly one plot_id (numeric or display label) or deed_uid; the original UID spelling is also accepted. Reference resolution may add one verified deed GET before the target GET, with a hard two-request limit. Populated resolved results include all three plot identities and resolution freshness.

ParametersJSON Schema
NameRequiredDescriptionDefault
deedUIDNo
plot_idNo
deed_uidNo

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations, the description fully carries the transparency burden and does so richly: it discloses the response envelope, the fact that count is returned unchanged with no conversion, the non-equivalence of count and list responses, observed fake-deed behavior, and the hard two-request resolution limit. This is far beyond what annotations would have provided.

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

Conciseness3/5

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

The description is front-loaded with the core purpose and response shape, but it is verbose, repeating the non-claim caveat and including lengthy empirical measurement details. These details are valuable for transparency, but the same points could be made in roughly half the length without losing meaning.

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?

Despite having no output schema and no annotations, the description is complete for a caller: it defines the response shape, clarifies count semantics, warns against assuming equivalence with list responses, covers edge cases like fake deed UIDs, and states the parameter and request-limit behavior. An agent has enough to select and invoke the tool correctly.

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

Parameters5/5

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

Schema coverage is 0%, but the description compensates thoroughly by explaining all parameter variants: numeric plot_id or display label, deed_uid, the original UID spelling, and the exactly-one constraint. It also explains that a verified deed GET may precede the target request, which clarifies how resolution parameters behave.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Get the reward-action count the upstream reports for one deed uid,' and ties it to the exact GET route. This clearly distinguishes it from the sibling list tool land_resources_rewardactions, which would return rows rather than a count.

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

Usage Guidelines3/5

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

The description gives clear invocation guidance: supply exactly one of plot_id or deed_uid, and explains how reference resolution can add a preliminary deed GET. However, it never explicitly says when to use this count tool versus the list counterpart or when not to use it, so the usage context is mostly implied rather than stated.

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

land_resources_richlistA

List the resource-richlist rows the upstream returns for one region and one resource, as GET /land/resources/richlist returns them. A successful response is {status, data}, where data is an array of rows carrying player, amount, region_uid and resource_symbol. amount is a JSON number, and this server returns it unchanged; it does not convert, round, total or compare it, and a change in that wire type would be reported as a malformed response rather than converted silently. The upstream matches resource case-sensitively against its exact symbol. This tool uppercases resource before making the request, but it does not enforce an enum because the observed symbols are not a declared exhaustive set. An unrecognised resource or region was observed to return data:[], which this server cannot distinguish from a genuinely empty ranking. Both region and resource are required by the upstream, and this tool refuses either missing parameter before making the request. This route uses region, not region_uid; other routes in this server take region_uid, and carrying that parameter name across to this route produces HTTP 400. Paging probes supplied offset=0, offset=5, page=2, cursor=5 and start=5; each returned parsed data equal to the limit=5 baseline. limit=50 returned 50 rows whose first five matched that baseline in the same order, and no ceiling was found at the tested limits 5 and 50. No value tried for offset, page, cursor or start produced a later slice. This tool reports the rows the upstream returned and nothing else.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitYes
regionYes
resourceYes

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and goes beyond basics: response shape, no conversion/rounding of amount, case-sensitive upstream with client-side uppercasing, empty-data behavior indistinguishable from genuinely empty rank, determinism of paging probes, and no observed limit ceiling. This is unusually specific behavioral disclosure.

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

Conciseness5/5

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

Although long, the description front-loads the purpose and then adds only load-bearing caveats and probe results. No sentence is filler; all details prevent avoidable mis-calls.

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

Completeness5/5

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

For a tool with no annotations and no output schema, the description covers expected response, parameter constraints, known failure modes, and pagination behavior. Nothing critical appears missing for an agent to call this correctly.

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

Parameters5/5

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

Schema coverage is 0%, so this section must compensate; it does. Every parameter receives meaningful semantics: resource case handling and no enum, region vs region_uid naming, limit tested at 5/50 with no ceiling, and explicit statement that paging parameters do not slice. This is far beyond bare parameter names.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'List the resource-richlist rows the upstream returns for one region and one resource' and ties it to the exact endpoint. It distinguishes this route from sibling routes by noting it uses region rather than region_uid, so an agent can tell it apart without opening another schema.

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

Usage Guidelines4/5

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

It provides clear call context: one region and one resource, both are required, and it warns not to carry the region_uid parameter from other routes because that yields HTTP 400. It does not name direct sibling alternatives, but it makes the boundary explicit enough for selection.

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

land_resources_taxesA

Get the resource-tax record the upstream returns for one deed, as GET /land/resources/taxes/{deedUID} returns it. A successful response is {status, data}, where data is one object carrying taxes and capacity. taxes was null on all three real deeds measured; no populated taxes array was ever observed. A fabricated deed id returned taxes:[] and capacity:0, while each of the three real deed ids returned taxes:null and capacity:1000000, so those measured real and fabricated responses are distinguishable. capacity was 1000000 on all three real deeds measured. That is either a shared cap or a field that does not vary by deed; one probe cannot tell those apart, so this description does not call it the deed's capacity. The taxes and capacity values are returned unchanged; this server does not interpret, total or compare them, and a change in their wire type would be reported as a malformed response rather than converted silently. The required deedUID is a path segment, so omitting it reaches no handler and is reported as an upstream routing failure. Supply exactly one plot_id (numeric or display label) or deed_uid; the original UID spelling is also accepted. Reference resolution may add one verified deed GET before the target GET, with a hard two-request limit. Populated resolved results include all three plot identities and resolution freshness.

ParametersJSON Schema
NameRequiredDescriptionDefault
deedUIDNo
plot_idNo
deed_uidNo

TDQS

A4/5.0
Behavior5/5

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

With no annotations, the description carries the full burden of disclosing behavior, and it does so extensively: it documents the response shape, observed value patterns (taxes:null vs [], capacity:1000000), the distinction between real and fabricated deeds, that values are passed through unmodified, that a wire-type change triggers a malformed response, the routing failure when deedUID is omitted, and the reference-resolution side-effect with a two-request limit. Nothing about behavior is hidden.

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

Conciseness2/5

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

The description is a dense paragraph of about 150 words, much of it devoted to empirical observations and speculation about capacity and taxes. While front-loaded with the purpose and response shape, later sentences about probe results and 'that is either a shared cap...' could be trimmed without losing essential information. The lack of bullet points or whitespace harms readability, making it less concise than it could be.

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

Completeness5/5

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

Given there is no output schema and no annotations, the description is remarkably complete: it defines the response structure, explains the meaning of taxes and capacity, anticipates edge cases (fabricated ids, omitted deedUID, wire changes), and specifies identifier alternatives and the reference-resolution limit. An agent has everything needed to call this tool correctly and interpret its result.

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 0%, so the description must compensate. It explains that plot_id can be numeric or a display label, that deed_uid accepts the original UID spelling, and that exactly one of them should be supplied. It also clarifies that deedUID is a path segment and that omission leads to routing failure. This adds meaning well beyond the bare schema types, though it does not fully describe each parameter's exact format or constraints (e.g., what a 'display label' is).

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

Purpose5/5

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

The description opens with a specific verb ('Get') and resource ('resource-tax record') for a single deed, clearly distinguishing it from the many land_deed and land_resource sibling tools. It also immediately names the upstream endpoint (GET /land/resources/taxes/{deedUID}) and the response envelope ({status, data}), leaving no ambiguity about what the tool retrieves.

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

Usage Guidelines2/5

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

The description gives procedural guidance on identifiers ('Supply exactly one plot_id... or deed_uid') and error behavior, but it never explicitly states when to pick this tool over any land_deed or land_resource sibling. There is no mention of alternatives or exclusion criteria, so an agent would have to infer context from the name alone.

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

land_resources_titlesA

List the public land-title rows the upstream returns for one player, as GET /land/resources/titles?player= returns them. The player is a query parameter. A successful response is {status, data}, where data is an array of rows carrying title, player and created_date; title and player are strings and created_date is a timestamp string, and this server returns them unchanged. Omitting player returned HTTP 400. An unknown player returned HTTP 200 with data:[], an honest empty result. This route is well-behaved: a missing player is rejected with HTTP 400 and an unknown player gives an empty array. This tool reports the title rows returned by the upstream and nothing else.

ParametersJSON Schema
NameRequiredDescriptionDefault
playerYes

TDQS

A3.9/5.0
Behavior5/5

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

With no annotations, the description fully carries the behavioral disclosure burden. It explicitly covers the success response shape ({status, data} with array of rows), the error case for a missing player (HTTP 400), the honest empty result for an unknown player (HTTP 200 with data:[]), and the fact that data is returned unchanged. It also states it reports nothing else. This is exemplary transparency.

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

Conciseness4/5

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

The description is well-structured, leading with the core function and then detailing behavior. However, there is redundancy: 'Omitting player returned HTTP 400' is repeated later as 'a missing player is rejected with HTTP 400'. The phrase 'This route is well-behaved' adds little. Trimming these would make it more concise.

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

Completeness5/5

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

For a simple read tool with one parameter and no output schema, the description is complete. It covers the response shape, error handling, scope, and the fact that data is unchanged. There's no missing behavior an agent would need to invoke it correctly.

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

Parameters2/5

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

Schema coverage is 0%, so the description must compensate. It states the player is a query parameter (which is already in the schema) and describes error behavior for missing/unknown players, but it does not explain what constitutes a valid player identifier (e.g., username, account name, format). The agent is left to infer the semantics beyond 'a string'.

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

Purpose5/5

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

The description states a specific verb ('list'), a clear resource ('public land-title rows'), and scope ('for one player'), and ties it to a concrete endpoint. It clearly distinguishes itself from siblings like land_resources_titles_assigned by emphasizing 'public' and 'upstream returns them unchanged'.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention the sibling land_resources_titles_assigned or any other tool, nor does it specify when not to use this route. The only contextual hint is 'public land-title rows', but that isn't framed as a selection criterion.

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

land_resources_titles_assignedA

List the public title-assignment rows the upstream returns for one title, as GET /land/resources/titles/assigned?title= returns them. The title is a query parameter. A successful response is {status, data}, where data is an array of rows carrying title, player, created_date, avatar_id, league and modern_league. The title, player and created_date fields are strings or a timestamp string, and avatar_id, league and modern_league are JSON numbers; this server returns them unchanged. Warden and warden both succeeded. WARDEN returned HTTP 500, the same response as a nonexistent title and as a missing title parameter. A 500 does not establish whether the title exists. This route is not generally case-insensitive: two casings were observed to work and one failed. This tool sends the argument's case exactly as supplied and does not normalise it, because normalising toward an untested form could turn a working call into a 500. This tool reports the rows returned by the upstream and nothing else.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNo

TDQS

A4.1/5.0
Behavior5/5

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

The description is exceptionally transparent: it discloses that the tool sends the argument's case exactly as supplied without normalization, notes that a 500 does not establish whether the title exists, and specifies the response structure and field types. This far exceeds the bare schema and compensates for the absence of annotations.

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

Conciseness3/5

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

The description is verbose, including detailed test observations about Warden and specific casing outcomes. While the opening sentence clearly states purpose, the lengthy edge-case discussion could be condensed. It is structured but not concise.

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

Completeness5/5

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

Given a single parameter, no output schema, and no annotations, the description covers the response format, field types, error semantics, and case-handling behavior. It provides everything an agent needs to invoke the tool correctly, though it could explicitly state whether the title is required.

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?

With 0% schema coverage, the description must carry the semantic load. It clarifies that 'title' is a query parameter, explains the case sensitivity (two casings work, one fails), and warns that normalizing case could break calls. This adds meaning beyond the simple string type, though it omits an explicit 'required' note.

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

Purpose5/5

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

The description clearly states 'List the public title-assignment rows the upstream returns for one title' and references the exact endpoint, making the purpose specific and unambiguous. It emphasizes 'for one title', distinguishing it from sibling tools like land_resources_titles that likely list all titles.

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

Usage Guidelines2/5

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

The description explains how to call the tool (passing title as a query parameter) but provides no guidance on when to choose this tool over alternatives such as land_resources_titles. There is no mention of conditions or exclusions, leaving the agent to infer use cases.

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

land_stake_assetsA

Read each worker’s Base Production, Base PP after cap, Terrain Boost, Boostable Production and Total Production in worker_view, alongside unchanged source cards and items. Display labels follow the public client; explicit unpowered rows display zero while missing values remain unknown. The cap preview allocates ordinary workers in ascending slot order, then adds Runi outside the cap; see splinterlands://land/rules/screen-fields for source and limits. List the cards and items staked to one land deed, as GET /land/stake/deeds/{deedUid}/assets returns them. A successful response has {status, data}, where data holds a cards array and an items array; a deed with nothing staked returns both arrays present and empty, which is a successful answer and not a failure. On this route the boost, production-point and work figures are JSON strings, not numbers, and this server returns them exactly as received: it does not convert, round, compare or combine them, and a change in that wire type would be reported as a malformed response rather than converted silently. The deed-details tool returns the equivalent deed-level figures as JSON numbers; the two routes disagree about wire type and this server does not reconcile them. Rows carry the staking account name as the upstream returns it. A deed uid the upstream rejects is answered with an HTTP error on this route and is reported as an upstream failure rather than as an empty result, so this tool and the deed-details tool do not behave alike on a bad deed uid. This tool adds only a same-response worker label view: it does not count free slots, does not infer whether a deed is powered, and makes no statement about cards the response does not list. Supply exactly one plot_id (numeric or display label) or deed_uid; the original UID spelling is also accepted. Reference resolution may add one verified deed GET before the target GET, with a hard two-request limit. Populated resolved results include all three plot identities and resolution freshness.

ParametersJSON Schema
NameRequiredDescriptionDefault
deedUidNo
plot_idNo
deed_uidNo

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description carries the full burden, and it does so richly. It discloses that wire types are JSON strings and are returned unchanged, that empty staked arrays are a success, that upstream rejections become HTTP errors rather than empty results, and that no inference is made about free slots or powered status.

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

Conciseness4/5

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

The description is long, but nearly every sentence conveys necessary behavioral or edge-case information that is not available elsewhere. It front-loads the core purpose and then systematically covers wire types, empty responses, error behavior, and resolution limits. It is dense but not padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of an output schema, the description provides an unusually complete picture: response shape, array names, empty-success semantics, string wire types, error behavior, resolution limits, and relationship to the deed-details sibling. An agent has enough information to call this tool and interpret its results correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Since schema description coverage is 0%, the description serves as the only parameter guidance. It explains that plot_id can be numeric or a display label, that deed_uid is accepted, and that the original deedUid spelling also works. It also mentions reference resolution limits, but it does not fully spell out the exact format or semantics of every parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the resource and action: it reads worker-level production figures and lists the cards and items staked to one land deed. It distinguishes itself from the sibling deed-details tool by emphasizing worker_view and per-worker figures as opposed to deed-level figures.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear invocation constraints, such as supplying exactly one plot_id or deed_uid, and notes that the original UID spelling is accepted. It contrasts behavior with the deed-details tool on bad deed UIDs, but it stops short of explicitly stating 'use this tool when you need worker-level data, use deed-details when you need deed-level data.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

land_stake_dec_overallA

Get the single DEC staking figure the upstream returns for one account, as GET /land/stake/dec/overall returns it. A successful response is {status, data}, where data is a bare JSON number rather than an object or an array; this server returns it exactly as received and does not convert, round, scale or combine it, and a change in that wire type would be reported as a malformed response rather than converted silently. What the number counts, and over what scope, is not stated by the response and is not claimed here. This route does not enforce its declared-required player parameter: a call that omits it was measured to answer HTTP 200 with the number zero, the same zero observed for an unscoped call; whether that equals a real account with nothing staked was not tested, so this tool refuses a call with no player rather than return a plausible zero that describes nobody. A name that matches no account was measured to answer with the same kind of figure as a real account, so an answer from this tool establishes neither that an account exists nor that it does not. A zero returned for a named account is a successful answer and is not reported as no result. The per-region tool lists this account's staking rows separately; this server does not add those rows up, does not compare their total with this figure, and does not derive either from the other.

ParametersJSON Schema
NameRequiredDescriptionDefault
playerNo

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full behavioral burden and does so thoroughly. It discloses the response wire type (bare JSON number), that it does not convert/round/scale/combine, that a missing player returns HTTP 200 with zero but the tool refuses that call, that a nonexistent account returns a figure but does not confirm existence, and that zero is a valid successful answer. This is exceptionally transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but every sentence contributes essential behavioral or scoping information. It is structured logically: what it does, response format, parameter edge cases, existence semantics, and relationship to sibling. It could be slightly tightened, but no sentence is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given there is no output schema, the description explains the response format in detail. It covers all edge cases (missing player, nonexistent account, zero result) and clarifies that it does not derive or compare with other data. Nothing an agent needs to correctly call and interpret this tool is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has a single 'player' parameter with zero description coverage. The description compensates by referring to 'one account', 'a call that omits it', and 'a name that matches no account', making it clear that 'player' is the account identifier. It also explains the parameter's optionality and the tool's refusal behavior, adding significant meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Get the single DEC staking figure the upstream returns for one account'. It clearly identifies what is returned and even specifies the exact endpoint (GET /land/stake/dec/overall). The description also differentiates from the per-region tool by explicitly stating it does not combine rows, so it distinguishes itself from land_stake_dec_region and land_stake_dec_staked.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides context on when not to use this tool by explaining that the per-region tool lists rows separately and that this tool does not sum them. It also clarifies edge cases like missing player and nonexistent accounts, which informs usage. However, it does not explicitly say 'use this when you need the overall figure' or name a direct alternative, though the implication is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

land_stake_dec_regionA

Get the DEC staking figures the upstream reports for one account and one land region, as GET /land/stake/dec/region returns them. A successful response is {status, data}. data is an object carrying uid, dec_stake_needed, dec_staked and dec_stake_in_use when the upstream has a record for the request, including a full object of zero figures when a valid region has no stake for the account; the upstream returned an empty array for incomplete requests, but this registered tool refuses those requests before making the call. All three figures are JSON numbers, and a change in that wire type would be reported as a malformed response rather than converted silently. Removing player changed a resolved object response to an empty array; no numeric comparison was made. What each figure counts is still not stated by the response and is not claimed here. Neither declared-required parameter is enforced: a call omitting region_uid, and a call with no parameters at all, were both measured to answer HTTP 200 with an empty array, so this tool refuses a call that does not supply both player and region_uid. Different region uids were measured to return different figures. This tool reports the record the upstream returned for the request it was given and nothing else: it does not add figures across regions and does not compare them with any other route's.

ParametersJSON Schema
NameRequiredDescriptionDefault
playerNo
region_uidNo

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and does so impressively. It details the response shape (status, data), the field types, the handling of empty arrays and refusal behavior, and even notes measured quirks like the change from object to empty array. It is transparent about upstream non-enforcement of required parameters and that the tool compensates.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is verbose and unstructured, with repeated mentions of the refusal behavior and tangential notes like 'no numeric comparison was made.' It is a dense block of text that could be reorganized into concise bullets or separated into clear sections. While all content is relevant, it is not efficiently presented.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite its verbosity, the description covers the essential information an agent needs: the response structure, the edge-case behaviors, the refusal logic, and the tool's scope. It is sufficient for calling the tool correctly, though it lacks a concrete example and could be trimmed. Given the simplicity of the tool and no output schema, it is largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must add meaning. It clarifies that both player and region_uid are required (tool refuses without both) and maps them to 'one account and one land region'. However, it does not provide explicit formats, examples, or further semantics beyond that, so it only partially compensates for the missing schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb ('Get') and resource ('DEC staking figures the upstream reports for one account and one land region'), and explicitly distinguishes itself from aggregating routes by saying it does not add figures across regions or compare with other routes. This makes it clearly different from siblings like land_stake_dec_overall.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides context on when to use this tool: it is for a single region's figures, and it states what it does not do (no aggregation, no comparisons). It implies the alternative is the overall/staked routes but doesn't name them explicitly. It also clarifies that incomplete requests are refused, which is useful guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

land_stake_dec_stakedA

List the per-region DEC staking rows the upstream reports for one account, as GET /land/stake/decstaked returns them. A successful response is {status, data}, where data is an array of rows carrying id, region_uid, player, amount, percent_claimable, last_trx, created_date and last_updated_date. Every numeric field on this route is a JSON number, and a change in that wire type would be reported as a malformed response rather than converted silently. Rows carry the account name as the upstream returns it. An empty array is a successful answer, and an unknown name and an unscoped call were observed to return an empty array; behaviour for a known account with no staked DEC was not captured, so an empty answer establishes neither that an account exists nor that it does not. This route does not enforce its declared-required player parameter — a call with no parameters at all was measured to return that same empty array — so this tool refuses a call with no player rather than return an unscoped empty answer as though it described somebody. What percent_claimable measures is not stated by the response and is not claimed here. This tool reports the rows the upstream returned and nothing else: it does not total the amounts, does not compare them with the account's overall figure, and makes no statement about regions the response does not list.

ParametersJSON Schema
NameRequiredDescriptionDefault
playerNo

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full behavioral burden and meets it: it defines the {status, data} envelope, enumerates row fields, discloses JSON number wire-type handling, empty-array semantics, upstream parameter-enforcement inconsistency, and the refusal to infer meaning for percent_claimable or totals. This exceeds typical disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but dense and front-loaded, with the fundamental purpose first followed by response shape, edge cases, and explicit non-claims. Some sentences are defensive (e.g., wire-type behavior), but they add value in a tool with no annotations. It could be tightened slightly without losing meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter tool with no output schema, the description fully covers response structure, field names, success behavior, failure/edge behavior, and the tool's enforced input policy. Nothing needed to invoke or interpret the tool 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?

The schema only gives player as a string with minLength 1 and 0% description coverage, but the description compensates by identifying the player as the account whose rows are listed and by explaining exactly how missing player input is handled (refused rather than silently unscoped). It could add more explicit account-name format detail, but what is present is actionable.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence states a specific action ('List') and precise resource ('per-region DEC staking rows ... for one account'), and ties it to the upstream route GET /land/stake/decstaked. This is distinct from nearby siblings like land_stake_dec_overall or land_stake_dec_region because it emphasizes per-region rows for a single account.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear context for invoking the tool: a single account is expected, the tool refuses calls with no player, and an empty array must not be treated as proof of account non-existence. It does not explicitly name alternative tools or state when to prefer them, so it stops short of a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

land_stake_deed_detailsA

Includes plot_view with the public overview PRODUCTION / HR value (Total PP times efficiency, or unscaled with Runi; zero when explicitly unpowered), plus separately labelled reference PP and resource-output values. Missing inputs remain unknown; raw response and provenance are preserved. Get the staking summary the upstream reports for one land deed, as GET /land/stake/deed/details/{deedUid} returns it. A successful response has {status, data}, where data is one flat record of the deed's staking flags, worker counts, boosts and totals. A deed with nothing staked returns that record fully present, with its numeric fields zero and its boolean flags false, so an empty answer on this route is a populated record rather than an absent one. On this route the boost and total figures are JSON numbers; the deed-assets tool returns the equivalent per-card figures as JSON strings. The two routes disagree about wire type, this server returns each exactly as received, and a change in that wire type would be reported as a malformed response rather than converted silently. The record carries a manager string as returned by the upstream; its role is not stated. A deed uid the upstream does not recognise was measured to return a successful response holding no record rather than an error, so an answer holding no record establishes neither that the deed exists nor that it does not: this server cannot tell it apart from a deed that exists and has no staking record. The one deed with nothing staked that this repository observed returned the zeroed record described above rather than no record, which is a single observation and not a rule. The deed-assets tool answers a rejected deed uid with an upstream error instead, so the two tools do not behave alike on a bad deed uid. This tool reports only what the record states: it does not compute free slots, does not derive which cards are staked, and does not treat a total as evidence about any individual card. Supply exactly one plot_id (numeric or display label) or deed_uid; the original UID spelling is also accepted. Reference resolution may add one verified deed GET before the target GET, with a hard two-request limit. Populated resolved results include all three plot identities and resolution freshness.

ParametersJSON Schema
NameRequiredDescriptionDefault
deedUidNo
plot_idNo
deed_uidNo

TDQS

A4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and excels: it discloses that raw responses and provenance are preserved, that it does not compute derived values, that a deed with nothing staked returns a zeroed record, and that unrecognized deed uids return success with no record. It even notes that a change in wire type would be reported as malformed rather than silently converted. This is exceptional transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a dense, unstructured paragraph of several hundred words. The primary purpose is buried after a confusing opening about plot_view, and there are no clear sections for purpose, usage, or edge cases. It would benefit from front-loading the main action and splitting into logical paragraphs or bullets.

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?

Despite its verbosity, the description covers all necessary context: response shape ({status, data} with a flat record), edge cases (empty deed, bad deed uid), comparisons with siblings, reference resolution limits, and explicit limitations (does not compute free slots, etc.). Since there is no output schema, the description compensates by explaining the data structure thoroughly. Nothing an agent needs to call this tool correctly seems missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description says to supply exactly one plot_id or deed_uid and clarifies that plot_id can be numeric or a display label, but it does not explain the difference between deedUid and deed_uid parameters in the schema. The schema lists both deedUid and deed_uid, yet the description only mentions deed_uid, leaving ambiguity about their relationship and usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description eventually states the primary action: 'Get the staking summary the upstream reports for one land deed.' However, the opening sentence about plot_view and PRODUCTION/HR value is distracting and not the core purpose. It does differentiate from the deed-assets tool via wire type differences, so the purpose is clear after reading, but not immediately front-loaded.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains behavioral differences from the deed-assets tool, such as handling of bad deed uids and wire types, implying when to use which tool. However, it does not explicitly state 'use this when you need the upstream-reported staking summary' versus alternatives; the guidance is implicit rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

land_stake_evp_pending_claimA

Get the pending EVP claim figure the upstream reports for one account, as GET /land/stake/evp/pending-claim returns it. A successful response is {status, data}, where data is an object carrying a single pending_claim_amount field, a JSON number returned exactly as received; this server does not convert, round or accumulate it, and a change in that wire type would be reported as a malformed response rather than converted silently. What EVP is, what makes an amount claimable, and over what period the figure accrues are not stated by the response and are not claimed here. A zero is a successful answer. This server has observed zero for both a real account and a name that matches no account, while the real account's pending amount was also zero; whether this route distinguishes those cases is untested, so no answer from this tool may be read as saying that an account exists or that it does not. A call with no parameters at all was measured to answer HTTP 200 with a figure, so this tool refuses a call with no player rather than return a figure that describes nobody. This tool reports the figure the upstream returned and nothing else: it does not accumulate it, compare it with any DEC figure, or treat it as a balance.

ParametersJSON Schema
NameRequiredDescriptionDefault
playerNo

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden, and it is exceptionally transparent: no conversion/rounding/accumulation, zero is a valid success, upstream wire-type changes become malformed responses, and the no-account case is untested. It even discloses the measured no-parameter upstream behavior and the tool's refusal policy.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The key purpose and response shape are front-loaded, but the description is long and partly redundant: the final sentence repeats the no-accumulation/no-comparison caveat already stated earlier. The hedging around account existence is valuable but could be tightened without losing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description is remarkably complete: return envelope, field name and type, exact number semantics, failure behavior, zero handling, account-existence ambiguity, and missing-player behavior. Nothing an agent needs to call or interpret this tool 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 0%, but the description compensates by explaining that the single account context is the player, that a call with no player is refused, and that the number is returned exactly as received. It does not explicitly name or format the player parameter, but the behavioral guidance goes meaningfully beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the exact resource and operation: retrieve the pending EVP claim figure as reported by GET /land/stake/evp/pending-claim for one account. It is specific enough to stand apart from the large sibling set and even clarifies what the response does not claim to define (EVP, claimability, accrual period).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear context: call for one account's pending figure, and it explicitly forbids interpreting an answer as evidence of account existence. It does not name sibling alternatives such as land_stake_dec_overall or player_balances, so it stops short of the explicit when-to-use-versus-alternative guidance that would earn a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

land_tracts_countsA

List the tract count rows returned by GET /land/tracts/counts. The unscoped call returns {status: "success", data: []}, an empty list. A captured named-player response returned 36 rows, one per (region, tract_number) combination for which the account holds a deed. Each row contains region.uid, region.name, region.region_number, tract_number, owned and listed; all six row fields were present and non-null in every captured row. Whether any field is player-wide or player-scoped beyond this captured row shape is unmeasured, so this description makes no further absence claim.

ParametersJSON Schema
NameRequiredDescriptionDefault
playerNo

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does substantially more than a boilerplate line: it states the empty unscoped result, the observed row count and composition, that all fields were non-null, and explicitly limits claims where behavior is unmeasured. It could add auth/pagination/rate-limit details, but for a simple list endpoint this is strong behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than average, but each sentence adds information: endpoint, empty-case behavior, observed row shape, non-null guarantee, and scope limits. The uncertainty caveat at the end is intentionally transparent rather than filler, so the structure earns the length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description compensates with row fields, empty-case behavior, and row semantics. It is still missing explicit parameter documentation and usage direction, but for a one-optional-parameter list endpoint it leaves an agent reasonably equipped to understand what a successful response looks like.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides only a bare optional 'player' string at 0% description coverage, so the description needed to compensate. It adds some meaning by contrasting unscoped vs named-player responses, implying 'player' is a named account that scopes the result, but it never explicitly defines the parameter, its format, or its effect beyond that observed contrast.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a concrete verb and resource: listing the rows returned by GET /land/tracts/counts. It is specific enough to be distinguished from the sibling land_regions_counts and other land endpoints by its endpoint and row contents, though it doesn't explicitly contrast those siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use guidance or comparison with alternatives is provided. The only usable hint is the contrast between the 'unscoped call' returning empty and a 'captured named-player response' returning 36 rows, which implies the player parameter matters but never states when to call it or what criteria select this tool over land_regions_counts or land_deeds_owned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

land_volumeA

Get the two land volume figures the upstream returns for GET /land/volume: a sum and a count. This route takes no parameters. Both figures are the upstream's own values. They were observed to change between two captures about an hour apart, and to decrease, so this server does not present them as a cumulative total. When this server observed the route, both figures were returned as JSON strings rather than numbers; that was true of every observation so far, not a guarantee about every response. This server passes the response through unchanged and does not convert, round or combine the figures, and a change in that wire type would be reported as a malformed response rather than converted silently. What the two figures measure, and over what period, is not stated by the response and is not claimed here.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and does so thoroughly. It discloses that figures are passed through unchanged, not converted, rounded, or combined; that wire types were observed as strings but are not guaranteed; and that wire-type changes would surface as malformed responses. It also warns against interpreting the figures as cumulative totals based on observed decreases.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than average but every sentence contributes meaningful caveats about pass-through behavior and data reliability. It is front-loaded with the core purpose, followed by necessary behavioral warnings. It could be slightly tightened, but there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless pass-through endpoint with no output schema, the description is remarkably complete. It covers the return values (sum and count), the lack of parameters, the non-cumulative nature, the observed wire type, and the malformed-response behavior. An agent has everything it needs to invoke the tool and interpret the result correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema is empty and schema coverage is 100%, so there is no parameter semantics burden. The baseline for 0-parameter tools is 4, and the description states 'This route takes no parameters,' confirming the call signature explicitly. No further parameter meaning is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Get the two land volume figures the upstream returns for GET /land/volume: a sum and a count.' This precisely identifies the endpoint and what is returned. It distinguishes this tool from siblings by its unique route and no-parameter nature, rather than conflating it with market_volume or other land-related tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly states 'This route takes no parameters,' which tells the agent how to call it, but it does not provide explicit guidance on when to choose this tool over alternatives or when it would be inappropriate. The intended use is implied by the resource name and description, but no sibling comparison or exclusion criteria are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_endpointsA

List every catalogued endpoint and the evidence-backed dimensions known about it. This tool is offline and makes no upstream request.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations at all, the description carries the full burden. It discloses the key behavioral trait that the tool is offline and makes no upstream request, which strongly signals a non-mutating, network-free operation. It does not mention caching, pagination, or performance, but for a simple list catalog this is a notable level of transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short, dense sentences. The primary purpose is stated first, and the important offline/no-upstream-resource constraint is added second. There is zero filler or redundant detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given it has no parameters, no output schema, and no annotations, the description is mostly complete: it says what the tool lists and that it is offline. The phrase 'evidence-backed dimensions known about it' is a little vague about the return structure, but for a catalog endpoint with no arguments it does not materially block an agent from invoking it.

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?

A parameterless tool has a 100% schema coverage by definition, and the description correctly does not need to explain parameters. With zero params, a baseline of 4 is appropriate; there is no parameter semantics to add.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') and resource ('every catalogued endpoint') and adds what is known about it ('evidence-backed dimensions'). This clearly distinguishes it from siblings such as describe_endpoint, which target a single endpoint, and other data tools that hit a specific domain.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is the go-to for a catalog overview and notes it makes no upstream request, which suggests it is cheap or offline. However, it does not explicitly name when to prefer this over describe_endpoint or any alternative, nor does it provide any when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

market_active_rentalsA

Read current card rentals scoped by owner, renter or card_detail_id. These selectors were observed independently of Swagger. limit and take bound leading rows; offset=2 and skip=2 repeated the first two rows, these declared selectors remain forwardable for inspection but are not working pagination. This is not complete rental history. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
skipNo
takeNo
limitNo
ownerNo
offsetNo
renterNo
card_detail_idNo

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure, and it delivers richly: 'Makes one logical GET request and does not auto-fetch continuation pages,' 'Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata,' and 'Oversized records are refused without partial fields.' It even honestly documents the broken pagination behavior of offset/skip, which is unusually candid and valuable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in the first sentence, and every sentence carries information with little filler. However, the prose is dense and slightly meandering — phrases like 'these declared selectors remain forwardable for inspection but are not working pagination' are awkward and somewhat redundant with the earlier offset/skip example. It could be tightened without losing content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read tool with no output schema and 7 undocumented parameters, the description covers a great deal: scoping semantics, working vs. broken pagination, response size limits, truncation reporting (in text and metadata), and refusal behavior for oversized records. The main gap is the return value shape/format, which is not described, but given the explicit truncation and limit documentation, an agent has enough to call it reasonably.

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 0% with 7 parameters, so the description must compensate — and it does. It clarifies that owner, renter, and card_detail_id act as scoping selectors, explains that limit and take 'bound leading rows,' and flags that offset and skip are non-functional for pagination ('offset=2 and skip=2 repeated the first two rows'). It also cautions that 'other declared filters are forwarded as supplied; their effectiveness is not implied by the schema.' Every parameter receives some semantic treatment, though it doesn't enumerate the filters individually.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource+scope: 'Read current card rentals scoped by owner, renter or card_detail_id.' It clearly distinguishes this from full rental history with the explicit caveat 'This is not complete rental history,' which differentiates it from siblings like market_rental_history and rentals_v3_by_role. An agent can determine what this tool does without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives useful context on what the tool does NOT do (not complete history, no auto-pagination, single logical GET) and notes that required inputs reflect 'tool policy as well as measured upstream requirements.' However, it never names a sibling tool to use when full history or pagination is needed, leaving the agent to infer the alternative. Context on limitations is present, but explicit routing to an alternative is absent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

market_active_statusA

Read active market status by one listing sell transaction id or comma-separated ids. Singular and plural selectors have distinct object and array response shapes. Supply exactly one selector; this route is separate from completed status. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNo
idsNo

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description fully carries the behavioral disclosure. It reveals distinct response shapes for singular vs plural selectors, that it makes exactly one logical GET request without auto-fetching continuation pages, local limits of 100 rows and 256 KiB with truncation reporting, and refusal of oversized records. This is a thorough, honest account of the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is information-dense yet efficiently structured. It front-loads the purpose, then elaborates on response shapes, selector constraints, request behavior, and output limits. Every sentence serves a purpose—no filler or repetition—and the details are ordered logically from core function to caveats.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with only two parameters and no output schema, the description covers all critical aspects: what it reads, how to select, response shape variation, pagination behavior, limits, truncation indicators, and refusal policy. It also distinguishes this route from completed status, which is essential for routing. An agent would not be missing any key information to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema only provides 'id' and 'ids' as strings with minLength 1, but the description adds meaning: it distinguishes singular vs plural selector effects on response shape, mandates exactly one selector, and hints at policy-driven requiredness. It could be more explicit that 'id' expects a single ID and 'ids' expects comma-separated IDs, but it implies this distinction clearly enough.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Read active market status by one listing sell transaction id or comma-separated ids.' It unambiguously states the tool's function and differentiates it from siblings by noting 'this route is separate from completed status,' making it distinct from 'market_completed_status' and other market tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context on when to use this tool versus the completed status route, and it instructs 'Supply exactly one selector,' clarifying usage constraints. It also warns about forwarded filters. However, it does not explicitly enumerate alternative tools or state conditions for when to prefer this over 'market_status' or 'market_completed_status,' only implying a partition by active vs completed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

market_completed_statusA

Read completed market status by one listing sell transaction id or comma-separated ids. Singular and plural selectors have distinct object and array response shapes. Supply exactly one selector; returned payment quantities remain strings. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNo
idsNo

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and does so richly. It discloses distinct response shapes, string-typed payment quantities, a single logical GET request, no continuation-page auto-fetching, 100-row and 256 KiB array limits, truncation reporting, and refusal of oversized records — far beyond a minimal read description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense and front-loaded, with the core purpose first and behavioral caveats following. All sentences carry information, though a few meta-statements like 'Required inputs reflect tool policy as well as measured upstream requirements' add context without direct instruction. Slightly verbose but not wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description is remarkably complete for a 2-parameter read tool. It covers selector semantics, response shape differences, data typing, pagination behavior, size limits, truncation, and refusal handling, leaving no critical operational gap for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description explains that id is a single listing sell transaction id and ids is comma-separated ids, that exactly one must be supplied, and that singular vs plural selectors produce distinct response shapes. This fully compensates for the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Read completed market status by one listing sell transaction id or comma-separated ids', specifying a clear verb, resource, and selection mechanism. The 'completed' qualifier distinguishes it from siblings like market_status and market_active_status, and the singular/plural response shape note further differentiates the tool's behavior.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Clear operating constraints are provided: 'Supply exactly one selector', no auto-fetch of continuation pages, and array truncation rules. However, it does not explicitly name alternatives such as market_active_status or state when to use one over the other; the 'completed' qualifier implies context but doesn't make the routing explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

market_for_rent_groupedA

Read grouped card-rental price and quantity summaries, including season_qty and daily_qty. The observed response had 1710 groups; only a bounded leading portion is returned. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the full burden and does so thoroughly. It explicitly discloses that only a bounded leading portion is returned, that 1710 groups were observed, that no continuation pages are auto-fetched, and that responses are locally capped at 100 rows and 256 KiB with truncation reported. It also states that oversized records are refused without partial fields. This is unusually complete behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but every sentence conveys a meaningful constraint or caveat, and the purpose statement is front-loaded. A few phrases such as 'tool policy as well as measured upstream requirements' are vague and could be tightened, so it is not perfectly concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers pagination, truncation, and error behavior well, which is impressive given the absence of annotations and output schema. Yet it leaves important operational details unresolved: what the 'required inputs' actually are, what 'other declared filters' exist, and how a caller could obtain more than the bounded leading portion. These gaps make it incomplete for fully confident invocation.

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?

The schema has zero properties, so the 0-parameter baseline of 4 applies. The description adds some relevant context about required inputs reflecting policy and that other declared filters are forwarded without implied effectiveness. However, it never enumerates those filters or required inputs, leaving a mild ambiguity, though there are no schema parameters to document.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Read grouped card-rental price and quantity summaries'. It also names concrete fields (season_qty, daily_qty), making the tool's purpose unmistakable. However, it does not explicitly contrast itself with sibling tools such as market_for_sale_grouped or market_query_grouped, so it falls just short of full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance about when to choose this tool over market_active_rentals, market_rental_history, or market_for_sale_grouped. The description mentions filters and upstream policy but does not provide a decision rule or alternatives for an agent to consider.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

market_for_sale_groupedA

Read grouped card-sale price and quantity summaries. The observed response had 2321 groups; only a bounded leading portion is returned. No working paging selector is established. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure, and it excels. It explicitly states observed response size (2321 groups), the bounded leading portion, absence of paging, single GET request, no auto-fetch, array limits (100 rows/256 KiB), truncation reporting, and refusal of oversized records. It also clarifies that filter effectiveness is not guaranteed. This is exceptionally transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but each sentence adds value: purpose, response size, paging, request behavior, filter forwarding, limits, and truncation. It is not excessively verbose for the amount of caveats, though it could be more structured (e.g., bullet points). The key purpose is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and no output schema, the description covers all essential caveats an agent needs: pagination, truncation, filtering, and response size. It explains what happens with large arrays and oversized records. There is no missing information that would prevent correct invocation or interpretation of results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters in the schema, so the baseline is 4. The description mentions 'Required inputs reflect tool policy as well as measured upstream requirements,' but since the schema has no properties, this adds little specific meaning. It does not contradict the schema, and the baseline applies because there is nothing to document.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear verb+resource: 'Read grouped card-sale price and quantity summaries.' This distinguishes it from sibling tools like market_for_rent_grouped by the 'card-sale' qualifier, but it does not explicitly contrast with other grouped market tools (e.g., market_query_grouped). It is specific enough to convey the core purpose, though not fully differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention when to prefer market_for_sale_grouped over market_for_rent_grouped or market_query_grouped, nor does it state any selection criteria. The only usage-related information is about behavior (no paging, truncation), but that is about how the tool behaves, not when to choose it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

market_for_sale_packagesA

Read listed card packages, retaining each package's cards intact. Only complete packages within the local result bound are returned; a package too large to fit is refused without dropping its cards. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so thoroughly: it states one logical GET, no auto-fetch continuation, 100-row/256 KiB local limits, truncation reported, oversized records refused without partial fields, and filter forwarding without guaranteed effectiveness. These are concrete call consequences beyond any schema information.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The lead sentence is strong and front-loaded, but the description runs seven sentences and repeats the no-partial-refusal idea in two places; the 'required inputs…' sentence adds little to an empty-schema tool. Still compact enough to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must cover return and limit behavior; it does, with array limits, truncation reporting, and refusal semantics. It doesn't specify the normal successful payload shape or field names, but for a zero-parameter read tool this is a minor gap.

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?

Input schema is empty with 0 params, so there are no undocumented parameters and the 0-param baseline applies. The passing mention of 'required inputs' and 'declared filters' is generic boilerplate and slightly confusing given additionalProperties:false, but it does not fail to document any actual parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

First clause names a concrete operation ('Read listed card packages') and adds distinctive semantics ('retaining each package's cards intact'), so the tool's object is clear. It never names an alternative or contrasts with sibling market endpoints like market_for_sale_grouped, so sibling differentiation is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit 'use when' or 'vs alternative' guidance appears; the description implies the tool suits callers who need intact complete packages and single-page GETs, but it doesn't say when to prefer this over the many sibling market endpoints. There are no exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

market_historyA

Read card market history for one player. include_sets is forwarded only when explicitly supplied; its effect has not been established. The capture had 126 rows and no proven paging selector. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
playerYes
include_setsNo

TDQS

A3.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the full burden of behavioral disclosure, and it excels. It explicitly discloses multiple non-obvious behaviors: no auto-paging, local limits on array responses (100 rows, 256 KiB), truncation reporting, refusal of oversized records, and the unproven effect of include_sets. This is far beyond a typical description and gives the agent essential operational expectations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single paragraph of moderate length, but every sentence contributes substantive behavioral information. It front-loads the core purpose. Slight verbosity exists, such as 'The capture had 126 rows and no proven paging selector', which is implementation detail with limited utility to an agent, but overall the structure is functional and not bloated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description covers an impressive range of operational details: request behavior, pagination, limits, truncation, and error handling. However, it does not describe the structure of the returned history data (e.g., fields, units), which an agent would need to interpret the output. Still, for a read tool with such caveats, it is largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for parameter semantics, but it largely fails to do so. It merely notes that include_sets is forwarded with unproven effect and that required inputs reflect policy, without explaining what 'player' should contain (e.g., name vs. ID) or what format include_sets expects. The description adds almost no semantic meaning to the schema properties.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Read') and a clear resource ('card market history for one player'), which immediately conveys what the tool does. It distinguishes from general market tools by specifying 'one player', but it does not explicitly contrast itself with sibling tools like market_rental_history or market_volume, leaving some differentiation to the agent's inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives. It neither states conditions for preferring it nor explains when not to use it. The only contextual hint is 'for one player', but that is more about scope than usage context. No names of sibling tools are given as alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

market_query_by_cardA

Read individual listings for one card definition using id or card_detail_id. The captured sale query returned flat listing rows. type=rent with rental_type=season returned seasonal listings; omitting rental_type returned empty for the same card. Limit is a leading-row bound; no page-two control is established. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNo
goldNo
sortNo
typeNo
levelNo
limitNo
editionNo
max_levelNo
min_levelNo
rental_typeNo
card_detail_idNo

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It discloses pagination limits, response-size truncation, refusal of oversized records, and lack of auto-fetch behavior. It could add error-handling or response-shape details, but it offers unusually direct information about how the tool behaves beyond a simple read cue.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a bit rambling, and the sentence 'The captured sale query returned flat listing rows' feels like an embedded audit note rather than essential usage guidance. Still, each sentence carries information, and the opening line is clear and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an 11-param schema with no descriptions, no output schema, and no annotations, the description covers many edge behaviors: size limits, no pagination, filter forwarding, and rental-type nuance. It does not fully explain all parameters, but provides enough context for the two documented keys and broad caveats for the rest.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds meaning to key parameters: id/card_detail_id, type, rental_type, and limit. However, schema description coverage is 0%, and the remaining parameters (gold, sort, level, edition, max_level, min_level) are only handled by a broad caution that filters are forwarded without guaranteed effectiveness. This leaves several parameters under-defined for an agent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and a precise resource: 'Read individual listings for one card definition using id or card_detail_id.' It clearly distinguishes this from grouped market endpoints by stressing 'individual listings' and 'one card definition,' and names the two relevant identifiers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides concrete behavioral observations about type=rent and rental_type=season, and notes that limit is a leading-row bound without a page-two control. It does not, however, say explicitly when to choose this tool over siblings or when not to use it, leaving some interpretation to the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

market_query_groupedA

Read listing groups for explicitly supplied comma-separated card definition IDs. Each group has card_detail_id, foil and a nested result list. With two card IDs, limit=1 returned one listing inside each group. This is different from a global row limit. type=rent with rental_type=season returned seasonal listings. Groups are returned intact or refused if a group cannot fit the result bound. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
goldNo
sortNo
typeNo
levelNo
limitNo
editionNo
card_idsYes
max_levelNo
min_levelNo
rental_typeNo

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden and does so substantially: per-group limit semantics, intact-or-refused group behavior, no auto-fetch continuation, local 100-row/256 KiB truncation, and refusal of oversized records are all disclosed. It does not cover all error/edge behavior, but it provides far more operational transparency than typical definitions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose and contains several earned caveats about bound behavior, continuations, and truncation. It is wordy, with example-based explanations that could be tightened, and some vague phrasing such as "Required inputs reflect tool policy as well as measured upstream requirements." It is adequate but not tightly edited.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given high complexity (10 string parameters, no output schema, no annotations), the description is unusually complete about result-bounding, filter trust, pagination behavior, and truncation/refusal semantics. It still lacks explicit possible values and any mention of continuation handling, but for a grouped query tool the essential invocation and behavioral cautions are well covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It meaningfully clarifies card_ids, limit (per group, not global), and the type=rent + rental_type=season interaction, and warns that other declared filters are forwarded without implied effectiveness. However, the remaining seven parameters (sort, gold, edition, level, min_level, max_level, etc.) get no concrete semantic guidance beyond that caution.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence is specific: "Read listing groups for explicitly supplied comma-separated card definition IDs" names the verb, resource, and input mode. It also clarifies the grouping shape (card_detail_id, foil, nested result list). It stops short of 5 because it never positions itself against sibling tools like market_for_sale_grouped, market_for_rent_grouped, or market_query_by_card, leaving the exact listing category somewhat implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: the tool is appropriate when you have comma-separated card definition IDs and want grouped results, and it warns that other filters may be forwarded without guaranteed effectiveness. There is no explicit when-to-use versus alternatives or exclusionary guidance, so an agent must infer when to prefer this over the grouped market siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

market_rental_historyA

Read card rental history with an explicit player or username. Both account aliases returned the same two rows; limit and take bounded leading rows. offset=1 and skip=1 returned empty even though limit=2 without offset returned two rows. An empty offset result does not prove the end of history. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
skipNo
takeNo
limitNo
offsetNo
playerNo
usernameNo

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden, and it is exceptionally transparent: it discloses pagination anomalies, one-request behavior, no continuation-page fetching, local array limits, truncation reporting, refusal of oversized records, and the caveat that filters are forwarded without guaranteed effectiveness. This goes well beyond what is typical.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but each sentence adds distinct value, and the most important purpose and scope statement is front-loaded. It could be better structured with bullet-like separation, but there is no filler or redundant restatement of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a six-parameter tool with no annotations and no output schema, the description covers operational quirks impressively. However, it does not describe the returned row fields or explicitly state in normative terms that a player or username is required, leaving some ambiguity for an agent trying to form a correct first call.

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 description coverage is 0%, so the description must compensate, and it does: it explains player/username as aliases, limit/take as leading-row bounds, and the surprising offset=1/skip=1 empty-result behavior. It covers all six parameters by group, but leaves exact value formats and the normative requirement to supply a player/username somewhat implicit.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence 'Read card rental history with an explicit player or username' gives a specific verb, resource, and scope, so an agent can tell this is a per-account rental-history lookup. It does not explicitly name or contrast sibling tools like market_history or rentals_by_player, so it stops short of full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear precondition ('with an explicit player or username') and useful invocation guidance about pagination, offset/skip behavior, and absence of auto-paging. It does not explicitly state when to prefer this tool over alternatives or list exclusion cases, but the context is much clearer than average.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

market_statusA

Read market status by one listing sell transaction id or comma-separated ids. Singular id returns one record when found, plural ids returns an array. An unmatched id returned an empty array. Supply exactly one selector; no record does not establish why it is absent. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNo
idsNo

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and does an excellent job: it discloses that it makes one logical GET request, does not auto-fetch continuation pages, limits array responses to 100 rows and 256 KiB, reports truncation in text and metadata, and refuses oversized records without partial fields. It also explains that unmatched ids return an empty array and that absence does not imply reason. This is rich behavioral context beyond what any schema could provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but every sentence earns its place. It front-loads the core purpose and then covers edge cases and limits. Slightly long, but each clause adds necessary behavioral information that annotations would normally carry. The structure is logical: purpose, response shape, selector rule, request behavior, limits.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given there is no output schema and no annotations, the description is remarkably complete. It covers response shape (single record vs array), empty behavior, selector constraints, request behavior, pagination, size limits, truncation reporting, and refusal of oversized records. An agent has everything needed to call this tool correctly and interpret results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains the two parameters (id vs ids) and their singular/plural semantics, and clarifies that exactly one selector must be supplied. It doesn't give format examples (e.g., comma-separated syntax) but the semantics are clear enough for an agent to invoke correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Read') and resource ('market status by one listing sell transaction id or comma-separated ids'), and clearly distinguishes singular vs plural behavior. It also differentiates from siblings by focusing on status lookup by transaction id, which is distinct from market_query_by_card, market_active_status, and market_completed_status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Supply exactly one selector' and explains the singular/plural id behavior, which tells the agent when to use id vs ids. It also warns that 'no record does not establish why it is absent' and that other declared filters are forwarded as supplied but effectiveness is not implied, giving clear guidance on what to expect and how to interpret results.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

market_volumeA

Read the upstream market transaction, USD volume and current rental aggregate figures. Preserve the wire values and units; this endpoint is not an individual player's history. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the disclosure burden, and it does so thoroughly: it states wire values/units are preserved, no auto-fetching of continuation pages, 100-row/256 KiB array limits, truncation reported in text and metadata, and refusal of oversized records. This is substantial behavioral context beyond a simple read label.

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?

Most sentences carry useful operational detail and the purpose is front-loaded. The 'Required inputs' and 'Other declared filters' sentences are vague and could be removed or clarified, so it is not perfectly concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read endpoint, the description covers the important operational semantics: scope, non-player-history nature, no-continuation behavior, local limits, truncation reporting, and oversized-record refusal. The response shape is not described, but the aggregate resource and limits give enough context for an agent to invoke and interpret results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the schema already fully expresses this (additionalProperties false), so the baseline is 4. The description adds no parameter-level detail; the references to 'required inputs' and 'declared filters' are vague and not anchored to schema properties, so they neither add nor subtract from schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific action ('Read') on a defined resource ('upstream market transaction, USD volume and current rental aggregate figures') and explicitly notes it is not an individual player's history, which differentiates it from player-history siblings. The wording 'upstream market transaction' is slightly opaque, but the aggregate scope is clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use when aggregate market volume/rental figures are needed and explicitly excludes individual player history. It does not name an alternative tool for player history or list when to choose a different market endpoint, so guidance is only partial.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

player_archived_balancesA

Read archived token balances for the explicitly supplied players. Use players: the upstream error message asks for username, but that alias returned HTTP 500 in the recorded probes. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
playersYes
usernameNo
token_typeNo

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure, and it does so thoroughly: one GET request, no auto-fetching of continuation pages, a 100-row/256 KiB array limit with truncation reported, and rejection of oversized records without partial fields. It also warns that filters are forwarded but not guaranteed effective by the upstream API.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but well-structured: purpose first, then parameter guidance, then behavioral limits and truncation behavior. Every sentence contributes a distinct piece of information, and there is little filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with three parameters, no annotations, and no output schema, the description addresses the likely failure modes: wrong alias, pagination, truncation, oversized records, and filter effectiveness. It is complete enough for an agent to select and invoke the tool correctly, even without an exact response shape.

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?

At 0% schema description coverage, the description compensates by naming players as the correct parameter, explaining that username is a broken alias, and clarifying that other filters like token_type are forwarded without implied effectiveness. It does not specify value formats for players or token_type, but it adds meaningful operational semantics beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence states a specific verb ('Read'), resource ('archived token balances'), and scope ('explicitly supplied players'), which clearly distinguishes it from sibling balance tools like player_balances or player_unclaimed_balances. It is not a tautology and immediately orients the agent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit operational guidance for parameter selection ('Use players' rather than username, citing HTTP 500 probes) and warns that other declared filters may not be effective. However, it does not explicitly compare this tool to sibling alternatives or state when to choose archived balances over current balances, so the when-to-use guidance is mostly implied by the word 'archived.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

player_authoritiesA

Read public purchase, delegation and rental authority assignments for the explicitly supplied players. These are public account names, not credentials; this tool never changes authorities. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
playersYes

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and does so thoroughly. It explicitly states the tool never changes authorities (read-only), makes one logical GET request without auto-fetching continuation pages, and imposes local limits on array responses (100 rows, 256 KiB) with truncation reporting. It also discloses that oversized records are refused. This is comprehensive behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently written with every sentence adding value: purpose, read-only nature, request behavior, filter handling, and response limits. It is front-loaded with the core purpose and uses clear, direct language. No redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read tool with no output schema, the description covers essential aspects: purpose, read-only behavior, pagination behavior, and response limits. It does not describe the exact return structure or fields, but that may be inferred from the domain. The mention of 'array responses' implies the return type. Minor gap: no error handling details, but overall adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate, but it barely does. It only refers to 'explicitly supplied players' without clarifying the format (e.g., comma-separated list or single string). The schema has a single string parameter 'players', but the description doesn't explain how to encode multiple players or whether the string expects a specific delimiter. This leaves significant ambiguity for an agent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Read') and resource ('public purchase, delegation and rental authority assignments') with a clear scope ('for the explicitly supplied players'). It distinguishes itself from other tools by focusing on authority assignments, which is unique among siblings. The read-only clarification further sharpens the purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context on when to use it (to read authority assignments) but does not mention alternatives or exclusions. It does not name sibling tools that might overlap (e.g., delegations_outgoing) or explain when to prefer this over them. The caveat about forwarded filters and upstream requirements gives some operational context but no comparative guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

player_avatarA

Resolve one player's legacy profile image link, which may be RUNI artwork and is not the avatar-builder character. Reads the official avatar endpoint once logically, inspects its HTTP 302 Location without following it, and returns avatar_url, image_url and redirect_status. Only HTTPS Splinterlands-domain image destinations are accepted. No image bytes are downloaded; the current image URL may change. A returned avatar does not prove the account exists. No credentials or game writes.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the full burden and delivers richly: it discloses that it makes a logical HTTP request, inspects the 302 Location without following it, does not download image bytes, that the URL may change, that a returned avatar does not prove account existence, and that no credentials or game writes are involved. This comprehensively sets expectations for a read-only resolve operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose, followed by behavioral details and caveats. Each of the six short sentences adds a distinct piece of information: purpose, mechanism, output fields, domain constraint, no-download behavior, volatility, non-proof of account, and safety. No fluff or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with no output schema? The description explicitly lists the return fields (avatar_url, image_url, redirect_status) and covers critical caveats like URL volatility, domain restrictions, and lack of account-existence proof. The tool's complexity is fully addressed; an agent has everything needed to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It implicitly ties the single 'name' parameter to the player via 'one player's legacy profile image link,' but does not explicitly state that the 'name' parameter is the player account name or what format is expected. A clearer explicit mapping would be needed to fully compensate for the schema's silence.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Resolve'), a resource ('one player's legacy profile image link'), and explicitly distinguishes it from the avatar-builder character by noting 'is not the avatar-builder character.' This disambiguates it from sibling tools like player_custom_avatar without needing to open schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context by positioning itself as resolving the legacy profile image link and contrasting with the avatar-builder character, implicitly indicating when to use this tool. It does not explicitly name alternatives or state 'when not to use,' but the distinction is unambiguous enough for an agent to route correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

player_balancesA

Read current token balances for the explicitly supplied players. The players selector can contain a comma-separated list; token_type is an upstream filter. No balances are totalled or converted. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
playersYes
usernameNo
token_typeNo

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully carries behavioral disclosure. It explicitly states: no totalling/conversion, one logical GET request, no auto-fetch of continuation pages, array responses limited to 100 rows and 256 KiB, truncation reported in text and metadata, and oversized records refused. This is exceptionally rich for a read tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose, then details parameters, then behavioral constraints. Each sentence adds information without redundancy. At roughly 150 words, it is moderately sized but efficient. Slight tightening could merge some clauses, but structure is logical and no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero annotation coverage, no output schema, and three parameters, the description covers the essential usage (purpose), parameter semantics, and critical behavioral constraints (pagination, limits, truncation). It does not specify the exact return format (e.g., how balances are represented), but it does mention truncation reporting, which hints at response structure. Minor gap, otherwise complete.

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 0%, so the description must compensate. It explains that 'players selector can contain a comma-separated list' and 'token_type is an upstream filter.' It also covers username and other filters with the note that they are 'forwarded as supplied; their effectiveness is not implied.' This gives meaningful semantics to two parameters and a general caveat for the third, which is adequate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Read current token balances for the explicitly supplied players.' It clearly distinguishes from siblings by emphasizing 'explicitly supplied' and noting no totalling/conversion, which sets it apart from aggregated balance tools. This is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for retrieving current balances when player identifiers are known, but it does not explicitly name alternative tools (e.g., player_unclaimed_balances, player_archived_balances) or state when not to use this tool. The context is clear but lacks exclusionary guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

player_burn_event_full_leaderboardA

Read the upstream full burn-event ranking route, whose captured response had 3344 compact rank/player/points rows. This server returns only a bounded leading portion, not the full ranking. The tested limit=2 and offset=2 query did not shorten or advance the response; no paging controls are exposed. Rank and points retain their string wire types. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. The leaderboard list are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the full disclosure burden, and it does so exceptionally well. It reveals the bounded response, ignored paging, local 100-row/256 KiB limits, truncation reporting, oversized-record refusal, string wire types, and lack of auto-fetching.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but each sentence earns its place by disclosing a distinct behavioral fact. It is slightly verbose and has minor grammatical awkwardness, but it is well organized and front-loads the core purpose before edge behaviors.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no annotations, no output schema, and no parameters, this description is remarkably complete. It covers what data is returned, the response size limits, truncation behavior, refusal of oversized records, wire types, and confirmation that pagination/continuation will not happen automatically.

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?

The input schema has zero propertiesigned, so there is little for the description to enrich. It mentions that filters are forwarded and that required inputs reflect policy, but since no parameters are declared, this is not misleading; the baseline for no parameters applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Read'), a specific resource ('upstream full burn-event ranking route'), and the expected content ('rank/player/points rows'). It immediately clarifies that the server returns only a bounded leading portion rather than the full ranking, which distinguishes it from what the name might otherwise imply.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides strong context about what not to expect: limit/offset are ineffective, paging is not exposed, and only one logical GET is made. However, it never explicitly says when to prefer this tool over sibling burn-event leaderboard tools or 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.

player_burn_event_leaderboardA

Read the burn-event leaderboard and its totals. The captured upstream list had 200 detailed rows; this server returns a bounded leading portion while retaining totals. Points and burn quantities are decimal strings returned unchanged. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. The leaderboard list are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full disclosure burden and does so thoroughly: it discloses bounded returns, no auto-pagination, truncation limits (100 rows/256 KiB), truncation reporting, refusal of oversized records, and decimal-string preservation. This is well beyond a bare operation statement.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening sentence is clear and front-loaded, and the technical caveats matter. However, the description is dense and somewhat repetitive (bounded portion, local limits, truncation reported) and contains vague policy wording, so not every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-parameter read endpoint with no output schema, the description covers limits, truncation, single-request behavior, and value types. It leaves some ambiguity about the exact shape of totals and the meaning of 'declared filters,' but an agent has enough to invoke and interpret results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero properties and 100% coverage, so there are no parameter semantics to document; the baseline of 4 applies. The mention of 'declared filters' is slightly confusing given an empty schema, but it does not add actionable parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Read') and resource ('burn-event leaderboard'), and immediately clarifies it returns a bounded leading portion plus totals rather than the full upstream set. This distinguishes it from the sibling player_burn_event_full_leaderboard even without naming it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for a single-request, bounded leaderboard read: it returns a leading portion, retains totals, and does not auto-fetch continuation pages. However, it never explicitly states when to choose this over the full_leaderboard sibling or when not to use it, so the guidance is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

player_card_airdropA

Read card-airdrop eligibility and recorded claim information for one player. This tool never claims an airdrop. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNo
categoryNo
usernameYes
include_transactionNo

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite having no annotations, it discloses read-only behavior, pagination behavior, response limits, truncation reporting, refusal of oversized records, and the pass-through semantics of filters. This is unusually transparent and carries the full behavioral burden with no annotation support.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Five dense sentences, all front-loaded after the purpose statement. Each sentence adds a separate operational constraint, though the filter caveat is slightly abstract.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The behavioral context is strong, but with no output schema and no per-parameter descriptions, the optional inputs remain undefined. An agent can call the tool with username alone, but cannot reason about the semantics of mode, category, or include_transaction.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides zero description coverage for mode, category, username, and include_transaction. The description only warns that filters are forwarded as supplied and their effectiveness is not implied; it never defines what mode, category, or include_transaction mean or what values are valid.

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?

Opens with 'Read card-airdrop eligibility and recorded claim information for one player', specifying a verb, resource, and scope. This clearly distinguishes it from broader airdrop or collection endpoints by limiting to a single player.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States this tool 'never claims an airdrop' and makes 'one logical GET request', establishing that it is the safe read-only option for eligibility checks. It does not name a sibling alternative or give explicit when-not-to-use conditions, but the context is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

player_current_rewardsA

Return the current season's glint totals for one account from GET /players/current_rewards. The measured public response carried a season_reward_info object with the season number and a glint figure per format. Some per-format glint fields were observed null on the captured account and carry no declared type; the wild and survival figures were observed as numbers. A missing figure is not evidence that the account earned nothing. One account and one season were captured; no claim is made about which formats carry a figure in general.

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYes

TDQS

A3.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does so unusually well. It discloses the observed response shape, notes that some per-format fields may be null and have no declared type, warns that a missing figure is not evidence of zero earnings, and clarifies the limited one-account/one-season sampling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The action is front-loaded and every sentence adds meaningful context, especially the null and sampling caveats. It is slightly dense, but the length is justified by the behavioral transparency it provides.

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?

Despite having no output schema, the description explains what the response contains, describes the season_reward_info object, and addresses edge cases around null fields and sampling. For a one-parameter read-only endpoint, nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter, username, is already clearly defined by the input schema as a required string, so schema coverage is effectively complete. The description only says 'for one account' and never mentions username directly, so it adds minimal extra parameter-level meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource: returning the current season's glint totals for one account from GET /players/current_rewards. It is specific about the data returned, but does not explicitly contrast itself with siblings like player_last_season_rewards, so it misses the top score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by 'current season's glint totals' and the endpoint name, which suggests this is for current-season reward data rather than historical. However, the description does not explicitly name alternatives, conditions, or exclusions, leaving some routing inference to the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

player_custom_avatarA

Read the saved custom avatar-builder settings from the official player_avatar endpoint. Returns numeric level separately as data alongside appearance selections and badges. Set render=true to compose the official artwork layers into a PNG; metadata-only calls download no images. Rendered art excludes level text, badges and exemplar level frame/gem overlays. Level text must not be automatically added to artwork; any client level label is separate. Use this for the custom character, not the legacy RUNI/profile image redirect. No credentials or game writes.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
renderNo

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite no annotations being provided, the description fully discloses behavior: metadata-only calls download nothing, rendered art omits level text, badges, and exemplar overlays, clients must not add level text, and the operation requires no credentials and performs no game writes. This exceeds typical transparency and leaves very little behavioral ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is information-dense with no filler. It leads with the core action, then details rendering behavior, exclusions, client policy, and safety properties. Every sentence earns its place while keeping the full description manageable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-parameter tool with no output schema and no annotations, this description is remarkably complete. It covers the returned data shape (numeric level, appearance selections, badges), render options, image-exclusion behavior, legacy vs custom scoping, credential requirements, and side effects. An agent has enough information to make the correct call, including how to handle the returned data.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description must compensate for both parameters. It does explain `render` thoroughly: 'Set render=true to compose the official artwork layers into a PNG; metadata-only calls download no images.' However, it never explicitly explains the `name` parameter; an agent must infer that it is a player or avatar identifier. The semantics are adequate for one parameter but incomplete overall.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Read the saved custom avatar-builder settings from the official player_avatar endpoint.' It further differentiates the tool by directing agents to use it 'for the custom character, not the legacy RUNI/profile image redirect,' making its scope unambiguous relative to siblings such as player_avatar.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear situational guidance: 'Set render=true to compose the official artwork layers into a PNG; metadata-only calls download no images.' It also states an exclusion: use this for the custom character, not the legacy RUNI/profile redirect. However, it does not explicitly compare with sibling tools like player_avatar beyond referencing the same endpoint, leaving some selection nuance to the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

player_decA

Read the global DEC accounting figures. This endpoint has no declared player selector and does not report a player's DEC balance; use player_balances for that question. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully carries behavioral disclosure. It reveals it makes a single logical GET request, does not auto-fetch continuation pages, limits array responses to 100 rows and 256 KiB with reported truncation, and refuses oversized records without partial fields. It also discloses that filters are forwarded as supplied without implied effectiveness. This is exceptionally transparent about the tool's operational quirks.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but every sentence provides distinct value: purpose, scope clarification, pagination behavior, required inputs policy, filter handling, size limits, and truncation/refusal policy. It is front-loaded with the most critical purpose and differentiation, and no sentence is redundant or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool, the description is remarkably complete. It covers what the tool does, what it does not do, its request behavior, size limits, truncation handling, and refusal policy. While it does not detail the output format, the absence of an output schema and the tool's simplicity make the provided information sufficient for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are 0 parameters, so schema coverage is effectively 100%. The description adds general context about how any declared filters would be forwarded, but since there are none, it does not need to elaborate on parameter specifics. It earns the baseline 4 for providing some behavioral context around parameters without being required to describe any.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear verb+resource: 'Read the global DEC accounting figures.' It distinguishes itself from player_balances by explicitly stating it does not report a player's DEC balance and directs the agent to use player_balances for that question. This makes the tool's purpose precise and distinct from its sibling.

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?

It explicitly provides usage guidance by stating 'use player_balances for that question' when a player-specific balance is needed, and notes the absence of a player selector, signaling it is for global figures only. This gives clear when-to-use and when-not-to-use direction relative to the most relevant sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

player_energy_purchase_informationA

Read purchased-energy and purchase-tier information for one player. This tool never purchases energy. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYes

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden and does so thoroughly. It discloses side-effect freedom ('never purchases energy'), network behavior ('one logical GET request and does not auto-fetch continuation pages'), response limits ('100 rows and 256 KiB'), truncation reporting, and refusal of oversized records without partial fields. This is rich, non-obvious behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and contains useful behavioral details, but several sentences are generic or inapplicable. 'Required inputs reflect tool policy as well as measured upstream requirements' is vague, and 'Other declared filters are forwarded as supplied' is misleading given the schema only has username and additionalProperties false. The content is organized but not every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read tool with no annotations and no output schema, the description is largely complete: it covers side effects, pagination behavior, response size limits, truncation, and refusal behavior. It does not describe the exact return fields or error/auth expectations, but these are not critical given the tool's simplicity and the absence of an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, but it only adds that the request targets 'one player,' implying username identifies that player. It also says required inputs reflect tool policy and upstream requirements, which is vaguely useful but does not explain username format, constraints, or how it relates to purchase-tier data. The 'other declared filters' sentence is not applicable because the schema has no other properties.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Read purchased-energy and purchase-tier information for one player.' The explicit statement 'This tool never purchases energy' further differentiates it from any purchase-like sibling, so the agent can identify the read-only intent and single-player scope without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage context: it is for reading information about one player, never purchasing energy, and it performs a single GET without auto-fetching continuation pages. It does not name an alternative sibling tool or state explicit when-not-to-use conditions beyond 'never purchases energy,' but the context is clear enough for correct selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

player_inventoryA
Read-onlyIdempotent

Read one account's inventory with an explicit upstream type filter. Land reduced the observed response but retained Token rows, so type is not an exact row-type predicate; other type values are not verified. Optional item_detail_id filters the entire returned array locally before the 100-row/256-KiB result bound, without another request. Reports upstream and matched counts; truncation is explicit and no continuation is fetched. Preserves records, quantities and wire types. Inventory presence or absence does not establish eligibility to stake an item or complete holdings. Power Core item detail ID 322 was absent from the observed inventory response. Separate land_power_core_available and land_power_core_grouped tools expose the dated populated STK-LND-PCR contracts; availability is not a guarantee of staking eligibility. No credentials or mutations. Makes one logical GET with a 2-MiB transport bound.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYes
usernameYes
item_detail_idNo

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes far beyond the annotations: explains that type is not an exact row-type predicate, item_detail_id filters locally before the row/size bound, counts are reported, truncation is explicit with no continuation, and the call makes one logical GET with a 2-MiB transport bound. This adds substantial behavioral context without contradicting readOnlyHint, openWorldHint, or idempotentHint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense and front-loaded with the core purpose, and nearly every clause adds behavioral or routing value. The specific observation about item detail ID 322 being absent is narrow but informative; slightly more focus could make it tighter.

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?

Even without an output schema, the description covers request shape (one logical GET, transport bound), return behavior (counts, truncation, preservation of records/quantities/wire types), and domain limitations (staking eligibility, alternative power-core tools). An agent has enough context to select and call this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has no descriptions, so the description carries the burden. It adds meaning for type as an upstream filter with caveats, item_detail_id as a local post-filter before limits, and username as the account selector. It does not enumerate valid type values, but the open-world caveat is explicitly stated.

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?

Opens with a specific action and resource: "Read one account's inventory with an explicit upstream type filter." It also distinguishes itself from related siblings by noting that separate land_power_core_available and land_power_core_grouped tools exist for dated populated STK-LND-PCR contracts, helping an agent identify what this tool is and is not.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides concrete when-not guidance: inventory presence does not establish staking eligibility, and it explicitly names alternative tools for power-core contract data. It also sets expectations about local filtering, truncation, and no continuation, so an agent can decide whether this tool is sufficient before invoking it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

player_last_focus_rewardsB

Return one account's last completed focus from GET /players/last_focus_rewards. The measured public response carried a quest_data object with an id, the account, creation date and block, a name, item counts, a reward quantity and claim details. quest_data.name carries a format such as wild; it does not name an account. quest_data.rewards is a JSON-encoded STRING inside the JSON response and is returned exactly as received; this server does not parse it. Two fields were null on the captured account, so no type is claimed for them. One account was captured.

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYes

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Even though no annotations are provided, the description discloses non-obvious behavior: quest_data.rewards is a JSON-encoded string returned unparsed, quest_data.name is a format-like label rather than an account name, and two fields were null on the captured account. This goes well beyond a generic 'return rewards' statement and helps an agent interpret the response correctly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is moderately long at about 100 words, but every sentence contributes either response structure or a caveat. The purpose is front-loaded, and the quirky details about rewards and name are valuable enough to justify the length, though the enumeration of response fields could be tightened.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema and no annotations, the description partially compensates by summarizing the response object and calling out two important quirks. However, it does not define the top-level response container, the username parameter, or not-found/error behavior, and it lacks usage context, so an agent still has to infer several essentials.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has a single required username with only minLength, and the description never explicitly documents that username is the account identifier or how it should be formatted. It says 'one account's last completed focus' and notes that quest_data.name is not an account name, but that is indirect. With 0% schema description coverage, the description should compensate with explicit parameter semantics and does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence names a specific operation and resource: 'Return one account's last completed focus' and cites the endpoint path GET /players/last_focus_rewards. This is clear and informative, but it does not contrast with sibling reward endpoints like player_current_rewards or player_last_season_rewards, so differentiation relies mostly on the tool name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit conditions for when to use this tool instead of alternatives, nor any exclusions. The only signal is 'one account's', which implies the username parameter, but there is no guidance relative to the many sibling player_* and reward-related tools. An agent must infer the intended use from the tool name and endpoint.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

player_last_season_rewardsA

Return the previous season's glint totals for one account from GET /players/last_season_rewards. The measured public response carried the same season_reward_info shape as the current-season route, with the season number and a glint figure per format. Three per-format glint fields were observed null on the captured account and carry no declared type; only the wild figure was observed as a number. A missing figure is not evidence that the account earned nothing. One account and one season were captured. This tool is a separate route from the current-season one and no equivalence between them was tested.

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses important behavioral traits: null fields may appear, nulls do not indicate zero earnings, and the tool was only tested on one account and one season. However, it does not address potential error cases, authentication requirements, or rate limits. The provided caveats are valuable but not comprehensive, leaving gaps in expected behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description starts with the primary purpose in the first sentence, then adds focused technical caveats. It is reasonably concise with no filler, although some details about observed nulls could be seen as slightly verbose. The front-loading is effective and each sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple schema (one string param) and no output schema, the description provides useful context about the response shape and null handling. However, it omits details about the exact 'season_reward_info' structure (e.g., list of formats) and does not specify any limitations beyond lack of equivalence testing. It is adequate but not thorough enough to fully prepare an agent without additional schema info.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage and the description adds almost no meaning to the 'username' parameter beyond its name. It says 'for one account' but never directly links it to the username parameter or explains the expected format (e.g., player name vs. ID). This leaves the agent without additional context to correctly populate the parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('Return'), a specific resource ('previous season's glint totals for one account'), and the route ('GET /players/last_season_rewards'). It distinguishes itself from the current-season route by explicitly saying it's a separate route with no tested equivalence, making it clear this tool targets a different time period than sibling tools like player_current_rewards.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implicitly indicates usage for previous season data and warns against assuming equivalence with the current-season route, but does not explicitly state when to use this tool over alternatives. It lacks explicit 'use this when...' guidance or contrast with other player-related tools. The statement about being a separate route is a hint but not a full usage guideline.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

player_leaderboardA

Read the ranked leaderboard rows for the selected season, leaderboard and format. The default capture returned 20 rows; an explicit modern-format capture returned 26. The undocumented limit=2 and offset=2 probe returned the unchanged default rows, so no pagination controls are exposed. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNo
seasonNo
leaderboardNo

TDQS

A3.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so thoroughly. It discloses pagination behavior, single-request behavior, local row and byte limits, truncation reporting, refusal of oversized records, and the fact that filters are forwarded without implied effectiveness.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description front-loads the purpose and packs in useful behavioral details, but the empirical probe narrative (default 20 rows, modern-format 26, limit=2/offset=2 returning unchanged rows) is verbose and could be condensed into 'no pagination controls are exposed.' It is informative but not tightly edited.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple three-string-parameter tool with no output schema and no annotations, the description covers many behavioral edge cases and response limits. Still, it omits the shape of a leaderboard row, any error behavior, and clear required-parameter semantics, so an agent would still have to probe or infer some essential calling details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description needed to compensate. It identifies the three selection dimensions and notes that required inputs reflect tool policy, and that declared filters are forwarded as supplied. However, it does not explain expected value formats, which parameters are actually required, or the meaning of each filter beyond its name.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific operation ('Read the ranked leaderboard rows') and the selection dimensions (season, leaderboard, format). It is clear about what the tool returns at a high level, though it does not contrast itself with sibling tools such as player_leaderboard_with_player or player_richlist.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to choose this tool over alternatives and names no sibling tools. It gives behavioral caveats (no pagination, no auto-fetch) but does not state a use case or exclusions, so an agent is left to infer applicability.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

player_leaderboard_with_playerA

Read the selected season's leaderboard together with the requested player's separate rank record. Both season and username are required. The upstream returned HTTP 200 with an error object when season was omitted. The separate player record is retained even when the leaderboard list is locally shortened. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. The leaderboard list are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNo
seasonYes
usernameYes
leaderboardNo

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden, and it does so thoroughly: it discloses one logical GET, no continuation-page auto-fetch, local limits of 100 rows and 256 KiB, truncation reporting, refusal of oversized records, and the upstream HTTP 200-with-error-object quirk when season is omitted. It also states that the player record is retained when the list is shortened.

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?

Informativeness is front-loaded in a clear opening sentence and every subsequent sentence adds behavior or edge-case details. A few sentences are verbose or grammatically awkward (e.g., 'The leaderboard list are locally limited'), but there is no substantive repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is rich in behavioral caveats—truncation, pagination, upstream errors, policy-driven required inputs—which compensates for the lack of annotations. However, with no output schema and undefined optional parameters, an agent still lacks a clear picture of the exact return structure and the accepted values for 'format' and 'leaderboard'.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It explains that season and username are required, but it never defines 'format' or 'leaderboard' semantics; 'Other declared filters are forwarded as supplied' is vague and does not tell an agent what values or formats those optional parameters expect.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence uses a specific verb ('Read') and a clear resource: the selected season's leaderboard plus the requested player's separate rank record. This distinguishes it from sibling player_leaderboard by the explicit inclusion of a per-player rank record and the requirement for both season and username.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when to call the tool (when both a season leaderboard and a specific player's rank record are needed) and states that both season and username are required. However, it never names alternatives such as player_leaderboard or says when NOT to use this tool, so the guidance is primarily implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

player_lp_claim_historyA

Read liquidity-provider claim history for one player. In paired probes limit=1 returned one leading row; limit=2 with offset=1 repeated the two rows returned without offset. No working page-two cursor is established. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
tokensNo
usernameYes
addressesNo
claim_txsNo

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and delivers rich behavioral details: it discloses pagination caveats (no working page-two cursor), explains that only one GET request is made without auto-fetching pages, warns that other filters are forwarded without effectiveness guarantees, and specifies local limits of 100 rows and 256 KiB with truncation reporting. It also notes oversized records are refused, which is valuable operational behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is moderately sized but dense with important details. It front-loads the core purpose and then adds caveats, but it could be structured better by separating behavioral constraints from parameter specifics. It avoids fluff, but some repetition of 'does not auto-fetch' and 'no working page-two cursor' could be streamlined.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is thorough given the tool's complexity: it discloses limits, pagination behavior, request behavior, and parameter expectations. Without an output schema, it doesn't describe the return format, which is a minor gap, but the behavioral details are sufficient for an agent to call it safely. It's nearly complete, but a brief mention of response structure would fully match complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although the input schema only provides parameter names with minimal types, the description adds semantic meaning: it identifies username as required, explains that limit and offset have specific behaviors (limit=1, offset=1), and clarifies that other filters are forwarded without implied effectiveness. Since schema coverage is 0%, the description compensates well by interpreting pagination parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool's purpose: reading liquidity-provider claim history for a single player. It specifies the verb 'Read', the resource 'liquidity-provider claim history', and the scope 'for one player', which distinguishes it from broader history tools among siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides contextual usage hints: it notes that limit=1 produced one row, limit=2 with offset=1 repeated rows, and declares no working page-two cursor, guiding agents on pagination behavior. However, it lacks explicit statements of when to use this tool versus alternatives, though the 'for one player' scope implies alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

player_pack_purchasesA

Read the upstream pack-purchase summary for one player and optional edition. This is a read operation and never purchases packs. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
editionNo
usernameYes

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description correctly carries the full disclosure burden and does so exceptionally: it is a read operation, never purchases, issues a single logical GET, never auto-fetches continuation pages, truncates arrays at 100 rows/256 KiB with truncation reported, and refuses oversized records. This goes well beyond minimal safety disclosure and proactively manages agent expectations about network behavior and failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose, then proceeds through safety, network behavior, and failure modes in a logical order. A slight redundancy exists between 'never purchases packs' and the earlier read framing, but no sentence is wasted overall; the density is appropriate for a tool with no annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given only 2 parameters, no annotations, and no output schema, the tool description alone must deliver everything an agent needs for a safe call: purpose, read-only guarantee, single-request behavior, non-pagination, response-size limits, truncation reporting, and refusal policy. For a low-complexity tool this is complete; the only thing an agent cannot know is the exact field shape, which would normally come from an output schema.

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 0%, so the description must compensate. It adds meaning by explaining which inputs are required and why ('Required inputs reflect tool policy as well as measured upstream requirements'), noting pass-through filters, and warning that effectiveness of declared filters is 'not implied.' It establishes username as the player identifier and edition as the optional filter, though it does not explain edition values or formatting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence states a specific verb+resource: 'Read the upstream pack-purchase summary for one player and optional edition.' It is clearly a read-style summary tool for a single player, which differentiates it from the batch-purchase stats (purchase_stats), pack-data endpoint (cards_pack_data), and general player inventory tools in its siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes the intended use clear ('read ... summary for one player and optional edition') and reinforces that it 'never purchases packs,' which removes a natural misuse concern. However, it does not explicitly name alternatives or state when-not-to-use compared to the many sibling player_* and purchase_* endpoints, so it stops short of the 5-level.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

player_presale_leadersA

Read presale leader rows and upstream total pack figures. Optional username adds a separate curr_player record, retained outside the bounded leaders list. The full upstream capture had 300 rows and exceeded 256 KiB, but a bounded list can be returned without dropping totals or the requested-player record. The tested limit=2 and offset=2 query had no effect; there is no exposed page-two control. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. The players list are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameNo

TDQS

A3.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so thoroughly. It discloses that exactly one GET request is made, continuation pages are not auto-fetched, results are locally limited to 100 rows/256 KiB with truncation reported, oversized records are refused without partial fields, and pagination controls have no effect. This is unusually rich behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description front-loads purpose well but then becomes rambling and includes internal empirical notes such as 'full upstream capture had 300 rows and exceeded 256 KiB' and 'tested limit=2 and offset=2 query had no effect.' Sentences like 'Required inputs reflect tool policy as well as measured upstream requirements' are vague and could mislead. The content could be tightened into structured bullets.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read tool, the description covers the optional username behavior, truncation, and lack of pagination, so an agent can probably make the call correctly. However, there is no output schema, and the description never specifies the response fields or shape, while references to 'required inputs' and 'other declared filters' are ambiguous and unexplained.

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?

The schema only defines an optional username string, while the description adds the key semantic effect: it appends a separate curr_player record retained outside the bounded leader list. It stops short of detailing the record's shape or providing examples, so it earns a 4 rather than a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence names a specific verb and resource: 'Read presale leader rows and upstream total pack figures.' This clearly states what the tool does and is distinct enough from the generic leaderboard siblings. It does not explicitly contrast with sibling tools like player_leaderboard_with_player or player_richlist, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives useful call-time context: username is optional and adds a separate curr_player record, pagination is ineffective, and no continuation pages are auto-fetched. However, it never states when to choose this tool over alternative leaderboard or richlist tools, so usage guidance is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

player_profileA

Return one account's profile from GET /players/details. This route is ABSENT from the main host's published declaration and was found by probing; it answered publicly with no token, and its selector is name, not username. The captured response was about 4.7 KB and carried the account name, join date, ranked figures, collection power, league, a public guild record, a player_uuid and a season pass flag. Ranked figures appear per format: the wild figures are unprefixed, with modern_, survival_ and foundation_ fields alongside. player_avatar is a JSON-encoded string inside the JSON response and is returned as a string; this server does not parse it a second time. Four fields were null on the captured account, so no type is claimed for them. One account was captured, so which fields are always present is not established beyond the name.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so thoroughly: it discloses the route is absent from the published declaration, was found by probing, requires no token, and reports response size, field prefixes, avatar double-encoding, null fields, and the fact that only one account was captured so presence of fields is not established.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but each sentence adds non-redundant caveats or response details that matter because there is no output schema. It is front-loaded with purpose and endpoint, and the following detail is grouped logically, though it could be tightened.

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?

Since there is no output schemaFrances, the description fully covers return value shape, encoding quirks, missing fields, and reliability limitations. It also gives a clear parameter meaning and auth expectation, so an agent has enough information to correctly call and interpret the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must explain the parameter and does: it clarifies the selector is 'name', not 'username'. It does not expand on valid formats beyond the schema's minLength, but for a single string parameter this is adequate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence names the exact endpoint and states it returns one account's profile. It also distinguishes the tool from sibling player lookups by explicitly noting the selector is 'name, not username'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to use this tool versus the many sibling player_* tools, and there is no explanation of exclusions or alternative routes. The intended use is implicit from the verb and endpoint, but not stated as a decision rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

player_questsA

Read the quest rows returned for one player. JSON-encoded rewards strings are passed through unchanged. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYes

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full disclosure burden and does so thoroughly: reward strings are passed through unchanged, pagination is not auto-fetched, responses are capped at 100 rows and 256 KiB with truncation reported, and oversized records are refused without partial fields. This is behavioral detail far beyond a simple read statement.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and each subsequent sentence adds real behavioral information. It is slightly boilerplate-heavy for a one-parameter tool, particularly the 'required inputs reflect tool policy' and 'other declared filters' sentences, but it remains compact and logically ordered.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only single-parameter tool with no output schema, the description is largely complete: it covers request behavior, pagination, size limits, truncation reporting, and refusal behavior. The only notable gap is the absence of any detail about the structure or content of the returned quest rows beyond the JSON-encoded rewards strings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate, and it adds only 'one player' and a policy note for the required username. That clarifies that username identifies the player, but it does not explain username format or validation beyond the schema's minLength, and the sentence about 'other declared filters' is confusing because additionalProperties is false and no other filters are declared.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and object: 'Read the quest rows returned for one player.' It clearly identifies the resource (quest rows), the subject (one player), and the read-only nature, which distinguishes it from the many other player_* and reward-oriented tools in the sibling list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use guidance or mention of an alternative tool. The statement about not auto-fetching continuation pages hints at a single-page use case, but the description never tells an agent when player_quests should be chosen over player_current_rewards, player_last_season_rewards, or other quest-related endpoints.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

player_recent_teamsB

Read the public recent team compositions for one player. The credential-bearing decrypt_key parameter is not exposed; this tool never accepts a decryption key. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNo
playerYes

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and does substantial work: it discloses that the tool never accepts a decrypt_key, makes one logical GET request, does not auto-fetch continuation pages, forwards filters without guaranteeing effectiveness, limits arrays to 100 rows/256 KiB, reports truncation, and refuses oversized records. This is rich behavioral disclosure, though it does not describe the response structure or error behavior beyond these constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and is compact given the number of behavioral constraints it communicates. A couple of sentences ('Required inputs reflect tool policy...' and 'Other declared filters are forwarded as supplied') are somewhat abstract and could be sharper, but overall every sentence adds functional value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter GET tool with no output schema, the description covers a lot: no decrypt_key, single request, no continuation pagination, local limits, truncation reporting, and refusal of oversized records. However, the 'format' parameter is left unexplained, and there is no description of the actual response fields, so some information an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, but it only clarifies that decrypt_key is never accepted. It does not explain what 'format' means or what values it accepts, nor does it explicitly state that 'player' is an account name/ID. The statement 'Other declared filters are forwarded as supplied' is a caveat, not a definition, leaving the actual parameters under-described.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence, 'Read the public recent team compositions for one player,' names a specific verb and resource, clearly distinguishing this tool from the many other player_* siblings. It adds important qualifiers ('public', 'for one player') but does not explicitly name an alternative, so it falls just short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: an agent would use this when it needs a player's recent team compositions. However, the description does not provide explicit when-to-use/when-not-to-use guidance or name any alternative tool, so it lacks the explicit routing that would earn a 4 or 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

player_reward_delegation_historyA

Read reward-delegation history for one player. In paired probes limit=1 returned one leading row, but limit=2 with offset=1 returned an empty array despite a populated response without offset. An empty offset result does not establish the end of history. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
tokenNo
typesNo
offsetNo
trx_idsNo
usernameYes
delegate_to_playerNo
delegate_to_playersNo

TDQS

A3.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully carries the behavioral burden and does so well. It discloses pagination quirks, the absence of auto-fetch continuation pages, local response limits (100 rows, 256 KiB), truncation reporting, and refusal of oversized records. This is far beyond the minimal 'read history' statement.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than average but every sentence adds important caveats about pagination, truncation, or filter behavior. It front-loads the purpose and keeps the most critical operational facts visible, though the probe anecdote could be tightened.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is unusually rich in behavioral detail, especially given the lack of annotations and output schema. However, it still leaves a gap around individual parameter meaning and response structure, which matters for an 8-parameter tool with 0% schema description coverage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, yet the description does not meaningfully explain most of the eight parameters. It mentions limit and offset in a probe scenario, but does not define their expected values or semantics. The general statement that filters are 'forwarded as supplied' warns about effectiveness but does not clarify what types, trx_ids, or delegate_to_player mean.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence states a specific verb ('Read') and resource ('reward-delegation history') scoped to one player. This clearly distinguishes it from the sibling player_reward_delegations, which likely covers current delegations rather than historical records.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description never explicitly tells an agent when to choose this tool over alternatives such as player_reward_delegations, delegations_outgoing, or player_balances_history. It provides behavioral caveats but no decision guidance about which sibling covers current vs. historical data.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

player_reward_delegationsA

Read current reward-delegation rows for one player. Percent values are returned with their original wire types. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYes

TDQS

A3.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the full burden of behavioral disclosure, and it does well: it states it makes one logical GET, does not auto-fetch continuation pages, returns percent values with original wire types, applies local truncation limits on arrays, reports truncation in text and metadata, and refuses oversized records without partial fields. This goes substantially beyond what the sparse schema or annotations would otherwise communicate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and then all behaviour is compactly conveyed. Its length is justified because it has to supply response/request characteristics that would otherwise be missing without annotations or an output schema. A couple of statements, like 'Required inputs reflect tool policy', add little actionable detail, but overall it is structured and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the main behavioral facts: GET semantics, output type for percent values, pagination non-behavior, limits, truncation, and refusal of oversized records. However, because there is no output schema and no field-level detail, the agent still lacks a clear picture of what a reward-delegation row contains or what the returned structure looks like, and the 'declared filters' wording is unclear against the enforced single-parameter schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage and one actual parameter, username. The description only minimally associates username with "one player" and gives no further explanation of format, validation, or how the parameter maps to the endpoint. The note about "other declared filters being forwarded" is confusing because the schema declared only username and additionalProperties is false, so it does not compensate for the parameter documentation gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb and resource: it reads "current reward-delegation rows for one player." The word "current" helps distinguish this from the sibling sibling 'player_reward_delegation_history' and similar player-related endpoints, though it does not explicitly name alternative tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase "for one player" and "current reward-delegation rows" imply when to use the tool, giving agents a basic selection context. However, the description never explicitly contrasts this with the sibling player_reward_delegation_history or other delegation endpoints, and it gives neither exclusions nor when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

player_richlistA

Read token-holder rankings and the upstream's total_accounts and total_quantity figures. token_type is required; player optionally adds player_rank. The observed limit parameter returns leading rows. Offsets 0, 2 and 4 repeated the same two leading accounts with limit=2, so offset is not exposed and this is a top-N query, not a complete holder listing. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. The richlist list are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
playerNo
token_typeYes

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does so thoroughly: it discloses that offset is not exposed, only one logical GET is made, continuation pages are not auto-fetched, results are capped at 100 rows/256 KiB, truncation is reported, and oversized records are refused. No contradictions with annotations exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but appropriately sized for the endpoint's caveats. Purpose and required inputs come first, followed by behavioral limits and data-size constraints; every sentence contributes information rather than restating the name.

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?

Despite no annotations and no output schema, the description is complete enough for selection and invocation: it covers required inputs, top-N behavior, pagination/request behavior, local limits, truncation, oversized-record handling, and it states the returned quantities. No critical operational detail appears to be 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 description coverage is 0%, so the description must add meaning, and it does: token_type is required, player adds a player_rank, and limit controls the leading rows returned. The wording around player_rank is slightly ambiguous, but all three parameters receive at least some semantic context beyond their raw schema types.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies a specific resource and action: reading token-holder rankings plus upstream total_accounts/total_quantity figures, and clarifies required vs optional inputs. It does not explicitly differentiate itself from the sibling player_richlist_ranking, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description conveys that this is a top-N query, not a complete holder listing, and warns that declared filters may have no effect, which implies when it is appropriate. However, it never names an alternative tool or states explicit when-to-use/when-not-to-use conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

player_richlist_rankingA

Read one player's token rank and balance as the upstream reports them. token_type and player are required by this tool; without player the upstream returned only token_type, which is not an account ranking. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
playerYes
token_typeYes

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses that it makes one GET request, does not auto-fetch continuation pages, imposes local limits on array responses (100 rows, 256 KiB), reports truncation, and refuses oversized records. This is rich behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but front-loaded with the core purpose, then provides critical usage constraints and behavioral notes in a structured, no-fluff manner. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given two simple string parameters and no output schema, the description covers what an agent needs: required inputs, upstream behavior, pagination, local limits, and truncation handling. It is complete for correct invocation.

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 0%, so the description must compensate. It clarifies that both token_type and player are required and that player is needed for account ranking. It does not explain the format of token_type (e.g., enum) but the context is sufficient for basic use.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool reads one player's token rank and balance as reported by the upstream. It specifies the required parameters and distinguishes from the sibling 'player_richlist' (which likely returns a list, not a single player's rank).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says that token_type and player are required, and explains that without player the upstream returned only token_type (not an account ranking). It also clarifies that other filters are forwarded but not guaranteed to be effective. It does not explicitly name alternative tools but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

player_seasonA

Read one season record by its explicit id, including its end time and reset block value. Omitting id returned HTTP 400. This is GET /season on the main API host, not /players/season; obtain a season id from a leaderboard response if needed. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden and does so thoroughly. It discloses the HTTP method (GET), the single logical request nature, lack of continuation-page auto-fetching, local response truncation limits (100 rows, 256 KiB), reporting of truncation, and refusal of oversized records. This is exceptional transparency for a read operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is relatively long but every sentence adds value. It front-loads the primary purpose and then covers important edge cases and constraints. It is dense yet not redundant, though it could be slightly more compact without losing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-by-id tool, the description is complete. It specifies the output fields, the request behavior, response size limits, error for missing id, and the source of valid ids. Given there is no output schema, this description provides all necessary context for an agent to call the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds meaning to the single parameter by stating it is an 'explicit id' and that omitting it results in HTTP 400. It also explains where to obtain the id (leaderboard response). Although schema coverage is 0%, the description compensates by clarifying the id's role and provenance, which is more than a minimal replication of the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reads one season record by its explicit id, and even specifies the returned fields (end time, reset block value). It distinguishes itself from the sibling endpoint /players/season, leaving no ambiguity about what resource is accessed.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is used when you have a season id, and even suggests obtaining it from a leaderboard response. It clarifies the correct endpoint (GET /season) vs /players/season, which helps avoid misuse. However, it does not explicitly list alternative tools that might be more appropriate in other cases, only differentiates from one sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

players_item_detailsA

List the full item-type catalogue returned by GET /players/item_details. The measured public response contained 320 items and was about 134 KB, with id, name, type, nullable sub_type, data, transferable, consumable, inventory, nullable print_limit, total_printed, nullable image_filename, nullable icon_filename, nullable description, nullable rarity and stake_type_id. The id parameter is inert: the no-id response and id=1 response were byte-identical, so this tool does not advertise id as an item lookup filter. The measured response carried no BCX, donor or account-attribution field. Successful metadata responses are cached for 24 hours; provenance reports the route and the original fetch time. This server applies its general 100-row and 256 KB result bounds to the returned array; it does not claim that the bounded response is the full upstream catalogue.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it delivers richly: measured response size, field inventory, inert id behavior verified by byte-identical responses, absence of attribution fields, 24-hour caching, provenance reporting, and result-bound limitations. This is exemplary disclosure beyond a one-line tool description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but every sentence earns its place: the purpose is front-loaded, the field list substitutes for a missing output schema, and the caveats about id inertness, attribution, caching, and bounds all support correct invocation. There is no filler or tautology.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool with no output schema, this is nearly complete: it tells the agent what data is returned, the field names, response size, caching behavior, provenance, and the limits that prevent treating the result as the full upstream catalogue. Nothing essential 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?

The schema has zero parameters and 100% coverage, so the baseline is 4. The description usefully explains that the id parameter is not advertised as a lookup filter, which adds meaning around the absence of parameters, but there is no parameter semantics to elaborate further.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action and resource ('List the full item-type catalogue returned by GET /players/item_details') and clarifies that the endpoint is not an id lookup. However, the word 'full' is later qualified by the 100-row/256 KB bounds, and it does not explicitly name a sibling tool to sharpen differentiation, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear context and explicit exclusions: the id parameter is inert, there is no BCX/donor/account attribution, and the server applies bounded results. It does not name alternative tools or state an explicit 'use this when...' condition, so it is strong but not maximal.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

player_skinsA

Read owned skin rows for one player. The captured response had 223 rows and no declared paging selector; the server may return only its bounded leading rows, not the complete inventory. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYes

TDQS

A3.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully discloses important behaviors: no paging selector, possible bounded leading rows, no auto-fetching of continuation pages, local 100-row/256 KiB truncation with reporting, and refusal of oversized records. It also warns that declared filters are forwarded without implying their effectiveness.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description front-loads the purpose and then lists important caveats, but it contains redundancy and boilerplate: the no-auto-fetch warning partly repeats the bounded-rows warning, and the mention of 'other declared filters' refers to filters not present in the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read tool with no output schema, the description covers request behavior, response-size limits, truncation reporting, and refusal behavior. It does not describe the structure of skin rows, but the operational caveats are sufficient for an agent to call and interpret results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has one required username parameter with no description, and the description adds only modest meaning by connecting it to 'one player.' The statement that required inputs reflect policy and measured upstream requirements is generic and does not explain details like format or expected value semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence states a specific verb, resource, and scope: 'Read owned skin rows for one player.' This clearly identifies a player-scoped read tool, but it does not explicitly differentiate itself from related siblings such as player_inventory or cards_skins.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for retrieving one player's owned skin rows, but it gives no explicit when-to-use guidance, exclusions, or named alternatives. An agent can infer the basic use case, but not when this tool should be preferred over sibling endpoints.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

player_unclaimed_balance_historyA

Return one account's unclaimed-balance history for one token from GET /players/unclaimed_balance_history. Both username and token_type are required, and omitting token_type returns HTTP 200 carrying the message that player and token are required rather than an HTTP failure. The response is a bare array; each row carried a reward action, an id, the account, token, type, a string amount, a block number, a transaction id, dates, a destination account and a status. On the captured account SPS returned rows while DEC returned an empty array. Only DEC and SPS were tried on this route. This server applies its general 100-row and 256 KB result bounds to the array and does not claim the bounded answer is the full upstream history.

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYes
token_typeYes

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the full behavioral burden and does so richly: it discloses that omitting token_type returns HTTP 200 with a message rather than an error, that the response is a bare array with specific row fields, that SPS and DEC can return different results, and that server-side 100-row and 256 KB bounds may truncate the answer. It even warns that the bounded answer is not guaranteed to be the full upstream history.

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?

Every sentence contributes useful information and the purpose is front-loaded before behavioral caveats. The paragraph is dense and slightly rambling, with anecdotal test results woven in, but it remains appropriately sized for the complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter tool with no output schema and no annotations, the description is exceptionally complete: it covers required parameters, response shape, row fields, tested token values, and truncation behavior. Nothing an agent needs to understand the tool's contract is left unsaid.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for parameter meaning. It states both parameters are required, identifies username as an account and token_type as a token selector, and names the tested values DEC and SPS. However, it does not define the expected format or full valid value space for either parameter beyond these observations.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Return') and names the precise resource: one account's unclaimed-balance history for one token, tied to an exact upstream endpoint. The word 'history' plus per-account/per-token scoping is enough to distinguish it from balance-oriented siblings even without naming them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies this is for fetching a single account's per-token unclaimed-balance history and stresses that both username and token_type are required. However, it never explicitly says when to prefer this tool over player_unclaimed_balances, player_archived_balances, or other history-style siblings, and it offers no exclusion guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

player_unclaimed_balancesA

Return one account's unclaimed balances for one token from GET /players/unclaimed_balances. Both username and token_type are required: omitting token_type returns HTTP 200 carrying the message that player and token are required, which is an application error inside a success status rather than an HTTP failure. The measured response carried one row per reward type, each with the account, token, type, a string balance and a last-updated date, alongside a last_claim_date. On the captured account SPS returned rows while DEC and CREDITS returned an empty array, so an empty array means no unclaimed rows for that token, not an error. Only DEC, SPS and CREDITS were tried, so the accepted token_type set is not established.

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYes
token_typeYes

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and does so thoroughly. It discloses the HTTP 200-with-application-error behavior, the one-row-per-reward-type response shape, the string balance and last-updated date, and the empty-array meaning. It even notes that the accepted token_type set is not established, which is honest and useful.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but information-dense; each sentence contributes a distinct caveat or behavioral fact. The opening purpose is front-loaded, and the error/response details are organized logically. It could be tightened slightly, but it is not padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of an output schema and annotations, the description does remarkable work: it covers response format, empty-array semantics, and an edge-case error. The main remaining gap is an authoritative list of accepted token_type values, but the description transparently acknowledges that this is unknown.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It confirms both parameters are required and notes that omitting token_type yields a misleading success response. It also mentions DEC, SPS, and CREDITS as tried token types but explicitly says the accepted set is not established. This adds some value, though username semantics and valid token_type values are still not defined.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Return one account's unclaimed balances for one token from GET /players/unclaimed_balances.' This clearly identifies the endpoint and scope. However, it does not explicitly distinguish itself from sibling tools like player_unclaimed_balance_history, so it falls short of a perfect 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when the tool applies: one account, one token. It also warns that both username and token_type are required and explains the error behavior when token_type is omitted. However, it never mentions alternatives or explicitly says when not to use this tool versus related balance endpoints.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

player_voucherA

Read the upstream voucher balance and available figures for one player. Values, including negative values, are returned unchanged without interpretation. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYes

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses several important behaviors: values (including negative) are returned unchanged without interpretation, it makes a single logical GET request without auto-fetching continuation pages, array responses are limited to 100 rows and 256 KiB with truncation reported, and oversized records are refused without partial fields. Since annotations are absent, the description carries the full burden and does so well, though it includes a generic statement about 'other declared filters' that is irrelevant given the schema has only one parameter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single paragraph with multiple sentences, and some content is arguably superfluous for the tool's simplicity. The note about 'other declared filters are forwarded as supplied' is misleading given additionalProperties:false and only one parameter. The main purpose is front-loaded, but the description is more verbose than necessary, reducing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple input (one required username) and no output schema, the description covers the operation, response limits, truncation reporting, and refusal behavior. It does not mention error handling, authentication, or return value structure, but these are not critical for a read tool with a single parameter. The description is reasonably complete for its scope.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the description does not elaborate on the 'username' parameter beyond implying it identifies the player. The single parameter is self-explanatory by name and type, but the description adds minimal semantics – it doesn't specify formats, constraints, or how the username maps to the upstream voucher data. This is adequate for a simple parameter but not exceptional.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Read the upstream voucher balance and available figures for one player.' It specifies a verb (Read), a resource (voucher balance and available figures), and a scope (one player), making the purpose unambiguous. However, it does not explicitly differentiate from the many other player_* sibling tools, though the voucher focus is unique enough to distinguish it in practice.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the purpose statement – if you need voucher data, you'd use this tool – but there is no explicit guidance on when to prefer it over alternatives like player_balances or player_archived_balances. No exclusions or conditional recommendations are provided, so an agent must infer the appropriate use case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

proposal_listA

Read public proposal rows. limit=2 with offsets 0 and 2 returned distinct pages which concatenated exactly to limit=4,offset=0 in the capture. Each call fetches one page only; vote weights and thresholds remain decimal strings. Other filters are forwarded as supplied. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
filterNo
offsetNo
playerNo
sort_byNo

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosureched. It discloses pagination semantics, size limits (100 rows, 256 KiB), truncation reporting, refusal of oversized records, preservation of decimal strings as strings, and single-GET request behavior, which is exceptionally thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded, but the description is wordy and contains redundancy: "Other filters are forwarded as supplied" appears twice. The detailed "limit=2 with offsets 0 and 2" capture observation is more specific than generally useful, making the text longer than necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no output schema and no annotations, the description covers pagination, size limits, truncation, and filter forwarding, but it misses individual parameter definitions and the shape of returned rows. The provided behaviors are useful, yet the description is not fully complete for an agent to use the tool with full confidence.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, so the tool description must compensate. It gives concrete meaning to limit and offset via the pagination example and states that other filters are forwarded as supplied, but it does not explain what filter, player, or sort_by individually mean. This is partial, not full, compensation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Read public proposal rows" is a specific verb and resource, and the name proposal_list clearly signals a listing operation. It does not explicitly distinguish itself from proposal_pending_count and proposal_votes, though the resource and verb make the intent clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context on pagination behavior ("Each call fetches one page only", "does not auto-fetch continuation pages") and filter forwarding. However, it never explicitly tells an agent when to choose this tool over similar siblings, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

proposal_pending_countA

Read the pending-proposal count for an explicit username. This is a read of the reported value, not a vote or proposal submission. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYes

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden and does so thoroughly. It declares read-only semantics, single GET, no pagination auto-fetching, response size limits, truncation reporting, and refusal behavior for oversized records.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core count behavior is front-loaded, but the description includes generic boilerplate about 'other declared filters' and array response truncation that seems unnecessary and potentially confusing for a pure count tool. It is more verbose than needed.

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?

Despite having no output schema and no annotations, the description explains enough for an agent to call the tool safely and correctly: it is read-only, requires an explicit username, makes a single request, and documents limits and failure behavior.

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 description coverage is 0%, but the only parameter, username, is well-named and the description adds 'explicit username' and notes that required inputs are derived from policy and upstream requirements. For a single, straightforward parameter, this is sufficient added meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Read the pending-proposal count for an explicit username.' It also clearly separates itself from submission and vote operations, which distinguishes it from nearby siblings like proposal_list and proposal_votes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies its use case: obtain a count for an explicit username. However, it does not explicitly identify sibling alternatives or state when to prefer this tool over proposal_list, proposal_votes, or other proposal-related endpoints.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

proposal_votesA

Read recorded votes for an explicit proposal_id. Two pages of two voters matched the first four-row page exactly. Vote weights remain strings and approval remains boolean. This tool never casts or changes a vote. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
proposal_idYes

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden and succeeds: it guarantees 'never casts or changes a vote,' states a single logical GET, disclaims auto-fetching of pages, and details local limits, truncation reporting, and refusal of oversized records. It also preserves type expectations for vote weights and approval.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is efficient and front-loaded, but later content includes confusing test-like detail ('Two pages of two voters matched the first four-row page exactly') and opaque policy phrasing. Several clauses could be trimmed or clarified without losing value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no output schema, the description covers safety, pagination behavior, response-size limits, truncation, and value types, which is unusually complete. It omits a detailed response shape and clear limit/offset semantics, but an agent can call the tool with reasonable confidence.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, yet only proposal_id is described as required; limit and offset are never defined beyond the vague 'other declared filters are forwarded as supplied.' No constraints or semantics are provided for the string-typed limit/offset, leaving the agent to guess how pagination actually works.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence names a specific verb ('Read') and resource ('recorded votes for an explicit proposal_id'), making the tool's operation immediately clear. It also differentiates this tool from proposal listing/counting siblings by focusing on votes and the required proposal_id.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description never names a sibling alternative or explicitly states when to use proposal_votes over proposal_list or proposal_pending_count. The read-only guarantee and single-GET statement imply safe lookup usage, and the filter-forwarding note gives parameter-level caution, but broader usage context is largely left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

purchase_settingsB

Read public purchase price and fee settings. This makes no purchase and changes no setting. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral disclosure burden. It usefully covers read-only safety, a single GET request, no auto-fetching of continuation pages, response truncation limits, and refusal of oversized records. The generic filter/input boilerplate is slightly inaccurate for an empty schema, which prevents 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is clear and front-loaded. But the later sentences contain boilerplate about inputs and filters that do not apply to this zero-parameter tool, making the description longer and more confusing than necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers call behavior, safety, pagination, and response-size limits, which is helpful. However, with no output schema, it does not describe what the returned purchase price and fee settings actually look like. The unrelated input/filter boilerplate also undermines completeness for this specific endpoint.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters and the schema fully documents that with an empty properties object and additionalProperties false. However, the description's statements about 'required inputs' and 'declared filters' misleadingly imply parameters exist, adding confusion instead of meaningful semantic guidance. A simple 'takes no parameters' statement would have been better.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description begins with a clear verb+resource: 'Read public purchase price and fee settings.' This conveys the tool's purpose effectively. However, it does not differentiate from siblings like purchase_stats or purchase_uniswap_reward, so it is not a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides safety/behavior context but does not state when to use this tool versus alternatives, nor does it give exclusions or selection criteria. Statements like 'makes no purchase' describe what happens, not when to choose this endpoint.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

purchase_statsA

Read public pack and promotional-card statistics. Pack editions may have different fields and nested types; all wire values are retained. This makes no purchase. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description fully discloses behaviors: it makes no purchase, performs one logical GET without auto-fetching continuation pages, imposes a 100-row/256 KiB array limit with reported truncation, and refuses oversized records without partial fields. Filtering effectiveness is also disclosed. This exceeds typical transparency expectations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is moderately long (~130 words) but every sentence adds critical operational detail. It is well-structured, front-loaded with the primary purpose, and avoids redundancy. The additional caveats about pagination, limits, and filtering are all necessary for correct invocation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read-only statistics tool with no output schema, the description is remarkably complete. It covers scope, safety, pagination behavior, response size limits, filtering semantics, and data retention. No essential information for calling the tool 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?

The tool has zero parameters, so the schema coverage is trivially 100%. Per guidelines, a baseline of 4 is appropriate when there are no parameters. The description adds meta-information about required inputs being policy-driven but does not need to explain specific parameters since none exist.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb ('Read') and specific resource ('public pack and promotional-card statistics'), distinguishing it from the many sibling tools by its domain focus. It also clarifies that it concerns statistics, not purchases, removing ambiguity from the name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use it (when you need public pack or promotional-card statistics) and explicitly notes that it makes no purchase, but it does not name alternative tools or provide explicit exclusions. The guidance is adequate for a tool with zero parameters but lacks direct sibling differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

purchase_uniswap_rewardA

Read public liquidity reward rows for an explicitly supplied blockchain address. Decimal quantities are returned as strings. This never claims rewards and accepts no wallet credentials. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYes

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description fully carries the behavioral disclosure burden. It states no-auth access, read-only semantics, one logical GET, no auto-fetching of continuation pages, local row/size limits, truncation reporting, and refusal of oversized records. This is unusually thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and then adds compact, non-redundant operational details. Each sentence contributes behavioral or usage information rather than repeating schema or annotations.

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?

Despite having no output schema and no annotations, the description explains return behavior (decimal strings), response size limitations, truncation reporting, and refusal semantics. This is sufficient for an agent to invoke the tool correctly in most scenarios.

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?

The only parameter, address, is given added meaning as an 'explicitly supplied blockchain address,' which supplements the bare schema with minLength. It does not specify the expected chain or address format, but for a single well-named parameter this is reasonably sufficient.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence names a specific verb ('Read'), a precise resource ('public liquidity reward rows'), and a required input ('explicitly supplied blockchain address'). It also clarifies that this is a read-only query rather than a claim/purchase action, which is especially helpful given the tool's name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear operational context: it uses one GET request, requires no wallet credentials, and never claims rewards. This lets an agent infer when the tool is appropriate, though it does not explicitly name sibling alternatives or state when-not-to-use conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rental_bidsB

Read public SPSP delegation rental bids with an explicit limit of 1 to 100. Two pages of two transaction IDs matched the first four rows. Quantity bounds worked, including a 10000 exact range. Price filters accepted integer 1 but rejected decimal 0.001 with HTTP 400; values are forwarded without rescaling. A combined player, amount-ascending, maxPrice=1 and quantity-range probe returned only the selected player and in-range quantities. Other combinations remain unmeasured. These are token delegation offers/bids, not card-worker rentals. Quantities, prices and escrow retain their wire string types. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. The data list are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNo
limitYes
orderNo
offsetNo
playerNo
maxPriceNo
minPriceNo
maxQuantityNo
minQuantityNo

TDQS

B3.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully carries behavioral disclosure. It clearly states pagination behavior (one GET, no auto-fetch), local limits (100 rows, 256 KiB), truncation reporting, error handling (HTTP 400 for decimals, oversized records refused), and that filters are forwarded without rescaling. This is exceptionally detailed and goes far beyond typical expectations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long and rambling, mixing a one-sentence purpose with a series of empirical observations from QA testing. It is not front-loaded with actionable information; after the first sentence, an agent must wade through irrelevant probe results. Every sentence should add value, but many here are speculative ('Other combinations remain unmeasured') or redundant with schema constraints.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter tool with no output schema and no annotations, the description is incomplete. It fails to explain the semantics of most parameters, the response structure, or how to interpret the returned data. While it covers edge cases and size limits, it omits fundamental usage details that an agent would need to call the tool correctly, such as what 'sort' and 'order' accept, what 'player' filters, and how results are shaped.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. However, it only mentions parameters in the context of test probes (e.g., 'player, amount-ascending, maxPrice=1') without explaining what each parameter does or its expected format. It notes that price filters reject decimals, but does not clarify that maxPrice/minPrice should be integers, nor does it describe the meaning of sort, order, offset, or quantity filters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear verb and resource: 'Read public SPSP delegation rental bids.' It distinguishes these from card-worker rentals, but does not differentiate among sibling tools like rental_bids_lowest_price or rental_bids_by_player. The purpose is clear but the text is cluttered with test details that obscure the core functionality.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. The description mentions 'not card-worker rentals' but never names sibling tools or conditions for selection. It discusses limitations and unmeasured combinations but does not help an agent decide between rental_bids, rental_offers, or the 'lowest_price' variants.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rental_bids_by_playerA

Read public SPSP delegation bids for an explicit player. Require limit 1-100; one bounded GET, no automatic paging. Two pages of two matched four rows; amount asc/desc changed the observed ordering. Preserve numeric strings and all original fields. These are token delegations, not card-worker rentals. Status filled selected zero-available rows; do not infer filled state from the numeric offer status alone. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. The data list are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNo
limitYes
orderNo
offsetNo
playerYes
statusNo

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden, and it is unusually candid: it discloses no automatic paging, one logical GET, truncation at 100 rows/256 KiB, refusal of oversized records, preservation of numeric strings and original fields, and a specific caveat about not inferring filled state from numeric offer status. This far exceeds what is normally disclosed and materially helps an agent predict behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense and front-loaded with the core purpose, followed by important behavioral caveats. However, it is not concise: the phrase 'Two pages of two matched four rows; amount asc/desc changed the observed ordering' is cryptic and unexplained, and sentences like 'Required inputs reflect tool policy as well as measured upstream requirements' add vagueness rather than clarity. Most sentences earn their place, but the overall length and awkward phrasing cost it a higher score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description covers a great deal: required inputs, limits, paging behavior, truncation, data preservation, filter caveats, and status interpretation. The main gaps are the lack of explicit semantics for sort, order, and offset, and the absence of any response-shape description beyond preservation/truncation notes. It is substantially more complete than most definitions but not fully self-sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It does document limit (1-100), player (explicit), and gives a status caveat, plus an observed note about amount asc/desc affecting ordering. However, offset is not explained, sort/order valid values are only hinted at, and the statement that 'other declared filters are forwarded as supplied; their effectiveness is not implied' leaves real ambiguity about whether optional parameters actually work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the operation: 'Read public SPSP delegation bids for an explicit player.' It names the exact resource and scope, and adds a useful exclusion: 'These are token delegations, not card-worker rentals,' which helps separate it from rental-focused siblings. This is a specific verb+resource definition with strong differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear usage context: a bounded single GET with no automatic paging, a required limit of 1-100, and a required explicit player. It also warns that these are token delegations rather than card-worker rentals, which steers an agent away from the wrong sibling. It does not explicitly name alternative tools for when this one should not be used, so it stops short of full when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rental_bids_lowest_priceA

Read the public V3 delegation rental bids lowest-price endpoint. Preserve its price string, or nullable price allowed by the official schema. No unit conversion, annualization, quote execution or card-rental inference is performed. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully carries the behavioral disclosure burden. It explicitly states that no unit conversion, annualization, quote execution, or inference is performed, that it makes one GET request without auto-fetching pages, and that array responses are limited to 100 rows/256 KiB with truncation reported and oversized records refused. These are concrete, actionable traits that go beyond what a schema could convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long and contains statements that seem irrelevant to a zero-parameter tool, such as 'Required inputs reflect tool policy as well as measured upstream requirements' and 'Other declared filters are forwarded as supplied.' These sentences do not earn their place because the schema defines no inputs or filters, making the description less concise and somewhat confusing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers key behavioral aspects like request size limits, truncation, and refusal of oversized records, which are important for an agent. However, the contradictory statements about required inputs and filters (when none exist) create ambiguity, and the tool lacks an output schema, so more clarity on response structure would help. The core purpose is understood, but completeness is marred by these inconsistencies.

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?

The tool has zero parameters, so there is nothing to describe. The baseline for zero parameters is 4 per the rubric, and the description adds no unnecessary parameter information, which is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: 'Read the public V3 delegation rental bids lowest-price endpoint.' It specifies the resource (delegation rental bids) and the specific variant (lowest-price), which differentiates it from sibling tools like rental_offers_lowest_price and rental_bids. The mention of preserving the price string further clarifies the tool's scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance is given on when to use this tool versus alternatives. The description does not mention any alternative tools or exclusion criteria. It only states what the tool does, leaving the agent to infer usage from the name, which is insufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rental_offersA

Read public SPSP delegation rental offers with an explicit limit of 1 to 100. Two pages of two transaction IDs matched the first four rows. Quantity bounds worked, including a 10000 exact range. Price filters accepted integer 1 but rejected decimal 0.001 with HTTP 400; values are forwarded without rescaling. A combined player, amount-ascending, maxPrice=1 and quantity-range probe returned only the selected player and in-range quantities. Other combinations remain unmeasured. These are token delegation offers/bids, not card-worker rentals. Quantities, prices and escrow retain their wire string types. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. The data list are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNo
limitYes
orderNo
offsetNo
playerNo
maxPriceNo
minPriceNo
maxQuantityNo
minQuantityNo

TDQS

A3.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure, and it excels: it reveals single-GET behavior, no auto-fetching of continuation pages, local 100-row/256 KiB limits with truncation reporting, refusal of oversized records, price filter quirks (rejects decimals, forwards without rescaling), and measured/unmeasured combination behavior. This is far beyond the structured schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose, but the middle is a rambling sequence of measurement notes and caveats that would be clearer organized into sections like 'Behavior', 'Limits', and 'Known Quirks'. Statements such as 'Two pages of two transaction IDs matched the first four rows' are confusing without context and detract from the actionable guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 9 parameters, no output schema, and no annotations, the description covers a remarkable amount: request behavior, truncation, type handling, and tested filters. Still, it omits the response format entirely and leaves several parameters (offset, sort, order, minPrice) undefined in any practical sense, so an agent would still face uncertainty when constructing a full request.

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 description coverage is 0%, so the description must compensate, and it partially does: it details limit range, price filter behavior (integer accepted, decimal rejected), quantity bounds, and the combined player/sort/price/quantity probe. However, it does not give per-parameter meaning for offset, sort values, or minPrice/maxPrice semantics, and the catch-all note that other filters are forwarded without implied effectiveness is a meta-caveat rather than concrete guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence clearly states the tool reads public SPSP delegation rental offers with a limit of 1-100, which specifies a verb, resource, and constraint. The later clarification that these are token delegation offers/bids, not card-worker rentals, helps distinguish from similar rental tools, though no sibling tool is explicitly named.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description establishes clear context: this is for public SPSP delegation rental offers, with the explicit caveat that it is not for card-worker rentals. However, it never states when to prefer this tool over siblings like rental_offers_by_player or rental_offers_lowest_price, and the 'when-not' is only implied rather than naming alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rental_offers_by_playerA

Read public SPSP delegation offers for an explicit player. Require limit 1-100; one bounded GET, no automatic paging. Two pages of two matched four rows; amount asc/desc changed the observed ordering. Preserve numeric strings and all original fields. These are token delegations, not card-worker rentals. Status filled selected zero-available rows; do not infer filled state from the numeric offer status alone. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. The data list are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNo
limitYes
orderNo
offsetNo
playerYes
statusNo

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it is unusually rich: one logical GET, no auto-paging, 100-row/256 KiB limits, truncation reporting, refusal of oversized records, and warning against inferring filled state from status. It also notes filters are forwarded without implied effectiveness, which is valuable behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description front-loads purpose well, but it becomes dense and somewhat disorganized. It also repeats the no-auto-paging point twice: 'one bounded GET, no automatic paging' and later 'does not auto-fetch continuation pages,' which wastes space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read tool with no annotations and no output schema, the description covers request constraints, response truncation, status caveats, and data preservation. It is incomplete on parameter value details for sort/order/offset, but the core invocation requirements are clear enough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It does explain limit range and gives a caveat about status, and mentions amount ordering, but it does not define sort/order accepted values, offset semantics, or status values. The compensation is partial rather than complete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific action and resource: 'Read public SPSP delegation offers for an explicit player.' It also distinguishes these from rentals by explicitly stating 'These are token delegations, not card-worker rentals,' which helps differentiate it from sibling tools like rental_offers and rentals_by_player.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear context for when the tool is appropriate: an explicit player, public offers, with limit requirements and no automatic paging. It gives exclusions, such as not being card-worker rentals, but does not explicitly name alternative sibling tools or state 'use X instead.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rental_offers_lowest_priceB

Read the public V3 delegation rental offers lowest-price endpoint. Preserve its price string, or nullable price allowed by the official schema. No unit conversion, annualization, quote execution or card-rental inference is performed. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Given the absence of annotations, the description carries the full burden and does a good job disclosing behavioral traits: it performs no unit conversion, annualization, quote execution, or card-rental inference; makes one GET request; does not auto-fetch continuation pages; limits arrays to 100 rows and 256 KiB with truncation reported; and refuses oversized records. However, the references to 'Required inputs' and 'declared filters' are inconsistent with the empty input schema, which creates ambiguity and slightly undermines transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense and front-loads the core purpose, but it contains boilerplate-like caveats that may not apply to this tool (e.g., 'declared filters', 'required inputs') given the empty schema. Each sentence adds information, but the overall length could be trimmed to improve clarity. Structure is acceptable, but the verbosity and mismatched references detract.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no parameters and no output schema, the description provides substantial context: it specifies the endpoint, clarifies output handling (preserving price string, nullable price), lists non-behaviors, and documents limits and error handling. It is fairly complete, though it omits a clear description of the response structure beyond 'price string' and could clarify the input mismatch.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so there is nothing to explain. The baseline for 0 params is 4, but the description confusingly mentions 'Required inputs reflect tool policy as well as measured upstream requirements' and 'Other declared filters are forwarded as supplied', implying parameters exist when the schema explicitly forbids them (additionalProperties false). This misleading statement reduces the score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Read') and the specific resource ('public V3 delegation rental offers lowest-price endpoint'), which distinguishes it from related siblings like rental_offers and rental_bids_lowest_price by 'delegation' and 'lowest-price'. However, it does not explicitly contrast with alternatives, leaving some differentiation to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus sibling tools. The description focuses on operational details (pagination, truncation) but never states the intended use case, such as 'use this to get the lowest rental offer price' or 'when you need the cheapest delegation offer'. It also does not mention any prerequisites or alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rentals_by_bidA

Read legacy SPSP delegation rental records for an explicit bid transaction ID and limit of 1 to 100. A populated bid response matched the corresponding player rental record. Preserve numeric wire strings. Paging and sort effectiveness are not established; one bounded response, no automatic continuation. These are token delegation rentals, not worker-card rentals. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. The data list are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
bidYes
sortNo
limitYes
orderNo
offsetNo

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden, and it does so thoroughly. It discloses that one bounded GET request is made, there is no automatic continuation, paging/sort effectiveness is unestablished, filters are forwarded without implied effectiveness, results are locally capped at 100 rows and 256 KiB, truncation is reported, and oversized records are refused. This is exceptional behavioral disclosure for a read tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and then delivers a dense block of caveats. It contains redundancy, notably saying 'one bounded response, no automatic continuation' and later 'Makes one logical GET request and does not auto-fetch continuation pages.' Some phrasing, such as 'Required inputs reflect tool policy as well as measured upstream requirements,' is vague and adds little. It is structured but wordier than necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of annotations and output schema, the description nevertheless covers request behavior, limits, truncation reporting, refusal of oversized records, and filter semantics. It could be more complete by describing the response shape or field details, but for a bounded read tool with explicit limits, it gives an agent enough behavioral context to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for the schema's silence. It does explain the two required parameters ('bid transaction ID' and 'limit of 1 to 100') and warns generically that 'other declared filters are forwarded as supplied; their effectiveness is not implied by the schema.' However, it does not individually clarify the semantics of sort, order, or offset beyond that aggregate caveat. This is partial compensation, not full.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Read legacy SPSP delegation rental records for an explicit bid transaction ID and limit of 1 to 100.' It further disambiguates the tool by stating 'These are token delegation rentals, not worker-card rentals,' which helps distinguish it from other rental-related siblings. This is a precise, non-tautological purpose statement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when the tool is appropriate: use it with an explicit bid transaction ID and a limit between 1 and 100. It also provides an exclusion ('not worker-card rentals') and important caveats about paging and filter effectiveness. It stops short of explicitly naming an alternative sibling tool or stating 'use X instead,' so it does not quite earn a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rentals_by_playerA

Read legacy SPSP delegation rental records for an explicit player and limit of 1 to 100. One populated record was observed. Paging and sort behavior are not yet independently established. Preserve quantity, paymentAmount and pricePerToken as wire strings; these are token delegation rentals, not worker-card rentals. Returns one bounded response without automatic continuation. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. The data list are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNo
limitYes
orderNo
offsetNo
playerYes

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden and is unusually candid: it discloses that paging/sort are not independently established, that the call returns one bounded response without auto-pagination, that other filters are forwarded without implied effectiveness, and that rows are locally limited to 100 and 256 KiB with truncation reporting and refusal of oversized records.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose and covers necessary caveats, but it is repetitive: 'Returns one bounded response without automatic continuation' is essentially restated by 'Makes one logical GET request and does not auto-fetch continuation pages,' and some sentences like 'Required inputs reflect tool policy...' add little concrete value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read endpoint with no annotations and no output schema, the description supplies substantial context: response bounding, local truncation limits, text/metadata truncation reporting, refusal behavior, and wire-string preservation for key fields. It stops short of 5 because there is no explicit description of the overall return shape beyond these fields.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It does add meaning for the limit (1-100), required inputs, and warns that other declared filters are forwarded as supplied without implied effectiveness. However, it does not define accepted values or behavior for sort, order, or offset, leaving a clear gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Read legacy SPSP delegation rental records for an explicit player and limit of 1 to 100.' It also distinguishes the domain by stating these are token delegation rentals, not worker-card rentals, which separates it from the many sibling rental tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context by scoping use to legacy SPSP delegation rentals and explicitly excluding worker-card rentals. It does not name a sibling alternative (such as rentals_v3_by_player) or provide a when-not condition, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rentals_v3_by_playerA

Read public SPSP delegation rental records for an explicit player. Require limit 1-100; one bounded GET, no automatic paging. Two pages of two matched four rows; amount asc/desc changed the observed ordering. Preserve numeric strings and all original fields. These are token delegations, not card-worker rentals. Borrower/lender roles were checked in both directions. Pending and active selected numeric status 0 and 1 in the sample. Counterparty partial matching was verified on the player route only; other sort/status values remain unmeasured. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. The data list are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNo
sortNo
limitYes
orderNo
offsetNo
playerYes
statusNo
counterpartyNo

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure and does so thoroughly: it covers pagination behavior, ordering sensitivity, role checking, status observations, numeric-string preservation, local truncation at 100 rows and 256 KiB, and refusal of oversized records. There is no annotation contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is a strong front-loaded summary and most sentences carry information, but the middle is dense and repetitive: 'no automatic paging' is stated twice, and 'Two pages of two matched four rows' is grammatically unclear. The description would benefit from tightening.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-annotation, no-output-schema tool with 8 parameters, the description covers endpoint behavior, limits, truncation, filtering caveats, and field preservation. It does not fully document offset semantics or the exact return and truncation shape, so it is strong but not fully complete.

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 description coverage is 0%, so the description must add parameter meaning, and it does for player, limit, role, sort, order, status, and counterparty. It notes observations like 'amount asc/desc changed the observed ordering' and status values 0 and 1, but offset is only implied by 'no automatic paging' and exact accepted values are not enumerated.

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?

Opens with an explicit verb and resource: 'Read public SPSP delegation rental records for an explicit player.' It also distinguishes this tool from related endpoints by noting these are token delegations, not card-worker rentals, and by scoping to the player route.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear operational guidance: limit must be 1-100, it is a single bounded GET with no automatic paging, filters are forwarded as supplied, and counterparty partial matching was verified only on the player route. It does not explicitly name alternative sibling tools or state when-not-to-use, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rentals_v3_by_roleA

Read public SPSP delegation rental records for an explicit player and borrower/lender role. Require limit 1-100; one bounded GET, no automatic paging. Two pages of two matched four rows; amount asc/desc changed the observed ordering. Preserve numeric strings and all original fields. These are token delegations, not card-worker rentals. Borrower/lender roles were checked in both directions. Pending and active selected numeric status 0 and 1 in the sample. Counterparty partial matching was verified on the player route only; other sort/status values remain unmeasured. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. The data list are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleYes
sortNo
limitYes
orderNo
offsetNo
playerYes
statusNo

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden and does an excellent job: it discloses no auto-paging, local truncation at 100 rows/256 KiB with truncation reported, refusal of oversized records, preservation of numeric strings and original fields, and measured vs unmeasured behavior (counterparty partial matching verified on player route only). This is far beyond typical descriptions and gives the agent accurate expectations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense and information-rich, but it's a long block of text without clear structure or front-loading of the most critical facts. The core purpose is in the first sentence, but the rest reads as a stream of caveats. Every sentence earns its place, but the lack of structure hurts scannability for an agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read tool with no output schema and no annotations, the description is remarkably complete: it covers request behavior, limits, truncation, field preservation, and known measurement boundaries. An agent has enough to call it correctly and interpret results, including the caveat that unmeasured sort/status values may behave differently.

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 description coverage is 0%, so the description must compensate. It explains the required inputs (player, role, limit) and their policy/upstream significance, clarifies that limit is bounded 1-100, and warns that other declared filters are forwarded as supplied without implied effectiveness. It doesn't detail each optional parameter's meaning, but it provides enough context to use the required ones correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Read public SPSP delegation rental records for an explicit player and borrower/lender role.' It also distinguishes itself from card-worker rentals and mentions the player route. However, it doesn't explicitly name a sibling alternative like rentals_v3_by_player, so it's clear but not fully differentiated from siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context: it's for public SPSP delegation rentals, requires limit 1-100, makes one bounded GET with no automatic paging, and notes that other declared filters are forwarded as supplied without implied effectiveness. It doesn't explicitly say when not to use it or name alternatives, but the context is strong enough for an agent to select it appropriately.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tournament_battlesA

Read tournament matchups by id and round, scoped to a player or swiss_group. The captured group number 1 returned 21 matchups, and an explicit player returned six. Omitting both, group 0, or username alone returned empty; username is not a substitute for player. Nested battle references and participant records remain intact. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
roundYes
playerNo
reverseNo
usernameNo
swiss_groupNo

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden, and it does so exceptionally: it states 'Makes one logical GET request and does not contain auto-fetch continuation pages,' explains array local limits and truncation reporting, and notes oversized records are refused without partial fields. It also discloses response integrity, e.g., nested battle references and participant records remain intact.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than average, but nearly every sentence earns its place by adding concrete measured context or behavior. It is front-loaded with the core purpose and scoping rules; however, the detailed example counts (21, six, zero) could have been tightened without losing usefulness, so it is not maximally concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description is remarkably complete: it covers call method, pagination behavior, array limits, truncation reporting, refusal of oversized records, and response integrity. It still omits details on the exact response structure beyond a few notes about participant records being intact, but it named the most important conditions an agent needs before calling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for all 6 parameters. It gives real semantics to id and round (tournament id and round), player and swiss_group as scoping options, and username is explicitly discounted. However, the 'reverse' parameter is only swept into 'Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema,' which does not explain what reverse means or when to use it. This gap prevents a higher score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Read tournament matchups by id and round, scoped to a player or swiss_group,' which names a specific verb, resource, and scoping parameters. This clearly distinguishes it from sibling read tools like battle_status or tournament_* by focusing on matchups indexed by tournament id and round.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit, measured usage guidance: scoping to player or swiss_group, the contrast between a captured group returning 21 matchups versus a player returning six, and the caveat that omitting both, using group 0, or username alone returns empty. It clearly says 'username is not a substitute for player.' However, it does not name alternative sibling tools explicitly, so it stops one step short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tournament_cancelledA

Read cancelled tournament summaries. The capture had 200 rows; no working pagination has been established. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameNo

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure, and it does so thoroughly. It discloses that the capture has 200 rows, that pagination is not established, that it makes only one logical GET request, that array responses are locally limited to 100 rows and 256 KiB, that truncation is reported, and that oversized records are refused without partial fields. This is unusually explicit and useful.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The most important information is front-loaded in the first sentence, and the constraints are packed into compact sentences. The sentence about 'required inputs reflect tool policy' is vague boilerplate, but nearly every other sentence earns its place by conveying operational limits. It is appropriately sized for a tool with significant caveats.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers output limits, pagination behavior, and refusal behavior, which is strong contextual coverage for a simple read tool. However, it does not explain how the optional username parameter affects results or what a cancelled tournament summary actually contains, and there is no output schema to compensate. These gaps prevent it from being fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explain the only declared property, username, at all. The generic statements about 'required inputs' and 'other declared filters' are confusing because the schema has no required parameters and only one property, and it contradicts the presence of additional filters. The description adds no useful parameter semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Read cancelled tournament summaries.' This clearly distinguishes the tool from siblings like tournament_upcoming, tournament_completed, and tournament_mine by indicating it targets cancelled tournaments. There is no ambiguity about what the tool operates on.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly implies when to use the tool: when cancelled tournament summaries are needed. It does not explicitly name alternatives or exclusion criteria, but the resource-specific phrasing makes the intended context reasonably clear. It also sets boundary expectations by noting there is no working pagination and that only one GET request is made.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tournament_completedA

Read completed tournament summaries. The captured upstream list had 200 rows. An undocumented limit=2 and offset=2 request returned the unchanged 200 rows, so no paging controls are exposed and the bounded result is not a complete archive. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameNo

TDQS

A3.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full confidentiality burden — and it carries it exceptionally well. It discloses that the underlying list is bounded at 200 rows, that an undocumented limit=2/offset=2 probe returned the same 200 rows so paging is not respected, that only one logical GET is made, that filters are forwarded unenforced, and that arrays are hard-limited to 100 rows / 256 KiB with truncation reported. It also states oversized records are refused wholesale rather than partially returned. This is model transparency an agent can act on.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description front-loads its purpose and then fills in testable behavioral constraints efficiently. However, the text is dense and somewhat redundant around paging — 'no paging controls are exposed' and 'does not auto-fetch continuation pages' overlap — and the 'required inputs reflect measured upstream requirements' sentence is vague enough to invite a reread.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a single optional parameter, no annotations, and no output schema, the description is unusually complete on safety and boundary behavior: truncation, refusal handling, and one-request semantics are all covered. It stops just short of a 5 because it never clarifies what 'completed tournament summaries' contains as a return shape, what the username input does, or what a reasonable caller should send.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the only parameter, username, is never explained — the description does not say what it filters, whether it is the tournament list owner, or what an agent should pass. The generic note that declared filters are 'forwarded as supplied' is useful but it makes no reference to username's intended semantics, and the phrase about 'required inputs' is confused given the schema has zero required properties.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence, 'Read completed tournament summaries,' states a clear verb and resource and cleanly differentiates from sibling tools like tournament_upcoming, tournament_in_progress, and tournament_cancelled. The rest of the description strengthens the boundary by noting the result is not a complete archive.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description never tells an agent when to choose this tool over siblings such as tournament_find, tournament_battles, or tournament_prizes. It offers no exclusions, no prerequisite conditions, and no hints about when the 'completed' vs ho_used 'in_progress' or 'upcoming' variants apply — the only usage signal is implicit in the name and first sentence.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tournament_findA

Read tournament details by explicit id. Players are locally bounded while rounds, num_players and other fields are retained. The tested player_limit=2 still returned all 19 players, so it is not an effective upstream bound. No credentials are accepted. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. The players list are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
usernameNo
last_roundNo
swiss_groupNo
player_limitNo

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations supplied, the description carries the full burden and excels: it discloses that no credentials are accepted, that exactly one logical GET occurs, that continuation pages are not fetched, that local limits (100 rows/256 KiB) apply with truncation reported, and that oversized records are refused. This makes call consequences predictable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but each sentence contributes: purpose, local bounds, player_limit caveat, auth, request behavior, filter caveat, truncation, and oversized handling. It could be restructured into bullets but is not bloated relative to the behavioral nuance it conveys.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description covers request count, pagination, auth, filter caveats, and response truncation/refusal behavior, and it names retained fields (rounds, num_players, players). It stops short of fully specifying the response shape, but an agent can select and invoke the tool correctly based on this text.

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?

The schema offers no property descriptions, so the description must compensate. It does for key parameters: id is the explicit lookup key, player_limit is explicitly called out as ineffective (tested with 2 still returned all 19 players), and other filters are noted as pass-through with no implied effectiveness. Semantics of username, last_round, and swiss_group are left to inference, but their names are self-explanatory in a tournament context.

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?

First sentence states a specific action ('Read tournament details by explicit id') with a clear resource and lookup method, differentiating it from status-list siblings like tournament_upcoming and tournament_completed. The 'explicit id' qualifier signals a direct lookup, not a search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'by explicit id' gives a clear condition for using the tool. It also advises that filters are forwarded without effectiveness guarantees and that continuation pages are not auto-fetched, helping an agent restrict use to single-record detail reads. It does not explicitly name alternatives, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tournament_find_brawlA

Read brawl details for an explicit tournament id and guild_id. Omitting guild_id returned an error. Players are locally bounded while guilds and brawl rules remain intact. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. The players list are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
guild_idYes
usernameNo

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the full burden and does so thoroughly: it discloses row and byte limits, truncation reporting, refusal of oversized records, single GET request behavior, no auto-fetching of continuation pages, and pass-through filters with no implied effectiveness.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose and every subsequent sentence adds a non-redundant behavioral or usage constraint. It is dense but not bloated, and all caveats are relevant to invoking the tool correctly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read operation with three parameters and no output schema, it covers inputs, required fields, truncation, error behavior, and fetch strategy. The main omission is the return structure and whether/how continuation pages can be requested, which matters because the tool explicitly does not auto-fetch them.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It clearly identifies id as the tournament id and guild_id as a required guild identifier, but username is only indirectly described as a 'declared filter' with no explanation of what it filters or how it behaves.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence 'Read brawl details for an explicit tournament id and guild_id' names a specific verb, a distinct resource (brawl details), and the required scoping fields. This distinguishes it from sibling tournament tools by emphasizing the guild_id-scoped brawl read.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly conveys the intended use case: reading brawl details when both a tournament id and guild_id are known. It adds practical caveats such as the guild_id omission error and the single-request/no-page-fetch behavior, though it does not explicitly name alternative tools or when-not-to-use conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tournament_in_progressA

Read in-progress tournament summaries. Optional username is forwarded only when supplied. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameNo

TDQS

A3.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully carries the behavioral burden and does so impressively: it discloses that one logical GET is made, continuation pages are not auto-fetched, array responses are limited to 100 rows and 256 KiB, truncation is reported in text and metadata, and oversized records are refused without partial fields. This gives an agent a clear picture of pagination, limits, and failure behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but mostly informative, with the core purpose front-loaded. Each sentence conveys real behavioral details, though phrases like 'Required inputs reflect tool policy as well as measured upstream requirements' are opaque and add little practical guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-optional-parameter read tool with no output schema and no annotations, the description covers the key operational details: purpose, request behavior, pagination, size limits, and truncation reporting. It could be more complete by describing what a 'summary' contains or what the username intends, but it is sufficient for basic invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for the username parameter, but it only says 'Optional username is forwarded only when supplied.' This does not explain what the username filters, what format is expected, or how it affects results. The reference to 'other declared filters' is vague and there are no other declared filters in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Read in-progress tournament summaries,' which gives a clear verb, resource, and scope. It distinguishes itself from siblings like tournament_upcoming and tournament_completed via the 'in-progress' qualifier, though it does not explicitly name alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context by specifying 'in-progress' tournaments and notes that username is optional, but it does not explicitly state when to choose this tool over tournament_upcoming, tournament_completed, tournament_mine, or other tournament siblings. No exclusions or alternative routing are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tournament_mineA

Read the upstream mine listing for an explicit username. A tournament creator returned 200 rows; two player accounts, including a known entrant, returned empty arrays. Do not present this route as a player's complete participation history. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYes

TDQS

A4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full disclosure burden and does so exceptionally: it states one logical GET, no auto-fetch of continuation pages, local array limits (100 rows/256 KiB), truncation reporting, refusal of oversized records, and forwards filters without guaranteeing effectiveness. The empirical note that a known entrant returned an empty array is especially useful in preventing misinterpretation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose and dense with high-value caveats; no sentence is pure filler. The 'other declared filters' sentence is somewhat confusing given the one-field schema and the anecdotal empty-array example could be trimmed, so it is appropriately thorough rather than maximally concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read with no output schema, it covers request behavior, limits, truncation, and interpretation pitfalls well. It still leaves the row shape/fields undefined and offers no fallback endpoint for full participation history, which an agent would need in a real task.

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 0%, so the description must compensate; it does by labeling the username as 'explicit' and explaining that required inputs reflect tool policy plus upstream requirements. It does not detail formatting, case, or allowed values, but with a single self-descriptive parameter that is a minor gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence names a specific verb ('Read') and resource ('upstream mine listing') scoped to an explicit username, so an agent can tell this is a targeted read tool. The 'Do not present...' caveat adds differentiation from general participation-history endpoints, but the description never defines what a 'mine listing' contains, so it falls short of full clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly states the tool is for reading the upstream mine listing for a username and warns against treating it as complete participation history, which gives implied usage context. It never names a sibling alternative or states conditions for choosing another endpoint, so an agent has no explicit routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tournament_prizesA

Read upstream awarded and upcoming tournament prize aggregate figures without recomputing them. This does not claim any prize. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are entirely absent, so the description must carry the full burden. It discloses several important behaviors: it makes one logical GET request, does not auto-fetch continuation pages, locally limits array responses to 100 rows and 256 KiB with truncation reported, and refuses oversized records without partial fields. This goes well beyond minimal expectations and helps the agent manage results safely.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is front-loaded in the first sentence, which is excellent. However, some sentences are vague and not directly actionable for this parameterless tool, such as 'Required inputs reflect tool policy as well as measured upstream requirements' and 'Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema.' These could mislead or add noise, making the description longer than necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that there are no parameters and no output schema, the description provides useful operational details like limits and refusal behavior, but it does not clarify what 'aggregate figures' actually contain (e.g., total prize amounts, breakdowns) or why this endpoint should be chosen over nearby tournament listing tools. For an agent to call it correctly, this may be sufficient, but richer context would improve confidence.

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?

The input schema is empty (0 parameters), and schema description coverage is 100% by definition. Per guidelines, a 0-parameter tool gets a baseline of 4. The description does not need to elaborate on parameters, and the few generic statements about 'required inputs' and 'declared filters' are vague but not harmful. No additional parameter semantics are missing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear verb and resource: 'Read upstream awarded and upcoming tournament prize aggregate figures'. It further clarifies it does not claim prizes, distinguishing it from action-oriented tools. Among the many tournament_* siblings, this one is uniquely about prize aggregates, so an agent can easily tell it apart without examining schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context by stating it reads precomputed aggregate figures and does not auto-fetch continuation pages, but it never explicitly names alternatives or states when not to use this tool. With dozens of related tournament and player endpoints, explicit routing would be valuable, but it is not provided, leaving the agent to infer.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tournament_upcomingA

Read upcoming tournament summaries. The observed public response had 58 rows. Optional username is forwarded; its effect is not established. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameNo

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes beyond the schema by disclosing that it makes one logical GET request and does not auto-fetch continuation pages, which is crucial for pagination-aware agents. It also details that array responses are limited to 100 rows and 256 KiB with truncation reported, and oversized records are refused without partial fields – behaviors not apparent from annotations or schema. Since no annotations are provided, this description carries heavy responsibility and fulfills it well.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured, with key information front-loaded: the primary purpose in the first sentence, followed by limiting behaviors. Each sentence adds value without redundancy. It is slightly long but manages to cover all necessary operational details without fluff.

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?

The description is highly complete for a simple single-parameter tool with no output schema. It covers the purpose, request characteristics, response limits, error handling, and parameter effect uncertainty. The explicit handling of pagination and truncation is particularly important for an agent to avoid incomplete reads. Given the low complexity and absence of output schema, this description provides all essential information for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With schema description coverage at 0%, the schema provides minimal meaning for the 'username' parameter. The description explicitly states that the username is optional and its effect is not established, which adds some semantic context beyond the schema. However, it does not elaborate on the expected format or possible values, leaving much to inference, which is acceptable given the parameter's simplicity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as reading upcoming tournament summaries, distinguishing it from related siblings like tournament_in_progress and tournament_completed based on the 'upcoming' qualifier. It does not explicitly compare with siblings, but the purpose is specific enough to differentiate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description notes that the username is optional and its effect is unestablished, but it fails to provide guidance on when to use this tool versus alternatives like tournament_mine or tournament_find. It also doesn't mention any prerequisites or typical use cases, leaving the agent to infer usage from the name and description alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tournament_upcoming_officialA

Read the official upcoming tournament route. It returned exactly the same 58 rows as upcoming in the capture; do not infer permanent equivalence or a distinct complete dataset. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameNo

TDQS

A3.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden and does so well. It discloses that the tool makes one logical GET request, does not auto-fetch continuation pages, limits array responses to 100 rows/256 KiB, reports truncation, and refuses oversized records without partial fields. The 'Read' wording also implies non-mutating behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and then packs in important behavioral caveats without excessive filler. The sentence about required inputs is somewhat vague, but overall each sentence contributes meaningful information and the structure is readable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a minimal input schema cam and no output schema, the description covers a surprising amount: request behavior, pagination, limits, truncation, and a sibling-equivalence warning. The main gap is the unexplained `username` parameter, which prevents the definition from being fully self-sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has one optional `username` parameter and 0% description coverage, so the description must compensate. It does not explain what `username` means or how it affects results. The statement that 'Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema' adds generic context but fails to define the actual parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Read the official upcoming tournament route.' It also distinguishes this tool from the sibling 'tournament_upcoming' by noting the identical 58-row capture and warning against inferring permanent equivalence. Some ambiguity remains because 'route' is not fully defined and the exact data contents are not described.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides useful context by referencing 'upcoming' and cautioning against permanent equivalence or treating this as a distinct complete dataset. However, it does not explicitly state when to prefer this tool over tournament_upcoming or when not to use it. The filter-effectiveness caveat is relevant but does not give clear selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

transaction_inspectA
Read-onlyIdempotent

Inspect one transaction using a full Hive read and the existing Splinterlands game-result lookup. Returns independent chain/game outcomes, decoded game JSON, and gift-card agreement where provable. A game record does not prove processing of every operation in a multi-operation transaction. At most two logical reads.

ParametersJSON Schema
NameRequiredDescriptionDefault
trx_idYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the tool read-only, idempotent, and non-destructive. The description adds valuable behavioral nuance beyond that: the caveat that a game record does not prove processing of every operation in a multi-operation transaction, the 'where provable' qualifier, and the 'at most two logical reads' performance note. 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core action and output. The caveat about multi-operation transactions and the 'at most two logical reads' note earn their place, but some phrasing is dense and jargony ('gift-card agreement', 'logical reads'), which slightly reduces accessibility.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, read-only tool, the description covers what is returned, the main limitation, and the read cost. There is no output schema, so the description appropriately summarizes return categories. It does not discuss error cases or auth requirements, but these are less critical given the read-only, idempotent annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is only one required parameter, trx_id, and the schema's name plus regex already define it well. The description's 'one transaction' indirectly refers to this parameter but adds no new detail about format, interpretation, or edge cases. With 0% schema-description coverage, the description does not carry much of the parameter-documentation burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Inspect one transaction') and the resource, and goes on to describe the outputs ('independent chain/game outcomes, decoded game JSON, and gift-card agreement where provable'). It does not explicitly contrast with the related sibling transaction_lookup, so it loses the top point for sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives useful context about what the tool does and its read behavior ('At most two logical reads'), which implies when it is appropriate. However, it does not explicitly state when to choose this over siblings like transaction_lookup or cards_trx_lookup, nor does it give any exclusions or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

transaction_lookupA

Read one game transaction by explicit trx_id. Transaction data and result retain their JSON-encoded string wire types. An unknown ID returned an error object. This never submits or retries a game transaction. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
trx_idYes
usernameNo
card_detail_idNo

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully carries the behavioral disclosure burden and does so exceptionally: it states no submission/retry, one logical GET request, no auto-fetch pagination, local array limits, truncation reporting, and refusal of oversized records. This is far more transparent than typical tool descriptions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense and front-loaded with the core purpose, and nearly every sentence adds behavioral value. The statement about 'Required inputs reflect tool policy' is somewhat vague and adds little actionable information, preventing a perfect score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description covers the most important operational context: side effects, errors, pagination behavior, size limits, truncation, and oversized-record handling. It does not detail the success response shape beyond wire-type retention, but the essential lookup context is well covered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It clearly identifies trx_id as the required explicit ID, but username and card_detail_id are only vaguely described as 'other declared filters' with no explanation of their meaning or effect. The warning about forwarded filters is useful but does not replace parameter-level semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence states a specific verb ('Read'), a singular resource ('one game transaction'), and the exact selector ('explicit trx_id'), making the tool's scope immediately clear. It also distinguishes this lookup from list/history tools by emphasizing the single-ID requirement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description makes it clear that the tool is appropriate when an explicit transaction ID is known and that it never submits or retries a transaction. It does not explicitly name sibling alternatives like transaction_inspect, but the singular-ID constraint gives adequate usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

transaction_metricsB

Read named transaction metric series from an explicit date. Comma-separated battles,battles-modern selected both series and from narrowed the captured history to two recent points each. The unfiltered capture was about 1 MiB; each returned metric series remains intact under the result bound. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromYes
metricsYes

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden and provides substantial behavior: one logical GET, no auto-fetch of continuation pages, array limits of 100 rows and 256 KiB, truncation reported in text and metadata, and refusal of oversized records without partial fields. This goes well beyond a typical description, though the confusing 'unfiltered capture' sentence and the vague 'required inputs reflect tool policy' line reduce clarity slightly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is front-loaded with a useful first sentence, but it is not concise: the second sentence is an ungrammatical test-specific example, and later sentences like 'Required inputs reflect tool policy as well as measured upstream requirements' add little operational value. The useful behavioral notes would be clearer as short bullets.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity, two-parameter GET with no output schema, the description covers request behavior, limits, truncation, and refusal, which is unusually complete on the operational side. It falls short on domain specifics needed to invoke correctly, such as metric name vocabulary, date format, and the meaning of 'other declared filters', so the agent still has meaningful gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate; it does add meaning by identifying 'from' as an explicit date and showing that 'metrics' is a comma-separated list of named series via 'battles,battles-modern'. However, it does not specify date format, valid metric names, or whether 'from' is inclusive, and the 'other declared filters' phrase conflicts with additionalProperties=false.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a clear verb+object+qualifier: 'Read named transaction metric series from an explicit date,' which conveys the operation and distinguishes it from sibling transaction lookup tools. However, it never names a sibling or an exclusion, and the following sentence about 'battles,battles-modern' is a garbled example that muddies the otherwise crisp purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The first sentence implies this is the tool for reading named metric series at a specific date, and the note about one GET and no continuation pages gives operational context. But there is no explicit when-to-use versus alternatives, no prerequisites, and no 'use X instead' guidance, so the agent must infer the decision boundary from the tool name and siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vapi_market_asset_metadataB

Read asset metadata by assetName. All 13 landing-page categories were captured. detailIds accepts comma-separated IDs, not a JSON array string; omission returns all available details, locally bounded. SKINS returned 788 records. Additional per-asset fields are preserved. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. The details list are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
assetNameYes
detailIdsNo

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively discloses several important behaviors: it makes only one logical GET request, does not auto-fetch continuation pages, locally limits details to 100 rows and 256 KiB with truncation reported, and refuses oversized records without partial fields. It also states that 'other declared filters are forwarded as supplied' and that effectiveness is not implied. These are significant, non-obvious traits that help an agent anticipate outcomes. However, it does not cover all possible behaviors (e.g., error handling, authentication), but given the absence of annotations, it is notably transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than necessary and includes some extraneous specifics like 'SKINS returned 788 records' and 'All 13 landing-page categories were captured,' which seem like debugging or test artifacts rather than general use guidance. While the main purpose is front-loaded, these details dilute the focus. The structure is sequential but not maximally concise; each sentence carries information, but some could be trimmed or omitted without loss of clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of an output schema, the description should explain what the response contains. It mentions that additional per-asset fields are preserved and that truncation is reported in text and metadata, but it does not enumerate the metadata fields, response structure, or any error behavior. It also does not clarify what 'all 13 landing-page categories' refers to or how they relate to the response. The tool is for reading asset metadata, but the description leaves the expected return format underspecified, making it incomplete for an agent to fully predict the output.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0%, so the description must compensate. It adds value for detailIds by clarifying that it accepts comma-separated IDs, not a JSON array string, and that omission returns all available details. It also notes that required inputs reflect tool policy and upstream requirements. However, for assetName it adds no additional semantics beyond the obvious meaning from the name. Overall, it partially compensates for the schema gap but does not fully explain all parameter nuances.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear and specific verb-resource pair: 'Read asset metadata by assetName.' This explicitly states what the tool does and is unambiguous. Although it does not contrast with sibling tools, the purpose is precise and self-explanatory, warranting a top score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not mention alternative tools or provide explicit when-to-use versus when-not-to-use guidance. While the opening implies usage (for reading asset metadata by name), there is no reference to alternatives like vapi_market_landing or other market tools. The parameter instructions (e.g., comma-separated detailIds) are usage hints for that parameter, not tool selection guidance. Thus, only implied usage, no exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vapi_market_estimated_priceA

Read estimated market prices for an explicit asset and detailId. PACKS/ALPHA returned minPrice as a string; wire types and currencies are preserved. This is an estimate, not an executable quote. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. The prices list are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
assetYes
detailIdYes

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full behavioral burden and does so thoroughly: it discloses the estimate nature, single GET behavior, no auto-pagination, local row/size limits, truncation reporting, refusal of oversized records, and that forwarded filters are not guaranteed effective.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but well-structured, front-loading the core purpose and then adding one behavioral caveat per sentence. Every sentence contributes meaningful operational information without filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read tool with no annotations and no output schema, the description covers most non-obvious behaviors: request count, pagination, truncation, limits, and estimate semantics. It lacks precise output-shape details beyond minPrice, but that is a minor gap given the otherwise rich guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description needed to explain 'asset' and 'detailId', but it only restates their names. The PACKS/ALPHA note is about output formatting rather than parameter meanings, and no value formats, examples, or valid ranges are given.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence states a specific action ('Read estimated market prices') on a specific resource ('explicit asset and detailId'), and further clarifies this is an estimate rather than an executable quote. This clearly differentiates it from market_* and vapi_market_* siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: it is a read-only estimate, not an executable quote, and it performs one logical GET without auto-fetching continuation pages. It implies when to use it but does not name specific alternative tools for executable quotes or paginated reads.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vapi_market_landingA

Read public market asset summaries. assets accepts comma-separated asset names; PACKS and PACKS,LAND selected 15 and 18 rows. Unfiltered reads returned 979 rows and are locally truncated, not a complete inventory. An authorized player-specific PACKS read returned numOwned on all 15 rows; counts are passed through without inferring how listed items are counted. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. The assets list are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
assetsNo
playerNo

TDQS

A3.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and it delivers: local 100-row/256 KiB truncation, truncation reported in text and metadata, refusal of oversized records, no continuation-page auto-fetch, and pass-through counts without inference. It also clarifies it makes one logical GET. This is unusually detailed behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the purpose statement, but it is dense and somewhat redundant: unfiltered truncation is stated twice ('not a complete inventory' and later 'locally limited to 100 rows and 256 KiB'). Phrases like 'required inputs reflect tool policy as well as measured upstream requirements' are cryptic rather than concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must explain return behavior; it does provide row counts, numOwned, and truncation metadata examples, but it never fully defines the summary fields or the response shape. The player-specific authorization caveat and 'required inputs' policy statement are too vague to make the tool fully self-contained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It explains that assets accepts comma-separated names and gives concrete row-count examples, and it implies player-specific reads surface numOwned. However, the `player` parameter's exact role and authorization requirement are only indirectly described, leaving a real gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence names a specific verb and resource: 'Read public market asset summaries.' Examples like 'PACKS and PACKS,LAND selected 15 and 18 rows' add concreteness. However, the description never distinguishes this from sibling tools such as vapi_market_asset_metadata or vapi_market_estimated_price.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no when-to-use guidance or references to alternatives; it never says 'use this when...' or 'use X instead for...'. The truncation caveats imply that filtering by assets is safer, but the agent is left to infer when this tool is the right choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vapi_market_player_activityA

Read account market purchases and sales. The public client uses types=purchase,sale and sort=desc; sale selected sales and asc selected older records. limit bounded returned rows. offset=1 did not select the second record of the unoffset response, so conventional row-offset paging is not established. No complete history claim. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. The data list are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortYes
limitYes
typesYes
offsetYes
playerYes

TDQS

A3.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure, and it does so thoroughly. It reveals paging limitations ('conventional row-offset paging is not established'), no auto-fetch of continuation pages, local limits (100 rows, 256 KiB) with truncation reporting, and refusal of oversized records. These details give an agent accurate expectations about the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a dense paragraph with many clauses and not front-loaded beyond the opening purpose. It covers multiple behavioral details in a single run-on structure, which reduces readability. While each sentence adds value, it could be broken into bullet points or shorter sentences for better clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description should describe what the response contains. It mentions 'data list' and truncation, but not the structure or fields of the returned records. It also doesn't cover all possible parameter values. For a 5-param tool with zero schema coverage, this is incomplete, though it covers many operational aspects like limits and paging.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Since schema description coverage is 0%, the description must compensate. It partially explains parameters: types accepts 'purchase,sale', sort uses 'desc' and 'asc', and limit bounds returned rows. However, it does not explain the 'player' parameter or enumerate all valid types/sorts, and the statement 'Required inputs reflect tool policy' is vague. It adds some meaning but not comprehensive coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Read account market purchases and sales,' which clearly identifies the action (read) and resource (account market purchases and sales). This is specific enough to distinguish it from sibling market tools that handle listings or prices, though it doesn't explicitly name alternatives. It avoids tautology and gives a concrete purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides concrete parameter guidance, such as 'types=purchase,sale and sort=desc' and explains offset behavior ('offset=1 did not select the second record'), but it does not explicitly state when to use this tool over siblings like vapi_market_player_listings or market_history. The usage context is implied through parameter examples, but no exclusions or alternative tool references are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vapi_market_player_all_listingsB

Read account listing items across assets, locally bounded. The observed response mixed PACKS, CONSUMABLES, SKINS and MUSIC. The route name does not override local truncation or establish completeness for every account. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. The data list are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
playerYes

TDQS

B3.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Since no annotations are provided, the description carries the full disclosure responsibility. It transparently states that the tool does not auto-fetch continuation pages, has a 100-row and 256 KiB local limit, reports truncation in text and metadata, refuses oversized records without partial fields, and that the route name does not guarantee completeness. It also clarifies that declared filters are forwarded without implying their effectiveness. This is unusually detailed behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description front-loads the purpose then adds a set of distinct behavioral constraints in a mostly compact form. Some phrases are vague (e.g., 'Required inputs reflect tool policy as well as measured upstream requirements') and add limited clarity, but each sentence contributes a separate piece of information. Overall it is appropriately sized and reasonably structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with no output schema and no annotations, the description covers pagination, truncation, size limits, and error handling. It also warns about completeness limitations. However, it does not explain what 'listing items' means precisely, nor the expected format of the 'player' parameter, which leaves some ambiguity for correct invocation. Core behavior is well covered, so 4 is warranted.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter 'player' is not described except as a schema string with minLength 1. Schema description coverage is 0%, so the description must compensate, but it does not explain what the parameter represents (e.g., account name, ID, username) or any expected value. Moreover, the statement 'Other declared filters are forwarded as supplied' is misleading because the schema has additionalProperties: false and only 'player' is defined, so there are no other filters to forward.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Read account listing items across assets', which gives a specific verb and resource, and it explicitly notes the mixed asset types in the response (PACKS, CONSUMABLES, SKINS, MUSIC). It distinguishes itself from likely more specific market tools by emphasizing 'across assets', though it does not explicitly name sibling tools or state what makes it different from vapi_market_player_listings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to choose this tool over alternatives. The description provides caveats about truncation and completeness but does not say 'use this when...' or 'for X use the other tool'. No sibling is referenced, and no exclusions or alternatives are given, leaving the selection process to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vapi_market_player_asset_detail_statsA

Read the upstream owned and listed counts for one account and asset/detailId. PACKS/RIFT returned owned=0 and listed=2. Counts are returned unchanged; their arithmetic relationship is not inferred. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. Array responses are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
assetYes
playerYes
detailIdYes

TDQS

A3.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden and does so thoroughly. It discloses that this is a single logical GET, does not auto-fetch continuation pages, returns counts unchanged without inferring arithmetic relationships, truncates arrays at 100 rows/256 KiB, reports truncation in text and metadata, and refuses oversized records without partial fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and each sentence adds some useful behavioral caveat. It is slightly dense and includes some boilerplate-sounding warnings, such as 'other declared filters are forwarded as supplied,' which are not clearly supported by the schema, but overall it remains efficient for the amount of behavior it covers.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-annotations, no-output-schema tool, the description covers purpose, request behavior, response limits, and failure handling well. The main gaps are per-parameter guidance and explicit routing among the many market/player sibling tools, but the core invocation context is largely present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, but it only partially does. It connects 'account' and 'asset/detailId' to the data scope, yet it never explains each parameter individually, what values are expected, or what distinguishes 'asset' from 'detailId.' The statement about 'required inputs reflect tool policy' is meta information, not parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Read'), a specific resource ('upstream owned and listed counts'), and a precise scope ('one account and asset/detailId'). It is clear enough for an agent to understand what the tool returns, though it never explicitly contrasts it with sibling tools like vapi_market_player_listings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied by the first sentence: use this tool when you need owned and listed counts for one account/asset/detailId. However, the description does not explicitly state when not to use it or which sibling tool should be chosen for related needs such as full listings or activity, so the agent must infer selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vapi_market_player_listingsA

Read the account listing items for one asset/detailId. PACKS/RIFT matched the corresponding row in all_listings. Preserve listing/item identities, currencies, prices and remaining quantities; this does not create or change listings. Makes one logical GET request and does not auto-fetch continuation pages. Required inputs reflect tool policy as well as measured upstream requirements. Other declared filters are forwarded as supplied; their effectiveness is not implied by the schema. The data list are locally limited to 100 rows and 256 KiB, with truncation reported in text and metadata. Oversized records are refused without partial fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
assetYes
playerYes
detailIdYes

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly states that the tool does not create or change listings, makes one logical GET request, does not auto-fetch continuation pages, limits data to 100 rows and 256 KiB, reports truncation in text and metadata, and refuses oversized records without partial fields. This is comprehensive and covers safety, pagination, and limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is reasonably structured: it leads with purpose, then states behaviors, then limits. While it is longer than many tool descriptions, every sentence adds distinct information (read-only nature, pagination behavior, data limits, handling of oversized records). It is efficient and not redundant, though it could be tightened.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 3 parameters and no output schema, the description provides a good overview of behavior and limits, and it mentions the content of listings (identities, currencies, prices, remaining quantities). However, it does not explain the parameters, leaving a critical gap for correct invocation. The description is adequate but not fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage and 3 required parameters (asset, detailId, player). The description only mentions 'asset/detailId' indirectly but does not define what each parameter represents. The statement 'Required inputs reflect tool policy as well as measured upstream requirements' is meta and unhelpful. With no schema descriptions, the description fails to compensate, leaving parameter meanings ambiguous.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear verb and resource: 'Read the account listing items for one asset/detailId.' It specifies a precise scope (one asset/detailId) and even notes PACKS/RIFT matching in all_listings, which distinguishes it from sibling tools like vapi_market_player_all_listings. The purpose is unambiguous and differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context (read-only, single asset/detailId, no pagination) but does not explicitly state when to choose this tool over alternatives. It neither names siblings nor provides conditions for use vs. other listing endpoints. The guidance is implicit rather than explicit, so an agent might need to infer usage from the scope.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 163 tool updatesv0.0.0
    • First observedbattle_queue
    • First observedbattle_result
    • First observedbattle_status
    • First observedcards_collection
    • First observedcards_find
    • First observedcards_get_details
    • First observedcards_history
    • First observedcards_lore
    • First observedcards_pack_data_wax
    • First observedcards_skins
    • First observedcards_trx_lookup
    • First observedcollector_binder
    • First observedcollector_config
    • First observedcollector_player
    • First observedcollector_stickers
    • First observedcollector_stickers_tradeable
    • First observedconflict_airdrop_distribution
    • First observedconflict_eligible_cards
    • First observedconflict_leaderboard
    • First observedconflict_player_rank
    • First observedconflict_players
    • First observedconflict_seasons
    • First observedconflict_status
    • First observedconflict_wagon
    • First observeddelegation_to_target
    • First observeddelegations_incoming
    • First observeddelegations_outgoing
    • First observeddescribe_endpoint
    • First observedgame_last_block
    • First observedgame_maintenance
    • First observedgame_settings
    • First observedgame_vapi_health
    • First observedguild_brawl_records
    • First observedguild_brawl_sps_rewards
    • First observedguild_contributions
    • First observedguild_find
    • First observedguild_list
    • First observedguild_members
    • First observedhive_account_history
    • First observedhive_transaction
    • First observedland_deed_by_plot
    • First observedland_deed_by_uid
    • First observedland_deeds_owned
    • First observedland_deeds_search
    • First observedland_lineup_estimate
    • First observedland_lineup_snapshot
    • First observedland_liquidity_allrewards
    • First observedland_liquidity_pool_by_id
    • First observedland_liquidity_pool_by_symbol
    • First observedland_liquidity_pools
    • First observedland_liquidity_quote
    • First observedland_liquidity_region
    • First observedland_liquidity_resources
    • First observedland_power_core_available
    • First observedland_power_core_grouped
    • First observedland_projects_active
    • First observedland_projects_count
    • First observedland_projects_history
    • First observedland_projects_requirements
    • First observedland_regions_counts
    • First observedland_resources_balances_history
    • First observedland_resources_balances_history_count
    • First observedland_resources_fragment_history
    • First observedland_resources_history
    • First observedland_resources_leaderboards
    • First observedland_resources_liquidity_swaps
    • First observedland_resources_owned
    • First observedland_resources_production_region_harvestable
    • First observedland_resources_rewardactions
    • First observedland_resources_rewardactions_count
    • First observedland_resources_richlist
    • First observedland_resources_taxes
    • First observedland_resources_titles
    • First observedland_resources_titles_assigned
    • First observedland_stake_assets
    • First observedland_stake_dec_overall
    • First observedland_stake_dec_region
    • First observedland_stake_dec_staked
    • First observedland_stake_deed_details
    • First observedland_stake_evp_pending_claim
    • First observedland_tracts_counts
    • First observedland_volume
    • First observedlist_endpoints
    • First observedmarket_active_rentals
    • First observedmarket_active_status
    • First observedmarket_completed_status
    • First observedmarket_for_rent_grouped
    • First observedmarket_for_sale_grouped
    • First observedmarket_for_sale_packages
    • First observedmarket_history
    • First observedmarket_query_by_card
    • First observedmarket_query_grouped
    • First observedmarket_rental_history
    • First observedmarket_status
    • First observedmarket_volume
    • First observedplayer_archived_balances
    • First observedplayer_authorities
    • First observedplayer_avatar
    • First observedplayer_balances
    • First observedplayer_burn_event_full_leaderboard
    • First observedplayer_burn_event_leaderboard
    • First observedplayer_card_airdrop
    • First observedplayer_current_rewards
    • First observedplayer_custom_avatar
    • First observedplayer_dec
    • First observedplayer_energy_purchase_information
    • First observedplayer_inventory
    • First observedplayer_last_focus_rewards
    • First observedplayer_last_season_rewards
    • First observedplayer_leaderboard
    • First observedplayer_leaderboard_with_player
    • First observedplayer_lp_claim_history
    • First observedplayer_pack_purchases
    • First observedplayer_presale_leaders
    • First observedplayer_profile
    • First observedplayer_quests
    • First observedplayer_recent_teams
    • First observedplayer_reward_delegation_history
    • First observedplayer_reward_delegations
    • First observedplayer_richlist
    • First observedplayer_richlist_ranking
    • First observedplayer_season
    • First observedplayer_skins
    • First observedplayer_unclaimed_balance_history
    • First observedplayer_unclaimed_balances
    • First observedplayer_voucher
    • First observedplayers_item_details
    • First observedproposal_list
    • First observedproposal_pending_count
    • First observedproposal_votes
    • First observedpurchase_settings
    • First observedpurchase_stats
    • First observedpurchase_uniswap_reward
    • First observedrental_bids
    • First observedrental_bids_by_player
    • First observedrental_bids_lowest_price
    • First observedrental_offers
    • First observedrental_offers_by_player
    • First observedrental_offers_lowest_price
    • First observedrentals_by_bid
    • First observedrentals_by_player
    • First observedrentals_v3_by_player
    • First observedrentals_v3_by_role
    • First observedtournament_battles
    • First observedtournament_cancelled
    • First observedtournament_completed
    • First observedtournament_find
    • First observedtournament_find_brawl
    • First observedtournament_in_progress
    • First observedtournament_mine
    • First observedtournament_prizes
    • First observedtournament_upcoming
    • First observedtournament_upcoming_official
    • First observedtransaction_inspect
    • First observedtransaction_lookup
    • First observedtransaction_metrics
    • First observedvapi_market_asset_metadata
    • First observedvapi_market_estimated_price
    • First observedvapi_market_landing
    • First observedvapi_market_player_activity
    • First observedvapi_market_player_all_listings
    • First observedvapi_market_player_asset_detail_stats
    • First observedvapi_market_player_listings

TDQS

B3.4/5.0

Scored across 163 tools

Disambiguation2/5

The tool set has several dense clusters that are hard to tell apart: land_deed_by_plot and land_deed_by_uid accept effectively the same selector, market_status/active_status/completed_status overlap, and the rental_offers/rentals_by_player/rentals_v3_by_* family is highly confusing. The long descriptions help only after the agent has read them; names alone frequently point at more than one plausible tool.

Naming Consistency4/5

Tool names are uniformly lower_snake_case and consistently use a domain prefix such as market_, player_, land_, collector_, tournament_, or guild_. Minor exceptions like list_endpoints and describe_endpoint, plus a few long phrase-based names, keep this from being a 5, but the general pattern is predictable and readable.

Tool Count1/5

163 tools is an extreme agent-facing surface, even for a broad public API. Many near-duplicate variant routes could be consolidated into parameterized tools, so the count creates unnecessary decision burden rather than a well-scoped toolset.

Completeness5/5

For a deliberately read-only public API server, the coverage is remarkably thorough: cards, players, markets, land, tournaments, guilds, battles, conflicts, proposals, and chain transactions are all represented. No obvious domain gap or read workflow dead-end appears within the stated read-only scope.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to interact with Splunk Enterprise and Splunk Cloud instances through standardized MCP interface. Supports executing SPL queries, managing indexes and saved searches, listing applications, and retrieving server information with flexible authentication options.
    -
  • A
    license
    A
    quality
    D
    maintenance
    Provides comprehensive access to Axie Infinity data, including detailed Axie stats, marketplace listings, land information, and player leaderboards. It allows users to query real-time game info and market statistics through natural language.
    15
    7 npm
    2
    MIT