SpellBook Finance
Magic: The Gathering card prices, movers, arbitrage, sealed box EV, and seller inventory tools.
Connect it
Settings → Connectors → Add custom connector
URL: https://api.spellbook-finance.com/mcpSettings → Apps & Connectors → Advanced → Developer mode
Create connector with URL: https://api.spellbook-finance.com/mcp{
"mcpServers": {
"mcp": {
"url": "https://api.spellbook-finance.com/mcp"
}
}
}claude mcp add --transport http mcp https://api.spellbook-finance.com/mcp{
"servers": {
"mcp": {
"type": "http",
"url": "https://api.spellbook-finance.com/mcp"
}
}
}127 tools, verified live
spellbook_guidesread-onlyFind a cataloged SpellBook Finance customer-agent guide for seller setup and onboarding, selling, pricing, sealed EV, or choosing a card or sealed-product strategy for a budget and workload. Use it when a customer asks how to make money with Magic, what to do with a bankroll or store credit, whether to open or resell sealed product, or which research route fits their goal. Returns each guide's pur
spellbook_skillread-onlyRead the step-by-step procedure SpellBook Finance wrote for a whole customer task, in full. getting-started takes a new seller from sign-in through supplies, bin labels, a first tracked card, and connected marketplaces. buy-loop covers inspecting buy facts and recording what happened. collection-buying covers screening a Marketplace or local Pokémon lot, the questions to ask the seller, per-name p
spellbook_pull_workread-onlyRead a page of SpellBook's current fulfillment work, grouped by marketplace order. Each order carries its tray slot and card lines with bin, printing, condition, and state, including blocked reasons and ship-by evidence when available. Use when a seller asks what to pull or pack. Read spellbook_skill for fulfilling-orders before coaching the workflow; follow nextCursor until hasMore is false befor
spellbook_buy_targetsread-onlyReturn a bounded source-order page of materialized TCGplayer-to-Card-Kingdom rows with an opaque nextCursor for complete traversal. Rows include printing identity, observed acquisition and cash quote prices, listed shipping, seller/quantity evidence, exit.quantityBuying (the copies Card Kingdom buys at the quoted price), maxCopies (the smaller of listed stock and exit.quantityBuying), the Card Kin
spellbook_buy_outcome_reportread-onlyScore every closed buy decision in one workspace against its immutable prediction and a fixed equal-weight printing basket. Includes unscored and abandoned counts, missing baseline evidence and small-sample limits. Uses submitted receipts; does not verify merchant orders or money.
spellbook_printings_searchread-onlyFind an exact card printing before recording a physical copy or forming a price. Searches by name, and narrows with `set:<code>` plus a collector number in the same query string, for example "Pikachu set:sv2a 025/165". Pokemon searches can filter English or Japanese catalog rows. Returns each printing with its product identity, game, language, set code, collector number, rarity and available finis
spellbook_moversread-onlyRead which card printings changed price the most over one window: daily, weekly, 30d or 90d. Returns gainers and losers with exact game, catalog product, language, finish and marketplace variant when the source provides them, plus current and previous prices, dollar and percent change, a canonical SpellBook Finance cardUrl, and run timestamps. Call this to answer "what is moving this week" instead
spellbook_box_ev_rankingsread-onlyRead sealed-product EV rankings with each box's modeled total EV, evRatio, pack standard deviation (packSD), N0 and breakEvenPct, defaulting to the highest evRatio first. Call it for "how many packs until opening is likely profitable" (N0), "how swingy is this box" (packSD, and swinginess, which is packSD divided by packEV) and "what share of packs beat the pack price" (breakEvenPct). N0 is the nu
spellbook_card_pricesread-onlyRead every price source SpellBook Finance holds for ONE printing, one row per source, each with its own label, price and timestamp. Sources can include TCGplayer Market, TCGplayer Low, Card Kingdom retail and buylist, CoolStuff, an eBay 90-day sold median, Cardmarket, ManaPool and CardTrader. Pokemon TCGplayer finish subtypes stay in separate rows. cardId is the exact printing id returned by spell
spellbook_card_buylistread-onlyRead dealer buy offers for ONE exact card product, preserving each offer's game, finish, subtype, language, condition, source product, source timestamp, cash and credit fields, quantity and missingFields. Use the catalog product id from spellbook_printings_search. Pokemon offers are English NM/New CoolStuffInc observations when present; no offer or missing field proves a dealer has no stock. This
spellbook_card_buylist_historyread-onlyRead the stored daily dealer buylist price series for ONE exact printing: one point per day with the Card Kingdom and Cardhoarder buylist price when SpellBook stored one, oldest day first, plus earliestDay, the first day SpellBook holds any stored row for that printing. Use the printing id from spellbook_printings_search. Call spellbook_card_buylist for current offers from every dealer SpellBook r
spellbook_pokemon_market_analyticsread-onlyRead exact identity scoped Pokemon market facts for ONE catalog product: language, finish, condition, independent retail fair value, observed supply depth, versioned SCORE factors and Limitless demand coverage. The response keeps qualified values null when source count or comparable history is missing, and names missingFields and limitations. It reports facts only; it does not rank cards, recommen
spellbook_pokemon_athread-onlyRead the latest Pokemon all-time-high facts for the retained daily snapshot. Rows preserve exact product identity, language, finish, variant, source date, previous ATH and history coverage. This is a facts-only read; unavailable or partial history stays explicit in availability, missingFields and limitations.
spellbook_pokemon_arbitrage_spreadsread-onlyRead bounded Pokemon acquisition and exit quote facts for exact product identity, preserving quote basis, currency, observation time, source reference, source URLs, comparisons, missingFields and limitations. This read compares observed sources; it does not rank opportunities, recommend a purchase, or execute a transaction.
spellbook_deck_contentsread-onlyRead one authenticated customer's exact owned and draft card contents for a deck. The response preserves game identity, entry ids, matched catalog identity, quantities, membership recovery count and Pokemon readiness checks. It reports facts only and does not edit a deck or infer missing cards.
spellbook_deck_import_limitlessImport one player's Pokemon decklist from one fixed Limitless tournament standings record into the seller's workspace. The workspace owner chooses the event, player, format and idempotency key; retries with the same key replay the first result or report an in-progress import. The tool does not accept URLs or credentials and returns source identity, matched and unmatched counts, and the imported de
spellbook_pokemon_metagame_overviewread-onlyRead observed Pokemon archetype coverage for one format from recent Limitless tournament decklists. The response preserves archetype facts, sample coverage, truncation, missingFields and limitations. It does not measure the whole player population or predict demand.
spellbook_pokemon_metagame_archetyperead-onlyRead observed Pokemon archetype and card facts for one format and exact archetype name from recent Limitless tournament decklists. The response preserves source coverage, card prices, truncation, missingFields and limitations. It reports observations and does not recommend a deck or purchase.
spellbook_pokemon_metagame_cardread-onlyRead observed Pokemon card demand facts for one exact catalog product, optionally narrowed to one format. The response preserves exact card identity, sample windows, counts, prices, coverage, missingFields and limitations. It reports observations and does not rank or recommend a card.
spellbook_inventory_bin_ensureRecord physically confirmed cards into one inventory bin, by stating the DESIRED TOTAL quantity of each exact printing that belongs in that bin. Existing live copies count toward that total, so only a missing difference is created. Calling it twice with the same numbers creates nothing the second time. Use it for the first cards a seller enters by hand, with no CSV and no scanner. Returns the crea
spellbook_inventory_import_csvImport a seller's own ManaBox export or TCGplayer inventory export into one workspace, the same import the SpellBook Finance web app runs. The server parses the CSV, resolves each row to an exact printing, preserves mapped location labels or assigns fallback bins, and creates one inventory copy per card. TCGplayer Pokémon and Riftbound rows require the catalog's exact game, provider product identi
spellbook_inventory_precon_importAdd one or more opened Commander precon decks to inventory as individual cards, the same Add Commander deck flow the SpellBook web app runs. The server reads the cached decklist for that TCGplayer product, creates one inventory copy per card at the exact deck printing, assigns bins, and splits the price paid across the cards. Returns the importId, how many copies were written, and the count placed
spellbook_purchase_incoming_recordRecord single cards the customer bought on a marketplace that have not arrived yet, one row per exact printing with the quantity and the price paid per copy. Each copy is written as pending receipt under one order, so it counts as incoming and cannot be listed or sold until it is received. Returns the order's acquisitionSource, the copy count, the total cost and the bins the copies will go into. U
spellbook_inventory_incomingread-onlyRead what a workspace has bought or saved that has not arrived yet, one group per marketplace order or precon deck import. Each group carries its acquisitionSource, a readable title, the copy and card counts, the total cost, the date it was recorded and the bins its copies are assigned to. Call this to answer what is still on the way, or to find the acquisitionSource to receive. It reports pending
spellbook_inventory_incoming_receiveMark every pending copy in the named orders or precon imports as received, which makes them owned inventory that can be listed and sold. Returns how many copies were received, their total cost and the bins they belong in. Call it when the customer says the package arrived and they counted the cards. Read spellbook_inventory_incoming first to get each acquisitionSource.
spellbook_ebay_publishcan modifyPublish owned copies from one workspace as live eBay listings, priced by a stated rule. Pass itemIds to publish one exact card. ALWAYS call it once with dryRun true and show the person the counts and the preflight before calling it again with dryRun false, because a live run creates real listings a real buyer can buy. Pricing anchors on market price, never on what the seller paid: multiplier 0.96
spellbook_ebay_repricecan modifyPreview or reprice existing live eBay listings in one seller workspace using owner-accepted saved rules or a market multiplier and optional floor. Read spellbook_agent_pricing_protection first. A workspace in saved_rules_only mode requires pricing saved_rules; the server uses its accepted rules. This is a one-run marketplace override: it changes current eBay asks, creates no listing, and saves no
spellbook_ebay_unpublishcan modifyEnd the live eBay listings for up to 25 exact copies, and keep each copy in inventory so it can be published again. Take Item ids from spellbook_inventory_items_query. Show the person which cards will come down and get a yes before calling, because a live listing ends at once. Returns one result per copy: unpublished, kept, no_listing, or failed.
spellbook_ebay_job_statusread-onlyRead one eBay bulk job by the jobId returned from spellbook_ebay_publish or spellbook_ebay_reprice. Both operations queue work, so call this before telling the person a listing was created or its ask changed. State planning, pending, uploading, processing or ingesting means the job is still running: call again after about a minute. State failed carries errorMessage, and each failures row carries a
spellbook_manapool_sync_previewread-onlyCompare one workspace's inventory against what is live on ManaPool, and return the exact changes a sync would make. Every action is listed with its kind: upsert to create or change a listing, delist to remove one, blocked where a cross-channel check refused it. Nothing is sent to ManaPool by this call. Show the person the summary and the counts, then call spellbook_manapool_sync_apply with the pre
spellbook_manapool_sync_applycan modifySend a previewed batch of changes to ManaPool, creating, repricing and removing real listings. Takes the previewToken from spellbook_manapool_sync_preview, which must still be valid. Applies at most maxActions in one call and returns remainingActionCount with nextActionCursor, so a full book takes several calls. Show the person the preview before the first call, not after.
spellbook_sealed_listing_previewread-onlyPreview one sealed listing on ManaPool or TCGplayer without publishing. Returns the proposed quantity and ask, any current offer, TCG publisher readback state, stock and intent revisions, and blockers. For TCGplayer, the first call may queue an exact seller-grid SKU read; call again after the paired extension finishes. After submitting, call preview again: publisher.state live confirms an offer, a
spellbook_sealed_listing_submitcan modifySubmit one sealed product listing to ManaPool or TCGplayer at the exact quantity and ask shown by spellbook_sealed_listing_preview. Pass the same channel and product arguments, plus proposed.stockRevision, proposed.askUsd, and intentRevision unchanged. ManaPool submits directly. TCGplayer queues the paired browser writer. A queued TCG write is pending until an exact seller-grid readback confirms i
spellbook_sealed_listing_pausecan modifyRemove one SpellBook-managed sealed listing from ManaPool or set its TCGplayer quantity to zero through the paired browser. Call spellbook_sealed_listing_preview first and pass its channel and intentRevision unchanged. A product with no saved SpellBook intent cannot be removed by this tool.
spellbook_tcg_listing_previewread-onlyShow which cards in one workspace would be listed on TCGplayer, and at what price, without changing anything. TCGplayer has no server-side publish, so the real path is a CSV a person uploads to the TCGplayer portal. Call this first and show the person the candidates and the totals, then call spellbook_tcg_listing_export only once they have agreed to upload the file.
spellbook_pokemon_tcg_staged_previewread-onlyPreview the TCGplayer CSV rows for 1 to 25 exact Pokemon physical inventory copies in one workspace. Call this after the seller selects the copies they want to inspect. It returns the existing staged-preview rows and CSV; it queues nothing, publishes nothing, and offers no publish or export follow-up.
spellbook_tcg_listing_exportcan modifyProduce the CSV a person uploads to the TCGplayer portal, and mark those copies as listed in SpellBook. Call it only after spellbook_tcg_listing_preview and only once the person has said they will upload the file. Hand them the CSV and tell them plainly that SpellBook now believes these copies are listed, so the upload has to happen.
spellbook_manapool_connection_statusread-onlyCheck whether this signed-in customer's ManaPool seller account is connected to SpellBook Finance. Call this before requesting a setup link and again after the seller finishes the setup form. It returns a masked account identifier and stored connection timestamps. If connected is false, call spellbook_manapool_connect_link.
spellbook_manapool_connect_linkread-onlyGet the SpellBook Finance page where the seller connects ManaPool, and guide them through it. Call spellbook_manapool_connection_status first. Save the seller's return address with spellbook_return_address_save before you hand over the link, because the page fills ManaPool's tax address from it. Hand the seller only this one link. The page itself links to ManaPool's token page, where a seller with
spellbook_item_photo_upload_linkread-onlyGet a link where the seller uploads their own phone photo of one inventory copy, so the next eBay listing shows that photo in place of catalog art. Use it when the seller wants buyers to see the real card, or when catalog art is wrong or missing. Take itemId from spellbook_inventory_items_query or spellbook_inventory_holdings. Give the seller the returned url and tell them to open it on their phon
spellbook_ebay_connection_statusread-onlyCheck whether this signed-in customer's eBay seller account is connected to SpellBook Finance. Call this before requesting a connect link and call it again after the seller approves eBay consent. It returns the stored account identity and token state plus current eBay seller-registration and selling-limit facts. If connected is false and account is null, call spellbook_ebay_connect_link. If status
spellbook_ebay_connect_linkread-onlyGet a one-click link the seller opens to connect their eBay account to SpellBook Finance. Call spellbook_ebay_connection_status first. The link is signed for this customer and expires, so fetch a fresh one when you hand it over. Give them the link and tell them eBay will ask them to sign in and approve the connection. Once they finish, call spellbook_ebay_connection_status again; the agent never n
spellbook_tcg_extension_pairingread-onlyRead whether this workspace has a paired TCGplayer browser extension, and get the SpellBook page where the seller pairs one. TCGplayer has no seller API, so SpellBook syncs TCGplayer listings and orders through a Chrome extension on the seller's own computer. Returns whether the account has extension access, the current session's status, when it was paired, when the extension last checked in, and
spellbook_channel_pricing_profilesread-onlyRead which saved pricing profile each marketplace channel prices from in one workspace. Automatic eBay listing and repricing price every card from the eBay channel's profile, so read this before a seller turns on automatic eBay listing. Returns the workspace's saved profiles by name with the active one marked, and for each channel the pinned profile, the profile automation actually prices from, an
spellbook_channel_pricing_profile_setPin one of the workspace's saved pricing profiles to one marketplace channel, or clear the pin with a null profileId. It is the same choice as the channel defaults card on the SpellBook pricing settings page. Read spellbook_channel_pricing_profiles first, and pin only a profile the seller named. Returns the full channel pricing read after the write, plus the channel's previous pin, so the change c
spellbook_agent_pricing_protectionread-onlyRead a workspace's saved-rule pricing authority before an eBay reprice. Returns current and accepted eBay rules, mode, source-change acceptance requirement, unresolved submission evidence, missingFields and limitations. Settling means earlier admitted marketplace writes may still finish. Only the owner can accept rules through the web app.
spellbook_ebay_price_limits_getread-onlyRead active and pending eBay fixed-baseline price limits, enforcement status and missing evidence. Call before preparing a new enrollment with spellbook_ebay_price_limit_enrollment_prepare. Expiry stops new admissions; earlier admitted writes may still finish.
spellbook_ebay_price_limit_enrollment_preparePrepare an account-wide enrollment proposal from explicit owner-selected bounds and times. Returns a durable header and coverage counts. Explain the quiet interval prerequisite before calling: controlled price admissions and relevant membership changes can invalidate discovery. Continue with spellbook_ebay_price_limit_enrollment_continue; the owner reviews and activates in the web app.
spellbook_ebay_price_limit_enrollment_getread-onlyRead one eBay price-limit enrollment's state, coverage counts, fingerprint and original expiry. Call after preparation or continuation. Read stored baselines with spellbook_ebay_price_limit_enrollment_pages; continue building with spellbook_ebay_price_limit_enrollment_continue.
spellbook_ebay_price_limit_enrollment_pagesread-onlyRead bounded stored pages of eBay enrollment identities, observed baselines, absolute bounds and exclusions. Call after spellbook_ebay_price_limit_enrollment_get. Follow nextCursor until null to inspect all stored pages; read the header again for overall completion.
spellbook_ebay_price_limit_enrollment_continueAdvance one bounded discovery step of an existing eBay enrollment and return its header. Read spellbook_ebay_price_limit_enrollment_get first for the current state version. The server chooses each discovery page; repeat from fresh readback while building, then ask the owner to review in the web app.
spellbook_ebay_pricing_restoration_preparePrepare a new exact eBay pricing approval from selected accepted source receipts. Returns eligible listing identities, typed conflicts and missing evidence. First read the source with spellbook_ebay_pricing_approval_get. The owner must choose manual automation and approve the new compensation in the web app; read its approval before spellbook_ebay_pricing_approval_execute.
spellbook_ebay_pricing_approval_preparePrepare an immutable eBay pricing batch from selected inventory items. Returns exact listing identities, executable USD cents, complete physical membership and approval state. Ask the owner to review the batch in the web app, then call spellbook_ebay_pricing_approval_get before execution.
spellbook_ebay_pricing_approval_getread-onlyRead one exact eBay pricing batch's immutable targets, owner approval state and per-listing submission and readback evidence. Call after preparation or execution. Use spellbook_ebay_pricing_approval_execute only after owner approval; keep unknown submissions distinct from observed prices.
spellbook_ebay_pricing_approval_executecan modifyExecute the frozen targets of an owner-approved exact eBay pricing batch. First prepare with spellbook_ebay_pricing_approval_prepare and read owner approval with spellbook_ebay_pricing_approval_get. Returns durable execution and per-listing outcome evidence; read the same operation again to inspect progress.
spellbook_sku_price_controlsread-onlyRead one seller SKU's exact minimum floor and exact-price lock by printing, finish and condition. Returns saved values, timestamps, all-marketplaces lock scope and whether the seller protected the lock from agent changes. Call it before changing a floor or lock, then read it again after a write.
spellbook_sku_minimum_floor_setSet one seller SKU's minimum sell price and return its saved readback. Identify the exact printing, finish and condition. A floor raises computed prices up to the floor; it does not make an exact ask and does not trigger repricing.
spellbook_sku_minimum_floor_clearClear one seller SKU's minimum floor by exact printing, finish and condition. Returns the saved controls readback, so the agent can confirm the floor is null.
spellbook_sku_exact_price_lock_setSet one seller SKU's unprotected exact-price lock and return its saved readback. Identify the exact printing, finish and condition. A seller-protected lock refuses agent changes. Call spellbook_sku_price_controls first to inspect protection. Saving a lock does not publish or trigger repricing.
spellbook_sku_exact_price_lock_clearClear one seller SKU's unprotected exact-price lock by exact printing, finish and condition. Seller-protected locks refuse agent removal. Call spellbook_sku_price_controls first to inspect protection; the saved readback confirms a successful clear with a null lock.
spellbook_pricing_profiles_listread-onlyList seller-created pricing profiles by name and active state, plus the resulting active profile id. Call it before choosing a profile for detail, update, activation or channel pinning.
spellbook_pricing_profile_getread-onlyRead one seller pricing profile's approved multiplier, floor, dollar offset, ordinary value bands and channel overrides, then report its active state and channel pin facts. Call it before an update or activation.
spellbook_pricing_profile_createCreate one seller pricing profile from a seller-selected name and explicit baseline multiplier and floor, with optional dollar offset and ordinary channel overrides. Returns saved profile and pin readback. It does not activate, publish or reprice.
spellbook_pricing_profile_updateUpdate selected seller-approved fields on one pricing profile and return saved profile and pin readback. Omitted fields stay unchanged. Null clears only a selected channel override field.
spellbook_pricing_profile_activateActivate one seller-selected pricing profile and return its saved readback plus resulting active profile id. The first profile remains inactive until this explicit call. Activation does not publish or trigger repricing.
spellbook_pricing_amendments_listread-onlyList bounded seller pricing amendments with selector, marketplace scope, absolute multiplier, protected band, enabled state, priority and timestamps. It returns a cursor plus missing evidence and limitations.
spellbook_pricing_amendment_getread-onlyRead one saved pricing amendment's selector, marketplace scope, absolute multiplier, optional protected band, enabled state, priority and timestamps. Use it before an update, preview or delete.
spellbook_pricing_amendment_createCreate one bounded seller pricing amendment from a selector, marketplace scope, absolute multiplier and optional protected band. Returns saved readback. The server retains its adaptive default internally; this tool has no demand behavior input and does not publish or reprice.
spellbook_pricing_amendment_updateUpdate selected fields on one saved pricing amendment and return saved readback. Omitted fields preserve existing values, including server-owned demand behavior. The update does not publish or trigger repricing.
spellbook_pricing_amendment_deletecan modifyDelete one saved pricing amendment by exact amendment id and return a deletion readback. This changes saved configuration and does not publish or trigger repricing.
spellbook_pricing_amendment_previewStart or run a bounded preview for one saved amendment or one seller-selected draft. Returns customer-safe per-channel impact counts and status evidence, with no raw inventory rows or demand telemetry. Preview is not publication.
spellbook_pricing_amendment_preview_statusread-onlyRead one pricing amendment preview job's bounded status and per-channel customer impacts. It returns counts, quantities, delta totals, timestamps, missing evidence and limitations. It never publishes or reprices.
spellbook_workspaces_listread-onlyList the authenticated customer's existing workspaces with workspaceId, name, membership role and status. Owner, admin and member roles are preserved. Discover a workspace before selecting it; this read creates no workspace or trial. When the list is empty, spellbook_workspace_create makes the first one.
spellbook_workspace_createCreate the signed-in seller's first workspace when spellbook_workspaces_list comes back empty. It makes a workspace the seller owns. A signup Store trial starts only when its flag is on and the free Seller cap is off for this workspace. When the seller already has a workspace, it returns the first one and creates nothing, so a repeated call is safe. It returns workspaceId, name, role, and created.
spellbook_store_setup_statusread-onlyRead one workspace's store setup facts and seller-activation projection: which setup facts are true, the current phase, nextAction and blockers, each channel's automation mode and meaning, and server evidence for the first verified eBay and ManaPool listings in autoListing. Use autoListing.ebay.firstVerifiedListing or autoListing.manapool.firstVerifiedListing to decide whether that channel reached
spellbook_marketplace_onboardingread-onlyRead how a seller onboards to one channel-lane marketplace and where this workspace's lane stands. It returns the venue's ordered onboarding steps with who does each step, what each needs, where it happens, and its sources, plus the venue's fees, seller levels, and accepted conditions. It also returns the workspace's lane: whether it exists and is enabled, whether SpellBook Finance holds the selle
spellbook_ebay_automation_setSet one workspace's eBay automation mode, which decides whether SpellBook lists and reprices on eBay by itself, whether that automation lists basic lands, and how many copies one listing may carry. This changes public eBay behavior for the workspace, only the workspace owner may call it, and the agent sets a mode only after the seller chose one. The modes: manual: Nothing lists or reprices on eBay
spellbook_manapool_automation_setSet one workspace's ManaPool automation mode, which decides whether SpellBook creates, updates, delists, and reprices ManaPool listings by itself. This changes public ManaPool behavior for the workspace, only the workspace owner may call it, and the agent sets a mode only after the seller chose one. The modes: manual: SpellBook creates no ManaPool listings and sends no quantity changes or delistin
spellbook_channel_lane_setSet one workspace's lane mode for one channel-lane marketplace, the switch that decides whether SpellBook reads the marketplace or changes listings there. This changes public marketplace behavior for the workspace, only the workspace owner may call it, and the agent sets a mode only after the seller chose one. It returns the same lane state as spellbook_marketplace_onboarding. The modes: off: the
spellbook_return_addressread-onlyRead the signed-in seller's saved return address: the name, street line, and city-state-ZIP line SpellBook prints on shipping labels, plus the other settings stored beside it. profile is null when the seller never saved one. Read it before spellbook_return_address_save, so the agent can show the seller what is on file.
spellbook_return_address_saveSave the return address the seller gave, which SpellBook prints on shipping labels and which store setup counts as returnAddressSaved. It replaces only the name, street, and city-state-ZIP lines and keeps every other saved setting. Only the workspace owner may call it, and only with an address the seller stated. A seller who does not want to share a home address in chat can type it on a SpellBook
spellbook_workspace_plan_statusread-onlyRead one workspace's Store plan and Seller cap status: tier, stored plan status, trialExpiresAt, sellerToolsUnlocked, and freeSellerCap's scope, observedAt, sellerSource, activeUnitCount, countIsExact, cap, headroom, overCap, enforcementEnabled, claimed, and transitionGraceExpiresAt. A free owner must explicitly choose one workspace with spellbook_free_seller_workspace_claim before free Seller acc
spellbook_free_seller_workspace_claimcan modifyClaim the one permanent free Seller allowance for a workspace the seller explicitly chose. Ask the seller to name the workspace from spellbook_workspaces_list and confirm that choice before this call. Never pick a workspace from list order or an active-workspace default. The signed-in person must own it. Re-read spellbook_workspace_plan_status after this call for the actual allowance and entitleme
spellbook_seller_plan_checkout_linkGet a Stripe checkout page for a seller-chosen Store plan on one workspace. Read spellbook_workspace_plan_status first. Skip checkout when sellerToolsUnlocked comes from an active Store plan, person-level Pro, or admin access. When freeSellerCap.sellerSource is free_cap, offer paid Store access only if the seller chooses it to list more than the free Seller cap of listed copies. Give the returned
spellbook_entitlementsread-onlyRead this authenticated customer's current Investor and Seller access. Flags are not proof of payment or enrollment.
spellbook_singles_buylist_spreadsread-onlyInvestigate Magic TCGplayer NM acquisitions against Card Kingdom buylist payout scenarios. Preserve source timestamps, finish, stock, grading scenarios, and queue degradation; spread is not net realized profit.
spellbook_japanese_sourcingread-onlyRead Japanese-market supply offers for the Japanese promo cohort from Mercari, Hareruya and Bigweb, each beside the comparison prices SpellBook holds on TCGplayer, ManaPool and eBay. Every row carries one exact supply offer with its printing identity, the merchant's own condition grade and its normalized equivalent, the native unit price with its currency, quantity, availability, and its own obser
spellbook_japan_source_scanread-onlyRead the latest bounded Japan sourcing cohort: English Riftbound cards sold in Japan (riftbound-jp), Japanese-language Magic promos (japanese-promos), or exact-language Pokemon cards (pokemon, pokemon-en, pokemon-ja). Returns every tracked target's actual observation time, verified offers, exact reference prices with price kinds, unresolved listing URLs and recorded blockers, source status and fre
spellbook_riftbound_japanese_comparablesread-onlyRead physical Japanese-language Riftbound observations, separate from English cards sold in Japan. Returns exact SKU language, finish, condition, price kind, source links, actual price capture timestamps, freshness policy, per-source eligible denominators and nullable acceptance rates. ManaPool is unsupported_game. Distinguishes unavailable, stale, completed eligible zero and accepted evidence. TC
spellbook_pricing_decision_explainread-onlyRead one seller listing's recorded pricing evidence for one marketplace. Returns the last recorded ask, market anchor, safe price effect, decision timestamps and whether the evidence is observed, recorded, projected or missing. Call this when a seller asks what price was saved or what evidence supports it, then use the seller controls tools when they want to inspect or change a setting. It never c
spellbook_credit_conversion_candidatesread-onlyRead CK credit-funded sealed acquisition candidates ranked by opening EV. Cash/credit opening multiples do NOT rank intact sealed resale cash profit. Credit is restricted purchasing power.
spellbook_credit_resale_assessmentread-onlyAssess up to ten exact sealed product lines as a CK-credit-funded intact resale scenario. Supply starting credit and explicit cost assumptions; omit unknown costs. EV judgment is permitted. Returns labeled cash estimates, credit allocation, capacity and missing evidence. Research only, no purchase.
spellbook_sealed_deal_boardread-onlyRead today's Sealed Deal Board rows with their age stamps, so you can answer "what is new since <date>" without diffing the whole board yourself. Each row carries firstSeenAt (the day the board first carried that product), firstSeenBasis, priceBeatenAt with priceBeatenFromUsd (the day its cheapest price fell at least 5% and at least $10 under its own trailing 30-day low), and recencyEventAt, which
spellbook_sealed_product_searchread-onlySearch sealed catalog identity and available offer records by a third-party listing's name, set and product type. catalogMatches covers boxes, packs and cases, returning exact product IDs, kind, physicalLanguage, form, contentsState, intact marketPrice with marketPriceObservedAt, coverage (priceState, modelState, evState, totalEv, missingInput), and a cached pokemonEvDisplay when available. A Poke
spellbook_sealed_product_offersread-onlyInspect one exact TCG product ID's sealed offers and their source times. Each offer includes the exact store listing, its local price, the crawl's actionability observation, and the selected exit comparable with its evidence date. Checkout shipping, tax, and available quantity are explicitly unknown until checked with the store. Opening EV is not intact resale value. Empty title or null computedAt
spellbook_support_reportStore one minimal customer failure report. Generate a fresh ULID submissionId and reuse the exact request for retries within 24 hours. Reports are accepted only after storage. No raw diagnostics, conversations, secrets, or customer identity. Available to authenticated Free customers, including paid-access denials. A report reaches no person.
spellbook_agent_gap_reportAfter finishing the task, ask the person whether they consent to send one bounded capability-gap report to SpellBook. Call this tool only after an explicit yes for this report and set consentToShare to true. Use it when a needed field was null, you guessed a number because no tool supplied it, you wished a tool existed, or you abandoned a path. It returns no task data and fixes nothing. Generate a
spellbook_customer_evidence_recordAppend one immutable consideration, realized outcome, or work observation to the selected workspace. A receipt proves storage only. It does not verify source providers, inspected card truth, profit, or completed work.
spellbook_customer_evidence_getread-onlyRead one private immutable evidence receipt from the selected workspace. Returned observations and source fields remain submitted evidence.
spellbook_customer_evidence_listread-onlyList a bounded page of private evidence receipts from the selected workspace, optionally filtered by receipt kind, parent, or item ID.
spellbook_collection_buying_recordRecord one seller-agreed collection deal or a later receipt, count correction, evaluation, seller response, reported payment/refund, return/title disposition, dispute, closure, or evidence-backed reopening. Read spellbook_skill(name: collection-buying) first. A submission is an immutable, owner-scoped receipt; retry its exact submissionId and payload after an uncertain result. It records evidence
spellbook_collection_buying_getread-onlyRead the current snapshot or one immutable revision of a collection deal owned by the selected workspace. The response includes the selected revision's command and receiptId so submitted terms and corrections can be audited. Read the collection-buying skill before interpreting lifecycle state.
spellbook_collection_buying_listread-onlyList a bounded page of collection deals in the selected seller workspace. Follow nextCursor to enumerate the full set, then read a deal for its latest or historical revision and source command.
spellbook_inventory_items_queryread-onlyRead one private page of existing physical Items matching an exact acquisition source, exact bins, or printing, finish and condition groups. Coordinate filters narrow source or group results.
spellbook_inventory_holdingsread-onlyRead one page of what a seller's own workspace holds, aggregated to one row per printing, finish and condition. Each row carries card name, set code, collector number, variant label, quantity owned, quantity available, the current unit market price and the resolved minimum-sell floor with the tier that produced it. Call this to answer what is in the collection, what it is worth, what is already li
spellbook_sealed_portfolioread-onlyRead a seller's sealed boxes, packs and cases, with quantity, cost basis, market price, heldQuantity, openIntentQuantity, acquisitionSource and workspaceId for each purchase entry. Call this to reconcile physical sealed stock before listing or opening it. Recovered components can have unknown allocated cost basis and an approximate recovery date. A hold differs from an actual opening; call spellbo
spellbook_sealed_portfolio_recordRecord one sealed acquisition the customer has already made, so the buy can be scored later against what it cost. Names the catalog boxId, the quantity, the unit price paid as a decimal string, and the acquisition date. Use it after a seller buys a box, pack or case found through spellbook_sealed_deal_board. It records a purchase that happened; it never buys anything and moves no money.
spellbook_sealed_portfolio_hold_setMark every still-sealed unit in one purchase entry as a long-term hold, or release that hold. A hold keeps physical inventory and market value but excludes those units from sealed listing. Read spellbook_sealed_portfolio before and after to check heldQuantity.
spellbook_sealed_portfolio_open_intent_clearClear the plan to open every still-sealed unit in one purchase entry. Call this when spellbook_sealed_portfolio shows openIntentQuantity for stock the seller intends to keep sealed; then read the portfolio again. This preserves the units and any holding mark.
spellbook_sealed_portfolio_receiveMark one incoming sealed display purchase entry as physically received after the seller confirms its arrival. Call spellbook_sealed_portfolio first to identify the incoming entry, then read it again to confirm owned status. This preserves its holding mark and opening plan.
spellbook_sealed_portfolio_opencan modifyRecord that an exact quantity of sealed boxes or packs has already been physically opened. Use the entryId from spellbook_sealed_portfolio and read the returned counts; the same entryId and quantity safely replay after a timeout. The historical opening date stays unknown, and recordedAt means when SpellBook recorded the status. No singles are created.
spellbook_sealed_recovered_component_recordRecord sealed packs recovered from already-opened products, without adding a new purchase or guessing their share of the parent product's cost. This bounded intake accepts the confirmed Aetherdrift Box Topper and Modern Horizons 3 Collector Booster Sample Pack products. It records zero incremental cash, keeps parent basis unallocated, marks recovery timing approximate, and returns persisted-row re
spellbook_sealed_intent_defaultsread-onlyRead a workspace's future sealed-purchase open or hold defaults. Call this before changing how extension-captured products are classified. These rows affect future captures only; spellbook_sealed_portfolio reports marks already on physical units.
spellbook_sealed_intent_default_setSet a workspace rule for future extension-captured sealed purchases. An exact game and productType wins over wildcard rules. Read spellbook_sealed_intent_defaults before and after; existing units keep their current marks.
spellbook_sale_recordcan modifyRecord a sale of cards the seller's workspace holds that happened outside SpellBook's order intake, such as a local game store buy, an in-person trade, or a one-off marketplace sale SpellBook did not import. Names the exact printing, finish, condition, quantity and unit sale price. It marks that many copies sold, oldest first, closes the position so spellbook_inventory_holdings and spellbook_buy_o
spellbook_alerts_listread-onlyRead every price alert and buylist watch saved in one workspace, one row per alert with its type, asset, direction and threshold when it has them, status, trigger fields and last matched keys. Filter by status or alertType. Call it before spellbook_alert_create to see what the seller already watches, and use the alertId on a row with spellbook_alert_delete. It reports saved alerts and does not eva
spellbook_alert_createCreate one alert in a workspace and return the saved alert. alertType buylist_watch watches dealer buy offers for the whole inventory (buylistWatchScope inventory) or for one printing and finish (buylistWatchScope card); buylistWatchCondition crossed also needs direction and threshold in USD. Every other alertType watches one card or box and needs assetType, assetKey, assetName, isFoil, direction
spellbook_alert_deletecan modifyDelete one saved alert by exact alertId, taken from spellbook_alerts_list, and return success. The alert stops watching at once. Read the list first and confirm with the person which alert to remove, because this tool cannot restore it.
spellbook_buylist_compareread-onlyRead one page of a workspace's sellable inventory, one group per printing, finish and condition, with the per-unit net at each of seven destinations: Card Kingdom cash, Card Kingdom credit, Star City Games cash, ManaPool, TCGplayer, TCGplayer Direct and eBay. Each destination carries gross, fees, net, price source, observation time, vendor minimum, quantity the vendor is buying and a skip reason w
spellbook_collection_receiptread-onlyRead one receipt for the cards a workspace holds: total copies, distinct printings, printings held two or more times, copies with a market price and their market USD total, copies and market USD in each value band, copies and market USD at one dollar and up, the market USD of the most valuable copies up to topUnitsCap, and the top rows by market value with card name, set, collector number, finish,
spellbook_order_proof_photosread-onlyRead the packing proof photos for ONE order: a view link for each pull line the packer photographed, with card name, finish, condition and capture time, plus the order's lines that have no photo. Use it to answer whether an order's cards were photographed before shipping, or to gather evidence for a dispute. Photos come from the packer's own camera in the pull flow. This tool only reads them and c
spellbook_repeat_buyersread-onlyRead which of the signed-in seller's buyers ordered more than once, across every channel SpellBook syncs orders from, and what happened after a free card shipped in an order. Returns overview counts and shares, weekly returning-order shares overall and per channel, buyerList with each repeat buyer's display name, channels, order count, spend and first and last order dates, and recipients with each
spellbook_returned_package_lookupread-onlyFind shipped orders by marketplace order id, order label, tracking number, pull session id, or part of a buyer name or street line, and read each order's shipment facts with its newest return case. Use it when a package came back to the seller, such as a USPS return to sender, before calling spellbook_returned_package_record. Each match carries sessionId, marketplace, externalOrderId, buyerName, s
spellbook_returned_package_recordRecord that shipped packages came back to the seller unopened, such as a USPS return to sender. Pass the sessionId of each order from spellbook_returned_package_lookup and one returnReason for the batch. Each order gets one return case, held with every line unconfirmed. A reship starts from that held case. It refunds nothing, changes no inventory and touches no marketplace. Returns one row per ses
spellbook_returned_package_reship_preparePrepare the reship of returned packages recorded with spellbook_returned_package_record. Pass each caseId, with correctedDestination when the address on file is wrong or missing. Returns one row per case with the destination address, card count, computed weight in ounces and shipping bucket (pwe, parcel or international). The seller buys a new label from that row. It buys no label, moves no money
spellbook_returned_package_reship_trackingRecord the tracking number of the new label for a reshipped return. The case then resolves with resolution reship. Pass each caseId prepared with spellbook_returned_package_reship_prepare and the tracking number of the label the seller bought. Returns one row per case with status recorded, already_recorded or failed, and an errorCode when it failed. It buys no label, sends nothing to a marketplace
spellbook_inventory_location_confirmcan modifySave up to 25 existing Item bin locations after comparing each expectedBins observation with current state. A fresh Item query is required before and after the save.
Alternatives in Finance & Payments
Compare →AEAllRatesToday exchange rates (hosted)B
Live FX + official central-bank rates, 110+ sources. Hosted, keyless, nothing to install.
SAP MCP ServerB
Solana-native MCP gateway for SAP, DeFi tools, SNS identity, and x402 payments.
TMTickDB Market DataB
Real-time & historical market data: forex, stocks, crypto, indices, metals, K-line, quotes
FIFiatDockB
MCP marketplace: AI agents buy services from other agents per call in USDC, plus a bank cash-out
KSKenwea — Sandbox Attestation & Agent MarketplaceB
Signed sandbox verdicts on any artifact, plus an agent marketplace. No key, no signup, no payment.
CHChurnkeyB
Read and manage Churnkey cancel flows, retention metrics, and payment recovery