Automation and integrations

Work with your collection outside the app: a command-line tool, agent access over MCP, and personal access tokens.

Command line (CLI)

  • Tomebound has a command-line tool, tomebound (short alias bp), for managing your collection from a terminal.
  • Install or upgrade with npm install -g https://tomebound.app/tomebound-cli.tgz (Node.js 22 or newer), then run bp login to sign in with read access. Run bp login --write when you need to edit.
  • The CLI uses dynamic registration: each new login asks you to approve its loopback connection on the Tomebound consent page. bp logout clears local credentials; revoke the connection in Settings → Connected apps to stop server access immediately.
  • It can search, add, edit, move, import, export, undo, and recover, and prints machine-readable output with --json plus meaningful exit codes for scripts and agents. Every edit shows a preview and asks for confirmation (--yes skips the prompt). A result other than applied, such as not found or ambiguous, exits with an error code. Use bp export --all to retrieve every inventory page, or add --deck NAME for every page of a deck list. Without --all, export returns one page. Failed requests return a nonzero exit code and leave an existing export file unchanged. Run bp help or bp <command> --help for options.
  • Use bp validate-deck "deck name" to check a recipe against its saved format. Validation reports violations and warnings without changing the deck. Validation fetches Oracle text for command-zone cards from Scryfall, without changing the deck. The lookup waits up to eight seconds; if it fails, rules that need missing Oracle text remain pending lookup. Type-based commander violations still appear. Unknown formats are reported as unvalidated.
  • Use bp card-allocation <scryfallId> to compare owned copies with deck claims. Allocation also accepts --item-key, --finish, --language, and --include-maybe; its deck list is limited to ten rows with complete totals. Find ids with bp search "..." --json. These commands need only read access.
  • The CLI connects to https://api.tomebound.app. Saved connections to the retired production hostname migrate silently and keep their credentials; custom API origins remain unchanged. Saved OAuth credentials are used only at their API origin; another origin requires a separate login.

