SpellBook Finance
REMOTE · API.SPELLBOOK-FINANCE.COM · SCANNED SEP 28
Magic: The Gathering card prices, movers, arbitrage, sealed box EV, and seller inventory tools.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security57
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (spellbook_ebay_publish). See how to fix → View diagnostics → Fail
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability85
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 21414 tokens (~131/item across 163 items; 100 tools + 63 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management8
- Stability check failed: schema churn in the 3 days we've observed: 1 tool removals, 0 breaking changes, 0 auth/transport breaks, 36 additions. See how to fix → Fail
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 4 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 102 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities60
- Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28. See how to fix → Fail
How do I install the SpellBook Finance MCP server?
SpellBook Finance is a hosted endpoint at https://api.spellbook-finance.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · api.spellbook-finance.com
claude mcp add --transport http com-spellbook-finance-mcp 'https://api.spellbook-finance.com/mcp'
{
"mcpServers": {
"com-spellbook-finance-mcp": {
"url": "https://api.spellbook-finance.com/mcp"
}
}
} {
"servers": {
"com-spellbook-finance-mcp": {
"type": "http",
"url": "https://api.spellbook-finance.com/mcp"
}
}
} [mcp_servers.com-spellbook-finance-mcp] url = "https://api.spellbook-finance.com/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"com-spellbook-finance-mcp": {
"type": "remote",
"url": "https://api.spellbook-finance.com/mcp",
"enabled": true
}
}
} openclaw mcp add com-spellbook-finance-mcp --url 'https://api.spellbook-finance.com/mcp' --transport streamable-http
mcp_servers:
com-spellbook-finance-mcp:
url: "https://api.spellbook-finance.com/mcp" {
"McpServers": {
"com-spellbook-finance-mcp": {
"Transport": "http",
"Url": "https://api.spellbook-finance.com/mcp"
}
}
} assistant mcp add com-spellbook-finance-mcp -t streamable-http -u 'https://api.spellbook-finance.com/mcp'
{
"mcpServers": {
"com-spellbook-finance-mcp": {
"type": "http",
"url": "https://api.spellbook-finance.com/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 28 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 27 Sept 26 +1
- A breaking change shipped without a version bump: still 0.1.0 ▼ security
- New tool “spellbook_sealed_portfolio_open”, which the server declares destructive security
- Tool “spellbook_japan_source_scan” rewrote its description, which is the text the model reads security
- Tool “spellbook_printings_search” rewrote its description, which is the text the model reads security
- Tool “spellbook_sealed_listing_pause” rewrote its description, which is the text the model reads security
- Tool “spellbook_sealed_listing_preview” rewrote its description, which is the text the model reads security
- Tool “spellbook_sealed_listing_submit” rewrote its description, which is the text the model reads security
- Tool “spellbook_sealed_portfolio” rewrote its description, which is the text the model reads security
- “spellbook_sealed_listing_submit” added a required parameter “expectedAskUsd”, so existing callers break ▼ functional
- New resource “japanese-pokemon-sealed-box-shapes” functional
- New resource “japanese-pokemon-single-language-prices” functional
- New resource “mercari-japan-pokemon-landed-costs” functional
- New tool “spellbook_sealed_recovered_component_record” functional
- “spellbook_pokemon_arbitrage_spreads” added an optional parameter “cohortId” cosmetic
- “spellbook_pokemon_arbitrage_spreads” added an optional parameter “importChargesUsd” cosmetic
- “spellbook_pokemon_arbitrage_spreads” added an optional parameter “importDutyRate” cosmetic
- “spellbook_pokemon_arbitrage_spreads” added an optional parameter “inboundShippingUsd” cosmetic
- “spellbook_pokemon_arbitrage_spreads” added an optional parameter “otherAcquisitionUsd” cosmetic
- “spellbook_pokemon_arbitrage_spreads” added an optional parameter “otherSellingUsd” cosmetic
- “spellbook_pokemon_arbitrage_spreads” added an optional parameter “outboundShippingUsd” cosmetic
- “spellbook_pokemon_arbitrage_spreads” added an optional parameter “proxyFeeUsd” cosmetic
- “spellbook_pokemon_arbitrage_spreads” added an optional parameter “sellingFeeRate” cosmetic
- “spellbook_pokemon_arbitrage_spreads” added an optional parameter “sellingFixedFeeUsd” cosmetic
- “spellbook_printings_search” added an optional parameter “language” cosmetic
- “spellbook_sealed_listing_pause” added an optional parameter “channel” cosmetic
- “spellbook_sealed_listing_preview” added an optional parameter “channel” cosmetic
- “spellbook_sealed_listing_submit” added an optional parameter “channel” cosmetic
- “spellbook_japan_source_scan” reworded the description of “cohortId” cosmetic
- “spellbook_sealed_listing_pause” reworded the description of “idempotencyKey” cosmetic
- “spellbook_sealed_listing_preview” reworded the description of “takeover” cosmetic
- “spellbook_sealed_listing_submit” reworded the description of “idempotencyKey” cosmetic
- “spellbook_sealed_listing_submit” reworded the description of “takeover” cosmetic
- “spellbook_sealed_portfolio_hold_set” reworded the description of “entryId” cosmetic
- 26 Sept 26 0
- New tool “spellbook_sealed_listing_pause”, which the server declares destructive security
- New tool “spellbook_sealed_listing_submit”, which the server declares destructive security
- Tool “spellbook_sealed_portfolio” rewrote its description, which is the text the model reads security
- Tool “spellbook_sealed_product_search” rewrote its description, which is the text the model reads security
- Schema quality: 15971 → 18801 ▼ functional
- Stability: unverified → 0.03 ▲ functional
- New tool “spellbook_card_buylist” functional
- New tool “spellbook_deck_contents” functional
- New tool “spellbook_deck_import_limitless” functional
- New tool “spellbook_experiment_cross_channel” functional
- New tool “spellbook_experiment_eligibility” functional
- New tool “spellbook_pokemon_arbitrage_spreads” functional
- New tool “spellbook_pokemon_ath” functional
- New tool “spellbook_pokemon_market_analytics” functional
- New tool “spellbook_pokemon_metagame_archetype” functional
- New tool “spellbook_pokemon_metagame_card” functional
- New tool “spellbook_pokemon_metagame_overview” functional
- New tool “spellbook_sealed_intent_default_set” functional
- New tool “spellbook_sealed_intent_defaults” functional
- New tool “spellbook_sealed_listing_preview” functional
- New tool “spellbook_sealed_portfolio_hold_set” functional
- New tool “spellbook_sealed_portfolio_open_intent_clear” functional
- New tool “spellbook_sealed_portfolio_receive” functional
- 25 Sept 26 65
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 28 Sept 2026 · Probed https://api.spellbook-finance.com/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=api.spellbook-finance.com | CN=Amazon RSA 2048 M04,O=Amazon,C=US | 4 Sept 2026 | 20 Mar 2027 | RSA 2048 | SHA256-RSA | 8a4cdac2839a106c4a04a281455821c |
| SANs: api.spellbook-finance.com | ||||||
| CN=Amazon RSA 2048 M04,O=Amazon,C=US (CA) | CN=Amazon Root CA 1,O=Amazon,C=US | 23 Aug 2022 | 23 Aug 2030 | RSA 2048 | SHA256-RSA | 773124f2a952e3ed18a58bdb85d1bc0ce5f27 |
| CN=Amazon Root CA 1,O=Amazon,C=US (CA) | CN=Starfield Services Root Certificate Authority - G2,O=Starfield Technologies\, Inc.,L=Scottsdale,ST=Arizona,C=US | 25 May 2015 | 31 Dec 2037 | RSA 2048 | SHA256-RSA | 67f944a2a27cdf3fac2ae2b01f908eeb9c4c6 |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of api.spellbook-finance.com. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| spellbook-finance.com. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://api.spellbook-finance.com/mcp | Verified | 200 | |
| http (plaintext) | http://api.spellbook-finance.com/mcp | HTTPS enforced |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
spellbook_pricing_amendment_delete ~84
Delete one saved pricing amendment by exact amendment id and return a deletion readback. This changes saved configuration and does not publish or trigger repricing.
| Name | Type | Req | Description |
|---|---|---|---|
| amendmentId | string | yes | The exact saved amendment id from a prior amendment read. Required. |
| workspaceId | string | yes | The workspace the seller selected. The caller must own it. Required. |
No output schema declared.
No examples provided.
spellbook_pricing_amendment_get ~90
Read 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.
| Name | Type | Req | Description |
|---|---|---|---|
| amendmentId | string | yes | The exact saved amendment id from a prior amendment read. Required. |
| workspaceId | string | yes | The workspace the seller selected. The caller must own it. Required. |
No output schema declared.
No examples provided.
spellbook_pricing_amendment_preview ~123
Start 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.
| Name | Type | Req | Description |
|---|---|---|---|
| amendment | object | – | Draft amendment; provide this or amendmentId. |
| amendmentId | string | – | The exact saved amendment id from a prior amendment read. Required. |
| channels | array | – | Optional marketplace channels to preview. |
| workspaceId | string | yes | The workspace the seller selected. The caller must own it. Required. |
No output schema declared.
No examples provided.
spellbook_pricing_amendment_preview_status ~98
Read 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.
| Name | Type | Req | Description |
|---|---|---|---|
| jobId | string | yes | The preview job id returned by spellbook_pricing_amendment_preview. Required. |
| workspaceId | string | yes | The workspace the seller selected. The caller must own it. Required. |
No output schema declared.
No examples provided.
spellbook_pricing_amendment_update ~167
Update 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.
| Name | Type | Req | Description |
|---|---|---|---|
| amendmentId | string | yes | The exact saved amendment id from a prior amendment read. Required. |
| enabled | boolean | – | Replacement enabled state. |
| marketplaceScope | – | – | Replacement marketplace scope. |
| mode | object | – | Replacement absolute multiplier and optional protected band. |
| name | string | – | Replacement seller-selected name. |
| notes | – | – | Replacement notes; null clears notes. |
| priority | integer | – | Replacement precedence priority. |
| selector | object | – | Replacement bounded selector. |
| workspaceId | string | yes | The workspace the seller selected. The caller must own it. Required. |
No output schema declared.
No examples provided.
spellbook_pricing_amendments_list ~114
List 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.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | Opaque cursor from a prior list response. Omit for the first page. |
| limit | integer | – | Maximum amendments to return, 1 to 100. Omit for 50. |
| workspaceId | string | yes | The workspace the seller selected. The caller must own it. Required. |
No output schema declared.
No examples provided.
spellbook_pricing_decision_explain ~165
Read 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 claims a remote marketplace ask is current without a remote observation timestamp.
| Name | Type | Req | Description |
|---|---|---|---|
| channel | string | yes | Which marketplace listing to explain. Required, because the same copy carries a different ask per channel. |
| itemId | string | yes | The exact Item id, from a prior spellbook_inventory_items_query. Required. |
| workspaceId | string | yes | The workspace that owns the listing. Required. |
No output schema declared.
No examples provided.
spellbook_pricing_profile_activate ~92
Activate 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.
| Name | Type | Req | Description |
|---|---|---|---|
| profileId | string | yes | The exact saved pricing profile id from a prior pricing profile read. Required. |
| workspaceId | string | yes | The workspace the seller selected. The caller must own it. Required. |
No output schema declared.
No examples provided.
spellbook_pricing_profile_create ~151
Create 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.
| Name | Type | Req | Description |
|---|---|---|---|
| channelOverrides | object | – | Seller-approved overrides by marketplace channel. Omit when none are needed. |
| floor | number | yes | Explicit baseline floor in USD. Required. |
| marketOffsetUsd | number | – | Optional baseline dollar adjustment. |
| mult | number | yes | Explicit baseline market multiplier. Required. |
| name | string | yes | Seller-selected profile name. Required. |
| workspaceId | string | yes | The workspace the seller selected. The caller must own it. Required. |
No output schema declared.
No examples provided.
spellbook_pricing_profile_get ~94
Read 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.
| Name | Type | Req | Description |
|---|---|---|---|
| profileId | string | yes | The exact saved pricing profile id from a prior pricing profile read. Required. |
| workspaceId | string | yes | The workspace the seller selected. The caller must own it. Required. |
No output schema declared.
No examples provided.
spellbook_pricing_profile_update ~159
Update 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.
| Name | Type | Req | Description |
|---|---|---|---|
| channelOverrides | object | – | Selected per-channel overrides; omit to preserve all, null to clear one channel entry. |
| floor | number | – | Replacement baseline floor in USD. |
| marketOffsetUsd | number | – | Replacement baseline dollar adjustment. |
| mult | number | – | Replacement baseline multiplier. |
| name | string | – | Replacement seller-selected profile name. |
| profileId | string | yes | The exact saved pricing profile id from a prior pricing profile read. Required. |
| workspaceId | string | yes | The workspace the seller selected. The caller must own it. Required. |
No output schema declared.
No examples provided.
spellbook_pricing_profiles_list ~68
List 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.
| Name | Type | Req | Description |
|---|---|---|---|
| workspaceId | string | yes | The workspace the seller selected. The caller must own it. Required. |
No output schema declared.
No examples provided.
spellbook_printings_search ~235
Find 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 finishes. Read this first, because a card name alone does not identify a printing, and a wrong printing values the wrong card.
| Name | Type | Req | Description |
|---|---|---|---|
| game | string | – | Restrict the search to one game. Omit to search Magic, the default. |
| language | string | – | Restrict Pokemon results to English or Japanese catalog rows. Omit when language is unknown. |
| page | integer | – | Page number of results, 1 to 20. Omit for the first page. |
| q | string | yes | Card name to search, optionally narrowed with `set:<code>` plus a collector number in the same string, e.g. "sol ring set:c21 263". Required. |
No output schema declared.
No examples provided.
spellbook_pull_work ~216
Read 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 before summarizing the full returned workset. Use pending lines for the shared bin walk, then verify and pack each order separately.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | Opaque nextCursor from the previous page. Pass it unchanged to continue; omit for the first page. |
| limit | integer | – | Maximum complete order groups to return on this page, from 1 to 50. Omit for 20. |
| marketplace | string | – | Filter to one marketplace, or use all for the combined bin walk. Omit for all. |
| workspaceId | string | yes | The seller-owned workspace to read, from spellbook_workspaces_list. Required. |
No output schema declared.
No examples provided.
spellbook_purchase_incoming_record ~300
Record 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. Use it right after the customer completes a marketplace checkout for singles found through spellbook_buy_targets or spellbook_singles_buylist_spreads. It never buys anything and moves no money. A card already in hand goes through spellbook_inventory_bin_ensure instead. When the package arrives, call spellbook_inventory_incoming_receive with the returned acquisitionSource.
| Name | Type | Req | Description |
|---|---|---|---|
| marketplace | string | yes | Where the order was placed. Required. Use other for any marketplace not listed. |
| orderRef | string | yes | The marketplace's order number from the checkout confirmation. Required. The same order number groups every copy for receiving. |
| rows | array | yes | The order's lines, one per exact printing, condition and finish. Required, at least one. |
| sellerName | string | – | The seller's store name on the marketplace, when the checkout shows one. Shown beside the order in the incoming list. |
| workspaceId | string | yes | The workspace that bought the cards, from spellbook_workspaces_list. Required; writes only to this workspace. |
No output schema declared.
No examples provided.
spellbook_return_address ~78
Read 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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
spellbook_return_address_save ~244
Save 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 page, which the limits name, so offer that page before you ask for the address. Call spellbook_store_setup_status afterwards to confirm returnAddressSaved.
| Name | Type | Req | Description |
|---|---|---|---|
| cityStateZip | string | yes | One line with city, state, and ZIP code, such as Springfield, IL 62701, exactly as the seller gave it. Required. |
| name | string | yes | The name on the return address, such as the seller's name or store name, exactly as the seller gave it. Required. |
| street | string | yes | One street line, such as a house number and street, exactly as the seller gave it. Required. |
| workspaceId | string | yes | The workspace whose setup this address completes. The caller must own it. Required. |
No output schema declared.
No examples provided.
spellbook_riftbound_japanese_comparables ~124
Read 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. TCG Market is a provider statistic, not a completed sale or guaranteed resale proceeds. asOf is query time. An empty result never implies a market price of zero or proves market-wide coverage.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
spellbook_sale_record ~478
Record 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_outcome_report reflect it, and pulls those copies off every marketplace where they are still live. Returns the sold item ids and the holding after the sale.
| Name | Type | Req | Description |
|---|---|---|---|
| binId | string | – | Sell only copies from this bin. Omit to take the oldest copies from any bin. |
| buyerName | string | – | The buyer's name as the customer stated it. Optional. |
| condition | string | yes | The condition of the sold copies, matching how they were recorded. Required. |
| finish | string | yes | The finish of the sold copies, matching the finish recorded in inventory. Pokemon supports nf (Normal/Unlimited), fo (Holofoil), rh (Reverse Holofoil), 1e (1st Edition) and 1e-fo (1st Edition Holofoi… |
| marketplace | string | yes | Where the sale happened. in_person covers a store buy or a trade. Required. |
| note | string | – | A free-text note stored with the sale. Optional. |
| occurredAt | string | – | When the sale happened, as an ISO-8601 timestamp. Omit to use the time of this call. |
| orderId | string | yes | A stable reference for this sale, such as the buyer's order number or a receipt number. Required. A second call with the same orderId for the same printing, finish and condition returns the first sal… |
| productId | string | yes | The exact printing id, from spellbook_printings_search or spellbook_inventory_holdings. Required; a wrong id sells the wrong card. |
| qty | integer | yes | How many copies sold. Required. |
| salePricePerUnit | number | yes | Price received PER COPY in USD, before any fee. Not the order total. Required. |
| workspaceId | string | yes | The workspace that held the sold copies, from spellbook_workspaces_list. Required. |
No output schema declared.
No examples provided.
spellbook_sealed_deal_board ~175
Read 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 is the later of the two. Optionally filter to one game; omit game to include every available game. Filter and compare these yourself; this returns facts and ranks nothing by recency.
| Name | Type | Req | Description |
|---|---|---|---|
| game | string | – | Restrict rows to one game: mtg, riftbound or pokemon. Omit to include all games. |
No output schema declared.
No examples provided.
spellbook_sealed_intent_default_set ~138
Set 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.
| Name | Type | Req | Description |
|---|---|---|---|
| game | string | yes | The game to match, or * for every game. Required. |
| intent | string | yes | The capture intent: open or hold. This does not physically open or list stock. Required. |
| productType | string | yes | The sealed product type to match, or * for every type. Required. |
| workspaceId | string | yes | The workspace whose rule to set. Required. |
No output schema declared.
No examples provided.
spellbook_sealed_intent_defaults ~74
Read 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.
| Name | Type | Req | Description |
|---|---|---|---|
| workspaceId | string | yes | The workspace whose defaults to read. Required. |
No output schema declared.
No examples provided.
spellbook_sealed_listing_pause ~238
Remove 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.
| Name | Type | Req | Description |
|---|---|---|---|
| boxId | string | yes | The exact TCGplayer sealed product id from the portfolio row. Required. |
| channel | string | – | Marketplace whose managed listing should be removed. Defaults to manapool. |
| expectedIntentRevision | integer | yes | The non-null intentRevision from a fresh spellbook_sealed_listing_preview. Required. |
| game | string | – | The product game. Defaults to mtg. |
| idempotencyKey | string | yes | A unique request key for this removal, such as a new UUID. If the result is uncertain, preview current state before deciding on another pause. Required. |
| kind | string | yes | The sealed kind from the same portfolio row. Required. |
| language | string | – | The product language code. Defaults to EN. |
| workspaceId | string | yes | The workspace that owns the listing. Required. |
No output schema declared.
No examples provided.
spellbook_sealed_listing_preview ~349
Preview 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, and removed confirms a zero-quantity removal. Pass this preview's channel, ask, and revisions to spellbook_sealed_listing_submit.
| Name | Type | Req | Description |
|---|---|---|---|
| boxId | string | yes | The TCGplayer product id of the sealed product, the boxId on a spellbook_sealed_portfolio row. Required. |
| cap | integer | – | The most units to offer at once. Omit to offer every eligible unit. |
| channel | string | – | Marketplace to preview. Defaults to manapool. |
| fixedPriceUsd | number | – | A fixed ask in USD for every unit. Omit to list at the product's current market price. |
| game | string | – | The game of the product. Defaults to mtg. |
| kind | string | yes | The sealed kind, the kind on the same spellbook_sealed_portfolio row. Required, because units are counted by kind and boxId together. |
| language | string | – | The product language code, such as EN or JA. Defaults to EN. |
| takeover | boolean | – | True adopts a listing on the selected marketplace that SpellBook did not create. Defaults to false; pass true only after the person agrees. |
| workspaceId | string | yes | The workspace that holds the sealed units, from spellbook_workspaces_list. Required. |
No output schema declared.
No examples provided.
spellbook_sealed_listing_submit ~449
Submit 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 it.
| Name | Type | Req | Description |
|---|---|---|---|
| boxId | string | yes | The TCGplayer product id of the sealed product, the boxId on a spellbook_sealed_portfolio row. Required. |
| cap | integer | – | The most units to offer at once. Omit to offer every eligible unit. |
| channel | string | – | Marketplace to submit to. Must match the preview. Defaults to manapool. |
| expectedAskUsd | number | yes | proposed.askUsd from the preview. Required; a different value means the market ask changed and the call is refused. |
| expectedIntentRevision | – | – | intentRevision from the preview. Pass it unchanged, null included. |
| expectedStockRevision | integer | yes | proposed.stockRevision from the preview. Required; a different value means stock moved and the call is refused. |
| fixedPriceUsd | number | – | A fixed ask in USD for every unit. Omit to list at the product's current market price. |
| game | string | – | The game of the product. Defaults to mtg. |
| idempotencyKey | string | yes | A unique request key for this publish attempt, such as a new UUID. If the result is uncertain, preview current state before deciding on another submit. Required. |
| kind | string | yes | The sealed kind, the kind on the same spellbook_sealed_portfolio row. Required, because units are counted by kind and boxId together. |
| language | string | – | The product language code, such as EN or JA. Defaults to EN. |
| takeover | boolean | – | True adopts a listing on the selected marketplace that SpellBook did not create. Defaults to false; pass true only after the person agrees. |
| workspaceId | string | yes | The workspace that holds the sealed units, from spellbook_workspaces_list. Required. |
No output schema declared.
No examples provided.
spellbook_sealed_portfolio ~124
Read 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 spellbook_sealed_portfolio_hold_set to correct a holding mark.
| Name | Type | Req | Description |
|---|---|---|---|
| workspaceId | string | yes | The workspace whose sealed positions to read, from spellbook_workspaces_list. Required. |
No output schema declared.
No examples provided.
spellbook_sealed_portfolio_hold_set ~134
Mark 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.
| Name | Type | Req | Description |
|---|---|---|---|
| entryId | string | yes | The exact purchase entryId from spellbook_sealed_portfolio, including the SEALED# prefix when present. Required. |
| hold | boolean | yes | True excludes live units from listing; false makes them eligible again. Required. |
| workspaceId | string | yes | The workspace that owns the entry. Required. |
No output schema declared.
No examples provided.
spellbook_sealed_portfolio_open ~139
Record 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.
| Name | Type | Req | Description |
|---|---|---|---|
| entryId | string | yes | The exact sealed purchase entryId from spellbook_sealed_portfolio. Required. |
| quantity | integer | yes | Exact count of units already opened from this entry. Required. |
| workspaceId | string | yes | The workspace that owns the sealed entry. Required. |
No output schema declared.
No examples provided.
spellbook_sealed_portfolio_open_intent_clear ~106
Clear 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.
| Name | Type | Req | Description |
|---|---|---|---|
| entryId | string | yes | The exact purchase entryId from spellbook_sealed_portfolio. Required. |
| workspaceId | string | yes | The workspace that owns the entry. Required. |
No output schema declared.
No examples provided.
spellbook_sealed_portfolio_receive ~102
Mark 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.
| Name | Type | Req | Description |
|---|---|---|---|
| entryId | string | yes | The exact incoming display entryId from spellbook_sealed_portfolio. Required. |
| workspaceId | string | yes | The workspace that owns the incoming entry. Required. |
No output schema declared.
No examples provided.
spellbook_sealed_portfolio_record ~302
Record 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.
| Name | Type | Req | Description |
|---|---|---|---|
| acquisitionChannel | string | – | Where the product was bought, such as a store name or marketplace. Optional, and it is stored as the customer stated it. |
| acquisitionDate | string | yes | The date the buy happened, as YYYY-MM-DD. Required, and it sets which day's modeled EV the purchase is scored against. |
| acquisitionPrice | string | yes | Price paid PER UNIT in USD, as a decimal string such as "114.99". Not the order total. Required. |
| boxId | string | yes | Exact sealed catalog product id, from spellbook_sealed_product_search or spellbook_sealed_deal_board. An id the catalog does not hold is refused. Required. |
| quantity | integer | yes | How many units of this product were bought. Required. |
| salesTaxUsd | string | – | Sales tax paid on the whole order in USD, as a decimal string. Optional. |
| workspaceId | string | yes | The workspace to record this sealed buy in, from spellbook_workspaces_list. Required. |
No output schema declared.
No examples provided.
spellbook_sealed_product_offers ~144
Inspect 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 can mean missing snapshot.
| Name | Type | Req | Description |
|---|---|---|---|
| region | string | – | Restrict retail references to one currency region: US, CA or All. Omit for all. |
| tcgProductId | string | yes | Exact TCGplayer product id for this sealed product, digits only. Required. |
No output schema declared.
No examples provided.
spellbook_sealed_product_search ~322
Search 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, and coverage (priceState, modelState, evState, totalEv, missingInput) independently of EV or offer availability. products returns deal rows with modeled totalEV and offer evidence when supported. Call spellbook_sealed_product_offers with a deal row's tcgProductId for retail references, available sold comparables and freshness. Public or entitled response is chosen by the backend; teaser and gating fields limit deal coverage.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | Opaque cursor from a previous page, passed back unchanged. Omit to start from the first page. |
| game | string | – | Restrict results to one game: mtg, riftbound or pokemon. Omit for a mixed-game search. |
| limit | integer | – | Maximum rows to return, 1 to 100. Omit for the default of 20. |
| productType | string | – | Exact sealed product type to filter to. Omit to include every type. |
| q | string | – | Free-text product name search. Omit to browse without a name filter. |
| region | string | – | Restrict results to one currency region: US, CA or All. Omit for all. |
| store | string | – | Exact store name to filter to. Omit to include every store. |
No output schema declared.
No examples provided.
spellbook_sealed_recovered_component_record ~243
Record 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 readback. Reuse requestId unchanged after a timeout.
| Name | Type | Req | Description |
|---|---|---|---|
| hold | boolean | yes | True marks these units as held from listing; false leaves them unheld. Required. |
| productId | string | yes | Exact TCG sealed pack product id: 618698 for Aetherdrift Box Topper, or 579917 for Modern Horizons 3 Collector Booster Sample Pack. Required. |
| quantity | integer | yes | How many recovered units to record: up to 11 for product 618698, or exactly 1 for product 579917. Required. |
| requestId | string | yes | Stable idempotency key for this recovery entry. Reuse this exact value to retry. Required. |
| workspaceId | string | yes | The workspace to add recovered sealed components to. Required. |
No output schema declared.
No examples provided.
spellbook_seller_plan_checkout_link ~171
Get 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 bypass the free active-unit cap. Give the returned URL to the seller to enter payment details at Stripe, then re-read plan status to observe its stored state; that status cannot prove payment settled. It refuses a workspace whose plan is already active.
| Name | Type | Req | Description |
|---|---|---|---|
| interval | string | yes | The billing interval the seller chose: monthly or annual. Required. |
| workspaceId | string | yes | The workspace the Store plan is for. The caller must own it. Required. |
No output schema declared.
No examples provided.
spellbook_singles_buylist_spreads ~346
Investigate 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.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | Opaque cursor from a previous page, passed back unchanged. Omit to start from the first page. |
| isFoil | boolean | – | True restricts to foil rows, false to non-foil. Omit to include both. |
| limit | integer | – | Maximum rows to return, 1 to 200. Omit for the default of 20. |
| minCkQty | integer | – | Minimum Card Kingdom buylist quantity a row must have. Omit for no floor. |
| minSpreadPct | number | – | Minimum spread percentage a row must have to be returned. Omit for no floor. |
| minSpreadUsd | number | – | Minimum spread in USD a row must have to be returned. Omit for no floor. |
| minTotalPotentialProfitUsd | number | – | Minimum total potential profit in USD a row must have to be returned. Omit for no floor. |
| minValue | number | – | Minimum acquisition value in USD a row must have to be returned. Omit for no floor. |
| rarity | string | – | Exact rarity to filter to. Omit to include every rarity. |
| sets | string | – | Exact set code(s) to filter to. Omit to include every set. |
| sortBy | string | – | Which field ranks the rows. Omit for the default order. |
| sortDir | string | – | Sort direction for sortBy. Omit for the default direction. |
No output schema declared.
No examples provided.
spellbook_skill ~150
Read 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. physical-placement covers moving one item to a bin and verifying it. fulfilling-orders covers where an order lands, the bin walk that finds each sold card, and who packs, labels, and confirms shipped. Read the matching procedure before the first call of that task. Omit name to list every procedure with its title.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | – | The procedure to read in full. Omit to list every procedure with its title. |
No output schema declared.
No examples provided.
spellbook_sku_exact_price_lock_clear ~138
Clear one seller SKU's exact-price lock by exact printing, finish and condition. Returns the saved controls readback, so the agent can confirm the lock is null.
| Name | Type | Req | Description |
|---|---|---|---|
| condition | string | yes | The exact physical condition for the SKU. Required. |
| finish | string | yes | The exact finish for the SKU: nf, fo, etched, surge, rh, 1e or 1e-fo. Required. |
| scryfallId | string | yes | The exact Scryfall printing id. Required. |
| workspaceId | string | yes | The workspace the seller selected. The caller must own it. Required. |
No output schema declared.
No examples provided.
spellbook_sku_exact_price_lock_set ~166
Set one seller SKU's exact price lock and return its saved readback. Identify the exact printing, finish and condition. The lock scope is all marketplaces and no marketplace publish or repricing is triggered by this tool.
| Name | Type | Req | Description |
|---|---|---|---|
| condition | string | yes | The exact physical condition for the SKU. Required. |
| finish | string | yes | The exact finish for the SKU: nf, fo, etched, surge, rh, 1e or 1e-fo. Required. |
| priceUsd | number | yes | The seller-selected exact locked price in USD. Required. |
| scryfallId | string | yes | The exact Scryfall printing id. Required. |
| workspaceId | string | yes | The workspace the seller selected. The caller must own it. Required. |
No output schema declared.
No examples provided.
spellbook_sku_minimum_floor_clear ~137
Clear 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.
| Name | Type | Req | Description |
|---|---|---|---|
| condition | string | yes | The exact physical condition for the SKU. Required. |
| finish | string | yes | The exact finish for the SKU: nf, fo, etched, surge, rh, 1e or 1e-fo. Required. |
| scryfallId | string | yes | The exact Scryfall printing id. Required. |
| workspaceId | string | yes | The workspace the seller selected. The caller must own it. Required. |
No output schema declared.
No examples provided.
spellbook_sku_minimum_floor_set ~173
Set 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.
| Name | Type | Req | Description |
|---|---|---|---|
| condition | string | yes | The exact physical condition for the SKU. Required. |
| finish | string | yes | The exact finish for the SKU: nf, fo, etched, surge, rh, 1e or 1e-fo. Required. |
| minSellPriceUsd | number | yes | The seller-selected minimum sell price in USD. Required. |
| scryfallId | string | yes | The exact Scryfall printing id. Required. |
| workspaceId | string | yes | The workspace the seller selected. The caller must own it. Required. |
No output schema declared.
No examples provided.
spellbook_sku_price_controls ~161
Read one seller SKU's exact minimum floor and exact-price lock by Scryfall printing, finish and condition. Returns saved values, update timestamps, the all-marketplaces lock scope, missing evidence and limitations. Call it before changing a floor or lock, then read it again after a write.
| Name | Type | Req | Description |
|---|---|---|---|
| condition | string | yes | The exact physical condition for the SKU. Required. |
| finish | string | yes | The exact finish for the SKU: nf, fo, etched, surge, rh, 1e or 1e-fo. Required. |
| scryfallId | string | yes | The exact Scryfall printing id. Required. |
| workspaceId | string | yes | The workspace the seller selected. The caller must own it. Required. |
No output schema declared.
No examples provided.
spellbook_store_setup_status ~166
Read one workspace's store setup facts and the seller-activation projection: which setup facts are true (physical inventory imported, stock confirmed, channel activated, return address saved, first order synced, extension paired, ManaPool connected), the current phase, the single nextAction, and its blockers. It also returns ebayConnected, and each channel's automation mode with a plain meaning sentence in ebayAutomation.meaning and manapoolAutomation.meaning, so an agent can tell the seller which marketplaces are connected and which list cards automatically. Baseline quantity remains marketplace evidence, not physical stock. It applies to any question about where a seller stands in setup, or what remains before their store can sell.
| Name | Type | Req | Description |
|---|---|---|---|
| workspaceId | string | yes | The workspace to read setup status for. Required. |
No output schema declared.
No examples provided.
spellbook_support_report ~222
Store 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.
| Name | Type | Req | Description |
|---|---|---|---|
| clientVersion | string | yes | This client's semantic version, e.g. "1.2.3". Required. |
| correlationId | string | – | A correlation id from a prior response, if one was returned. Omit when none was given. |
| errorCode | string | yes | Which closed error code best matches the failure. Required. |
| occurredAt | string | yes | ISO-8601 timestamp of when the failure occurred. Required. |
| operation | string | yes | Which SpellBook operation failed. Required, one of the closed operation names. |
| submissionId | string | yes | A fresh ULID for this report. Reuse the exact same value and request body to retry within 24 hours; a new value starts a new report. |
No output schema declared.
No examples provided.
spellbook_tcg_extension_pairing ~164
Read 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 its order sync state. If session is null or lastSeenAt is null, give the seller pairingPage.guideUrl to install the extension, then pairingPage.url to pair it. Call this tool again after they finish.
| Name | Type | Req | Description |
|---|---|---|---|
| workspaceId | string | yes | The workspace to read extension pairing for, from spellbook_workspaces_list. Required. |
No output schema declared.
No examples provided.
spellbook_tcg_listing_export ~189
Produce 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.
| Name | Type | Req | Description |
|---|---|---|---|
| floorPrice | number | – | Must match the value shown in spellbook_tcg_listing_preview to export the same priced candidates. |
| marketMultiplier | number | – | Must match the value shown in spellbook_tcg_listing_preview to export the same priced candidates. |
| sampleSize | integer | – | Must match the value shown in spellbook_tcg_listing_preview to export the same candidate set. |
| workspaceId | string | yes | The workspace to export a TCGplayer upload CSV for. Required; writes listing records for this workspace. |
No output schema declared.
No examples provided.
spellbook_tcg_listing_preview ~214
Show 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.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | Opaque cursor from a previous page, passed back unchanged. Omit to start from the first page. |
| floorPrice | number | – | A price floor in USD for this preview. Omit to use the workspace's stored floor. |
| marketMultiplier | number | – | Price multiplier applied to market price for this preview. Omit to use the workspace's stored pricing. |
| sampleSize | integer | – | Maximum candidate rows to preview. Omit for the default sample size. |
| workspaceId | string | yes | The workspace to preview a TCGplayer listing run for. Required. |
No output schema declared.
No examples provided.
spellbook_workspace_create ~94
Create 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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
spellbook_workspace_plan_status ~161
Read 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 access begins. Read this status again after the claim. For a seller-requested paid Store plan, use spellbook_seller_plan_checkout_link when the stored plan is not active, then re-read this status.
| Name | Type | Req | Description |
|---|---|---|---|
| workspaceId | string | yes | The workspace to read the plan for. The caller must be a member. Required. |
No output schema declared.
No examples provided.
spellbook_workspaces_list ~68
List 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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
What is the SpellBook Finance MCP server?
SpellBook Finance is an MCP server listed in the public MCP registry as com.spellbook-finance/mcp. Magic: The Gathering card prices, movers, arbitrage, sealed box EV, and seller inventory tools. This page covers its hosted endpoint (https://api.spellbook-finance.com/mcp).
Is the SpellBook Finance MCP server safe to use?
SpellBook Finance scores 66 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the SpellBook Finance MCP server expose?
SpellBook Finance exposes 100 tools: spellbook_guides, spellbook_skill, spellbook_pull_work, spellbook_buy_targets, spellbook_buy_outcome_report, and 95 more. Their descriptions and schemas cost roughly 18,207 tokens of context every time the server is loaded.
Does the SpellBook Finance MCP server require authentication?
No. We connected to SpellBook Finance without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the SpellBook Finance MCP server still maintained?
SpellBook Finance is still listed as active in the MCP registry. We last reached this channel on 28 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.