The Undesirables TCG Oracle
This server is a TCG market intelligence MCP server that lets agents search cards, get prices/forecasts, grade cards, optimize portfolios, and access the Undesirables ecosystem (souls, fantasy league, Syndicate game, loan terms, sports, technocore).
Search & pricing: search 449K+ TCG products across 25+ games, set-aware, with product IDs for follow-on tools.
Market reports: daily market snapshots, trending cards by price velocity, and portfolio optimization.
Forecasts & risk: free 30-day conformal card forecasts (Safe-Hold/Momentum grades), paid custom-horizon simulations, and calibrated accuracy scorecards.
Card grading: AI grade prediction from images and grade-or-not ROI verdicts.
Card collateral: loan-terms preview showing the LTV derivation.
Souls & leagues: look up wallet-owned Undesirables, soul prediction records, fantasy league standings/lineups, and sports boards.
Games: play the Syndicate strategy game and check its leaderboard.
technocore.chat: read-only access to rooms, messages, notes, and API info.
Workflow routing: recommend_workflow suggests the right tool sequence for a user goal.
Payment model: free tools answer directly; paid tools return x402 USDC/USDG terms and charge only on success.
Provides tools for local image generation using AMD GPUs via DirectML on Windows.
Provides tools for AI music generation using ACE Step on Apple Silicon and local image generation using MLX Flux on Mac.
Allows CrewAI agents to integrate the server's 35+ tools for tasks like NFT card grading and Monte Carlo price simulations.
Provides a web search tool using DuckDuckGo's zero-token instant answers.
Provides a financial analytics oracle that includes eBay depth analysis for trading card pricing.
Provides a tool to generate unsigned EVM transaction payload for purchasing an Undesirables license key on Ethereum Mainnet, enabling M2M agent economy.
Provides video clipping and beat sync editing tools using FFmpeg.
Provides local image generation using FLUX.1-schnell model via MLX Flux on Mac or DirectML on Windows/CUDA on Linux.
The server code repository is hosted on GitLab.
Requires Hugging Face authentication to access the FLUX.1-schnell model on Apple Silicon; provides access to model weights.
Allows LangChain agents to use all 35+ tools via the MultiServerMCPClient adapter.
Supports integration with LangGraph for building agent workflows using the server's tools.
Supports local image generation on Linux using CUDA GPUs.
Supports local image generation on Linux using NVIDIA CUDA GPUs.
Provides integration with locally running Ollama models (e.g., llama3.1:8b) for query completion and reasoning.
The server is distributed as a PyPI package via pip install.
The server is built in Python and requires Python 3.10+ to run.

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.
🔌 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 |
| The TCG Oracle — 27 tools: search 456K+ cards (USD prices frozen 2026-09-07 — responses carry | Anyone who wants the oracle in Claude Desktop, Cursor, Zed, LangChain… |
| 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 kitClaude 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 |
|
USD panel frozen 2026-09-07.
market_snapshot,simulate_price,trending_cardsandoptimize_portfolioare suspended (the oracle returns{"status":"suspended"}and does not charge);card_forecastandsearch_tcg_productsserve 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.0 — check_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(andundesirables-mcp-server) now start the 27-tool TCG Oracle over stdio — the same tools ashttps://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<4andmcp<2so 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
Python 3.10 or higher.
Ollama — download it and run it. The llama icon must be in your menu bar / taskbar, or local inference fails immediately.
A soul workspace folder downloaded from the-undesirables.com (for example
soul_folder/0420).
🛠️ Install
pip install undesirables-mcp-serverOr, 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 runpython -c "import huggingface_hub; huggingface_hub.login()"and paste it.Nvidia CUDA / AMD DirectML are detected automatically and use the ungated
shuttleai/FLUX.1-schnellweights — no account needed; the firstgenerate a memedownloads 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/activatefirst.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 flawsoul://system-prompt— The full system prompt that defines the agentsoul://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 cappingcard_forecast— FREE 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-insearch_ebay_market— Live eBay market depth, price distributions, arbitrage detectionpurchase_undesirables_license_key— M2M purchase bridge (EVM tx payload)verify_soul_initialization— On chain soul verificationgenerate_voice— Kokoro TTS voice synthesisgenerate_3d_object— Shap E text to 3D mesh (.glb)generate_image— Local FLUX image generationweb_search— DuckDuckGo instant answersrun_security_audit— SAST code scanningquery_ollama— Send prompts to local Ollamaanalyze_market— Run market analysis in charactercreate_content— Write tweets, threads, bios in charactermeme_machine— Generate meme concepts and marketing contentAnd 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-undesirablesThe 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-oracleFeature | 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 |
|
→ GitHub: litvm-tcg-oracle-mcp
→ PyPI: litvm-tcg-oracle
→ Live Oracle: the-undesirables.com/litvm
The Undesirables Ecosystem
Website: the-undesirables.com
LitVM Oracle: the-undesirables.com/litvm
PyPI (MCP): undesirables-mcp-server (v2.0.0)
PyPI (LitVM): litvm-tcg-oracle (v1.0.7)
npm: plugin-undesirables (ElizaOS plugin, v2.7.0)
Oracle API: oracle.the-undesirables.com (31 endpoints, x402 micropayments)
awesome-mcp-servers: Listed ✅ (94K+ ⭐, both servers listed)
ElizaOS Plugin: Official monorepo
x402 Payment Server: undesirables-x402-server
Price data: originates with TCGplayer. No rights claimed in the underlying prices; the modelling and on-chain proofs are ours.
⚖️ Legal Disclaimer
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.
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 toolscard_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.
| Name | Required | Description | Default |
|---|---|---|---|
| card_name | No | ||
| product_id | No |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| token_id | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| game | No | Pokemon | |
| image_url | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries the behavioral burden 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| card_name | Yes | ||
| raw_price | No | ||
| service_tier | No | regular | |
| predicted_grade | No |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| term_days | No | ||
| product_id | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| game | No |
TDQS
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.
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.
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.
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.
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.
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?"
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| cards | Yes | ||
| budget | No | ||
| risk_tolerance | No | moderate |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| goal | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| game | No | ||
| limit | No | ||
| query | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | ||
| model | No | conformal | |
| card_name | Yes | ||
| simulations | No | ||
| current_price | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| token_id | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| calls | No | ||
| address | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| league | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| orders | Yes | ||
| session_id | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | ||
| namespace | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| room | Yes | ||
| limit | No |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
TDQS
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.
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.
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.
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.
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.
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.
trending_cardsAInspect
A RANKED LIST of individual cards by PRICE VELOCITY (drift), highest absolute movement first, with the conformal risk row (bands, VaR, grades) attached to each card. Filter by game, limit, and min_price. Built for picking cards, not for summarizing the market.
NOTE (corrected 2026-07-30): this previously claimed "30-day sales volume".
Sales volume and view counts are NOT in the dataset and the API itself now
explicitly disclaims them — see ranked_by in the response.
Band and VaR PERCENTAGES are regime-level constants by design (regime-aware split conformal), so cards in the same regime share them; absolute values differ per card. Do not read it as a per-card fit. Covers all 25+ games.
PAID: $0.025 USDC per call.
Use this when: a user asks "which cards are moving fastest right now?" and wants names to act on. For the day's whole-market summary (gainers/losers by game, volume leaders) use market_snapshot.
| Name | Required | Description | Default |
|---|---|---|---|
| game | No | ||
| limit | No | ||
| min_price | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full transparency burden. It discloses the paid cost, corrects previous claims about sales volume/view counts, explains that band/VaR percentages are regime-level constants, and notes the API disclaims certain data via ranked_by.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is focused and each sentence adds meaningful information: output type, ranking criteria, filter options, caveats, pricing, and sibling-tool comparison. It is appropriately concise without unnecessary filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even without an output schema, the description explains the return shape (ranked list with conformal risk row) and important behavioral details such as coverage across games, cost, and data limitations. This is sufficient for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides only names and defaults, but the description mentions filtering by game, limit, and min_price, which maps to all three parameters. It does not detail game value format or currency for min_price, but the essentials are covered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a ranked list of individual cards by price velocity, with highest absolute movement first, and explicitly distinguishes it from market_snapshot for whole-market summaries. This makes the tool's purpose and scope unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage direction: use when a user asks which cards are moving fastest and wants names to act on, and use market_snapshot for day's whole-market summary. This provides 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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v2.1.0- Removed
check_accuracy
59 tool updates
v2.0.0- Added
card_forecast - Added
check_accuracy - Removed
create_banner - Removed
create_memory_relation - Removed
detect_emotion - Removed
execute_code - Removed
execute_shell - Added
fantasy_league - Removed
generate_3d_object - Removed
generate_meme - Removed
get_memory_subgraph - Removed
get_rag_context - Removed
get_skill - Removed
get_voice_preset - Added
grade_card - Added
grade_or_not - Removed
grade_tcg_card - Removed
image_to_3d - Removed
index_soul_workspace - Removed
invoke_council - Removed
list_skills - Added
loan_terms_preview - Added
market_snapshot - Removed
memory_recall - Removed
memory_save - Added
optimize_portfolio - Added
oracle_scorecard - Removed
produce_video - Removed
purchase_undesirables_license_key - Removed
query_memory_graph - Removed
query_ollama - Added
recommend_workflow - Removed
remove_background - Removed
run_security_audit - Removed
scan_media_file - Removed
search_ebay_market - Removed
search_soul_memory - Added
search_tcg_products - Removed
self_reflect - Added
simulate_price - Added
soul_calls - Removed
soul_listen - Removed
soul_speak - Added
souls_in_wallet - Added
sports_board - Added
syndicate_leaderboard - Added
syndicate_move - Added
syndicate_state - Added
technocore_info - Added
technocore_note - Added
technocore_room - Added
technocore_rooms - Added
trending_cards - Removed
update_memory - Removed
upsert_memory_node - Removed
verify_soul_initialization - Removed
video_production_beat_sync - Removed
viral_clip_extractor - Removed
web_search
3 tool updates
v1.1.5- Changed
generate_meme9 fields changed- changed
Input schema / properties / bottom_text / descriptionPrevious 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)." - added
Input schema / properties / font_style / descriptionAdded value: +"Font family to use for meme text (e.g., 'Impact', 'Arial')." - added
Input schema / properties / format_type / descriptionAdded value: +"The layout format for the meme (e.g., 'meme', 'demotivational')." - changed
Input schema / properties / height / descriptionPrevious value: -"Image height in pixels (default 512)"New value: +"Output image height. Defaults to 512." - changed
Input schema / properties / overlay_image_path / descriptionPrevious 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." - changed
Input schema / properties / seed / descriptionPrevious value: -"Random seed for reproducibility (-1 for random)"New value: +"Random seed for deterministic generation. Defaults to -1 (random)." - changed
Input schema / properties / top_text / descriptionPrevious 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)." - added
Input schema / properties / visual_style / descriptionAdded value: +"The artistic style of the generated background (e.g., 'Default', 'Photorealistic')." - changed
Input schema / properties / width / descriptionPrevious value: -"Image width in pixels (default 512)"New value: +"Output image width. Defaults to 512."
- Changed
search_ebay_market2 fields changed- added
Input schema / properties / app_id / descriptionAdded value: +"Optional eBay API App ID. If omitted, uses server environment variable." - added
Input schema / properties / client_secret / descriptionAdded value: +"Optional eBay API Client Secret. If omitted, uses server environment variable."
- Changed
soul_speak5 fields changed- added
Input schema / properties / soul_agreeableness / descriptionAdded value: +"Big Five Agreeableness score (0-100) affecting pitch softness." - added
Input schema / properties / soul_conscientiousness / descriptionAdded value: +"Big Five Conscientiousness score (0-100) affecting cadence." - added
Input schema / properties / soul_extraversion / descriptionAdded value: +"Big Five Extraversion score (0-100) affecting volume and energy." - added
Input schema / properties / soul_neuroticism / descriptionAdded value: +"Big Five Neuroticism score (0-100) affecting pitch variation and speed." - added
Input schema / properties / soul_openness / descriptionAdded value: +"Big Five Openness score (0-100) affecting voice modulation."
36 tool updates
v1.0.0- First observed
create_banner - First observed
create_memory_relation - First observed
detect_emotion - First observed
execute_code - First observed
execute_shell - First observed
generate_3d_object - First observed
generate_meme - First observed
get_memory_subgraph - First observed
get_rag_context - First observed
get_skill - First observed
get_voice_preset - First observed
grade_tcg_card - First observed
image_to_3d - First observed
index_soul_workspace - First observed
invoke_council - First observed
list_skills - First observed
memory_recall - First observed
memory_save - First observed
produce_video - First observed
purchase_undesirables_license_key - First observed
query_memory_graph - First observed
query_ollama - First observed
remove_background - First observed
run_security_audit - First observed
scan_media_file - First observed
search_ebay_market - First observed
search_soul_memory - First observed
self_reflect - First observed
soul_listen - First observed
soul_speak - First observed
update_memory - First observed
upsert_memory_node - First observed
verify_soul_initialization - First observed
video_production_beat_sync - First observed
viral_clip_extractor - First observed
web_search
TDQS
Scored across 22 tools
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.
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.
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.
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
Related MCP Connectors
Official MCP server for Agentwork — delegate tasks to AI agents with human-in-the-loop
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
MCP server for building and testing AI agents with multi-model experimentation and insights.
Research-only MCP server: your AI as a quant research desk. 90 tools, no trades, no brokers.
Related MCP Servers
- AlicenseBqualityDmaintenanceDynamic MCP server — 30+ tools across fact verification, agent memory, Indian NLP, contract risk, security threat modelling, sales call intelligence and more. x402/USDC micropayments on Base.335 npmMIT
- AlicenseAqualityBmaintenanceOn-chain TCG price oracle for the LitecoinVM ecosystem. 6 tools: search 433K+ trading cards, 60-day price history, Merkle proof verification on LiteForge (Chain 4441), Monte Carlo simulation, and AI card grading via Qwen 2.5 VL.7Business Source 1.1
- FlicenseAqualityDmaintenanceLocal multimodal MCP server for vision, document, audio, video, and GUI automation, all processed locally on Apple Silicon for privacy and security.9-
- AlicenseNot gradedqualityCmaintenanceLocal MCP server that plans, generates, and assembles production assets (images, audio, video) through multi-agent personas and official APIs, with free-tier budget guard.MIT