Agents and MCP

  • Connect external AI assistants to https://api.tomebound.app/mcp and name the server tomebound. OAuth defaults to collection.read. Write access requires the client to request collection.write and your approval on the Tomebound consent page.
  • New to Tomebound? Sign up during the connection flow; you do not need to visit the web app or save a collection first. An empty collection gives your agent next steps: preview an import from a pasted list, CSV, Moxfield or Archidekt URL, add a few exact printings, or open https://tomebound.app/?scan to use the web scanner. Imports and additions need approved write access. Agents can present previews and printing choices directly in conversation without an embedded app UI.
  • After signing in, check the client name (self-reported), redirect host and requested access, then choose Approve or Deny. Tomebound can remember approval for a dynamically registered client when the authenticated account, client, redirect and scopes match and the browser flow is verified. Clients using a shared HTTPS metadata identity or partner client ID always ask for consent when connecting or reconnecting. Requesting different access needs another approval. Complete the connection in the same browser where you started it.
  • Redirects are limited to loopback for desktop clients and the documented Claude, ChatGPT, Meta Muse, Cursor and VS Code callback hosts and paths. Clients can connect through dynamic registration, supported HTTPS client metadata documents or a pre-registered partner client; all require the same sign-in, consent and PKCE protections. Connections created before Tomebound consent was introduced need to reconnect, including existing Claude connectors.
  • Claude Code can use the runtime port chosen by its local callback listener when its loopback URI is listed in a supported client metadata document. Only the port can vary; scheme, host, path and query still match. Dynamically registered callbacks remain exact, and code exchange always uses the exact URI from authorization.
  • Claude Code: run claude mcp add --transport http tomebound https://api.tomebound.app/mcp, then open /mcp to sign in.
  • Codex CLI: run codex mcp add tomebound --url https://api.tomebound.app/mcp, then codex mcp login tomebound --scopes collection.read.
  • Claude Desktop: add a custom connector in customize → connectors with https://api.tomebound.app/mcp, then connect and enable it for the conversation. Workspace owners may need to add it first.
  • ChatGPT / OpenAI dots: open Plugins on the web, select the plus button, and choose Add custom MCP server. Enter the MCP URL, choose OAuth with dynamic client registration, leave static credentials empty, and create the plugin. Install Tomebound from your personal plugins, complete sign-in and consent when prompted, then type @ in a Work chat and select Tomebound. Once a directory listing is available, connect it there instead. Claude also supports a custom connector before a directory listing is available.
  • OpenClaw: add the remote URL under mcp.servers.tomebound in ~/.openclaw/openclaw.json with transport streamable-http and auth oauth, then run openclaw mcp login tomebound. The setup guide includes a read-only scope and a personal access token alternative. Use a private instance for a personal collection.
  • Meta Muse: ask it to add a custom connector for https://api.tomebound.app/mcp. This setup is not yet verified end to end with Tomebound. Use OAuth only if supported, or the connector’s secure Bearer credential control with a read-only personal access token; never paste tokens into conversation text.
  • See https://tomebound.app/integrations.html for complete ChatGPT, Claude, Meta Muse, OpenClaw, Codex, Claude Code, Cursor, VS Code, and CLI setup instructions. Directory availability and client menus can vary.
  • Ask your connected agent to import an attached Moxfield export, estimate your collection’s value, compare a deck list with your owned cards and the cost of missing copies, build a deck recipe from a list, or export to ManaBox. Available requests depend on the tools enabled in your client. Review imports and deck creation before saving; a deck recipe does not add cards to owned inventory. Missing prices are unknown, not zero. Agent collection values, owned-card prices, price filters and exports use the daily price snapshot without adding prices to your saved collection. Results include the snapshot date, unpriced counts and whether prices are available, partial or unavailable. Partial totals are marked, and entries whose quotes could not be loaded are counted separately. Collection value supports USD, EUR and tix when the snapshot has those quotes; general inventory filters, exports and deck owned values use USD. Finish-specific prices follow the app’s fallback rules, and localized cards use the matching English printing when that mapping is available. Deck owned value matches the deck page: its displayed printing price times the exact copies owned, capped at the decklist quantity and excluding the maybeboard. A separate allocated-copies value uses the actual finishes of allocated exact and alternate copies. Zero-dollar quotes count as unpriced. If a price load fails or times out, estimates include only successfully loaded or cached quotes, including any USD fallback loaded from the daily web snapshot. Prices stored on collection rows are not used as a fallback. A failed refresh keeps previously loaded prices until a retry succeeds; one request timing out does not stop other requests from loading prices. Daily worker prices switch only after the complete new snapshot has uploaded.
  • Connected agents and Tomebound chat can send feedback or bug reports to the developer after you confirm the wording, up to 10 submissions per UTC day.
  • Tool results are shared with the agent platform you connect under your direction. Its privacy policy and settings govern its copies of that data. Tomebound does not sell your data or use it to train AI models. See https://tomebound.app/legal.html#connected-apps for access, providers, retention, and revocation. If you send feedback or a bug report through a connected app, Tomebound stores your message, the app's name and the time, and emails them to the developer. Tomebound also records how the service is used and how well it works, such as which parts of the app and which connected apps and tools are used, how imports and other actions turn out, and errors. This is linked to your account so problems can be found and fixed, and it's used only to run and improve Tomebound. It doesn't include the contents of your files, card lists or messages.
  • Tomebound requires a preview for agent changes that remove cards, decks or containers, or touch more than 25 rows: the agent must first run the change as a preview, then repeat the same request with that preview's token. Showing you the preview before it applies is up to the agent, so prefer clients that ask first. Smaller adds and edits can apply in one step. Agent writes match card, set, deck, and container names literally, ignoring case, accents, and normalized whitespace; split-card face names and exact set-code aliases are accepted. Near matches are suggestions that require a choice before writing, including additions to deck recipes. Ambiguous destinations and explicitly requested printings require a choice too. Exact name-only additions to a deck recipe use Scryfall’s default printing and report its set and collector number so you can ask to change it. Physical collection adds still require a printing choice when several match. Requested finishes and languages must exist for the selected printing. If a saved card lacks finish metadata, a finish edit looks up its printing; an unknown printing requires clarification without changing the finish. Other edits still work. Finish or condition annotations in parentheses or brackets are removed from saved names only after the remaining name matches exactly; conflicting explicit finishes are rejected. Unknown boards or location types are rejected; legacy binder and box types mean container. Inventory mutation batches accept at most 200 items, or 75 when adds require name-only lookups, explicitly request a non-English language, or need a different-language printing. An exact Scryfall ID keeps its printing language when no language is requested. Deleting more than one row needs an explicit all-matches flag and a filter, and unknown fields are rejected. Mutation retry keys last ten minutes; reusing a key after that window starts a new change. A committed change whose verification fails returns a warning rather than inviting another write. Temporary printing lookup failures are reported as retryable errors.
  • A recovery point is created before every applied agent change; the one before a change of more than 25 rows is kept for up to 30 days even when many changes follow. Undo reverts an agent's whole last change, including every card of a bulk change, only while those cards are unchanged; otherwise restore its recovery point.
  • Agents can import pasted card lists or CSV from Tomebound, Moxfield, ManaBox, Archidekt, Deckbox, or TCGplayer, and public Moxfield or Archidekt deck URLs. Import accepts up to 5,000 rows and 4 MiB of text per job, with 1–1,000 copies per source row. Missing finish, condition, and language default to normal, near mint, and English, or your supplied defaults; values parsed from the source always win, including a blank Moxfield or Deckbox Foil field meaning non-foil. Sideboard and maybeboard cards are excluded from collection imports unless you explicitly include each board. Import destinations use deck:<name>, container:<name>, or a type/name object for an explicit type. Bare names match existing decks and containers exactly, ignoring case and normalizing Unicode whitespace. If both a deck and container match, the agent asks which one without writing; unmatched bare names create a container shown in the preview. Imports never use fuzzy destination matching. Importing into a deck adds physical copies and merges recipe rows with their original boards; the preview shows both. Review board counts, each row's location, containers that will be created, selected printings, skipped rows, merged duplicates, total quantity, and estimated USD value before applying. Unavailable or mismatched printings are excluded; unknown prices are listed separately. Name-only rows show the selected printing marked as defaulted. The preview and cached apply result list every excluded or unresolved row and its quantity. If the result cache is unavailable, replay returns a compact history receipt with counts and up to 50 omitted rows, without printing suggestions, and reports how many additional rows are not listed; partial imports state how many copies were imported out of the source total and how many rows and copies were not imported. Applying a partial import requires a preview that disclosed those omissions. Imports too large to save safely with their history must be split.
  • Imports and new decks always require a preview before applying, including small ones. The preview lasts ten minutes and is tied to your current collection. Applying uses the stored printings and records one undoable change and a recovery point. The agent can continue a large lookup across calls without changing your collection, including batched lookups for non-English printings. After a lost response, retry the same preview token, with or without the original arguments. If it has expired, check recent changes for the preview's apply ID before starting again; when history is inconclusive, verify the collection first to avoid duplicate imports.
  • Agents can create a deck recipe from Arena, MTGO, Moxfield, or plain decklist text, supported collection CSV, or a Moxfield or Archidekt URL, without adding any owned cards. CSV preserves supplied printing, finish, condition, and language fields. MTGTop8 .dec, Forge .dck, and Cockatrice .cod XML files are rejected with a format-level explanation; export plain-text lists or CSV instead. MTGGoldfish and MTGTop8 URLs are not supported by the agent connector; paste their plain-text exports. Commander, companion, and board sections are preserved. Every row must resolve; an owned-only request also stops when copies are missing. Existing decks are never overwritten. Agents can validate an unsaved list, check available exact and alternate copies, see owned copies reserved by other decks, and build a buy list for copies not owned in any printing with Scryfall price estimates and purchase links. Copies reserved by other decks still count as owned and are not on the buy list. Copies filed in the target deck give it priority for loose copies needed by its recipe; copies physically filed in other decks stay reserved. Available counts include copies already filed in the target. Prices are estimates, not live seller offers; unavailable prices remain unknown.
  • Agents can export all owned cards or the physical cards in a named container or deck as Tomebound, Moxfield, or ManaBox CSV, or JSON. Deck export scope means cards physically stored there, not the planned recipe. JSON contains the selected collection rows, not a full backup. Files below 200 KiB are returned directly; larger files up to 20 MiB use a private download link that expires after 15 minutes. Anyone with that link can download that export until it expires.

