manapool-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MANAPOOL_HOST | No | Host used in HTTP mode. | 127.0.0.1 |
| MANAPOOL_PORT | No | Port used in HTTP mode. | 8765 |
| MANAPOOL_CACHE_DIR | No | Price snapshot location. | ~/.cache/manapool-mcp |
| MANAPOOL_CACHE_TTL | No | Page cache lifetime in seconds. | 600 |
| MANAPOOL_TRANSPORT | No | Transport mode; defaults to stdio or streamable-http. | stdio |
| MANAPOOL_PRICES_TTL | No | Seconds before refreshing prices. | 86400 |
| MANAPOOL_MIN_INTERVAL | No | Seconds between upstream requests. | 0.2 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
ManaPool sells pre-built Commander decks assembled from a single seller's stock. Two things to know before using these tools:
ManaPool's own bracket tag is generated and optimistic. Never report it as fact; call audit_deck to check the list.
Prices move and decks are rebuilt when stock changes, so a saved list can differ from what you read a moment ago. Re-read before quoting a deck. Use search_decks to find candidates, get_deck to read one, and audit_deck to check Game Changers, mass land denial, extra turns and Commander Spellbook combos against the official bracket criteria.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_decksA | Search ManaPool's pre-built Commander deck listings. Args: commander: Text query matched against deck/commander names, e.g. "Rendmaw" or "Zada". ManaPool's own search box. bracket: 2, 3 or 4. This is ManaPool's generated tag, not a verified bracket - use audit_deck before recommending anything. min_price: Lower bound in USD on the listing price (includes the seller's basic lands). ManaPool has no price filter, so this walks pages and filters locally. max_price: Upper bound in USD, same basis as min_price. theme: ManaPool theme label, matched exactly, e.g. "Aristocrats", "Spellslinger", "Landfall", "Goad", "Group Hug", "Cascade". colors: Colour identity letters, e.g. "WU" or "BRG". sort: "rank" (recommended), "price-asc", "price-desc" or "bracket". A price window forces "price-asc" because the scan needs it. page: Zero-based page of listings. When a price window is supplied this is an offset into the filtered matches instead. limit: Maximum decks to return (1-96). |
| get_deckA | Fetch one ManaPool deck by URL or list id. Args: deck: https://manapool.com/lists/ or the bare uuid. include_types: Also resolve each card's Scryfall type line. Useful for multi-type payoffs (e.g. Rendmaw) but costs extra requests. |
| audit_deckA | Check a ManaPool deck against the official Commander bracket criteria. Counts Game Changers, mass land denial, extra turns and tutors, and asks Commander Spellbook for combos fully present in the list. Returns the lowest bracket the card list mechanically permits. This checks the list, not intent: a zero-Game-Changer deck can still play like Upgraded, and an accidental two-card combo will flag higher than the pilot means. Report it as "what the cards permit", not as a verdict on power. |
| search_cardsA | Search cards and price them against ManaPool stock. Args:
query: Scryfall search syntax, e.g. ManaPool's public API has no name search, so the search runs on Scryfall and each result is then priced from ManaPool's /products/singles. |
| get_cardA | Get one card's ManaPool prices and per-listing availability. Args: card: A card name, a Scryfall id, or a ManaPool card URL such as https://manapool.com/card/sld/2683/sol-ring. |
| price_deckA | Price a decklist against ManaPool's live singles inventory. Accepts any text list ("1 Card Name", "4x Card Name", "Card Name") and prices each line at the cheapest in-stock printing. Use this to budget a custom build; ManaPool's own pre-built decks are always a single seller's stock, so their cart total and this estimate differ. Args: decklist: Newline-separated list. Blank lines and "//" comments ignored. commander: Optional commander, priced and reported separately. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Game Changers | The official 53-card Game Changers list (Feb 2026 update). |
| Commander bracket criteria | Official bracket definitions and what each one permits. |
TDQS
Scored across 6 tools
The six tools split cleanly across deck and card resources, with distinct actions: search, get, audit, and price. get_deck vs audit_deck vs price_deck could superficially overlap, but each description defines a different operation and output.
All tool names follow a consistent snake_case verb_noun pattern: get_deck, search_decks, audit_deck, search_cards, get_card, price_deck. The singular/plural noun variation reflects resource scope rather than inconsistent convention.
Six tools is well-scoped for a deck/card research and pricing server. Each tool covers a meaningful operation and none feels redundant or padded.
The surface covers the core read-only workflow: search decks, fetch a deck, audit it, search cards, get card pricing, and price a custom decklist. Minor gaps exist around broader marketplace/account actions such as cart or collection management, but those are outside the apparent research-focused scope.