Skip to main content
Glama
bmurdock

Scryfall MCP Server

by bmurdock

Scryfall MCP Server

Scryfall-backed MCP server for Magic: The Gathering search, rules lookup, pricing, set discovery, and deckbuilding workflows.

The project currently supports:

  • stdio as the primary transport for local MCP clients

  • local-first Streamable HTTP via src/http.ts

  • 15 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 for show_card_search.

Prompts

  • analyze_card

  • build_deck

Related MCP server: MTG-MCP

Transports

STDIO

Recommended for Claude Desktop, Codex, MCP Inspector, and most local MCP clients.

npm run dev
npm start

Streamable HTTP

Available as a separate entrypoint for local or explicitly controlled environments.

npm run dev:http
npm run start:http

For local MCP testing:

npm run dev:http:local
npm run smoke:http

The 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.1 by default

  • serves POST|GET|DELETE on /mcp

  • serves GET /health

  • rejects non-loopback Origin headers by default unless HTTP_ALLOWED_ORIGINS is 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:local

Expose that local endpoint with an HTTPS tunnel:

ngrok http 3000

Then 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.0

  • npm

Install

git clone https://github.com/bmurdock/scryfall-mcp.git
cd scryfall-mcp
npm install
cp .env.example .env

The 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:coverage

Build

npm run build

Common 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 inspector

Configuration

See .env.example for the canonical values. The main variables in active use are:

  • SCRYFALL_USER_AGENT

  • RATE_LIMIT_MS

  • RATE_LIMIT_QUEUE_MAX

  • SCRYFALL_TIMEOUT_MS

  • CACHE_MAX_SIZE

  • CACHE_MAX_MEMORY_MB

  • LOG_LEVEL

  • NODE_ENV

  • HEALTHCHECK_DEEP

  • HTTP_HOST

  • HTTP_PORT

  • HTTP_MCP_PATH

  • HTTP_HEALTH_PATH

  • HTTP_MAX_BODY_BYTES

  • HTTP_SESSION_IDLE_MS

  • HTTP_SESSION_CLEANUP_INTERVAL_MS

  • HTTP_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_MB controls whether large in-memory snapshots, including card-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_MS and are checked by HTTP_SESSION_CLEANUP_INTERVAL_MS.

Example local HTTP startup:

HTTP_HOST=127.0.0.1 HTTP_PORT=3000 npm run start:http

Example 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 /sets dataset to avoid incorrect filtered cache reuse.

  • Health checks are available through ScryfallMCPServer.healthCheck() and the HTTP /health endpoint.

  • 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:http

If 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 tools
analyze_deck_compositionC

Analyze deck composition, mana curve, card types, and provide balance recommendations

ParametersJSON Schema
NameRequiredDescriptionDefault
commanderNoCommander card name (for Commander/Brawl formats)
deck_listYesList of card names in the deck, one per line or comma-separated
formatNoFormat to analyze for (affects recommendations)
strategyNoDeck strategy archetypeunknown

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It 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.

Conciseness4/5

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.

Completeness2/5

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

Given no annotations, no output schema, and 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus 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

ParametersJSON Schema
NameRequiredDescriptionDefault
analysis_typeYesType of analysis to perform
card_listYesList of card names to analyze
currencyNoCurrency for price analysisusd
formatNoFormat for legality analysis
group_byNoHow to group analysis results
include_suggestionsNoInclude improvement suggestions

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It 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.

Conciseness5/5

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.

Completeness2/5

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

Given the tool's complexity (6 parameters, no 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.

Parameters3/5

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.

Purpose4/5

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

The description clearly states the tool's 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.

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives 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

ParametersJSON Schema
NameRequiredDescriptionDefault
explain_mappingNoWhether to include detailed explanation of natural language to Scryfall mapping
formatNoMagic format to restrict search to (optional)
include_alternativesNoWhether to include alternative query suggestions
max_resultsNoTarget number of results for optimization
natural_queryYesNatural language description of what you want to find (e.g., "red creatures under $5 for aggressive decks", "blue counterspells in modern")
optimize_forNoSearch optimization strategy: precision (fewer, more relevant results), recall (broader search), discovery (interesting cards), budget (cost-effective)precision
price_budgetNoPrice constraints for the search
test_queryNoWhether to test the generated query and optimize based on results

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
arena_onlyNoOnly return cards available in Arena
exclude_colorsNoColors to exclude from results (e.g., "rb" to exclude red and black)
focus_cardYesCard name or theme to build around
formatNoFormat legality requirement
include_landsNoInclude synergistic lands
limitNoNumber of synergistic cards to return
max_cmcNoMaximum mana value
synergy_typeNoType of synergy to discover

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden 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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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