Connector tool reference

  • These are the tools available to external connectors for a normal account with approved read and write access. Read means readOnlyHint is true; Write means it is not. Read-only connections can use tools requiring collection.read. Each tool’s required scope is listed below.
  • No tool makes purchases or payments. Removals and changes affecting more than 25 rows return a preview that must be confirmed before applying. Imports and new decks also require a preview. Changes can be undone; recovery points can restore earlier collection snapshots.
Tool Description Read or write Required scope
send_feedback Send feedback or a bug report to the developer. Write collection.read
get_collection_overview Summarize your collection, containers and recent changes. Read collection.read
query_collection Filter and browse your cards, decks, containers or history. Read collection.read
resolve_printing Find a card printing and choose among matches. Read collection.read
collection_value Estimate your collection’s value and report missing prices. Read collection.read
card_prices Look up prices for owned or unowned card printings. Read collection.read
validate_deck Check a saved or proposed deck’s legality. Read collection.read
card_allocation Compare owned copies with the copies claimed by decks. Read collection.read
deck_ownership Compare a deck list with owned cards and estimate missing-card costs. Read collection.read
export_collection Create a CSV or JSON export of your collection. Read collection.read
import_cards Preview and add cards from a list, CSV or supported deck URL. Write collection.write
create_deck Preview and create a deck recipe without adding owned cards. Write collection.write
add_cards Add owned cards. Write collection.write
duplicate_cards Add another copy of an owned card. Write collection.write
edit_cards Edit owned card details. Write collection.write
replace_printing Replace an owned card’s printing. Write collection.write
move_cards Move owned cards between locations. Write collection.write
delete_cards Remove owned cards. Write collection.write
add_to_deck Add cards to a deck recipe. Write collection.write
remove_from_deck Remove cards from a deck recipe. Write collection.write
move_deck_board Move cards between deck boards. Write collection.write
delete_deck Delete a deck recipe and clear its physical cards’ deck location, or delete those cards with cascade. Write collection.write
list_mcp_recovery_points List saved snapshots from before collection changes. Read collection.read
restore_mcp_recovery_point Preview and restore a saved collection snapshot. Write collection.write
undo_last_mcp_change Undo the last agent change when its affected cards are unchanged. Write collection.write
search Search your collection for results an agent can reference. Read collection.read
fetch Read one of your collection search results by its ID. Read collection.read

