Skip to main content
Glama

The Undesirables MCP Banner

Python 3.10+ FastMCP License: BSL-1.1 PyPI

The TCG Oracle as an MCP server: 27 focused tools, the same ones the hosted endpoint serves — plus a separate 34-tool local agent kit

Install the package and the default command is the oracle over stdio (no keys, no wallet, no local models), or connect to the hosted endpoint at mcp.the-undesirables.com. Free tools answer directly; paid tools return x402 terms — pay-per-call in USDC, no account or API key.

Website · Docs · PyPI · 𝕏


🔌 Connect over MCP — one URL, no install

https://mcp.the-undesirables.com

Newest hosted tools (Sept 2026): `fantasy_league` — 4,444 AI personalities
drafting weekly fantasy lineups, merkle-committed before games score ·
`loan_terms_preview` — the Loan-Terms Oracle's six-step max-LTV derivation for
card collateral · `oracle_scorecard` — our public 30-day coverage record
(93%+ on 181K+ matured forecasts, committed on-chain before outcomes).

No install, no account, no API key. 27 tools over streamable HTTP (MCP protocol 2025-06-18; legacy SSE also served). Free tools answer immediately. Paid tools return an x402 payment_required carrying amount, network, and payTo — an agent with a funded wallet can settle and retry in the same session. Settlement only occurs on a successful response; failed calls are never charged.

Holders can also ask which Undesirables a wallet owns and how each soul's calls have scored (souls_in_wallet, soul_calls) — public track record only; personalities stay holder-gated.

Claude Desktop / Perplexity — add it as a custom remote connector (Perplexity: Settings → Connectors → + Custom Connector → Remote).

Cursor / Windsurf / VS Code — clients that take a URL in config:

{
  "mcpServers": {
    "tcg-oracle": { "url": "https://mcp.the-undesirables.com" }
  }
}

Tools: search_tcg_products, market_snapshot, grade_card, grade_or_not, simulate_price, card_forecast, trending_cards, optimize_portfolio, recommend_workflow, oracle_scorecard.

Search is set-aware — search_tcg_products("Base Set Charizard") separates Base Set, Base Set 2, and Shadowless rather than returning every Charizard printing. Every result carries a set field and a product_id you can pass straight to the other tools.


Related MCP server: litvm-tcg-oracle

Two servers, one package (v2.0.0)

Command

What it exposes

For

undesirables-mcp (default)

The TCG Oracle — 27 tools: search 456K+ cards (USD prices frozen 2026-09-07 — responses carry usd_panel), market snapshots (suspended while frozen), AI grading & grade-or-not, conformal-calibrated forecasts with a public accuracy scorecard, portfolio optimisation, card-collateral loan terms, fantasy & sports souls, the Syndicate, Technocore rooms. Backed by the public oracle API.

Anyone who wants the oracle in Claude Desktop, Cursor, Zed, LangChain…

undesirables-agent-kit

The local agent kit — 34 tools: memory graph, RAG over a soul workspace, meme/banner/video/3D generation, voice, code & shell execution, security audits, web search. Runs entirely on your machine.

Undesirables holders running their soul as a local agent

v1.x shipped both surfaces under one command; v2 separates them so each server has one job. The hosted endpoint is unchanged.

Quick Install

pip install undesirables-mcp-server

undesirables-mcp          # the TCG Oracle over stdio (27 tools, no keys) — default
undesirables-agent-kit    # the local 34-tool agent kit

Claude Desktop / Cursor / Zed — add the oracle as a stdio server:

{ "mcpServers": { "undesirables-oracle": { "command": "uvx", "args": ["undesirables-mcp-server"] } } }

Turn any Undesirable NFT into an MCP-compatible AI agent with the 34-tool local agent kit (undesirables-agent-kit).


Table of Contents


What It Does

The TCG Oracle — undesirables-mcp (default), 27 tools, no keys

The same 27 tools the hosted endpoint serves, over stdio. Free tools answer directly; paid tools return x402 terms (USDC on Base or Solana, USDG on Robinhood Chain) and are only charged on a successful response.

Area

Tools

🔎 Search & prices

search_tcg_products (455K+ products, 25+ games, set-aware), market_snapshot, trending_cards

USD panel frozen 2026-09-07. market_snapshot, simulate_price, trending_cards and optimize_portfolio are suspended (the oracle returns {"status":"suspended"} and does not charge); card_forecast and search_tcg_products serve the last published USD numbers and say so in-band. Live: graded-slab loan terms, sports, souls, census, crypto, Japanese two-sided quotes.

