Scryfall MCP Server
The Scryfall MCP Server integrates with the Scryfall API to provide comprehensive Magic: The Gathering card data and functionality to AI assistants like Claude.
Core Search & Lookup
Search cards using Scryfall's powerful search syntax with pagination, sorting, and filtering
Get detailed card information by name, set code, or Scryfall ID with image support
Retrieve current card prices in various currencies with format context
Find random cards with optional filters for discovery
Search Magic sets with filtering by type, release date, and name
Access complete bulk card database with daily updates and set metadata
Natural Language & Query Building
Convert natural language requests into optimized Scryfall queries with explanations and alternatives
Build budget-friendly searches with price constraints and optimization strategies
Generate format-specific queries for competitive play
Lightweight query syntax validation with helpful error messages
Deck Building & Analysis
Analyze deck composition including mana curve, card types, and balance recommendations
Suggest optimal mana bases based on color requirements, budget, and strategy
Find synergistic cards for specific themes, archetypes, or commanders
Validate Brawl/Commander legality for format compliance
Generate comprehensive card analyses including competitive viability and meta positioning
Create deck building guides centered around specific cards
Competitive & Budget Tools
Find format staples and meta cards by role, tier, and price range
Discover budget alternatives and upgrades for expensive cards
Search comprehensive rules for specific interactions and clarifications
Batch analyze multiple cards for legality, prices, and synergies
Performance & Reliability
Intelligent caching reducing API calls by >70% with configurable TTL
Rate limiting compliance with automatic retries and exponential backoff
Graceful error handling and circuit breaker functionality
Performance monitoring, cache statistics, and health checks
Structured logging for debugging and monitoring
Claude Desktop integration for seamless AI assistant usage
Utilizes environment configuration through .env files for server customization.
Hosts the server repository for cloning and contributing through GitHub's platform.
Provides specific configuration instructions for Claude Desktop integration on macOS systems.
Integrates with the Scryfall API to provide comprehensive Magic: The Gathering card information, search capabilities, price data, set information, and deck building assistance.
Runs as a Node.js application, with specific version requirements (Node.js 18+) for server operation.
Uses npm for package management, dependency installation, and running server commands.
Implements development guidelines following TypeScript best practices.
Supports Yarn as an alternative package manager for dependency installation.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Scryfall MCP Servershow me budget red creatures for commander under $5"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Scryfall MCP Server
Scryfall-backed MCP server for Magic: The Gathering search, rules lookup, pricing, set discovery, and deckbuilding workflows.
The project currently supports:
stdioas the primary transport for local MCP clientslocal-first Streamable HTTP via
src/http.ts15 MCP tools, 3 resources, and 2 prompts
What It Exposes
Tools
search_cards: Run Scryfall card searches with paging, sorting, and optional price filtering.get_card: Fetch one card by name, set/collector number, or Scryfall ID.get_card_prices: Return price data with optional format context and alternatives.random_card: Get a random card with optional filters.search_sets: Search and filter Magic sets.query_rules: Search the local comprehensive rules file with context.build_scryfall_query: Convert natural language into an explainable Scryfall query.search_format_staples: Find staples and role players for a format.search_alternatives: Find cheaper, upgraded, or similar cards.find_synergistic_cards: Find synergy pieces for a card, theme, or archetype.batch_card_analysis: Analyze multiple cards for legality, prices, synergy, or composition.validate_brawl_commander: Check Brawl and Standard Brawl commander legality.analyze_deck_composition: Evaluate deck lists for curve, colors, and structural issues.suggest_mana_base: Recommend land counts and fixing packages from color requirements.show_card_search: Render a ChatGPT Apps widget for visual Scryfall card search results.
Resources
card-database://bulk: Cached Oracle bulk snapshot.set-database://all: Cached set list snapshot.ui://widget/card-search.html: ChatGPT Apps widget template forshow_card_search.
Prompts
analyze_cardbuild_deck
Related MCP server: MTG-MCP
Transports
STDIO
Recommended for Claude Desktop, Codex, MCP Inspector, and most local MCP clients.
npm run devnpm startStreamable HTTP
Available as a separate entrypoint for local or explicitly controlled environments.
npm run dev:httpnpm run start:httpFor local MCP testing:
npm run dev:http:local
npm run smoke:httpThe smoke test checks /health, performs MCP initialize, sends notifications/initialized, and verifies tools/list.
It also makes representative validate_brawl_commander and search_cards tool calls so the local HTTP endpoint is checked beyond discovery.
Current HTTP behavior:
binds to
127.0.0.1by defaultserves
POST|GET|DELETEon/mcpserves
GET /healthrejects non-loopback
Originheaders by default unlessHTTP_ALLOWED_ORIGINSis set
The HTTP entrypoint is useful today, but it is still documented conservatively. It is not presented here as a public-hosting story.
ChatGPT App Development
The HTTP MCP endpoint can be connected to ChatGPT Developer Mode as a local app prototype. Start the server on loopback:
npm run dev:http:localExpose that local endpoint with an HTTPS tunnel:
ngrok http 3000Then connect the tunneled https://.../mcp URL in ChatGPT Developer Mode. Refresh the app after changing tool descriptors, widget resources, or metadata so ChatGPT reloads the current MCP surface.
The current ChatGPT-facing widget is show_card_search, which returns concise structuredContent for the model and renders ui://widget/card-search.html in ChatGPT. The widget is read-only against Scryfall, uses Scryfall image URLs, and keeps its CSP resource allowlist limited to https://cards.scryfall.io.
Setup
Prerequisites
Node.js
^20.19.0,^22.13.0, or>=24.0.0npm
Install
git clone https://github.com/bmurdock/scryfall-mcp.git
cd scryfall-mcp
npm install
cp .env.example .envThe documented npm run dev*, npm start, and npm run inspector commands preload .env. Explicit process environment variables take precedence over values in that file. MCP clients that launch dist/index.js directly should provide overrides through their own env configuration.
Validate
npm run lint
npm run type-check
npm test
npm run test:coverageBuild
npm run buildCommon Commands
npm run dev
npm run dev:http
npm start
npm run start:http
npm test
npm run test:watch
npm run test:ui
npm run test:coverage
npm run lint
npm run lint:fix
npm run type-check
npm run inspectorConfiguration
See .env.example for the canonical values. The main variables in active use are:
SCRYFALL_USER_AGENTRATE_LIMIT_MSRATE_LIMIT_QUEUE_MAXSCRYFALL_TIMEOUT_MSCACHE_MAX_SIZECACHE_MAX_MEMORY_MBLOG_LEVELNODE_ENVHEALTHCHECK_DEEPHTTP_HOSTHTTP_PORTHTTP_MCP_PATHHTTP_HEALTH_PATHHTTP_MAX_BODY_BYTESHTTP_SESSION_IDLE_MSHTTP_SESSION_CLEANUP_INTERVAL_MSHTTP_ALLOWED_ORIGINS
Operational notes:
Scryfall API calls are globally serialized by the shared rate limiter. Batch tools may schedule multiple local lookups, but upstream Scryfall request completion remains one-at-a-time by design.
The default pacing is 100 ms for general API endpoints and at least 500 ms for Scryfall's 2/sec card endpoints:
/cards/search,/cards/named,/cards/random, and/cards/collection.HTTP 429 responses are not retried automatically. The server records Scryfall's throttle window and delays the next request start so callers can decide whether to retry.
CACHE_MAX_MEMORY_MBcontrols whether large in-memory snapshots, includingcard-database://bulk, can be retained. Bulk resource rebuilds stream to a temp file first; oversized snapshots remain on disk for warm reads instead of being retained in the cache. Each MCP resource response still materializes the complete serialized bulk payload required by the resource protocol, so callers should allow memory proportional to that response size.Set snapshots are refreshed weekly. A stale snapshot may be retained for up to four weeks, subject to cache capacity, and served when a scheduled refresh fails; failed scheduled refreshes are retried after five minutes.
Card detail output includes Scryfall source links and artist attribution when available. Consumers that render Scryfall image URLs should preserve copyright, artist, and source context and should not crop, distort, recolor, watermark, or imply ownership of card images.
Deck-list analysis resolves card names exactly first, then falls back to fuzzy lookup for exact misses and reports any fuzzy resolutions in the response.
Deck-scale tools may return partial analysis or an explicit retry-after message when Scryfall throttles the underlying card lookups.
Streamable HTTP sessions expire after
HTTP_SESSION_IDLE_MSand are checked byHTTP_SESSION_CLEANUP_INTERVAL_MS.
Example local HTTP startup:
HTTP_HOST=127.0.0.1 HTTP_PORT=3000 npm run start:httpExample Tool Calls
build_scryfall_query
{
"natural_query": "blue counterspells under $20 for modern",
"optimize_for": "precision"
}search_cards
{
"query": "c:r t:instant mv=1",
"limit": 10,
"order": "name"
}search_sets
{
"type": "expansion",
"released_after": "2020-01-01"
}find_synergistic_cards
{
"focus_card": "Obeka, Splitter of Seconds",
"synergy_type": "theme",
"format": "commander",
"color_identity": "UBR",
"limit": 12
}For commander-like workflows, pass color_identity when the focus is a theme rather than a resolvable card. When the focus resolves to a card, the tool infers that card's color identity and filters final results by requested legality, Arena availability, and color identity.
analyze_deck_composition
{
"deck_list": "4 Lightning Bolt\n4 Monastery Swiftspear\n20 Mountain",
"format": "modern",
"strategy": "aggro"
}Claude Desktop Integration
Add the built stdio entrypoint to your Claude Desktop configuration.
macOS path: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows path: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"scryfall": {
"command": "node",
"args": ["/absolute/path/to/scryfall-mcp/dist/index.js"]
}
}
}Operational Notes
Rate limiting is enforced in-process with a 100 ms default minimum interval between general Scryfall API requests and a 500 ms minimum for Scryfall's 2/sec card endpoints.
Search responses, card details, prices, sets, and bulk snapshots are cached with bounded in-memory limits.
The bulk card resource streams rebuilds through disk and stores a pre-serialized snapshot to keep repeated reads cheap. Cache retention is bounded, but producing a bulk resource response still requires the full serialized response text in process memory.
Set filtering is derived from one canonical cached
/setsdataset to avoid incorrect filtered cache reuse.Health checks are available through
ScryfallMCPServer.healthCheck()and the HTTP/healthendpoint.If an MCP connector reports a JSON-RPC/SSE deserialization error, compare it against the raw HTTP smoke path:
npm run dev:http:local
npm run smoke:httpIf the smoke command succeeds, capture the connector error text and the smoke output together; that separates local endpoint framing from connector-specific parsing.
Documentation Map
Current source-of-truth docs:
License
MIT
Available Tools
14 toolsanalyze_deck_compositionC
Analyze deck composition, mana curve, card types, and provide balance recommendations
| Name | Required | Description | Default |
|---|---|---|---|
| commander | No | Commander card name (for Commander/Brawl formats) | |
| deck_list | Yes | List of card names in the deck, one per line or comma-separated | |
| format | No | Format to analyze for (affects recommendations) | |
| strategy | No | Deck strategy archetype | unknown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions analysis and recommendations but doesn't disclose behavioral traits like whether this is a read-only operation, computational requirements, rate limits, or what the output format looks like. For a tool with 4 parameters and no annotations, this is a significant gap in 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 a single, efficient sentence that front-loads the core functionality. Every phrase ('analyze deck composition, mana curve, card types, and provide balance recommendations') earns its place by specifying what the tool does without unnecessary elaboration.
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 no annotations, no output schema, and 4 parameters, the description is incomplete. It doesn't explain what the analysis output includes, how recommendations are structured, or any behavioral constraints. For a complex analysis tool with multiple inputs, this leaves significant gaps for an AI agent to understand tool behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds marginal value by implying that 'format' affects recommendations and 'strategy' relates to archetype, but doesn't provide additional semantics beyond what's in the schema descriptions. Baseline 3 is appropriate when schema does the heavy lifting.
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 analyzes deck composition, mana curve, card types, and provides balance recommendations, which is a specific verb+resource combination. However, it doesn't explicitly distinguish this from sibling tools like 'validate_brawl_commander' or 'suggest_mana_base' that might overlap in deck analysis functions.
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 on when to use this tool versus alternatives like 'batch_card_analysis' or 'search_format_staples'. The description implies usage for deck analysis but doesn't specify prerequisites, exclusions, or comparative contexts with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_card_analysisC
Analyze multiple cards for legality, prices, synergies, or deck composition
| Name | Required | Description | Default |
|---|---|---|---|
| analysis_type | Yes | Type of analysis to perform | |
| card_list | Yes | List of card names to analyze | |
| currency | No | Currency for price analysis | usd |
| format | No | Format for legality analysis | |
| group_by | No | How to group analysis results | |
| include_suggestions | No | Include improvement suggestions |
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 mentions analysis types but lacks details on permissions, rate limits, response format, or whether it's read-only or mutative. This is inadequate for a tool with 6 parameters and no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose without unnecessary words. Every part contributes directly to understanding the tool's function, making it appropriately sized and well-structured.
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 (6 parameters, no annotations, no output schema), the description is insufficient. It doesn't cover behavioral traits, output expectations, or usage context, leaving significant gaps for an AI agent to invoke it correctly without additional information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds minimal value by listing analysis types (e.g., 'legality, prices') but doesn't provide additional semantics beyond what the schema's enum values and descriptions offer.
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: analyzing multiple cards for specific aspects (legality, prices, synergies, deck composition). It specifies the verb 'analyze' and resource 'multiple cards,' but doesn't explicitly differentiate from sibling tools like 'analyze_deck_composition' or 'get_card_prices,' which reduces clarity.
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 explicit guidance on when to use this tool versus alternatives is provided. The description lists analysis types but doesn't indicate scenarios for choosing this over siblings like 'analyze_deck_composition' or 'get_card_prices,' leaving usage context implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_scryfall_queryB
Convert natural language requests into optimized Scryfall search queries with explanations and alternatives
| Name | Required | Description | Default |
|---|---|---|---|
| explain_mapping | No | Whether to include detailed explanation of natural language to Scryfall mapping | |
| format | No | Magic format to restrict search to (optional) | |
| include_alternatives | No | Whether to include alternative query suggestions | |
| max_results | No | Target number of results for optimization | |
| natural_query | Yes | Natural language description of what you want to find (e.g., "red creatures under $5 for aggressive decks", "blue counterspells in modern") | |
| optimize_for | No | Search optimization strategy: precision (fewer, more relevant results), recall (broader search), discovery (interesting cards), budget (cost-effective) | precision |
| price_budget | No | Price constraints for the search | |
| test_query | No | Whether to test the generated query and optimize based on results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While it mentions the tool generates 'optimized Scryfall search queries with explanations and alternatives,' it doesn't describe what 'optimized' means operationally, whether it makes external API calls to Scryfall, what rate limits might apply, or what the output format looks like. For a complex 8-parameter tool with no annotation coverage, this is insufficient.
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 a single, efficient sentence that clearly states the tool's purpose and key features. Every word earns its place - 'convert,' 'natural language requests,' 'optimized Scryfall search queries,' 'explanations,' and 'alternatives' all contribute essential information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with 8 parameters, no annotations, and no output schema, the description is inadequate. It doesn't explain what the tool actually returns (just that it generates queries 'with explanations and alternatives'), doesn't address behavioral aspects like whether it makes live API calls, and provides no guidance on error conditions or limitations. The 100% schema coverage helps with parameters but doesn't compensate for missing behavioral and output context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 8 parameters thoroughly. The description adds no specific parameter information beyond what's in the schema. The baseline score of 3 is appropriate when the schema does all the parameter documentation work.
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 specific action ('convert natural language requests into optimized Scryfall search queries') and the resource involved (Scryfall queries). It distinguishes from siblings by focusing on query generation rather than direct card searching (like search_cards) or analysis (like analyze_deck_composition). The inclusion of 'with explanations and alternatives' adds valuable differentiation.
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 implies usage context (natural language to query conversion) but doesn't explicitly state when to use this tool versus alternatives like search_cards or search_alternatives. It suggests this is for users who want to translate human descriptions into formal queries, but lacks explicit guidance on when this approach is preferred over direct querying.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_synergistic_cardsC
Find cards that synergize with a specific card, theme, or archetype
| Name | Required | Description | Default |
|---|---|---|---|
| arena_only | No | Only return cards available in Arena | |
| exclude_colors | No | Colors to exclude from results (e.g., "rb" to exclude red and black) | |
| focus_card | Yes | Card name or theme to build around | |
| format | No | Format legality requirement | |
| include_lands | No | Include synergistic lands | |
| limit | No | Number of synergistic cards to return | |
| max_cmc | No | Maximum mana value | |
| synergy_type | No | Type of synergy to discover |
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 of behavioral disclosure. It states the tool finds synergistic cards but doesn't describe how synergy is determined, what the output format looks like, whether it's a read-only operation, or any limitations like rate limits or permissions. This leaves significant gaps in understanding the tool's behavior for an AI agent.
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 a single, clear sentence that efficiently conveys the core purpose without any wasted words. It is appropriately sized and front-loaded, making it easy for an AI agent to quickly grasp the tool's intent.
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 (8 parameters, no annotations, no output schema), the description is incomplete. It doesn't address behavioral aspects like how synergy is calculated, output format, or usage context. While the schema covers parameters well, the lack of annotations and output schema means the description should do more to guide the agent, but it falls short.
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 100% description coverage, so the schema already documents all parameters thoroughly. The description adds no additional meaning beyond the schema, as it doesn't explain parameter interactions or provide examples. However, with high schema coverage, the baseline score is 3, as the schema compensates for the lack of param info in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Find cards that synergize with a specific card, theme, or archetype.' It uses a specific verb ('find') and resource ('cards'), and distinguishes itself from siblings like 'search_cards' or 'search_alternatives' by focusing on synergy. However, it doesn't explicitly differentiate from all siblings, such as 'analyze_deck_composition' or 'suggest_mana_base,' which might also involve synergy in broader contexts.
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 no explicit guidance on when to use this tool versus alternatives. It implies usage for synergy discovery but doesn't specify scenarios, prerequisites, or exclusions. For example, it doesn't clarify if this is for deck-building, card evaluation, or other contexts, nor does it mention when to choose 'search_alternatives' or 'analyze_deck_composition' instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cardB
Get detailed information about a specific Magic: The Gathering card by name, set code+number, or Scryfall ID
| Name | Required | Description | Default |
|---|---|---|---|
| face | No | Which face to show for double-faced cards | |
| identifier | Yes | Card name, set code+collector number (e.g., "dom/123"), or Scryfall UUID | |
| include_image | No | Include image URL in response | |
| lang | No | 2-letter language code (default: en) | en |
| set | No | 3-letter set code for disambiguation when using card name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states what the tool does, not how it behaves. It lacks disclosure about response format, error handling, rate limits, authentication needs, or whether it's a read-only operation. For a tool with 5 parameters and no annotation coverage, this is a significant gap.
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 a single, efficient sentence that immediately conveys the core functionality without unnecessary words. It's front-loaded with the primary purpose and includes essential details about identification methods, making every word earn 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?
For a tool with 5 parameters, no annotations, and no output schema, the description is inadequate. It doesn't explain what 'detailed information' includes, how results are structured, error conditions, or behavioral constraints. Given the complexity and lack of structured data, the description should provide more complete operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, providing detailed documentation for all 5 parameters. The description adds minimal value beyond the schema by mentioning the three identification methods, which partially maps to the 'identifier' parameter. However, it doesn't explain parameter interactions or provide additional context beyond what's already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get detailed information') and resource ('a specific Magic: The Gathering card'), specifying three distinct identification methods (name, set code+number, or Scryfall ID). This distinguishes it from siblings like search_cards (which returns multiple results) or get_card_prices (which focuses on pricing data).
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 implies usage by stating it retrieves information about 'a specific' card, suggesting it's for single-card lookup rather than batch operations. However, it doesn't explicitly contrast with alternatives like search_cards (for multiple cards) or batch_card_analysis, nor does it mention when not to use it (e.g., for price data).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_card_pricesB
Get current price information for a Magic: The Gathering card by name, set/number, or Scryfall ID
| Name | Required | Description | Default |
|---|---|---|---|
| card_identifier | Yes | Card name, set/number, or Scryfall ID | |
| currency | No | Currency type for prices | usd |
| format_context | No | Show price relevance for specific format | |
| include_alternatives | No | Include budget alternatives and upgrades | |
| include_history | No | Include price trend data (not implemented in Scryfall API) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the basic function without disclosing behavioral traits like rate limits, authentication requirements, error handling, or response format. It mentions 'price information' but doesn't specify what data points are returned or how results are structured.
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 a single, efficient sentence that front-loads the core purpose without unnecessary words. Every element ('Get current price information', 'Magic: The Gathering card', identification methods) earns its place by contributing essential 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?
For a price lookup tool with 5 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain what 'price information' includes (e.g., market price, foil price, vendor prices), nor does it address behavioral aspects like data freshness, limitations, or error cases that would help an agent 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?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal value by mentioning identification methods that map to 'card_identifier', but doesn't provide additional context beyond what's in the schema. Baseline 3 is appropriate when schema does the heavy lifting.
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 specific action ('Get current price information') and resource ('for a Magic: The Gathering card'), with explicit mention of three distinct identification methods (name, set/number, or Scryfall ID). This distinguishes it from siblings like 'get_card' (general card data) or 'search_cards' (search functionality).
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 no guidance on when to use this tool versus alternatives like 'search_alternatives' or 'search_format_staples', nor does it mention prerequisites or context for usage. It simply states what the tool does without indicating appropriate scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_rulesC
Search Magic: The Gathering comprehensive rules for specific interactions and rule clarifications
| Name | Required | Description | Default |
|---|---|---|---|
| context_lines | No | Lines of context around matches | |
| exact_match | No | Require exact phrase matching | |
| query | Yes | Search term or rules question | |
| section | No | Specific rule section (e.g., "7" for Additional Rules) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states it searches for rules. It doesn't disclose behavioral traits like whether it returns full rule text or summaries, how results are ranked, if there are rate limits, or what happens with ambiguous queries.
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 a single, efficient sentence that clearly states the purpose without unnecessary words. It's appropriately sized and front-loaded with the core functionality.
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 search tool with 4 parameters and no output schema or annotations, the description is insufficient. It doesn't explain what the search returns, how results are formatted, or provide context about the comprehensive rules database being searched.
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 description coverage is 100%, so all parameters are documented in the schema. The description adds no additional meaning about parameters beyond what the schema provides, maintaining the baseline score.
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 searches Magic: The Gathering comprehensive rules for interactions and clarifications, which is a specific verb+resource combination. However, it doesn't differentiate from sibling tools like 'search_cards' or 'search_sets' which also search but different resources.
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 no guidance on when to use this tool versus alternatives. It doesn't mention when this tool is appropriate versus other search tools in the sibling list or what types of rules questions it handles best.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
random_cardB
Get a random Magic: The Gathering card, optionally filtered by format or search criteria
| Name | Required | Description | Default |
|---|---|---|---|
| archetype | No | Deck archetype preference | |
| exclude_reprints | No | Exclude heavily reprinted cards | |
| format | No | Magic format to filter by legality | |
| price_range | No | Price constraints for random selection | |
| query | No | Optional Scryfall search query to filter random selection (e.g., "c:red", "type:creature") | |
| rarity_preference | No | Preferred rarity level | |
| similar_to | No | Find cards similar to this card |
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 mentions the tool 'Get[s] a random... card' with filters, but does not disclose behavioral traits such as rate limits, authentication needs, whether it returns a single card or multiple, error handling, or data sources (e.g., Scryfall). For a tool with no annotations, this leaves significant gaps in understanding its operation.
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 a single, efficient sentence that is front-loaded with the core purpose ('Get a random Magic: The Gathering card') and adds necessary qualification ('optionally filtered by format or search criteria'). There is zero waste, and every word 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?
Given the complexity (7 parameters, no annotations, no output schema), the description is insufficient. It does not explain what the tool returns (e.g., card details, image, pricing), how randomness is implemented, or any limitations. For a tool with rich input options but no structured output or behavioral annotations, more context is needed to guide effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 7 parameters thoroughly. The description adds minimal value beyond the schema by mentioning 'filtered by format or search criteria', which loosely maps to 'format' and 'query' parameters but does not provide additional syntax or meaning. Baseline 3 is appropriate as the schema does the heavy lifting.
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 ('Get') and resource ('a random Magic: The Gathering card'), and specifies the optional filtering capabilities ('optionally filtered by format or search criteria'). It distinguishes itself from siblings like 'get_card' (likely for specific cards) and 'search_cards' (likely for broader searches) by focusing on random selection with filters.
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 implies usage for obtaining random cards with optional filters, but does not explicitly state when to use this tool versus alternatives like 'search_cards' or 'get_card'. It provides some context ('optionally filtered') but lacks explicit guidance on exclusions or comparisons with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_alternativesB
Find budget alternatives, upgrades, or functionally similar cards
| Name | Required | Description | Default |
|---|---|---|---|
| direction | Yes | Type of alternative to find | |
| format | No | Format legality requirement | |
| limit | No | Number of alternatives to return | |
| max_price | No | Maximum price constraint | |
| min_price | No | Minimum price constraint | |
| preserve_function | No | Maintain similar functionality | |
| target_card | Yes | Card to find alternatives for |
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 of behavioral disclosure. It mentions the tool finds alternatives based on budget, upgrades, or similarity, but does not describe key behaviors like data sources, rate limits, authentication needs, or what happens if no matches are found. For a tool with 7 parameters and no annotations, this is a significant gap.
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 a single, efficient sentence: 'Find budget alternatives, upgrades, or functionally similar cards.' It is front-loaded with the core purpose and contains no wasted words, making it highly concise and well-structured.
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 (7 parameters, no annotations, no output schema), the description is minimally adequate. It states the purpose but lacks behavioral context, usage guidelines, and output details. The schema covers parameters well, but without annotations or output schema, the description should do more to compensate, resulting in a moderate 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?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds no additional meaning beyond what the schema provides, such as explaining how 'preserve_function' interacts with 'direction' or detailing price constraints. Baseline 3 is appropriate when the schema does the heavy lifting.
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: 'Find budget alternatives, upgrades, or functionally similar cards.' It specifies the verb ('Find') and resource ('cards'), but does not differentiate from sibling tools like 'search_cards' or 'find_synergistic_cards,' which might have overlapping purposes. The description is specific but lacks sibling distinction.
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 no guidance on when to use this tool versus alternatives. It does not mention sibling tools or contexts where other tools might be more appropriate, such as 'search_cards' for general searches or 'find_synergistic_cards' for combo-related queries. Usage is implied by the purpose but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_cardsA
Search for Magic: The Gathering cards using Scryfall search syntax. Supports complex queries with operators like color:, type:, set:, etc.
| Name | Required | Description | Default |
|---|---|---|---|
| arena_only | No | Only return cards available in Arena | |
| direction | No | Sort direction | auto |
| format | No | Response format - text for human-readable, json for structured data | text |
| include_extras | No | Include tokens, emblems, and other extras in search results | |
| include_multilingual | No | Include cards in all languages | |
| include_variations | No | Include rare card variants | |
| limit | No | Number of cards to return (1-175) | |
| order | No | Sort order for results | |
| page | No | Page number for pagination (starts at 1) | |
| price_range | No | Price filtering constraints | |
| query | Yes | Scryfall search query using their syntax (e.g., "lightning bolt", "c:red type:instant", "set:dom") | |
| unique | No | Strategy for omitting similar cards | cards |
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. While it mentions the search syntax and supports complex queries, it doesn't describe important behavioral aspects like rate limits, authentication requirements, response format details, pagination behavior beyond the 'page' parameter, or error handling. The description is insufficient for a tool with 12 parameters and no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly concise with two sentences that each earn their place. The first sentence establishes the core purpose, and the second adds valuable context about query capabilities. No wasted words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (12 parameters, nested objects, no output schema, and no annotations), the description is incomplete. It doesn't explain what the tool returns, how results are structured, error conditions, rate limits, or authentication requirements. For a search tool with this level of complexity and no structured behavioral annotations, the description should provide more complete context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal value beyond the schema by mentioning 'Scryfall search syntax' and 'complex queries with operators like color:, type:, set:, etc.', but doesn't provide additional parameter semantics beyond what's already in the structured schema. Baseline 3 is appropriate when schema does the heavy lifting.
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 with specific verb ('Search for') and resource ('Magic: The Gathering cards'), and distinguishes it from siblings by specifying the search method ('using Scryfall search syntax'). It explicitly mentions what makes this tool unique among the 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 provides clear context about when to use this tool ('Search for Magic: The Gathering cards using Scryfall search syntax'), but doesn't explicitly mention when not to use it or name specific alternatives. It implies usage for complex queries but doesn't compare with siblings like 'get_card' or 'search_alternatives'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_format_staplesC
Find format staples, meta cards, and role-specific cards for competitive play
| Name | Required | Description | Default |
|---|---|---|---|
| color_identity | No | Color identity filter (e.g., "wr", "grixis", "colorless") | |
| format | Yes | Magic format to analyze | |
| limit | No | Number of results to return | |
| max_price | No | Maximum price in USD | |
| role | No | Card role in deck archetypes | |
| tier | No | Meta tier level | competitive |
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 of behavioral disclosure. It mentions 'find' but doesn't clarify if this is a read-only operation, what the output format looks like, or any limitations (e.g., rate limits, data freshness). For a search tool with 6 parameters and no annotations, this lack of behavioral context is a significant gap.
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 a single, efficient sentence that front-loads the core purpose without unnecessary words. It directly states what the tool does and the context, earning its place with zero waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (6 parameters, no output schema, no annotations), the description is incomplete. It lacks details on behavioral traits, output format, and usage guidelines. While the schema covers parameters well, the description doesn't compensate for missing annotations or output information, making it inadequate for full agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 6 parameters with descriptions and enums. The description adds no additional parameter semantics beyond implying a focus on competitive play, which aligns with the 'tier' parameter. Baseline 3 is appropriate as the schema does the heavy lifting.
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: 'Find format staples, meta cards, and role-specific cards for competitive play.' It specifies the verb 'find' and the resources (staples, meta cards, role-specific cards), and mentions the context (competitive play). However, it doesn't explicitly differentiate from sibling tools like 'search_cards' or 'search_alternatives' beyond the competitive focus.
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 minimal guidance on when to use this tool. It implies usage for competitive play analysis but doesn't specify when to choose it over alternatives like 'search_cards' or 'find_synergistic_cards.' No exclusions or prerequisites are mentioned, leaving the agent with little context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_setsC
Search for Magic: The Gathering sets with optional filtering by name, type, and release dates
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Set name or code to search for (partial matches supported) | |
| released_after | No | ISO date string - only show sets released after this date (YYYY-MM-DD) | |
| released_before | No | ISO date string - only show sets released before this date (YYYY-MM-DD) | |
| type | No | Filter by set type. Common types: core (yearly core sets), expansion (rotational sets), masters (reprint sets), commander (preconstructed Commander decks), promo (promotional cards), token (tokens and emblems) |
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 mentions 'search' and 'optional filtering' but doesn't describe what the search returns (e.g., list of sets with details), pagination behavior, rate limits, authentication needs, or error conditions. For a search tool with zero annotation coverage, this leaves significant gaps.
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 a single, efficient sentence that front-loads the core purpose ('search for Magic: The Gathering sets') and then specifies the optional filtering. There's no wasted language or redundancy, making it appropriately 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?
Given no annotations and no output schema, the description is incomplete for a search tool. It doesn't explain what the tool returns (e.g., set names, codes, release dates), how results are structured, or any behavioral aspects like pagination or errors. This leaves the agent with insufficient context to use the tool effectively.
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 lists the optional filtering parameters (name, type, release dates), which aligns with the input schema. Since schema description coverage is 100%, the schema already documents all parameters thoroughly. The description adds minimal value beyond what's in the schema, meeting the baseline for high 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 verb ('search for') and resource ('Magic: The Gathering sets'), and specifies the optional filtering capabilities. However, it doesn't explicitly differentiate from sibling tools like 'search_cards' or 'search_format_staples' which might also search MTG content, so it doesn't reach the highest score.
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 mentions optional filtering parameters but provides no guidance on when to use this tool versus alternatives like 'search_cards' or 'search_format_staples'. There's no context about use cases, prerequisites, or comparisons with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_mana_baseC
Suggest optimal mana base composition and land recommendations for a deck
| Name | Required | Description | Default |
|---|---|---|---|
| average_cmc | No | Average converted mana cost of non-land cards | |
| budget | No | Budget constraint for land recommendations | moderate |
| color_intensity | No | Color intensity requirements (1-10 scale) | |
| color_requirements | Yes | Color requirements (e.g., "WU", "RBG", "WUBRG") | |
| deck_size | No | Total deck size | |
| format | No | Format to suggest lands for | |
| special_requirements | No | Special mana base requirements | |
| strategy | No | Deck strategy archetype | midrange |
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 of behavioral disclosure. It states the tool 'suggests' recommendations, implying a read-only or advisory function, but doesn't clarify if it's a simulation, calculation, or data lookup. It lacks details on performance, rate limits, authentication needs, or what the output entails (e.g., list of lands, percentages). For a tool with 8 parameters and no annotations, this is insufficient.
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 a single, efficient sentence: 'Suggest optimal mana base composition and land recommendations for a deck.' It is front-loaded with the core purpose, has zero redundant words, and appropriately sized for the tool's complexity. Every word earns its place, making it highly concise and well-structured.
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 (8 parameters, nested objects, no output schema, and no annotations), the description is incomplete. It doesn't address behavioral aspects, output format, or usage context. While the schema covers parameters well, the description fails to compensate for the lack of annotations and output schema, leaving gaps in understanding how the tool behaves and what results to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, meaning all parameters are documented in the input schema. The description adds no specific parameter details beyond implying it uses deck characteristics for suggestions. It doesn't explain how parameters like 'color_intensity' or 'special_requirements' influence the output. Since the schema handles the heavy lifting, the baseline score of 3 is appropriate, as the description provides minimal extra value.
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: 'suggest optimal mana base composition and land recommendations for a deck.' It specifies the verb ('suggest') and resource ('mana base composition and land recommendations'), making the function evident. However, it doesn't explicitly differentiate from sibling tools like 'analyze_deck_composition' or 'search_format_staples,' which might also relate to deck-building, so it doesn't reach the highest score.
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 no guidance on when to use this tool versus alternatives. It doesn't mention any prerequisites, exclusions, or specific contexts for usage. Given the sibling tools include 'analyze_deck_composition' and 'search_format_staples,' which could overlap in deck analysis, the lack of differentiation is a significant gap, leaving the agent to infer usage based on tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_brawl_commanderB
Validate if a card can be a legal commander in Brawl or Standard Brawl formats
| Name | Required | Description | Default |
|---|---|---|---|
| card_identifier | Yes | Card name, set code+collector number, or Scryfall ID to validate | |
| format | Yes | Brawl format to validate for (brawl = Historic Brawl, standardbrawl = Standard Brawl) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states what the tool does without disclosing behavioral traits. It doesn't mention error handling, response format, rate limits, or whether this is a read-only operation (though implied by 'validate'). For a tool with no annotations, this leaves significant behavioral gaps.
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?
Single sentence that efficiently communicates the core purpose with zero waste. Every word earns its place - 'validate', 'card', 'legal commander', and 'Brawl or Standard Brawl formats' are all essential 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?
For a validation tool with no annotations and no output schema, the description is incomplete. It doesn't explain what constitutes a 'legal commander', what the validation criteria are, what the response looks like, or error conditions. The description should provide more context given the lack of structured metadata.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters thoroughly. The description doesn't add any parameter semantics beyond what's in the schema - it doesn't explain validation logic, format differences, or provide examples. Baseline 3 is appropriate when schema does the heavy lifting.
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 specific action ('validate') and resource ('card') with precise context ('legal commander in Brawl or Standard Brawl formats'). It distinguishes from siblings like 'get_card' or 'search_cards' by focusing on format legality validation rather than retrieval or search.
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 implies usage when checking commander legality, but doesn't explicitly state when to use this tool versus alternatives like 'query_rules' or 'search_format_staples'. It provides basic context but lacks explicit guidance on prerequisites or comparisons with sibling tools.
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. Dates show when Glama detected each change.
14 tool updates
v1.0.0- First observed
analyze_deck_composition - First observed
batch_card_analysis - First observed
build_scryfall_query - First observed
find_synergistic_cards - First observed
get_card - First observed
get_card_prices - First observed
query_rules - First observed
random_card - First observed
search_alternatives - First observed
search_cards - First observed
search_format_staples - First observed
search_sets - First observed
suggest_mana_base - First observed
validate_brawl_commander
TDQS
Every tool has a clearly distinct purpose with no significant overlap. For example, get_card retrieves a single card, search_cards handles complex queries, and analyze_deck_composition focuses on deck analysis, making misselection unlikely.
All tool names follow a consistent verb_noun pattern using snake_case, such as get_card, search_cards, and analyze_deck_composition. This predictability aids in agent understanding and usage.
With 14 tools, the server is well-scoped for Magic: The Gathering card and deck management. Each tool serves a specific function, from card retrieval to deck analysis, without feeling excessive or insufficient.
The tool surface comprehensively covers the domain, including card search, price checks, deck analysis, rules queries, and format validation. There are no obvious gaps, supporting full agent workflows for MTG-related tasks.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
The Mercado Pago MCP Server implements the Model Context Protocol to provide AI agents and LLMs with access to Mercado Pago's APIs and tools within compatible development environments. It acts as an intermediary that translates Mercado Pago resources into executable functions (tools) that AI applications can invoke to perform actions and automate flows. The server simplifies integration, enables using documentation to implement or improve code, and optimizes operations through natural language interactions without manual implementations.
A Model Context Protocol server for Wix AI tools
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
Related MCP Servers
- AlicenseAqualityAmaintenanceMCP server for I Want My MTG that enables conversational search of Magic: The Gathering cards/sets and inventory management via API tools.60821MIT
- AlicenseNot gradedqualityCmaintenanceA comprehensive Model Context Protocol server that provides AI assistants with rich Magic: The Gathering information, including card data, comprehensive rules, EDHREC recommendations, combo interactions, and intelligent Commander deck generation.1MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for searching and retrieving Magic: The Gathering card information via the Scryfall API, with support for field presets, multiple output formats, and automatic rate limiting.45MIT
- AlicenseNot gradedqualityDmaintenanceMCP server that searches and retrieves Magic: The Gathering card data from the Scryfall API.45MIT
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/bmurdock/scryfall-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server