Connected apps

  • While signed in, open Settings → Connected apps to see apps connected through OAuth, including their self-reported names, redirect hosts, access, creation dates, last use and tool calls in the last 30 days. App call counts are labeled combined because they cover all your connections for the same app registration. Counts cover today and the previous 29 UTC days, and include executed calls that fail or are retried. Usage records are kept for about 45 days. Counts start when usage recording is enabled; older calls are not reconstructed. Recording is best effort; unavailable counts are shown as unavailable, never zero. Last use also includes authenticated MCP discovery requests and may lag by up to a minute.
  • Choose Revoke and confirm to immediately stop that connection’s access and refresh tokens. Reconnecting requires your approval again. Personal access tokens are managed separately under Settings → Access tokens.
  • OAuth access tokens last one hour. Refresh tokens expire after 30 days without rotation. Active connections renew their approval window, up to one year after approval; 90 days without use also ends an approval. Dynamic client registrations renew during successful use and expire after 90 unused days. If refreshing stops working, reconnect in the client; an expired registration needs a new registration, and an expired or revoked approval needs consent again. Tomebound’s own app and hosted chat use first-party sessions rather than appearing in this list.

Personal access tokens

  • For headless or automated use without a browser sign-in, create a personal access token from the account section in settings while signed in.
  • Use it with the CLI or an agent by setting the TOMEBOUND_TOKEN environment variable.
  • Tokens carry read-only or read-and-write access and can be revoked at any time.
  • New tokens expire after 30 days by default; choose between 1 and 90 days. You can keep up to 20 active tokens. Last use updates at most once per hour. Older tokens keep their original expiry until you revoke them.