| 📊 Forecasts & risk | card_forecast (FREE: conformal 30-day forecast + Safe-Hold / Momentum letter grades), simulate_price (suspended while the USD panel is frozen — answers {status: suspended}, no charge; Monte Carlo GBM / Merton paths), optimize_portfolio | | 🎴 Grading | grade_card (3-stage vision pipeline, PSA/Beckett-calibrated), grade_or_not (GO / NO-GO with expected ROI) | | 🧾 Public track record | oracle_scorecard (30-day coverage on 181K+ matured forecasts, committed on-chain before outcomes) | | 🏦 Card collateral | loan_terms_preview (the Loan-Terms Oracle's six-step max-LTV derivation) | | 👻 Souls & leagues | souls_in_wallet, soul_calls, fantasy_league (4,444 AI personalities drafting weekly lineups), sports_board, jp_summary (the Japanese dealer panel as aggregates), graded_asks, loan_universe, census_summary, sports_players (all free) | | 🕹️ The Syndicate | syndicate_state, syndicate_move, syndicate_leaderboard — a turn-based strategy game agents can play | | 💬 technocore.chat (read-only) | technocore_rooms, technocore_room, technocore_info, technocore_note | | 🧭 Routing | recommend_workflow — describe a goal, get the call sequence |

The local agent kit — undesirables-agent-kit, 34 tools, runs on your machine

Turns an Undesirable NFT soul workspace into a local agent: persistent memory graph and RAG over the soul files, meme / banner / image / video / 3D generation, Kokoro TTS, ACE Step music, DuckDuckGo search, SAST code auditing, Ollama prompting, sandboxed code and shell execution, and eBay market depth. It needs Ollama and a soul workspace — see The Local Agent Kit below. The oracle needs none of that.


2.1.0check_accuracy removed. It returned exactly what oracle_scorecard returns (same endpoint) and ignored its game argument, so it only existed to confuse an agent choosing between the two. Callers: switch to oracle_scorecard. The oracle is 27 tools.

2.0.1 — tool descriptions rewritten so overlapping pairs state distinct jobs (card_forecast = free fixed 30-day read, simulate_price = paid custom horizon + full distribution; market_snapshot = the day's market report, trending_cards = ranked pick list; the four technocore_* readers numbered 1-4). check_accuracy is now a documented deprecated alias of oracle_scorecard (same data; removal planned for 2.1).

  • The oracle is the default server. undesirables-mcp (and undesirables-mcp-server) now start the 27-tool TCG Oracle over stdio — the same tools as https://mcp.the-undesirables.com, with no keys, wallet, or local models.

  • The agent kit has its own command. The 34-tool local kit moved to undesirables-agent-kit. Nothing was removed; each server now has one job.

  • Dependencies pinned to fastmcp<4 and mcp<2 so fresh installs keep working across SDK major bumps.

  • Newest oracle tools (Sept 2026): fantasy_league, loan_terms_preview, oracle_scorecard, sports_board, the Syndicate trio, and the technocore.chat readers.

  • Carried over from v1.1.8: the FREE card_forecast(card_name | product_id) — conformal 30-day forecast plus Safe-Hold & Momentum grades in one call.


🧰 The Local Agent Kit (undesirables-agent-kit)

Everything in this section is for the agent kit only. If you just want the oracle, you're already done: uvx undesirables-mcp-server (or the hosted URL above).

🛑 Prerequisites

  1. Python 3.10 or higher.

  2. Ollama — download it and run it. The llama icon must be in your menu bar / taskbar, or local inference fails immediately.

  3. A soul workspace folder downloaded from the-undesirables.com (for example soul_folder/0420).

🛠️ Install

pip install undesirables-mcp-server

Or, to hack on it:

git clone https://github.com/sailorpepe/undesirables-mcp-server.git
cd undesirables-mcp-server
python3 -m venv venv && source venv/bin/activate    # Windows: venv\Scripts\activate
pip install -r requirements.txt

🚀 Boot

# point --workspace at your EXACT soul folder
undesirables-agent-kit --workspace "/Users/you/Desktop/soul_folder/0420"

(From a clone: python server.py --workspace ".../soul_folder/0420".) The server has no chat window — it speaks JSON-RPC to whatever client you connect next. Don't type into that terminal.

🔌 Connect Claude Desktop

Settings → Developer → Edit Config, then:

{
  "mcpServers": {
    "undesirables-agent-kit": {
      "command": "undesirables-agent-kit",
      "args": ["--workspace", "/Users/you/Desktop/soul_folder/0420"]
    }
  }
}

Restart Claude Desktop; the tools icon should show 34 Undesirables tools. Cursor, Zed, and Windsurf take the same command / args shape.

🎨 Local image generation (optional)

The kit uses the 16 GB FLUX.1-schnell model for fully offline memes and illustrations. Skip this step (or run on a machine with under 12 GB RAM) and it silently falls back to the free Pollinations.ai cloud.

  • Apple Silicon uses mflux, which needs a Hugging Face token for Black Forest Labs' gated repo: accept the terms at black-forest-labs/FLUX.1-schnell, create a Read token at Hugging Face Tokens, then run python -c "import huggingface_hub; huggingface_hub.login()" and paste it.

  • Nvidia CUDA / AMD DirectML are detected automatically and use the ungated shuttleai/FLUX.1-schnell weights — no account needed; the first generate a meme downloads them.

⚠️ Troubleshooting

  • Ollama connection refused — Ollama isn't running. Launch the app and check for the llama icon.

  • ModuleNotFoundError: fastmcp — you're outside the virtual environment (clone installs only). source venv/bin/activate first.

  • Invalid JSON: expected value at line 1 — you typed into the server terminal. Leave it alone and talk through Claude Desktop / Cursor.


Technical Architecture (agent kit)

This section describes undesirables-agent-kit. (The oracle is a thin stdio wrapper over the same 27 tools the hosted endpoint serves; nothing below applies to it.)

The agent kit exposes your local NFT soul via the Model Context Protocol standard.

Resources (read only context your AI can access):

  • soul://personality — Big Five scores, archetype, strategy, fatal flaw

  • soul://system-prompt — The full system prompt that defines the agent

  • soul://memory — Persistent memory (trade history, observations)

  • soul://predictions — Prediction ledger with grades

Agent kit tools (34 functions your AI can call — undesirables-agent-kit):

  • grade_tcg_card — 3-stage PSA/Beckett grading: Qwen Vision LLM + OpenCV centering + BGS capping

  • card_forecastFREE one-call conformal 30-day forecast + Safe-Hold/Momentum letter grades + plain-English read (pass a card name or TCGplayer product_id)

  • monte_carlo_simulation — Price forecasting: conformal-calibrated risk by default (honest VaR/CVaR + Safe-Hold/Momentum grades); Monte Carlo GBM/Merton opt-in

  • search_ebay_market — Live eBay market depth, price distributions, arbitrage detection

  • purchase_undesirables_license_key — M2M purchase bridge (EVM tx payload)

  • verify_soul_initialization — On chain soul verification

  • generate_voice — Kokoro TTS voice synthesis

  • generate_3d_object — Shap E text to 3D mesh (.glb)

  • generate_image — Local FLUX image generation

  • web_search — DuckDuckGo instant answers

  • run_security_audit — SAST code scanning

  • query_ollama — Send prompts to local Ollama

  • analyze_market — Run market analysis in character

  • create_content — Write tweets, threads, bios in character

  • meme_machine — Generate meme concepts and marketing content

  • And 20+ more covering video, audio, memory, sandbox execution

┌─────────────────────────────────────────────┐
│           MCP Client (Cursor, Claude)       │
└──────────────────┬──────────────────────────┘
                   │ JSON-RPC (stdio)
┌──────────────────▼──────────────────────────┐
│        Undesirables MCP Server              │
│  ┌──────────┐ ┌──────────┐ ┌────────────┐  │
│  │Resources │ │  Tools   │ │  Prompts   │  │
│  │SOUL.md   │ │Skills    │ │Templates   │  │
│  │MEMORY.md │ │Ollama    │ │            │  │
│  │Predictions│ │Analysis │ │            │  │
│  └──────────┘ └────┬─────┘ └────────────┘  │
└────────────────────┼────────────────────────┘
                     │ HTTP
┌────────────────────▼────────────────────────┐
│              Ollama (Local LLM)             │
│           llama3.1:8b / qwen / etc          │
└─────────────────────────────────────────────┘

Agent Framework Integration

LangChain / LangGraph

from langchain_mcp_adapters.client import MultiServerMCPClient

async with MultiServerMCPClient({
    "undesirables": {
        "command": "uvx",
        "args": ["undesirables-mcp-server"]
    }
}) as client:
    tools = client.get_tools()
    # the 22 oracle tools, now available to any LangChain agent
    # (for the agent kit use command="undesirables-agent-kit", args=["--workspace", ".../soul_folder/0420"])

CrewAI

from crewai import Agent
from crewai_tools import MCPServerAdapter

mcp = MCPServerAdapter(
    command="uvx", args=["undesirables-mcp-server"])

agent = Agent(
    role="NFT Card Grader",
    tools=mcp.tools,
    goal="Grade trading cards and run calibrated price forecasts"
)

OpenAI Agents SDK

from agents import Agent
from agents.mcp import MCPServerStdio

mcp_server = MCPServerStdio(
    command="uvx", args=["undesirables-mcp-server"])

agent = Agent(
    name="Undesirables Agent",
    instructions="You are a TCG market analyst. Use the oracle tools for prices, forecasts, and grading.",
    mcp_servers=[mcp_server]
)

ElizaOS (Merged into Official Monorepo)

npm install plugin-undesirables

The plugin is now part of the official ElizaOS monorepo (PR #7869, merged May 21 2026).

Add to your character.json:

{
  "settings": {
    "UNDESIRABLES_WORKSPACE": "/path/to/soul_folder/0420"
  },
  "plugins": ["plugin-undesirables"]
}

LitVM TCG Oracle — MCP Server

We also publish a dedicated on-chain oracle MCP server for the LitecoinVM ecosystem:

pip install litvm-tcg-oracle

Feature

Detail

456K+ trading cards

25+ games, 290K actively priced

13.5M+ price observations

60+ days of continuous data

On-chain Merkle proofs

Trustless verification on LiteForge (Chain 4441)

Risk forecast

Conformal-calibrated VaR/CVaR + Safe-Hold/Momentum grades (Monte Carlo opt-in)

13 MCP tools

search_cards, get_price, get_merkle_proof, get_graded_proof, oracle_status, get_forecast, simulate_price, get_market_snapshot, get_fantasy_league, get_oracle_scorecard, get_loan_terms_preview, get_sports_board, get_census_summary — also hosted at https://litvm.the-undesirables.com/mcp

GitHub: litvm-tcg-oracle-mcp
PyPI: litvm-tcg-oracle
Live Oracle: the-undesirables.com/litvm


The Undesirables Ecosystem


For Entertainment Purposes Only: The Market Oracle, Trading Simulators, and all AI-generated predictions are for educational and entertainment purposes. AI models natively hallucinate. Do not use this Server to execute live financial trades or make purchasing business decisions. The Undesirables LLC operates a zero-liability framework for deployed open-source AI tooling.


📝 License & Commercial Use

This project is licensed under the Business Source License 1.1 (BUSL-1.1).

We build in public and support the developer ecosystem — but we also protect the infrastructure and IP of The Undesirables LLC.

✅ What You CAN Do (Free)

  • Personal & Educational Use — Download, modify, and run locally for learning, research, or personal projects.

  • Non-Competing Applications — Integrate our packages into your app, provided your app does not offer TCG market intelligence, pricing aggregation, AI card grading, or on-chain price oracle services as its primary function.

  • MCP / Agent Integration — Connect your AI agent to our tools for non-commercial use.

  • Community Contributions — Security audits, bug fixes, and PRs are always welcome.

🚫 What You CANNOT Do (Use Limitation)

  • Competing Service — You may not use this code to operate a competing TCG market intelligence, pricing aggregation, AI card grading, or on-chain price oracle service.

  • Commercial Resale — You may not wrap our API, data pipelines, or AI models into a paid service without a commercial license.

  • Hosted SaaS — You may not host this software as a service for third parties without written permission.

🔓 Open-Source Conversion

On June 1, 2030 (or 4 years after the first public release of each version), this code automatically converts to the MIT License — fully open source, forever.

🤝 Commercial Licensing

Building a commercial product? Want guaranteed API access or white-label integration? Contact us:

📧 oracle@the-undesirables.com · 🐦 @undesirables_ai

© 2026 The Undesirables LLC


If this project helped you, please star this repo — it helps others find it.

Report Bug · Request Feature

Data freshness

USD market prices originate from TCGPlayer. That upstream feed is currently unavailable, so USD prices are frozen at their last good date. Every price response carries its own latest_date, and the oracle root publishes live panel state under panels — read that rather than assuming.

A Japanese-print panel refreshes every morning: 24 games, ~364K cards, ~167K of them carrying both an asking price and a dealer buyback bid. Graded comps, sports boards and the proof layer are unaffected.

We claim no rights in any underlying price data and redistribute no provider's dataset.

Available Tools

22 tools
card_forecastAInspect

The FREE 30-day read on ONE card: point forecast, bands, VaR, and the Safe-Hold / Momentum letter grades, in one call. Pass a card_name (resolved to the best match) or a TCGplayer product_id. Horizon is fixed at 30 days.

FREE — no payment required. Returns an agent-complete object: price, as_of, regime, point (median 30d), move_pct, prob_up, band50_pct, band90_pct, var95_pct, var99_pct, low90, high90, safe_hold grade (A+..F), momentum grade (A+..F or "NA" on a drift spike), drift_spike, image_url, card_url, and a one-line plain_english read (e.g. "~12% chance it's below $Y in 30 days; Safe-Hold B, Momentum A").

Use this FIRST for "is this card a safe hold?", "30-day outlook?", "how risky is X?". For other horizons, the full percentile curve, or Monte Carlo paths, escalate to simulate_price (paid). Tip: GET /api/v1/forecast (no args) returns the free board of the top ~200 cards if the user wants a market overview.

ParametersJSON Schema
NameRequiredDescriptionDefault
card_nameNo
product_idNo

TDQS

A4.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 transparency burden. It discloses the free/paid nature, 'FREE — no payment required', and mentions the paid alternative. It also explains edge cases like card_name resolution ('resolved to the best match') and momentum grade returning 'NA' on a drift spike. However, it does not cover error behaviors or rate limits.

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

Conciseness4/5

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

The description is organized with a leading summary, a bulleted return list, usage guidance, and a tip. It is slightly verbose with repeated 'FREE' emphasis and a detailed field list, but the structure 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?

The tool has no output schema and only two flat parameters, so the description covers the key context: purpose, inputs, return fields, usage conditions, and relationship to siblings. It lacks specifics on API path (except the tip) and error handling, but these are not critical for 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 schema has no property descriptions (0% coverage), so the description must explain parameters. It does: 'Pass a card_name (resolved to the best match) or a TCGplayer product_id.' It clarifies the either/or relationship but does not discuss what happens if both are omitted, despite the schema defaults indicating optionality.

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 the exact purpose: 'The FREE 30-day read on ONE card: point forecast, bands, VaR, and the Safe-Hold / Momentum letter grades, in one call.' It also differentiates from siblings like simulate_price by noting escalation for other horizons.

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?

Explicit guidance is provided: 'Use this FIRST for "is this card a safe hold?", "30-day outlook?", "how risky is X?".' It also names the alternative: 'For other horizons, the full percentile curve, or Monte Carlo paths, escalate to simulate_price (paid).'

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

fantasy_leagueAInspect

The Undesirables fantasy league — 4,444 AI personalities draft weekly fantasy lineups (MLB live; more sports at kickoff) over the oracle's calibrated player forecasts. FREE. Lineups are merkle-committed to Base + LiteForge (stream fantasy_souls) BEFORE games score; points come from the daily-committed stat panels.

No token_id: the league feed — standings, this week's commit txs, every minted soul ranked by projected fantasy points with drafting style. With token_id (1..minted): that soul's full card — lineup with per-player floor/mid/ceiling fantasy points, teams, personality traits and its drafting strategy. Sealed souls return 404 until minted.

Use this when: an agent wants "which AI personality is winning fantasy", a soul's lineup and strategy, or a provable AI-agents-play-fantasy feed. Human page: https://oracle.the-undesirables.com/fantasy

ParametersJSON Schema
NameRequiredDescriptionDefault
token_idNo

TDQS

A4.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 of behavioral disclosure. It discloses key behaviors: lineups are merkle-committed before games, points come from daily stat panels, sealed souls return 404 until minted, and there are two output modes depending on token_id. It does not mention authentication, rate limits, or other potential constraints, but for a read-only feed tool the provided behavior 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.

Conciseness4/5

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

The description is longer than minimal, but every sentence adds valuable context. It is well structured: first the league overview, then the two parameter modes, then usage guidance and a human link. It is front-loaded with the core concept and avoids redundancy, though it could be tightened slightly 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 the tool's complexity (two modes, token_id semantics, edge cases like sealed souls) and the absence of an output schema or annotations, the description covers everything an agent needs: what it does, what it returns in each mode, the 404 case, and concrete use cases. It even provides a human-facing URL. This is complete for the tool's purpose.

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 fully explain the token_id parameter. It does so precisely: no token_id yields the league feed, while a token_id (1..minted) yields that soul's full card, and sealed souls return 404. This is comprehensive and leaves no ambiguity about 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 clearly states the tool's function: it provides access to a fantasy league feed for AI personalities, with two distinct modes (no token_id for league-wide data, with token_id for a specific soul's card). It also includes the context of merkle-committed lineups and daily stat panels, making the purpose unambiguous and distinct from 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 Guidelines4/5

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

The description explicitly lists the intended use cases ('Use this when: an agent wants...') with concrete examples, which gives clear guidance on when to invoke the tool. It does not explicitly name alternative tools or state when NOT to use it, but the specificity of the use cases effectively differentiates it from siblings.

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

grade_cardAInspect

AI-grade a trading card image using a 3-stage pipeline: (1) Qwen Vision LLM analyzes corners, edges, surface defects (2) OpenCV measures exact centering ratios programmatically (3) BGS professional capping algorithm adjusts the final grade

Returns PSA/Beckett-calibrated subgrades and an overall condition score. Also includes a free ROI verdict (should you grade this card?).

PAID: $0.10 per call via x402. THREE rails are accepted, not just Base:

  • USDC on Base (eip155:8453)

  • USDC on Solana (solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp)

  • USDG on Robinhood Chain (eip155:4663) Solana settlement is verified working end to end. (Audit 2026-07-30, BUG-12.)

Use this when: a user has a card image and wants to know what grade it would receive from PSA or Beckett.

ParametersJSON Schema
NameRequiredDescriptionDefault
gameNoPokemon
image_urlYes

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 fully carries the behavioral burden and does so admirably: it discloses the $0.10 paid cost, the three accepted rails, that Solana settlement is verified, the exact returns (PSA/Beckett subgrades + overall score + free ROI verdict), and the underlying methodology (Qwen, OpenCV, BGS capping). This is rich disclosure beyond mere mutation.

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?

Well-organized and front-loaded with the core purpose and pipeline before the payment details. Slightly verbose in places — the internal audit reference ('Audit 2026-07-30, BUG-12') is arguably noise for an agent — but every functional 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?

Strong coverage for a complex paid, multi-rail tool with 2 params and no output schema. The pipeline, returns, cost, rails, and usage are all present. Remaining gaps are the unexplained game parameter and whether the $0.10 payment is required before the call or settled after, which are material but minor against an otherwise complete definition.

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 two parameters, but it largely does not. image_url is only implicitly covered by 'trading card image,' and the required/default game parameter is never explained at all (what games are supported beyond the Pokemon default, what values are valid). The description adds almost no parameter-level 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+resource ('AI-grade a trading card image') and details a 3-stage pipeline that anchors the purpose. It distinguishes itself from the sibling grade_or_not by clarifying it produces an actual PSA/Beckett-calibrated grade rather than just a go/no-go verdict.

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?

Ends with an explicit 'Use this when: a user has a card image and wants to know what grade it would receive from PSA or Beckett,' which gives clear invocation context. However, it never names alternatives like grade_or_not or check_accuracy, nor states when NOT to use this tool.

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

grade_or_notAInspect

Answers: "Should I grade this card? Will I make money?"

Combines AI grade prediction with PSA fee schedules, shipping costs, and graded market values to calculate expected ROI. Returns a clear GO/NO-GO verdict with best-case, predicted, and worst-case profit.

PAID: $0.10 USDC per call.

Use this when: a user is deciding whether to submit a card for professional grading and wants to know if it's financially worth it.

ParametersJSON Schema
NameRequiredDescriptionDefault
card_nameYes
raw_priceNo
service_tierNoregular
predicted_gradeNo

TDQS

A3.9/5.0
Behavior3/5

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

The description discloses a key behavioral trait: 'PAID: $0.10 USDC per call.' It does not mention side effects, data modification, or permissions, and since no annotations are provided, the description carries the full burden. The cost is transparent, but the lack of any statement about read-only behavior or side effects leaves some ambiguity, yielding a middling score.

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 extremely concise and well-structured: it leads with the core questions, explains the methodology, states the output, and adds a usage condition. Every sentence adds value and there is no fluff, making it highly efficient for an agent 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?

Given the tool's moderate complexity (4 parameters, no output schema), the description provides sufficient context: it explains the inputs' general role, the calculation approach, and the output format (GO/NO-GO with best/predicted/worst profit). It does not cover error cases or edge conditions, but for a straightforward decision-support tool this is adequate, so it earns a strong but not perfect score.

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 only parameter names and defaults with no descriptions (0% coverage). The tool description mentions concepts like 'AI grade prediction' and 'PSA fee schedules' that implicitly relate to predicted_grade and service_tier, but it does not explicitly define each parameter or clarify nuances such as the meaning of raw_price or allowed values for service_tier. This falls short of compensating for the absent 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 answers 'Should I grade this card?' and 'Will I make money?' by combining AI grade prediction with PSA fees, shipping costs, and market values to return a GO/NO-GO verdict and profit scenarios. This is a specific, verb-driven purpose that distinguishes it from sibling tools like market_snapshot or grade_card.

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 states 'Use this when: a user is deciding whether to submit a card for professional grading and wants to know if it's financially worth it.' This provides a clear trigger condition, though it does not explicitly contrast with alternatives or state when not to use the tool, so it falls just short of a perfect score.

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

loan_terms_previewAInspect

FREE worked derivation of safe lending terms for a trading card on today's published free board (250 cards): value -> calibrated 99% tail -> liquidation buffer -> liquidity cap -> max LTV, all six steps shown with the price source and merkle proof links. term_days: 7, 14 or 30.

Cards off the free board return 404 with a pointer to the paid quote: /api/v1/loan-terms ($0.10 x402) covers all 2,000 rated cards plus graded slabs and a suggested APR premium. The rated universe is public at /api/v1/loan-terms/universe. Informational only — not financial advice.

Use this when: an agent wants collateral math for a card, or to explain how the Loan-Terms Oracle derives an LTV before paying for a full quote. Human page: https://oracle.the-undesirables.com/lending

ParametersJSON Schema
NameRequiredDescriptionDefault
term_daysNo
product_idYes

TDQS

A4.4/5.0
Behavior4/5

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

The description discloses that it's informational only and not financial advice, and that it returns 404 for cards not on the free board. It also mentions it provides a worked derivation with steps and links. However, it doesn't mention side effects (it's read-only) or rate limits, but for a simple preview tool, this is adequate. No annotation contradicts.

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 verbose, with repeated mentions of 'FREE', the URL, and the paid quote. It could be more succinct, but the core information is present and front-loaded. The 'Use this when' sentence is helpful.

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 simplicity (2 params, no output schema), the description covers the purpose, use case, and key behavior. It mentions the free board limitation and the alternative paid quote, which is useful context. It could be more explicit about the exact output format, but not necessary.

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 value for term_days by specifying allowed values (7, 14, or 30), which is not in the schema. It does not elaborate on product_id, but that is likely straightforward. The schema has a default for term_days, but the description clarifies the valid range.

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 derives safe lending terms for a trading card on the free board, with a specific process (value → calibrated 99% tail → liquidation buffer → liquidity cap → max LTV). It distinguishes itself by noting it's for the free board and that off-board cards return 404, differentiating from paid quote.

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 'Use this when: an agent wants collateral math for a card, or to explain how the Loan-Terms Oracle derives an LTV before paying for a full quote.' It also mentions the 404 behavior for off-board cards, providing clear conditions for when to use this tool.

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

market_snapshotAInspect

The DAY'S MARKET REPORT in one call, optionally for one game: biggest gainers and losers by % change, volume leaders, and the per-game breakdown across all 25 supported card games. A summary of the whole market, not a ranked pick list.

PAID: $0.025 USDC per call (x402 — USDC on Base or Solana, or USDG on Robinhood Chain). Previously documented as FREE, which was wrong: the server has always returned a 402 for this route. An autonomous caller budgeting off that docstring hit an unbudgeted paywall. (External audit 2026-07-30, BUG-2.)

Use this when: a user asks "what happened in the card market today?" or "which games are moving?". For a ranked list of individual cards with a risk row each, use trending_cards.

ParametersJSON Schema
NameRequiredDescriptionDefault
gameNo

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 of behavioral disclosure. It explicitly reveals that this is a PAID call, details the payment method and cost, and warns that the server returns a 402 unless payment is made. It also notes the previous misdocumentation (BUG-2) to prevent budget surprises. This goes beyond typical disclosure and is highly transparent about the operation's side effects (cost, potential failure).

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 organized: the first sentence states the purpose and scope, the second block conveys critical cost/payment information, and the final sentence provides usage guidance and the alternative. No sentence is wasted; even the audit reference is compact and relevant. The structure is front-loaded with the core functionality, making it easy 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?

Given only one optional parameter, no output schema, and no annotations, the description covers the essential aspects: what the tool returns (gainers/losers, volume leaders, per-game breakdown), when to use it, the cost, and the alternative. It does not list the 25 game names or specify the response structure, but that is a minor gap for a single-parameter, read-only summary 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 description coverage is 0%, so the description must compensate. It does so by explaining the 'game' parameter indirectly: 'optionally for one game' and 'per-game breakdown across all 25 supported card games' imply that passing a game filters the snapshot to that game, while omitting it returns the whole-market summary. It doesn't list the 25 games or the expected string format, but the meaning is clear enough for a single optional 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 opens with a clear, specific statement of what the tool does: 'The DAY'S MARKET REPORT in one call, optionally for one game: biggest gainers and losers by % change, volume leaders, and the per-game breakdown across all 25 supported card games.' It also explicitly differentiates from a ranked pick list and later names the sibling tool (trending_cards) that serves that alternative purpose, making the distinction 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 gives explicit when-to-use guidance: 'Use this when: a user asks "what happened in the card market today?" or "which games are moving?".' It then states the alternative: 'For a ranked list of individual cards with a risk row each, use trending_cards.' This covers both when and when-not, fully orienting the agent to choose correctly.

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

optimize_portfolioAInspect

Optimize a trading card portfolio using Markowitz mean-variance analysis with Merton jump-diffusion Monte Carlo simulations.

Provide comma-separated card names, budget, and risk tolerance to receive optimal position sizing, per-card allocation weights, Sharpe ratios, and rebalancing recommendations.

PAID: $0.50 USDC per call.

Use this when: a user has a budget and wants to know "how should I allocate my money across these cards?"

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
cardsYes
budgetNo
risk_toleranceNomoderate

TDQS

A4.1/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 describes the analytical method, expected outputs (position sizing, allocation weights, Sharpe ratios, rebalancing recommendations), and implicitly indicates a read-only optimization action. Good transparency for a non-destructive 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 concise overall, but includes a redundant 'PAID' line that is not necessary for tool selection. The core information (purpose, inputs, outputs) is presented in a straightforward manner.

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, the description covers the main aspects: what it does, what inputs are needed, what outputs to expect, and when to use it. Missing details about the 'days' parameter and possible values for risk_tolerance are minor 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 description coverage is 75% (3 of 4 parameters mentioned). It clarifies that 'cards' is comma-separated, and explains the role of budget and risk_tolerance. However, 'days' is not mentioned at all, leaving its purpose 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 states a specific verb ('Optimize'), resource ('trading card portfolio'), and method ('Markowitz mean-variance analysis with Merton jump-diffusion Monte Carlo simulations'). It clearly distinguishes from sibling tools like market_snapshot or card_forecast.

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 an explicit when-to-use scenario ('a user has a budget and wants to know how should I allocate my money across these cards?'). Lacks an explicit when-not-to-use, but the use case is clear enough.

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

oracle_scorecardAInspect

The oracle's HEADLINE scorecard, all games combined — check us before trusting us. FREE, no arguments. Returns the rolling 30-day conformal coverage on matured price forecasts (do the 90% bands actually cover 90%? recent: 93.3% over 181K+ graded predictions), the souls' on-chain scored track record, and the blind slab-grading study. Every scored prediction was merkle-committed to Base + LiteForge BEFORE its outcome existed, so this table cannot be curated after the fact.

Use this when: an agent wants evidence the calibration claims are real, or a trust-but-verify check before paying for forecasts or loan terms.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden of explaining behavior. It clearly discloses the outputs: calibration coverage, on-chain track record, grading study, and verifiable merkle-commitment timing. It does not mention potential errors, rate limits, or exact output format, but for a no-argument scorecard tool, the key behavioral aspects are covered.

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 stylized with rhetorical flourishes like 'check us before trusting us' and the parenthetical 'do the 90% bands actually cover 90%?', but it remains reasonably compact. The key details are front-loaded, and the 'Use this when' section provides actionable guidance without excessive bloat.

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 compensates by summarizing the main returned elements: rolling 30-day coverage, recent 93.3% figure over 181K+ predictions, on-chain track record, and grading study. It also provides the merkle-commitment context for verifiability. It could be more precise about the exact response structure, but for an agent deciding whether to call this scorecard, the context is sufficient.

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 has zero parameters, and the description explicitly states 'no arguments.' There are no parameter semantics to explain, and the statement removes any ambiguity about invocation requirements.

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 as an oracle scorecard that returns rolling 30-day calibration coverage, on-chain track records, and a blind grading study. It states that it takes no arguments and frames its purpose as a trust-but-verify check, making the tool's function easy to distinguish from forecast or loan 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 explicitly says 'Use this when: an agent wants evidence the calibration claims are real, or a trust-but-verify check before paying for forecasts or loan terms.' This gives clear conditions for use, though it does not name specific sibling tools or explicitly state when not to use it.

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

recommend_workflowAInspect

Describe your goal in natural language and get a recommended sequence of TCG Oracle API calls to accomplish it.

FREE — no payment required.

Example goals:

  • "I have 50 raw Pokémon cards and $500 budget"

  • "Is this Charizard worth grading?"

  • "Find me undervalued cards to flip"

  • "Predict the price of a Black Lotus in 90 days"

Use this when: you're not sure which tool to call first, or need a multi-step workflow recommendation.

ParametersJSON Schema
NameRequiredDescriptionDefault
goalYes

TDQS

A4.8/5.0
Behavior4/5

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

No annotations exist, so the description carries the full burden. It discloses the free nature ('FREE — no payment required') and implies read-only behavior (it recommends calls rather than executing them), though it does not explicitly mention side effects or limitations. Adequate but not exhaustive.

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 well-structured with clear sections: purpose, free note, examples, and usage guidance. It is concise despite the examples, with no redundant or unnecessary content.

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 a single parameter and no output schema, the description gives all necessary context: what it does, when to use it, and how to provide the input. It is complete for an agent to decide and invoke it 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?

The schema has only a 'goal' property with no description. The tool description explains how to fill it ('Describe your goal in natural language') and provides concrete examples, significantly adding 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 ('get') and resource ('recommended sequence of TCG Oracle API calls') with a clear purpose (accomplish a goal). Differentiates from siblings by focusing on workflow recommendation rather than performing a specific action.

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

Usage Guidelines5/5

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

Explicitly provides usage guidance: 'Use this when: you're not sure which tool to call first, or need a multi-step workflow recommendation.' This clearly indicates when to choose this tool over siblings.

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

search_tcg_productsAInspect

Search 449K+ TCG products across 25+ card games. Returns card names and IDs, plus current market prices. FREE — no payment required.

Use this when: a user asks about a specific card, wants to find cards, or needs current pricing for any trading card game product.

HOW TO SEARCH (card name AND set name are both searchable): • Card name alone casts the widest net: "Charizard", "Black Lotus". • Add the SET to pin down a printing: "Base Set Charizard" returns the Base Set, Base Set 2 and Shadowless Charizards as separate entries. This matters — printings of the "same" card differ wildly in value. • Every result carries a "set" field. Use it to choose, then pass that result's product_id to the other tools (card_forecast, grade_or_not, simulate_price) — exact, and avoids re-searching. • Do NOT include rarity or condition words: "Holo", "1st Edition", "Shadowless", "PSA 10" are not indexed and will sink an otherwise-good query. "Base Set Charizard Holo" → drop "Holo". • Got nothing? Remove the rarity words first, then fall back to the plain card name.

ParametersJSON Schema
NameRequiredDescriptionDefault
gameNo
limitNo
queryYes

TDQS

A4.1/5.0
Behavior4/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 solid work: 'FREE — no payment required', the fact that adding a set splits printing into separate entries, and the critical quirk that rarity/condition words are not indexed and can 'sink' a query, with a concrete fallback. It does not address pagination or limit semantics, but the behaviors most likely to be misconceived are explicitly disclosed.

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 and front-loaded: one-line summary, why-use, then actionable search tactics as bullets. Every bullet carries working examples and earns its place. It is somewhat longer than strictly necessary and mixes alert-style emphasis with guidance, so a 5 is not quite earned, but nothing is 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 tool with 3 params, no output schema, and no annotations, the description covers most of what an agent needs: query construction, result shape ('set' field, product_id), pricing, and downstream tool handoff. The most meaningful gap is the undisclosed 'game' parameter—the agent could call the tool correctly with just query, but would not know how to leverage or validate the optional game filter.

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 explain parameters itself. It does an exceptional job on 'query'—with do/don't examples and a fallback strategy—but 'game' gets zero explanation and 'limit' is never mentioned. For a 3-parameter tool, coverage is uneven: query is over-specified while the other two parameters remain undocumented.

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 pair ('Search 449K+ TCG products') and a concrete output (card names, IDs, market prices). It clearly differentiates from siblings like card_forecast, grade_or_not, and simulate_price by positioning itself as the discovery/primer search step, not an analysis step.

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?

An explicit 'Use this when' block names the common triggers (finding a specific card or pricing). It also gives routing guidance—pass the result's product_id to card_forecast, grade_or_not, or simulate_price—which clarifies how it relates to siblings. It lacks an explicit 'when not to use it' or exclusions, but the context is clear enough that the agent is unlikely to reach for it for the analytical sibling tools.

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

simulate_priceAInspect

SIMULATE a card's price path over a horizon YOU choose (days=30..365, default 90) and get the FULL distribution: 5th-95th percentiles, model parameters, confidence intervals, and (opt-in) Monte Carlo GBM or Merton jump-diffusion paths via model="gbm" / model="merton". Default model is the conformal-calibrated risk forecast. Requires current_price.

PAID: $0.015 USDC per call.

NOT the same as card_forecast: card_forecast is the FREE fixed 30-day read with letter grades for one card; use simulate_price only when the user wants a different horizon ("6 months out?"), the full percentile curve, or a Monte Carlo model.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
modelNoconformal
card_nameYes
simulationsNo
current_priceYes

TDQS

A4.4/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 of behavioral disclosure. It mentions the paid nature (USDC per call), required parameters (current_price), and default settings. While it does not explicitly state read-only or side-effect-free behavior, the simulation context implies it, and the description is transparent about prerequisites and costs.

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 mostly concise but contains some redundancy (e.g., reiterating the paid cost and default model). It is well-structured with clear sections, but could be tightened slightly by removing repeated mentions. Still, it gets the point across efficiently.

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 covers key contextual aspects: the tool's output (5th-95th percentiles, model parameters, confidence intervals), usage differentiation from card_forecast, prerequisites (current_price), and pricing. Given the absence of an output schema, it adequately describes what the caller can expect. No critical information is missing for a 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?

The schema has no parameter descriptions, so the description must compensate. It explains 'days' (range 30-365, default 90), 'model' (options like gbm/merton, default conformal), and the required 'current_price'. However, it does not explicitly define 'card_name' or 'simulations', though these are self-explanatory to some degree. Partial compensation 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 clearly states the tool's purpose: to simulate a card's price path over a chosen horizon. It explicitly differentiates from card_forecast by highlighting the key distinctions (custom horizon, full percentile curve, Monte Carlo models). This leaves no ambiguity 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 Guidelines5/5

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

The description provides explicit when-to-use guidance: 'use simulate_price only when the user wants a different horizon, the full percentile curve, or a Monte Carlo model.' It also contrasts with card_forecast, making the decision between sibling tools straightforward. Pricing is mentioned, which is a relevant usage consideration.

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

soul_callsAInspect

Full public record for ONE Undesirable soul: every open (locked) prediction and its recent scored results. FREE — no payment required.

Use this when: a user wants to inspect a specific soul's calls in detail, or wants to verify one — each open call carries a lock_hash plus the week's merkle root and the on-chain tx it was committed in, BEFORE the outcome was known. That is what makes the record checkable rather than claimed.

Args: token_id: minted soul, 1-273.

ParametersJSON Schema
NameRequiredDescriptionDefault
token_idYes

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 burden. It discloses that the data is free, includes cryptographic proof elements (lock_hash, merkle root, on-chain tx), and is checkable. This goes beyond the schema, though it doesn't explicitly state it's read-only or handle edge cases.

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 purpose, then usage, then argument. It's slightly verbose with the 'FREE' note and explanatory sentence about verifiability, but each part adds value. The argument definition is brief.

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, the description explains the output composition (open predictions and scored results) and mentions key fields (lock_hash, merkle root, on-chain tx). It's sufficient for an agent to understand what will be returned, though pagination or size limits are not addressed.

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 no description for token_id. The description adds meaning by defining it as 'minted soul' and giving a range (1-273), which is essential for correct usage. This compensates 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 clearly states the tool's function: retrieving the full public record for a single soul, including open predictions and scored results. It differentiates by emphasizing 'ONE' soul and the verification aspect, which sets it apart from broader tools like souls_in_wallet.

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 states 'Use this when' with two scenarios: inspecting details or verifying a soul. This provides clear guidance on when to invoke the tool, though it doesn't mention alternatives 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.

souls_in_walletAInspect

Show every Undesirable soul a wallet holds, with each soul's public prediction track record and its most recent calls. FREE — no payment, no signature, no wallet connection required.

Use this when: someone asks what Undesirables they own, how their souls are performing, what calls their souls have made, or which of their souls is the most accurate.

HOW IT WORKS • Ownership is read from Ethereum mainnet (ERC-721 0xA893648A701C03B14bF2FB767B72b2C55ed5c17A). Only the minted souls 1-273 have public records. • Nothing here is private, so you can look up ANY address — the caller does not have to prove they own it. Ask the user for their address. • Each minted soul locks 3 card predictions weekly, chosen deterministically from its on-chain personality traits. The oracle scores them 30 days later against real market prices.

WHAT YOU GET BACK • souls[] — per soul: rating (A+..F / UNRATED), matured, hits, hit_rate, brier, open_calls, and recent_calls with each call's outcome (hit / miss / push) • wallet_totals — combined open + matured calls and overall hit rate • best_soul — the holder's most accurate soul, once any have matured

HOLDERS WITH SEVERAL SOULS: this is a roster. Offer to compare them, or to speak as a specific one — each has different traits and its own record.

IMPORTANT — ratings mature on a schedule. The first predictions mature 2026-07-31, so before then every soul reads UNRATED with open calls only. That is expected, not an error: the calls were committed on-chain BEFORE their outcomes, which is the entire point. Say so rather than implying the soul has no history.

Args: address: 0x-prefixed EVM address to look up. calls: recent scored calls to include per soul (0-12, default 5).

ParametersJSON Schema
NameRequiredDescriptionDefault
callsNo
addressYes

TDQS

A4.8/5.0
Behavior5/5

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

Even without annotations, the description fully discloses behavior: it is free, requires no signature or wallet connection, reads public Ethereum data, only covers minted souls 1-273, and explains that UNRATED results before 2026-07-31 are expected rather than errors. 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.

Conciseness5/5

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

The description is well-organized with clear headers, bullet points, and an explicit Args section. It is detailed but every sentence adds value, including important caveats and output field explanations.

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?

With no output schema, the description still enumerates the returned fields (souls, wallet_totals, best_soul) and call outcome values. It also covers the multi-soul roster behavior and the scheduled maturity caveat, making the tool fully understandable.

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?

Although the schema itself has no descriptions, the tool description explicitly defines 'address' as a 0x-prefixed EVM address and 'calls' as recent scored calls per soul with a 0-12 range and default 5. This fully 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 clearly states the tool shows every Undesirable soul in a wallet with ratings and recent calls. It also specifies concrete use cases like asking what souls a user owns, how they are performing, and which is most accurate, making the 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 Guidelines4/5

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

The description gives explicit 'Use this when' scenarios and explains that any address can be looked up without ownership proof, asking the user for an address. It does not explicitly state when to prefer an alternative sibling tool, but the use-case list is strong enough for practical guidance.

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

sports_boardAInspect

Daily sports movers board — hot, high-volume players per live league with conformal 7-day forecast context, Heat/Form letter grades, and headshots. FREE. Off-season leagues report themselves dormant instead of serving frozen numbers, and every response carries the current out-of-sample calibration verdict (the bands are validated daily against a 90% target).

Use this when: an agent wants "who's hot in MLB", player ids for the paid /api/v1/sports/forecast endpoint ($0.05 — full per-stat calibrated bands), or fantasy-adjacent market context. The underlying stat panel is merkle-committed on-chain daily (Base + LiteForge) — provable, not vibes.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
leagueNo

TDQS

A4.1/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 behavioral burden and does so well: it discloses the tool as FREE, states that the off-season leagues report themselves dormant rather than serving frozen numbers, and says every response includes an out-of-sample calibration verdict. It leaves rate limits, authorization, and failure modes unspecified, which keeps it shy of a 5.

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

Conciseness4/5

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

The definition is compact (about 115 words), front-loaded with the core purpose, and organized with a distinct 'Use this when' paragraph. Only 'provable, not vibes' borders on fluff, though it does earn some value by restating the on-chain provenance claim.

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 no output schema and no annotations, the description compensates well by enumerating what returned content looks like (players, forecast context, grades, headshots, calibration verdict). It does not describe response shape or pagination, and the 'limit' parameter remains opaque, 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.

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 encode parameter meaning. It does for 'league' via examples ('hot in MLB') and league-specific behavior, but 'limit' is never mentioned, leaving its bounds and effect entirely implied. The partial compensation for the parameter that actually concerns the table yields a 3.

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: 'Daily sports movers board — hot, high-performing players per live league' with forecast context, Heat/Form grades, and headshots. It is clearly distinguished from the sibling tools (cards, games/tech) and from the paid /api/v1/sports/forecast endpoint that the description names explicitly.

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?

A literal 'Use this when' block lists three triggers: hot-player queries ('who's hot in MLB'), fetching player ids for the paid forecast endpoint, and fantasy-adjacent context. It does not name alternative sibling tools or give any explicit when-not-to-use rule, so it is clear context but not the spread-sheet exclusions 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.

syndicate_leaderboardBInspect

The Syndicate's shared 'Biggest Scores' leaderboard — humans and AI agents on ONE board; agent entries carry {"agent": true} and a model label. Win a game (own the city) and your score posts automatically.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior3/5

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

The description discloses some data structure (agent entries include a flag and model label) but does not explicitly state side effects, authentication requirements, or rate limits. It does not say whether the tool is read-only or if it modifies anything. Since no annotations exist, the description carries the burden, and this partial disclosure is insufficient for full 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 concise, using two sentences and a dash/semicolon style. It provides key facts without excessive verbosity, though the structure is slightly informal and could be more streamlined. Overall, it is well-organized and easy to parse.

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 lacks contextual information about when to call this tool, what a typical use case would be, or how it fits into the broader workflow. It does not mention any preconditions or expected outcomes beyond the automatic posting. An agent would have limited basis to decide when this tool is appropriate.

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 tool has zero parameters, and the schema fully documents that fact (100% coverage). The description adds no parameter-specific details, but none are needed. This aligns with the baseline of 3 for high schema coverage where parameter info is already complete.

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 a shared leaderboard for 'Biggest Scores' involving humans and AI agents, and notes that winning a game posts scores automatically. It implies a read/access operation, though it lacks an explicit verb like 'get' or 'list'. This is a minor gap, but the overall purpose is evident.

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 about when to use this tool vs. alternatives. The mention of automatic score posting describes system behavior, not a decision criterion for invoking the tool. There is no comparison to sibling tools or any context that would help an agent choose this tool over others.

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

syndicate_moveAInspect

Submit one day of orders to your Syndicate game and get the resolved day back (events + new state). One order per crew member per day.

orders: list of {"agentId": int, "targetId": int, "actionType": str} actionType is one of: raid, driveby, extort, garrison, rob, patrol, heal, pray, retain, injunction, cook_books, audit, hire, swat_raid, charity, intimidate, launder, rig_games, brawl, ambush, campaign, precinct_raid, lay_low, steal_car, fence.

Empty orders list = pass the day (the world still moves: rivals act, rackets pay, heat decays). targetId comes from the targets and territory lists in syndicate_state.

ParametersJSON Schema
NameRequiredDescriptionDefault
ordersYes
session_idYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral transparency. It discloses key behaviors: advancing the day, resolving events, returning new state, the one-order-per-crew-member limit, and the effect of an empty orders list. It does not mention potential side effects such as turn consumption or failure modes, but covers the primary behavioral aspects.

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 overall but contains slight redundancy: the orders structure and the empty orders behavior are each mentioned twice. It could be tightened into a more structured format, but it remains readable and directly to the point without unnecessary 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?

The description covers the input format, action types, the special empty-orders case, and the source for targetId. It gives a high-level expectation of the output ('events + new state'). It does not detail error handling or additional constraints, but for a game move tool the provided context is adequate for an agent to use it 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?

The description fully explains both parameters. For 'orders', it specifies the list structure (agentId, targetId, actionType) and enumerates all valid actionType values. For 'targetId', it directs the user to obtain valid values from syndicate_state lists. 'session_id' is implied as the game session identifier. The schema itself has no descriptions, so this textual coverage is comprehensive.

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 specific function: submitting one day of orders to the Syndicate game and receiving the resolved day with events and new state. It uses a specific verb ('Submit') and distinguishes the resource ('one day of orders'). While it doesn't explicitly contrast sibling tools, the purpose is unambiguous and self-contained.

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 what the tool does but does not explicitly state when to use it versus alternatives like syndicate_state or syndicate_leaderboard. It implies usage (for submitting orders) and covers edge cases like empty orders (passing the day), but lacks direct when-to-use or when-not-to-use guidance relative to sibling tools.

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

syndicate_stateBInspect

The Syndicate — a FREE turn-based organized-crime strategy game you (the agent) can play. Same city, same rules, same leaderboard as the human game at play.the-undesirables.com.

Call with NO session_id to start a new game (you get a sessionId, your 3-member crew, capital, and a target list). Call with your session_id to re-read the current state any time. Full rules: play.the-undesirables.com/SKILL.md

Strategy tip: looted cards are priced by the REAL TCG market — use card_forecast / search_tcg_products to decide what to fence and when.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNo

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the burden of explaining side effects. It mentions starting a new game and returning a sessionId, crew, capital, and target list, but does not disclose whether starting a new game overwrites or creates additional sessions, or whether re-reading has any 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.

Conciseness2/5

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

The description contains marketing language ('FREE', 'you (the agent) can play', 'Same city, same rules, same leaderboard') and a strategy tip that are not essential for invoking the tool. A more focused description of the state retrieval/creation behavior would be significantly more 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 provides the main usage pattern and a link to full rules, and it lists the fields returned on a new game. However, there is no output schema and the response shape for an existing session is not explicitly described, leaving some ambiguity about what 'current state' includes.

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 session_id is explained in the description: omitting it starts a new game, while providing it re-reads the current state. This compensates for the schema's lack of a parameter description, though it does not specify the expected format or source of session_id.

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 indicates that the tool starts a new Syndicate game when no session_id is provided and re-reads the current state when a session_id is included. However, it does not use a crisp verb-noun phrase like 'get game state' and includes some promotional framing.

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?

Some usage guidance is present: omit session_id to start, include session_id to re-read. But it does not explicitly contrast this with sibling tools like syndicate_move or syndicate_leaderboard, nor does it state when this tool should be preferred over them.

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

technocore_infoAInspect

technocore.chat reader 4/4 — the server's API DOCS (llms.txt), what this read-only integration can and cannot do, and proof_feed: this oracle's own verifiable price feed on technocore (/r/d-undsr-oracle — signed, chain-anchored, checkable by anyone). FREE, no arguments.

Use this when: an agent wants to learn the technocore API itself or verify our feed. For rooms, messages, or notes use the other three readers.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

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

The description states the tool is read-only, free, and takes no arguments, which gives some behavioral transparency. However, it does not concretely describe what the returned data will look like or what 'can and cannot do' actually encompasses, leaving some ambiguity.

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 brief and front-loads the core purpose. The formatting is a bit cluttered with slash-separated phrases, but it remains compact and does not waste words.

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 gives enough context to choose the tool and understand its general scope, but it lacks detail about the output format or the exact contents of the API docs and proof feed. Since there is no output schema, a bit more specificity would improve completeness.

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 tool has no parameters, and the schema coverage is 100% with an empty properties object. The description reinforces that there are no arguments, so parameter semantics are fully satisfied.

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 the tool is a read-only reader for technocore.chat API docs and a verifiable price feed, with a clear use case for learning about the API or verifying the feed. It is somewhat convoluted but sufficiently distinguishes this tool from the room/message/note readers.

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 'Use this when: an agent wants to learn the technocore API itself or verify our feed.' It also gives an exclusion: 'For rooms, messages, or notes use the other three readers,' providing clear when-to-use and 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.

technocore_noteAInspect

technocore.chat reader 3/4 — READ one shared KEY-VALUE NOTE (namespace + key), the way agents publish state for other agents. FREE, read-only.

Use this when: an agent needs a value another agent published (config, observations, coordination state). Not for conversation — that is technocore_room.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNo
namespaceYes

TDQS

A4.4/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 clearly states 'FREE, read-only' and 'READ', disclosing the non-mutating nature. It does not cover error handling or edge cases (e.g., missing key), but for a simple note read this is acceptable. It adds the context that this is a shared store for agent-published state, which is useful.

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, focused sentences. The first sentence front-loads the purpose and key constraints (read, key-value, namespace+key, free, read-only). The second provides usage guidance. Zero wasted words.

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-only note retrieval tool with no output schema, the description covers the essential aspects: what it does, when to use it, and how it differs from siblings. It does not explicitly state the return format, but the phrase 'READ one shared KEY-VALUE NOTE' implies the value is returned. Given the simplicity, this is adequate.

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 namespace and key together identify the note, giving the core semantics. However, it does not clarify that key is optional (default '' in schema) or describe the expected format or behavior when key is omitted. The description adds value but is not fully compensating for the absence of 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 specific verb ('READ') and resource ('one shared KEY-VALUE NOTE') and explicitly names the identifier components (namespace + key). It also distinguishes from sibling technocore_room by noting it is not for conversation, making the 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?

Provides explicit when-to-use guidance ('when an agent needs a value another agent published') and explicitly states what it is not for ('Not for conversation — that is technocore_room'), naming the alternative. This fully routes the agent.

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

technocore_roomAInspect

technocore.chat reader 2/4 — READ the recent MESSAGES in one named room. FREE, read-only — structurally incapable of posting.

Use this when: an agent wants to follow one room's conversation (e.g. Flop Network testnet/faucet announcements) without joining. Get room names from technocore_rooms; for published state values use technocore_note instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
roomYes
limitNo

TDQS

A4.4/5.0
Behavior5/5

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

Although no annotations are provided, the description explicitly states 'FREE, read-only — structurally incapable of posting.' This discloses the key behavioral trait of having no side effects, which is a major risk factor for tool use. There is 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 compact, well structured, and free of unnecessary detail. It packs the core behavior, side-effect profile, usage scenario, and sibling-tool references into just a few lines without losing clarity.

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 low complexity and the fact that no output schema is present, the description provides enough context for an agent to choose and call the tool for its primary purpose. It could be slightly more complete by describing the return format, but it already implies that messages are returned and gives sufficient alternatives for related tasks.

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 description indirectly explains the 'room' parameter by saying 'one named room' and pointing to technocore_rooms for room names, but it does not explain the 'limit' parameter at all. Since schema description coverage is 0%, the description should have compensated by covering both parameters; it only partially covers one.

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 a specific resource ('recent MESSAGES in one named room'), and distinguishes this tool from related tools such as technocore_rooms and technocore_note. It is clear what the tool does and how it differs from 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 Guidelines5/5

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

The description explicitly says when to use it ('follow one room's conversation ... without joining') and gives direct guidance for alternatives: get room names from technocore_rooms and use technocore_note for published state values. This gives an agent clear selection criteria.

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

technocore_roomsBInspect

technocore.chat reader 1/4 — LIST the rooms. technocore.chat is the agent-to-agent chat/notes server for the upcoming Flop Network (agent economy L1). FREE, read-only, no arguments.

Start here to discover room names; then technocore_room (messages), technocore_note (a shared key-value note), or technocore_info (API docs + our signed price-proof feed).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

TDQS

B3.3/5.0
Behavior4/5

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

It explicitly says 'read-only' and 'FREE', covering side effects and cost. However, the claim 'no arguments' is inaccurate given the limit parameter, and no annotation corroborates these traits.

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 partially concise but includes extraneous marketing context ('Flop Network', 'agent economy L1') that does not aid invocation, and the false 'no arguments' statement adds noise.

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?

It provides an overview and pointers to related tools, but omits any explanation of the limit parameter and misrepresents the argument list, leaving important invocation details unresolved.

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 schema exposes an optional 'limit' parameter with no explanation, and the description actively denies any arguments, which is misleading and leaves the limit parameter undefined.

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 verb 'LIST' and the resource 'rooms', and explicitly says 'Start here to discover room names', making 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?

It provides a sequencing hint ('Start here') and lists related tools as next steps, but does not explicitly state when to avoid this tool or contrast it directly with alternatives.

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. 1 tool updatev2.1.0
    • Removedcheck_accuracy
  2. 59 tool updatesv2.0.0
    • Addedcard_forecast
    • Addedcheck_accuracy
    • Removedcreate_banner
    • Removedcreate_memory_relation
    • Removeddetect_emotion
    • Removedexecute_code
    • Removedexecute_shell
    • Addedfantasy_league
    • Removedgenerate_3d_object
    • Removedgenerate_meme
    • Removedget_memory_subgraph
    • Removedget_rag_context
    • Removedget_skill
    • Removedget_voice_preset
    • Addedgrade_card
    • Addedgrade_or_not
    • Removedgrade_tcg_card
    • Removedimage_to_3d
    • Removedindex_soul_workspace
    • Removedinvoke_council
    • Removedlist_skills
    • Addedloan_terms_preview
    • Addedmarket_snapshot
    • Removedmemory_recall
    • Removedmemory_save
    • Addedoptimize_portfolio
    • Addedoracle_scorecard
    • Removedproduce_video
    • Removedpurchase_undesirables_license_key
    • Removedquery_memory_graph
    • Removedquery_ollama
    • Addedrecommend_workflow
    • Removedremove_background
    • Removedrun_security_audit
    • Removedscan_media_file
    • Removedsearch_ebay_market
    • Removedsearch_soul_memory
    • Addedsearch_tcg_products
    • Removedself_reflect
    • Addedsimulate_price
    • Addedsoul_calls
    • Removedsoul_listen
    • Removedsoul_speak
    • Addedsouls_in_wallet
    • Addedsports_board
    • Addedsyndicate_leaderboard
    • Addedsyndicate_move
    • Addedsyndicate_state
    • Addedtechnocore_info
    • Addedtechnocore_note
    • Addedtechnocore_room
    • Addedtechnocore_rooms
    • Addedtrending_cards
    • Removedupdate_memory
    • Removedupsert_memory_node
    • Removedverify_soul_initialization
    • Removedvideo_production_beat_sync
    • Removedviral_clip_extractor
    • Removedweb_search
  3. 3 tool updatesv1.1.5
    • Changedgenerate_meme9 fields changed
      • changedInput schema / properties / bottom_text / description
        Previous value: -"Memetic text to draw at the bottom (impact font with stroke)"New value: +"Memetic text to draw at the bottom (impact font with stroke)."
      • addedInput schema / properties / font_style / description
        Added value: +"Font family to use for meme text (e.g., 'Impact', 'Arial')."
      • addedInput schema / properties / format_type / description
        Added value: +"The layout format for the meme (e.g., 'meme', 'demotivational')."
      • changedInput schema / properties / height / description
        Previous value: -"Image height in pixels (default 512)"New value: +"Output image height. Defaults to 512."
      • changedInput schema / properties / overlay_image_path / description
        Previous value: -"Absolute path to a transparent PNG (e.g. your PFP cutout) to layer on top"New value: +"Absolute path to a transparent PNG (e.g. your PFP cutout) to layer on top."
      • changedInput schema / properties / seed / description
        Previous value: -"Random seed for reproducibility (-1 for random)"New value: +"Random seed for deterministic generation. Defaults to -1 (random)."
      • changedInput schema / properties / top_text / description
        Previous value: -"Memetic text to draw at the top (impact font with stroke)"New value: +"Memetic text to draw at the top (impact font with stroke)."
      • addedInput schema / properties / visual_style / description
        Added value: +"The artistic style of the generated background (e.g., 'Default', 'Photorealistic')."
      • changedInput schema / properties / width / description
        Previous value: -"Image width in pixels (default 512)"New value: +"Output image width. Defaults to 512."
    • Changedsearch_ebay_market2 fields changed
      • addedInput schema / properties / app_id / description
        Added value: +"Optional eBay API App ID. If omitted, uses server environment variable."
      • addedInput schema / properties / client_secret / description
        Added value: +"Optional eBay API Client Secret. If omitted, uses server environment variable."
    • Changedsoul_speak5 fields changed
      • addedInput schema / properties / soul_agreeableness / description
        Added value: +"Big Five Agreeableness score (0-100) affecting pitch softness."
      • addedInput schema / properties / soul_conscientiousness / description
        Added value: +"Big Five Conscientiousness score (0-100) affecting cadence."
      • addedInput schema / properties / soul_extraversion / description
        Added value: +"Big Five Extraversion score (0-100) affecting volume and energy."
      • addedInput schema / properties / soul_neuroticism / description
        Added value: +"Big Five Neuroticism score (0-100) affecting pitch variation and speed."
      • addedInput schema / properties / soul_openness / description
        Added value: +"Big Five Openness score (0-100) affecting voice modulation."
  4. 36 tool updatesv1.0.0
    • First observedcreate_banner
    • First observedcreate_memory_relation
    • First observeddetect_emotion
    • First observedexecute_code
    • First observedexecute_shell
    • First observedgenerate_3d_object
    • First observedgenerate_meme
    • First observedget_memory_subgraph
    • First observedget_rag_context
    • First observedget_skill
    • First observedget_voice_preset
    • First observedgrade_tcg_card
    • First observedimage_to_3d
    • First observedindex_soul_workspace
    • First observedinvoke_council
    • First observedlist_skills
    • First observedmemory_recall
    • First observedmemory_save
    • First observedproduce_video
    • First observedpurchase_undesirables_license_key
    • First observedquery_memory_graph
    • First observedquery_ollama
    • First observedremove_background
    • First observedrun_security_audit
    • First observedscan_media_file
    • First observedsearch_ebay_market
    • First observedsearch_soul_memory
    • First observedself_reflect
    • First observedsoul_listen
    • First observedsoul_speak
    • First observedupdate_memory
    • First observedupsert_memory_node
    • First observedverify_soul_initialization
    • First observedvideo_production_beat_sync
    • First observedviral_clip_extractor
    • First observedweb_search

TDQS

A3.6/5.0

Scored across 22 tools

Disambiguation4/5

Most tools have distinct, well-scoped purposes, but a few pairs (grade_card vs grade_or_not, card_forecast vs simulate_price, market_snapshot vs trending_cards) overlap thematically and require careful reading of the descriptions to pick correctly. The descriptions do clearly delineate the differences, so confusion is limited.

Naming Consistency2/5

Tool names follow no consistent verb_noun or object_action pattern: some are action-led (search_tcg_products, simulate_price), some are object-led (market_snapshot, sports_board), and others are bare nouns or prefixes (technocore_rooms, technocore_room, soul_calls). While all use snake_case, the naming is too varied to be predictable.

Tool Count3/5

With 22 tools, the set is larger than the ideal 3–15 and spans multiple auxiliary domains (syndicate game, fantasy league, technocore chat, souls) beyond the core TCG oracle. Each tool does have a distinct role, but the overall surface feels heavy and could overwhelm an agent.

Completeness4/5

The core TCG workflow is well covered: search, forecast, simulate, trend, market summary, grade, portfolio optimization, and loan preview are all present. Minor gaps exist—such as no direct paid loan quote tool and no explicit free forecast-board tool—but these are referenced in descriptions and can be worked around.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers