mtg-oracle
mtg-oracle is a Magic: The Gathering MCP server offering 14 tools for AI assistants (like Claude Desktop) to answer MTG questions using local SQLite databases sourced from Scryfall, Commander Spellbook, and official rules data.
Card Search & Information
Search cards by name, type, color, mana cost, rarity, set, format legality, or keyword
Get complete card details (oracle text, mana cost, type, power/toughness, rulings, legality) with fuzzy name matching
Fetch official Wizards of the Coast rulings covering interactions and edge cases
Check format legality for up to 50 cards across Commander, Modern, Standard, Legacy, Vintage, and more
Find cards with a specific keyword/mechanic (e.g., Flying, Cascade) with optional rules definitions
Look up current market prices (USD, USD Foil, EUR, MTGO tix) for up to 50 cards
Deck Analysis
Parse deck lists (plain text or MTGO XML) to get mana curve, color distribution, type breakdown, mana base analysis, and format legality
Rules Reference
Look up Comprehensive Rules by section number or text search
Find official glossary definitions for game terminology (e.g., "permanent", "stack", "priority")
Retrieve official rules definitions for keyword abilities like Flying, Deathtouch, or Equip
Commander & Format Intelligence
Analyze legendary creatures as Commanders with strategies, archetypes, and recommended card categories
Find known infinite combos from Commander Spellbook by card name(s) or color identity, including steps and prerequisites
Identify synergy categories (tokens, sacrifice, counters, etc.) and sample cards for a specific card
Retrieve staple cards and popular archetypes for any format, optionally filtered by archetype
All data is stored locally in SQLite for fast offline queries with automatic updates.
mtg-oracle
Magic: The Gathering MCP server. Card search, rules lookup, deck analysis, and Commander intelligence.
Provides 14 tools for AI assistants to answer questions about Magic cards, game rules, combos, synergies, and format meta via the Model Context Protocol.
Not just another Scryfall wrapper. mtg-oracle downloads card data, comprehensive rules, and combo databases locally into SQLite for fast offline queries, and ships with curated MTG knowledge (archetypes, format primers, commander strategies, mana base guidelines) that makes LLMs genuinely competent at Magic.
Installation
npm install -g mtg-oracleOr run directly with npx:
npx mtg-oracleRelated MCP server: scryfall-mcp-server
Claude Desktop Configuration
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"mtg-oracle": {
"command": "npx",
"args": ["-y", "mtg-oracle"]
}
}
}Or if installed globally:
{
"mcpServers": {
"mtg-oracle": {
"command": "mtg-oracle"
}
}
}Claude Code Configuration
claude mcp add mtg-oracle -- npx -y mtg-oracleData
On first run, mtg-oracle downloads card data from Scryfall and rules data from Academy Ruins. Data is stored in ~/.mtg-oracle/ and updated automatically on subsequent runs. No card data is bundled in the npm package.
Tools
Card Tools
Tool | Description |
| Search cards by name, type, color, mana cost, rarity, set, format, or keyword. Full-text search across names, type lines, and oracle text. |
| Get complete details for a specific card: oracle text, mana cost, type, P/T, rulings, and legality. Fuzzy name matching. |
| Get official Wizards of the Coast rulings for a card (interactions, edge cases, clarifications). |
| Check format legality for one or more cards (up to 50). Covers Commander, Modern, Standard, Legacy, Vintage, and more. |
| Find cards with a specific keyword or mechanic (Flying, Trample, Cascade, etc.). Optionally includes the keyword's rules definition. |
| Look up current market prices for one or more cards (up to 50). Returns USD, USD Foil, EUR, and MTGO tix prices from Scryfall. |
Deck Tools
Tool | Description |
| Analyze a deck list (plain text or MTGO XML). Returns mana curve, color distribution, type breakdown, mana base analysis, and format legality check. |
Rules Tools
Tool | Description |
| Look up Comprehensive Rules by section number (e.g., "702.1") or search by text. Returns rule text with subsections and parent context. |
| Look up game terminology in the official glossary ("permanent", "spell", "stack", "priority", etc.). |
| Get the official rules definition for keyword abilities (Flying, Deathtouch, Equip, etc.). |
Commander Tools
Tool | Description |
| Analyze a legendary creature as a Commander: strategies, archetypes, recommended card categories for deckbuilding. |
| Find known infinite combos from Commander Spellbook. Search by card name(s) or color identity. Returns steps, prerequisites, and results. |
| Find synergy categories (tokens, sacrifice, counters, etc.) and sample cards that work well with a specific card. |
| Get staple cards and popular archetypes for any format. Optionally filter by archetype. |
Development
# Install dependencies
npm install
# Run tests
npm test
# Build
npm run build
# Run locally
npm startAttribution
Card data provided by Scryfall. This project is not produced by or endorsed by Scryfall.
Combo data from Commander Spellbook.
Rules data from Academy Ruins.
Legal
This is unofficial Fan Content permitted under the Fan Content Policy. Not approved/endorsed by Wizards of the Coast. Portions of the materials used are property of Wizards of the Coast. All rights reserved.
License
MIT
Available Tools
14 toolsanalyze_commanderA
Analyze a legendary creature as a potential Commander. Returns color identity, suggested strategies, archetypes, and recommended card categories for building a deck around this commander. Use this when a user wants help building or evaluating a Commander deck.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Commander card name to analyze |
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 discloses the output type but does not mention any behavioral traits such as handling of invalid names, caching behavior, or prerequisites. For a tool that likely interacts with external data, more behavioral context (e.g., cases where the tool might fail) is missing.
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 consists of two concise sentences that front-load the purpose and usage. Every sentence adds value, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (single parameter, no output schema), the description adequately explains what it does and what it returns. It does not cover error cases or fallback behavior, but for a straightforward analysis tool, the level of detail is almost complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter 'name' has a schema description 'Commander card name to analyze', which already covers its meaning. The description adds no additional semantics beyond what the schema provides. With 100% schema coverage, a baseline score of 3 is appropriate.
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 'analyze' and the resource 'legendary creature as a potential Commander', and lists the returned information (color identity, strategies, archetypes, recommended card categories). It distinguishes from sibling tools like analyze_deck (whole deck) and find_synergies (specific card synergies).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states 'Use this when a user wants help building or evaluating a Commander deck', providing clear context for when to invoke. It does not enumerate when not to use or mention alternatives, but the specialized nature makes the guidance sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_deckA
Analyze a Magic: The Gathering deck list. Paste a deck list (plain text format like '4 Lightning Bolt' per line, or MTGO .dek XML) and get mana curve, color distribution, type breakdown, mana base analysis, and format legality check. Use this when a user shares a deck list and wants feedback.
| Name | Required | Description | Default |
|---|---|---|---|
| deck_list | Yes | The deck list in plain text or MTGO .dek XML format | |
| format | No | Format to check legality against (e.g., "modern", "commander", "standard") |
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 outputs (mana curve, etc.) but does not disclose any behavioral traits like rate limits, statelessness, or if it modifies anything.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no waste, front-loading the purpose. Efficient 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?
The description covers inputs and expected outputs, but does not specify the output format (e.g., JSON, text). For a tool with no output schema, this would be helpful but is not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant meaning beyond the schema, explaining acceptable formats for deck_list (plain text with '4 Lightning Bolt' per line, or MTGO XML) and the purpose of format parameter for legality checks.
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 it analyzes an MTG deck list and lists specific analyses (mana curve, color distribution, etc.). The verb 'analyze' and resource 'deck list' are specific, and it distinguishes from sibling tools like analyze_commander and check_legality.
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 says 'Use this when a user shares a deck list and wants feedback,' providing clear context. However, it does not explicitly mention when not to use it or compare to alternatives like check_legality for legality-only checks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_legalityA
Check which formats a card (or multiple cards) is legal in. Use this when a user wants to know if a card is legal, banned, or restricted in formats like Commander, Modern, Standard, Legacy, or Vintage. Accepts a single card name or an array of up to 50 card names.
| Name | Required | Description | Default |
|---|---|---|---|
| cards | Yes | Card name or array of card names (max 50) | |
| format | No | Specific format to check (e.g., "commander", "modern"). Omit for all formats. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description provides key behaviors: accepts single or array up to 50 cards, checks legality. It implies a read-only operation, no contradictory behaviors. Could mention output structure but adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states purpose, second provides usage context and acceptable formats. No filler, front-loading of key info, every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description implies the output is a legality status per format, which is sufficient for this simple tool. Could detail output format, but the agent can infer from the query nature.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are well-documented. The description adds context like 'max 50' and 'Omit for all formats' but does not go beyond what the schema already conveys. Baseline 3 is appropriate.
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 'check' and the resource 'which formats a card is legal in', distinguishing it from sibling tools like 'get_card' (card details) and 'search_cards' (searching). It specifies the action and scope.
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 tells when to use the tool ('when a user wants to know if a card is legal') and lists example formats. It does not explicitly state when not to use it, but the focus on legality is clear, and siblings cover other use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_combosA
Find known infinite combos and synergistic card combinations from Commander Spellbook. Use this when a user asks about combos involving specific cards, combos in specific colors, or wants to find win conditions. Returns combo steps, prerequisites, and results.
| Name | Required | Description | Default |
|---|---|---|---|
| card_name | No | Single card name to search combos for | |
| card_names | No | Multiple card names to search combos for | |
| color_identity | No | Filter combos within this color identity (e.g. ["W","U","B"]) | |
| limit | No | Max results (default 20, max 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It states the output: 'Returns combo steps, prerequisites, and results,' which adds transparency about return format. However, it does not disclose whether the operation is read-only, any authentication needs, rate limits, or potential side effects. Without annotations, more detail would be beneficial.
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 consists of three concise sentences, each earning its place: the first states the core function, the second provides usage context, and the third describes the return value. No unnecessary words, front-loaded with the most important information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the parameter count (4) and full schema coverage, the description provides sufficient context for usage. It lacks mention of search behavior (e.g., exact match vs fuzzy) and does not specify if the tool is read-only, but the simplicity of the tool (no required params, no nested objects) means the description covers the essentials. The absence of an output schema is mitigated by the explicit listing of return components.
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 for all four parameters, so the schema already explains each parameter's meaning. The description adds no additional semantic value beyond what the schema provides, thus the baseline score of 3 is appropriate.
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 finds 'known infinite combos and synergistic card combinations from Commander Spellbook,' using a specific verb ('Find') and resource ('combos'). It also lists usage scenarios (combos involving specific cards, colors, or win conditions) that distinguish it from siblings like 'find_synergies' which likely serve a different purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use: 'when a user asks about combos involving specific cards, combos in specific colors, or wants to find win conditions.' While it does not mention alternatives or when not to use, the context of sibling tools is available externally, making the guidance clear enough for an AI agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_synergiesA
Find synergy categories and sample cards that work well with a specific card. Use this when a user wants to know what strategies or card types synergize with a particular card. Identifies matching archetypes (tokens, sacrifice, counters, etc.) and suggests complementary cards.
| Name | Required | Description | Default |
|---|---|---|---|
| card_name | Yes | Card name to find synergies for | |
| color_identity | No | Filter synergistic cards within this color identity | |
| format | No | Filter by format relevance | |
| category | No | Filter by specific synergy category ID | |
| limit | No | Max sample cards per category (default 5, max 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description does not disclose behavioral traits beyond purpose. Lacks information on side effects, data freshness, or mutability. For a search tool, read-only implied but not stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences front-loaded with main action and usage context. No redundant information; every sentence adds value.
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?
Covers purpose and usage adequately but lacks explanation of output structure (e.g., format of sample cards, categories). Without output schema, description could be more informative.
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 description adds little beyond schema. Does not clarify parameter interactions or output behavior. Baseline score of 3 is appropriate.
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 finds synergy categories and sample cards for a given card, using specific verbs and resources. It distinguishes itself from siblings like find_combos by focusing on strategies and complementary cards.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use: 'when a user wants to know what strategies or card types synergize with a particular card.' No explicit when-not-to-use or alternative tools mentioned, but the usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cardA
Get complete details for a specific Magic card including oracle text, mana cost, type, power/toughness, rulings, and format legality. Use this when you know the exact card name (or close to it) and need full information. Supports fuzzy matching — partial names work.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Card name to look up |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses fuzzy matching behavior and lists returned fields. No annotations provided, but description implies read-only operation; could explicitly state no side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences efficiently convey purpose, usage, and parameter behavior with no 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?
Despite no output schema, description enumerates returned fields (oracle text, mana cost, type, power/toughness, rulings, format legality), covering agent needs fully.
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?
Adds value beyond schema by noting fuzzy matching and partial name support for the 'name' parameter, which schema only labels as 'Card name to look up'.
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?
Description specifies verb (get complete details) and resource (Magic card), listing specific fields returned. Distinguishes from sibling search_cards by focusing on full details for a known name.
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?
Describes when to use (know exact or partial name, need full info) and mentions fuzzy matching. Lacks explicit alternatives but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_format_staplesA
Get staple cards and popular archetypes for a specific format (Commander, Modern, Legacy, etc.). Use this when a user asks about the meta, popular decks, or key cards in a format. Optionally filter by archetype.
| Name | Required | Description | Default |
|---|---|---|---|
| format | Yes | Format to get staples for (e.g. "commander", "modern", "legacy") | |
| archetype | No | Optional archetype filter (e.g. "aggro-red", "control-uw") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It implies a read operation but does not disclose any potential behaviors such as error handling, rate limits, or data freshness. Adequate but not detailed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no redundancy, front-loaded with the core action. Every word serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool with two well-described parameters and no output schema, the description covers the essential purpose and usage context. It could mention the return format, but this is not critical given the tool's straightforward nature.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description adds minimal additional meaning beyond the schema, only noting that the archetype filter is optional. Baseline score of 3 applies.
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 retrieves staple cards and popular archetypes for a format, with examples of formats. It does not explicitly differentiate from sibling tools, but the purpose is distinct enough given the sibling names.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: 'when a user asks about the meta, popular decks, or key cards in a format.' No alternatives or when-not-to-use are given, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_glossaryA
Look up a term in the Magic: The Gathering glossary. Use this when a user asks "what does X mean" for game-specific terminology like "permanent", "spell", "stack", "priority", etc. Supports partial matching.
| Name | Required | Description | Default |
|---|---|---|---|
| term | Yes | Glossary term to look up (case-insensitive). Supports exact and partial matching. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses case-insensitivity and partial matching support, which are key behaviors for a glossary lookup. No side effects or destructive actions are relevant, so transparency is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise—two sentences with no filler. It front-loads the action and purpose, then provides usage guidance, making it efficient for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema), the description fully covers purpose, usage, and behavior. It is complete for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (one parameter 'term' described). The description adds value by stating the parameter is case-insensitive and supports partial matching, which is not 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 tool's purpose: 'Look up a term in the Magic: The Gathering glossary.' It specifies the verb (look up) and resource (glossary), and distinguishes from sibling tools by focusing on game-specific terminology like 'permanent', 'spell', etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage context: 'Use this when a user asks "what does X mean" for game-specific terminology.' It gives examples and implies when not to use (e.g., for card rules, use get_rulings or lookup_rule), though it does not name alternatives explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_keywordA
Get the official rules definition for a Magic keyword ability (e.g., "Flying", "Deathtouch", "Equip"). Use this when a user asks how a keyword works or what its rules text says. Different from get_glossary — this is specifically for keyword abilities with rules text.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Keyword name to look up (case-insensitive). Examples: "Flying", "Equip", "Scry". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It describes a read-only lookup operation but does not disclose potential side effects, authentication needs, rate limits, or data source details. The simplicity of the operation partially mitigates this, but more transparency would be beneficial.
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 two sentences long, with no extraneous information. The first sentence defines the purpose with examples, and the second provides usage guidance and sibling differentiation. 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?
For a simple lookup tool with one parameter and no output schema, the description covers purpose, usage context, and differentiation. No additional information (e.g., output format) is necessary for the agent 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 input schema has 100% description coverage, so baseline is 3. The description adds value with examples ('Flying', 'Equip', 'Scry') and implicitly confirms case-insensitivity, which is already in the schema. This extra context justifies a 4.
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 retrieves official rules definitions for Magic keyword abilities, with examples like 'Flying', 'Deathtouch', 'Equip'. It distinguishes itself from the sibling tool 'get_glossary' by specifying it is for keyword abilities with rules text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool: 'Use this when a user asks how a keyword works or what its rules text says.' It also contrasts with the alternative 'get_glossary', providing clear guidance on differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pricesA
Look up current market prices for one or more Magic cards. Returns USD, USD Foil, EUR, and MTGO tix prices from Scryfall. Use this when a user asks about card prices, deck costs, or wants to compare card values.
| Name | Required | Description | Default |
|---|---|---|---|
| names | Yes | Card names to look up prices for (1-50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must stand alone. It states the tool returns prices from Scryfall but does not disclose behavior for missing or misspelled names, rate limits, or any side effects. This is adequate for a simple lookup but lacks depth for full transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action and key details, followed by usage guidance. No wasted words, highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains what the tool does, what it returns, and when to use it. With one parameter and no output schema, it provides enough context for an agent to invoke correctly, though it could mention error handling or return format for missing cards.
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 for the single 'names' parameter. The description adds context about the currencies returned but does not explain parameter format or constraints beyond the schema. Baseline 3 is appropriate.
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 looks up current market prices for Magic cards, specifies the price types (USD, USD Foil, EUR, MTGO tix) and source (Scryfall). It distinguishes from sibling tools like get_card or check_legality which deal with card details or legality, not prices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to use: 'Use this when a user asks about card prices, deck costs, or wants to compare card values.' Does not mention when not to use or provide alternative tools, but the context is clear given sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_rulingsA
Get official rulings for a specific Magic card. Use this when a user asks about specific interactions, edge cases, or how a card works in unusual situations. Returns timestamped rulings from Wizards of the Coast.
| Name | Required | Description | Default |
|---|---|---|---|
| card_name | Yes | Name of the card to get rulings for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries the full burden. It discloses that rulings are timestamped and from Wizards of the Coast, but does not cover potential error conditions or limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences efficiently convey function, usage context, and output. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description is fairly complete: it explains purpose, usage, and output format. Could add details on error handling or no results, but not essential.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the parameter description in the schema is adequate. The tool description does not add extra semantic value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'get official rulings' and the resource 'specific Magic card'. It distinguishes from siblings like get_card (basic info) and lookup_rule (rules) by specifying the use case for interactions and edge cases.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: 'when a user asks about specific interactions, edge cases, or how a card works in unusual situations.' Provides solid context, though it doesn't explicitly mention when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lookup_ruleA
Look up a specific section of the Magic: The Gathering Comprehensive Rules by section number (e.g., "702", "702.1") or search rules text. Use this when a user asks about specific game rules, rule interactions, or needs the official rule text. Returns the rule and its subsections.
| Name | Required | Description | Default |
|---|---|---|---|
| section | No | Rule section number to look up (e.g. "702" or "702.1"). Returns exact match plus all subsections. | |
| query | No | Text to search for across all rule titles and text (case-insensitive). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully cover behavior. It states 'Returns the rule and its subsections' but omits details like read-only behavior, potential rate limits, or that no modifications occur. For a safe lookup tool, more clarity on safety would improve 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?
Two sentences with no filler. The first sentence states action and provides an example. Every word contributes to understanding the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple lookup tool with no output schema and two parameters, the description covers purpose, usage, and return behavior. It could briefly mention whether both parameters can be used together, but overall it's sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, but the description adds value by explaining that 'section' returns exact match plus subsections and that 'query' is case-insensitive search across all text. This goes beyond the schema's parameter names.
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 uses specific verbs ('look up', 'search') and clearly identifies the resource ('Magic: The Gathering Comprehensive Rules') and methods (by section number or text search). It distinguishes from siblings like get_card or get_rulings which are for different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on when to use ('when a user asks about specific game rules, rule interactions, or needs the official rule text'). Does not explicitly mention when not to use or list alternatives, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_by_mechanicA
Find cards that have a specific keyword or mechanic (e.g., "Flying", "Trample", "Scry", "Cascade"). Use this when a user asks about cards with a particular ability or mechanic. Optionally includes the keyword's official rules definition.
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | Yes | Keyword/mechanic to search for (e.g., "Flying", "Trample") | |
| include_definition | No | Include keyword definition from keywords table | |
| format | No | Filter by format legality | |
| limit | No | Max results (default 25, max 50) |
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 reveals that the tool searches cards and optionally includes definitions, but does not describe error handling, return format, or any behavioral traits beyond the basic 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?
Two sentences, front-loaded with the core action and examples. Every word earns its place with no 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 no output schema and no annotations, the description is fairly complete. It covers the main functionality and optional feature. Could mention default limit or pagination, but schema fills some gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds minimal extra meaning beyond what the schema already provides for parameters like keyword, include_definition, format, and limit.
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?
Clearly states the tool finds cards by keyword/mechanic with examples. Distinguishes from sibling tools like search_cards which is more general, and get_keyword which focuses on definitions alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use this when a user asks about cards with a particular ability or mechanic.' Provides clear context for when to use, but does not mention when not to use or alternatives like get_keyword or search_cards.
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 by name, type, color, mana cost, rarity, set, format legality, or keyword. Use this when you need to find cards matching specific criteria. Supports full-text search across card names, type lines, and oracle text. Returns a summary list — use get_card for full details on a specific card.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Free-text search (FTS5) across name, type_line, oracle_text | |
| name | No | Filter by card name (LIKE match) | |
| type | No | Filter by type_line (LIKE match) | |
| colors | No | Filter by colors (JSON array contains all specified) | |
| cmc | No | Filter by converted mana cost | |
| cmcOp | No | CMC comparison operator (default: eq) | |
| rarity | No | Filter by rarity (common, uncommon, rare, mythic) | |
| set | No | Filter by set code | |
| format | No | Filter by format legality (legal status) | |
| keyword | No | Filter by keyword in keywords JSON array | |
| limit | No | Max results (default 25, max 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. It mentions full-text search and that it returns a summary list, but lacks details on pagination, sorting, error handling, or read-only nature. The behavioral transparency is adequate but could be improved.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: the first succinctly lists capabilities, the second gives usage guidelines and a pointer to get_card. No wasted words, front-loaded with key 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?
With 11 parameters, no output schema, and no annotations, the description should compensate. It omits some parameters (e.g., cmc, cmcOp, limit) and does not describe output structure beyond 'summary list'. This leaves significant gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so every parameter has a description. The tool description lists many parameters but does not add new semantics beyond the schema. Baseline of 3 is appropriate as the schema already documents parameters well.
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?
Description explicitly states the action (search) and resource (cards) and lists numerous filter criteria. It distinguishes from sibling tool get_card by noting that get_card provides full details. This is clear and specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description provides clear guidance on when to use the tool ('when you need to find cards matching specific criteria') and directs to get_card for full details. However, it does not mention when not to use it or alternative sibling tools like search_by_mechanic, limiting completeness.
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.
14 tool updates
v0.2.2- Added
analyze_commander - Added
analyze_deck - Added
check_legality - Added
find_combos - Added
find_synergies - Added
get_card - Added
get_format_staples - Added
get_glossary - Added
get_keyword - Added
get_prices - Added
get_rulings - Added
lookup_rule - Added
search_by_mechanic - Added
search_cards
14 tool updates
v0.1.0- Removed
analyze_commander - Removed
analyze_deck - Removed
check_legality - Removed
find_combos - Removed
find_synergies - Removed
get_card - Removed
get_format_staples - Removed
get_glossary - Removed
get_keyword - Removed
get_prices - Removed
get_rulings - Removed
lookup_rule - Removed
search_by_mechanic - Removed
search_cards
14 tool updates
v1.0.0- First observed
analyze_commander - First observed
analyze_deck - First observed
check_legality - First observed
find_combos - First observed
find_synergies - First observed
get_card - First observed
get_format_staples - First observed
get_glossary - First observed
get_keyword - First observed
get_prices - First observed
get_rulings - First observed
lookup_rule - First observed
search_by_mechanic - First observed
search_cards
TDQS
Scored across 14 tools
Most tools have distinct targets, but search_by_mechanic overlaps with search_cards since the latter supports keyword-based search. get_keyword and get_glossary are explicitly differentiated, and lookups like rulings vs. card details are well separated.
All tool names follow a consistent verb_noun snake_case pattern (get_, search_, analyze_, find_, check_, lookup_). Even multi-word objects like get_format_staples are clear and predictable.
14 tools is well-scoped for a Magic: The Gathering oracle service. Each tool covers a meaningful aspect (card data, pricing, legality, rulings, deck/commander analysis, combos), and none feels superfluous.
The surface covers all major info needs: card lookup and search, prices, legality, rulings, comprehensive rules, glossary, deck analysis, commander analysis, combos, synergies, and format staples. There are no obvious dead ends for common MTG questions.
Maintenance
Related MCP Connectors
Scryfall MCP — Magic: The Gathering card database.
Magic: The Gathering card search, rules, rulings, deck analysis, brackets, and combo detection.
Official remote MCP server for Archivist AI TTRPG campaign memory: characters, sessions, and more.
Crypto market intelligence, token rug-checks, and wallet verification in one 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 gradedqualityDmaintenanceMCP server that searches and retrieves Magic: The Gathering card data from the Scryfall API.21,790MIT
- AlicenseNot gradedqualityBmaintenanceUnified MCP server for Magic: The Gathering, combining Scryfall card search and pricing, EDHRec commander recommendations, Archidekt deck reading, and decklist validation into a single service.MIT
- AlicenseAqualityAmaintenanceMCP server for Magic: The Gathering card prices, deck analysis, sealed product EV calculations, and investment insights, powered by live data from 5 vendors covering 99K+ cards.21MIT