Collection chat

Ask natural-language questions and stage edits through the chat surface.

Ask questions

  • Use collection chat to ask about cards, prices, containers, tags, deck contents, and collection summaries. The three starter questions read your collection directly without waiting for AI or using your daily AI allowance. Creatures and multiple copies open matching collection filters; multiple copies means two or more copies of the same printing, finish, condition, and language in one location. The value starter shows up to ten cards ranked by price per copy. Questions about the most recently added or acquired card use its latest acquisition timestamp, while recently changed or moved questions use edit history instead.
  • Consult the Tome answers questions using the current collection and may return cards you can open in the app. While a response is being prepared, Consulting the collection appears with three stars; the stars stay still when reduced motion is enabled. For supported collection filtering requests, the reply includes view in collection instead of a results table. The link opens all matching cards with normal, editable collection filters, can be bookmarked, and works with browser Back. Queries that cannot be represented faithfully by collection filters keep their card results in chat.
  • Chat opens in a compact panel. On desktop, drag the Consult the Tome heading to move it and drag an edge or bottom corner to resize it. The panel stays inside the screen and remembers its position and size; temporarily shrinking the browser does not replace your saved dimensions. Closing chat preserves your unfinished message. The conversation and unfinished message survive reloads in the same tab while you stay signed in; pending previews are restored for up to ten minutes. Signing out or changing accounts clears that tab’s previous conversation. Reset chat appears after a conversation starts and asks before discarding pending proposals. Failed replies restore your draft unless you have already typed a new one.
  • Choose a suggested question to send it, or write your own message and choose Ask. Enter sends; Shift+Enter adds a new line. While a reply is on its way, Stop stops waiting without clearing the conversation or its previews. A reply that takes longer than two minutes, or a preview or apply that takes longer than 30 seconds, stops with a message so you can try again. If an apply's answer is lost, the change may still be applying: Tomebound refreshes your collection right away and again about 10 seconds later, and asks you to check it before applying again.
  • Collection chat requires signing in — opening it while signed out disables the message box and starter questions and offers Sign in to chat. On phones, opening chat leaves the keyboard closed until you tap the message box.
  • Plum identifies the Archivist's chat header, replies, and chat button icon, sharing the curated-intent hue of decks.

Preview edits

  • Chat never edits your collection directly: every change arrives as a preview that you apply yourself.
  • Previews appear as proposed amendments. Review each entry, then choose apply changes or Discard. A preview that removes cards asks you to confirm its summary first. With multiple entries, apply all changes applies the group after confirmation; discard all clears the pending previews. Applying one preview leaves the others usable, including other copies from the same stack or other rows of the same deck. If apply all finds previews that conflict, such as two that move more copies than a stack holds, it applies them one at a time and re-previews the ones an earlier change affected so you can review them again.
  • Chat only offers a removal when your message asks to remove, delete or sell something.
  • Exact card additions may ask for a printing when the request is ambiguous.

Before changes happen

  • Chat can suggest changes, but every edit waits for your approval.
  • Tomebound checks that you are still signed in and allowed to make the change before applying it.
  • Tomebound creates a recovery point before applying a chat change, and applied chat changes appear in History, where you can undo them.
  • Each question can use up to eight collection lookups, and replies are kept short, so very broad requests may be answered in part. Questions count toward a personal daily allowance and a shared daily limit; a question your personal allowance refuses does not count toward the shared limit.