The description clearly states the tool's 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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
faceNoWhich face to show for double-faced cards
identifierYesCard name, set code+collector number (e.g., "dom/123"), or Scryfall UUID
include_imageNoInclude image URL in response
langNo2-letter language code (default: en)en
setNo3-letter set code for disambiguation when using card name

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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

For a tool with 5 parameters, no 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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
card_identifierYesCard name, set/number, or Scryfall ID
currencyNoCurrency type for pricesusd
format_contextNoShow price relevance for specific format
include_alternativesNoInclude budget alternatives and upgrades
include_historyNoInclude price trend data (not implemented in Scryfall API)

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives 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

ParametersJSON Schema
NameRequiredDescriptionDefault
context_linesNoLines of context around matches
exact_matchNoRequire exact phrase matching
queryYesSearch term or rules question
sectionNoSpecific rule section (e.g., "7" for Additional Rules)

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention 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

ParametersJSON Schema
NameRequiredDescriptionDefault
archetypeNoDeck archetype preference
exclude_reprintsNoExclude heavily reprinted cards
formatNoMagic format to filter by legality
price_rangeNoPrice constraints for random selection
queryNoOptional Scryfall search query to filter random selection (e.g., "c:red", "type:creature")
rarity_preferenceNoPreferred rarity level
similar_toNoFind cards similar to this card

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It 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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
directionYesType of alternative to find
formatNoFormat legality requirement
limitNoNumber of alternatives to return
max_priceNoMaximum price constraint
min_priceNoMinimum price constraint
preserve_functionNoMaintain similar functionality
target_cardYesCard to find alternatives for

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden 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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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

The description clearly states the tool's 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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
arena_onlyNoOnly return cards available in Arena
directionNoSort directionauto
formatNoResponse format - text for human-readable, json for structured datatext
include_extrasNoInclude tokens, emblems, and other extras in search results
include_multilingualNoInclude cards in all languages
include_variationsNoInclude rare card variants
limitNoNumber of cards to return (1-175)
orderNoSort order for results
pageNoPage number for pagination (starts at 1)
price_rangeNoPrice filtering constraints
queryYesScryfall search query using their syntax (e.g., "lightning bolt", "c:red type:instant", "set:dom")
uniqueNoStrategy for omitting similar cardscards

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. 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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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

The description clearly states the tool's purpose 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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
color_identityNoColor identity filter (e.g., "wr", "grixis", "colorless")
formatYesMagic format to analyze
limitNoNumber of results to return
max_priceNoMaximum price in USD
roleNoCard role in deck archetypes
tierNoMeta tier levelcompetitive

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden 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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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

The description clearly states the tool's 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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoSet name or code to search for (partial matches supported)
released_afterNoISO date string - only show sets released after this date (YYYY-MM-DD)
released_beforeNoISO date string - only show sets released before this date (YYYY-MM-DD)
typeNoFilter 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

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It 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.

Conciseness5/5

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.

Completeness2/5

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

Given no annotations and no output schema, the description 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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
average_cmcNoAverage converted mana cost of non-land cards
budgetNoBudget constraint for land recommendationsmoderate
color_intensityNoColor intensity requirements (1-10 scale)
color_requirementsYesColor requirements (e.g., "WU", "RBG", "WUBRG")
deck_sizeNoTotal deck size
formatNoFormat to suggest lands for
special_requirementsNoSpecial mana base requirements
strategyNoDeck strategy archetypemidrange

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden 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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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

The description clearly states the tool's 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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention 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

ParametersJSON Schema
NameRequiredDescriptionDefault
card_identifierYesCard name, set code+collector number, or Scryfall ID to validate
formatYesBrawl format to validate for (brawl = Historic Brawl, standardbrawl = Standard Brawl)

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

  1. 14 tool updatesv1.0.0
    • First observedanalyze_deck_composition
    • First observedbatch_card_analysis
    • First observedbuild_scryfall_query
    • First observedfind_synergistic_cards
    • First observedget_card
    • First observedget_card_prices
    • First observedquery_rules
    • First observedrandom_card
    • First observedsearch_alternatives
    • First observedsearch_cards
    • First observedsearch_format_staples
    • First observedsearch_sets
    • First observedsuggest_mana_base
    • First observedvalidate_brawl_commander

TDQS

A3.6/5.0
Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness5/5

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

ActivitySlowing
ResponsivenessResponsive

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

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    MCP server for I Want My MTG that enables conversational search of Magic: The Gathering cards/sets and inventory management via API tools.
    60
    82
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A 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.
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP 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.
    45
    MIT

Latest Blog Posts

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