Tomebound

Organize and track your Magic: The Gathering collection, decks, prices and imports.

Community: Submitted by a user or imported; check the owner before granting accessOnlineNo sign-inGlobalFreeRead-only

What it can do

  • Import Cards: Imports physical cards from pasted CSV/decklist text or a Moxfield/Archidekt URL. Maximum 5,000 rows and 4 MiB text. Defaults to a preview with board counts, locations, containersToCreat
  • Export Collection: Exports owned physical inventory as Tomebound, Moxfield or ManaBox CSV, or JSON. Files below 200 KiB are inline; larger files up to 20 MiB have a signed capability download URL expi
  • Create Deck: Creates a new deck recipe from Arena/MTGO/Moxfield/plain text or a Moxfield/Archidekt URL, preserving commanders, companions and boards. Adds no physical cards and never overwrites existi

What data it sees

Do you need an account

No: the server works without sign-in

Organize and track your Magic: The Gathering collection, decks, prices and imports.

How to connect

How to connect Tomebound to Claude

The server address to paste into Claude settings:

https://tomebound--benson-perry.run.tools

  1. Open Claude (claude.ai or the desktop app).
  2. Go to Settings → Connectors.
  3. Click Add custom connector.
  4. Paste the server address copied below into Remote MCP server URL and click Add.
  5. In a chat, click + → Connectors and switch the new connector on.

Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.

Authorization

After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.

How to connect Tomebound to ChatGPT

The server address to paste into ChatGPT settings:

https://tomebound--benson-perry.run.tools

  1. Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
  2. Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
  3. Open Settings → Connectors and click Create.
  4. Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
  5. Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
  6. In a new chat open + → Apps/Connectors and enable the connector.

OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.

Authorization

On first use ChatGPT opens the service's sign-in window. Sign in and approve access.

How to connect Tomebound to Cursor

The server address to paste into Cursor settings:

https://tomebound--benson-perry.run.tools

Fastest: click Open in Cursor below and confirm the prompt.

Manually:

  1. In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
  2. Paste the JSON copied below into ~/.cursor/mcp.json (per project: .cursor/mcp.json in the repo root).
  3. Save the file. The server appears in the MCP list; authorize it there if asked.

Authorization

If the service needs sign-in, an authorize button appears next to the server in the MCP list.

Server tool list (17)

Raw names from tools/list. Only developers need these.

import_cardsImports physical cards from pasted CSV/decklist text or a Moxfield/Archidekt URL. Maximum 5,000 rows and 4 MiB text. Defaults to a preview with board counts, locations, containersToCreate, resolved printings, warnings and skipped rows. Unresolved rows are excluded. Applying requires dryRun=false and a valid previewToken; resolution writes nothing. Large jobs return an in_progress continuation. Tokens expire after ten minutes; repeated applies with the same token replay the result.
export_collectionExports owned physical inventory as Tomebound, Moxfield or ManaBox CSV, or JSON. Files below 200 KiB are inline; larger files up to 20 MiB have a signed capability download URL expiring in 15 minutes. JSON contains the selected collection rows, not a full account backup.
create_deckCreates a new deck recipe from Arena/MTGO/Moxfield/plain text or a Moxfield/Archidekt URL, preserving commanders, companions and boards. Adds no physical cards and never overwrites existing decks. Unresolved rows prevent creation. Defaults to a preview; applying requires dryRun=false and a valid previewToken. Tokens expire after ten minutes; repeated applies with the same token replay the result. Large resolution jobs return an in_progress continuation.
deck_ownershipChecks a saved deckName or unsaved decklistText with the deck page allocation rules. Exact printings are reserved before alternates; maybeboard is excluded. Returns physical ownership, other deck claims and a buy list with Scryfall price estimates, not live offers. Bulk resolution and buy-list price pages can return a continuation.
get_collection_overviewReturns the signed-in collection summary, recent changes, and container list in one read.
query_collectionQueries inventory, containers, decklist, history, or summary with structured filters, bare predicates, or SQL-ish SELECT expressions. Returns matching data and pagination metadata for row results. Invalid WHERE, ORDER BY, or SELECT fields return parse_error and no rows. Text = is exact, case-insensitive equality, including full "Front // Back" names for double-faced cards; like is fuzzy substring/word matching with % wildcards. The _ wildcard is unsupported and returns parse_error. Inventory timestamps: createdAt is entry creation, lastAddedAt is latest acquisition/quantity addition (falling back to createdAt), updatedAt is latest metadata/location edit. Examples: {from:"inventory", cmc:1, colors:"blue"}; {from:"inventory", effect:"sacrifice"}; select name, oracleText from inventory where oracleText like "deal 3 damage"; select name, price, totalValue from inventory where finish = "foil" order by price desc limit 5.
resolve_printingResolves and prices Scryfall printings, owned or unowned. Accepts a printing id, card name, exact setCode+cn, or query shorthand such as "sld 2144". Returns exact candidates with previewAddArgs; prefix matches return ambiguous candidates instead of not_found.
mutate_inventoryCreates, edits, moves, duplicates, replaces or deletes physical inventory rows, changes deck recipes, or deletes decks. Writes removing cards, decks or containers or touching more than 25 inventory or decklist rows require a previewToken; without one, status=preview_required returns a preview and changes nothing. Smaller non-removing writes can apply directly. Unknown fields are rejected. Bulk previews may mix previews and per-item errors; apply-time writes are atomic for successful payloads. Applied responses include recoveryId and omit full preview details by default.
card_allocationReturns owned versus claimed deck allocation for one printing across all finishes and languages. Deck rows do not reserve a finish. Maybeboard is excluded unless includeMaybeBoard=true. finish and language are accepted for compatibility and do not filter ownership.
collection_valueReturns collection value totals for one source (usd, eur, or tix), including priced/unpriced counts and highest-value cards for that source.
card_pricesReturns per-source prices for a Scryfall printing id, including unowned cards. Owned matches include collection price snapshots and totals; unowned printings return fresh Scryfall quotes and purchase links under printing. Supports an optional finish filter.
validate_deckValidates a saved deck or unsaved decklistText against known MTG format rules: legality, singleton, color identity, deck size, command-zone requirements, and sideboard size. Accepts an optional format. Returns validation results for the recipe without changing the collection or checking physical ownership.
searchSearches the signed-in collection without changing it. Returns Tomebound result ids, titles and URLs in the Deep Research search format.
fetchReturns the title, text, URL and metadata for a Tomebound result id or URL in the Deep Research document format. Reads only the signed-in collection.
list_mcp_recovery_pointsLists server-side recovery snapshots captured before successful MCP applies, undos and restores.
restore_mcp_recovery_pointReplaces the signed-in collection with a server-side recovery snapshot. dryRun returns revision, item-count and container deltas plus a summary. Restores removing cards, decks or containers or touching more than 25 rows require previewToken; without one, status=preview_required returns a preview and changes nothing. Smaller restores can apply directly. Validation returns {status, code, message} with status=error|not_found and code=recovery_id_required|recovery_point_not_found|recovery_point_unreadable.
undo_last_mcp_changeReverses the latest MCP apply as one unit while its changed rows and containers still hold the applied state, preserving later edits elsewhere. Otherwise returns status=unsafe with recoveryId. Captures a recovery point before undo. Undos removing cards, decks or containers or touching more than 25 rows require previewToken; without one, status=preview_required returns a preview and changes nothing.