SpellBook Finance
What this MCP does
Provides Magic: The Gathering and other trading-card market prices, buylist offers, arbitrage analysis, sealed-product EV, seller inventory, pricing, and marketplace listing tools.
Tools
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['consentToShare', 'submissionId', 'occurredAt', 'taskCategory', 'neededFields', 'outcome'], 'properties': {'outcome': {'enum': ['completed', 'completed_with_guess', 'abandoned'], 'type': 'string', 'description': 'What happened to the task: closed enum. Required.'}, 'occurredAt': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$', 'maxLength': 30, 'description': 'ISO-8601 timestamp of when the gap occurred. Required.'}, 'neededFields': {'type': 'array', 'items': {'type': 'string', 'maxLength': 120}, 'maxItems': 25, 'description': 'Real SpellBook response field paths that were null or missing when needed. Omit or send empty when none applied.'}, 'submissionId': {'type': 'string', 'pattern': '^[0-7][0-9A-HJKMNP-TV-Z]{25}$', 'description': '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.'}, 'taskCategory': {'enum': ['valuation', 'sell_decision', 'portfolio_review', 'acquisition', 'inventory_placement', 'other'], 'type': 'string', 'description': 'Which closed task category this gap happened in. Required.'}, 'abandonReason': {'enum': ['field_was_null', 'data_too_stale', 'no_matching_rows', 'identity_ambiguous', 'access_denied', 'tool_error', 'no_such_capability', 'too_many_steps', 'other'], 'type': 'string', 'description': 'Why the task was abandoned. Required only when outcome is abandoned.'}, 'guessedFields': {'type': 'array', 'items': {'type': 'string', 'maxLength': 120}, 'maxItems': 25, 'description': 'Real SpellBook response field paths the agent had to guess a value for because no tool supplied one. Omit when nothing was guessed.'}, 'consentToShare': {'type': 'boolean', 'const': True, 'description': 'True only after the person explicitly agreed to send this specific report.'}, 'wishedCapability': {'type': 'object', 'required': ['category', 'slug'], 'properties': {'slug': {'type': 'string', 'pattern': '^[a-z_]{3,40}$', 'description': 'A lowercase, underscore slug from the fixed capability vocabulary naming what was wished for.'}, 'category': {'enum': ['data_field', 'filter_or_sort', 'freshness', 'coverage', 'export', 'write_action', 'other'], 'type': 'string', 'description': 'Which closed capability category was wished for. Required when wishedCapability is present.'}}, 'description': 'A capability the agent wished existed and did not find. Omit when no capability was missing.', 'additionalProperties': False}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'alertType'], 'properties': {'finish': {'enum': ['nf', 'fo', 'etched', 'surge', 'rh', '1e', '1e-fo'], 'type': 'string', 'description': 'The finish to watch, matching the finish codes spellbook_printings_search returns. Required for a buylist_watch with scope card.'}, 'isFoil': {'type': 'boolean', 'description': 'Whether the watched card is foil. Required for every non-buylist_watch type.'}, 'assetKey': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'The printing id for a card or the product id for a box. Required for every non-buylist_watch type.'}, 'alertType': {'enum': ['price', 'metagame', 'supply_signal', 'eu_spread', 'buylist_spread', 'buylist_vs_cost_basis', 'spread_compression', 'fair_value_divergence', 'sealed_breakeven_positive', 'restock', 'buylist_watch'], 'type': 'string', 'description': 'The kind of alert. buylist_watch watches dealer buy offers against inventory or one printing. Required.'}, 'assetName': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'A display name for the watched asset. Required for every non-buylist_watch type. Optional for buylist_watch.'}, 'assetType': {'enum': ['card', 'box'], 'type': 'string', 'description': 'Whether the alert watches a card or a sealed box. Required for every non-buylist_watch type.'}, 'direction': {'enum': ['above', 'below'], 'type': 'string', 'description': 'Whether the alert fires when the price is above or below threshold. Required for crossed and for every non-buylist_watch type.'}, 'threshold': {'type': 'number', 'description': 'The USD price the alert compares against. Required for crossed and for every non-buylist_watch type.', 'exclusiveMinimum': 0}, 'scryfallId': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'The exact printing id from spellbook_printings_search. Required for a buylist_watch with scope card and for a card alert.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace the alert belongs to, from spellbook_workspaces_list. Required.'}, 'buylistVendor': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'For buylist_watch: the dealer to watch, as SpellBook stores the vendor name. Omit to watch Card Kingdom.'}, 'buylistWatchScope': {'enum': ['inventory', 'card'], 'type': 'string', 'description': 'For buylist_watch: inventory watches every sellable item in the workspace, card watches one printing and finish. Required for buylist_watch.'}, 'buylistWatchCondition': {'enum': ['buying_again', 'crossed'], 'type': 'string', 'description': 'For buylist_watch: buying_again or crossed. crossed also needs direction and threshold. Required for buylist_watch.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'alertId'], 'properties': {'alertId': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'The alertId of the alert to delete, from spellbook_alerts_list. Required.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace the alert belongs to, from spellbook_workspaces_list. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId'], 'properties': {'status': {'enum': ['active', 'triggered', 'disabled'], 'type': 'string', 'description': 'Return only alerts in this status. Omit to include every status.'}, 'alertType': {'enum': ['price', 'metagame', 'supply_signal', 'eu_spread', 'buylist_spread', 'buylist_vs_cost_basis', 'spread_compression', 'restock', 'velocity', 'ebay_divergence', 'fair_value_divergence', 'delivery_dip', 'sealed_breakeven_positive', 'buylist_watch'], 'type': 'string', 'description': 'Return only alerts of this type, such as buylist_watch. Omit to include every type.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace whose alerts to read, from spellbook_workspaces_list. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'q': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': 'Free-text filter on product name. Omit to include every product.'}, 'game': {'enum': ['mtg', 'riftbound', 'pokemon'], 'type': 'string', 'description': 'Restrict rankings to one game. Omit for the mixed supported-game ranking. A registered game without production EV returns an empty ranking plus sealedIntelligence.reason and missingFields.'}, 'sort': {'enum': ['evRatio', 'totalEV', 'spreadUsd', 'marketPrice', 'packEV', 'packEvRatio', 'packPrice', 'n0Full', 'n0Sellable', 'n0LandAdjusted'], 'type': 'string', 'default': 'evRatio', 'description': 'Which computed field ranks the rows. Defaults to evRatio, the stored totalEV ratio using acquirableFloorUsd when its basis is known; use spreadUsd for totalEV minus marketPrice.'}, 'limit': {'type': 'integer', 'default': 50, 'maximum': 150, 'minimum': 1, 'description': 'Maximum rows to return, 1 to 150. Omit for the default of 50.'}, 'cursor': {'type': 'string', 'maxLength': 500, 'minLength': 1, 'description': 'Opaque nextCursor from a previous page, passed back unchanged. Omit to start from the first page.'}, 'box_type': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Exact box-type name to filter to one sealed product line. Omit to include every box type.'}, 'sort_dir': {'enum': ['asc', 'desc'], 'type': 'string', 'default': 'desc', 'description': 'Sort direction for `sort`. Defaults to desc, highest first.'}, 'max_price': {'type': 'number', 'minimum': 0, 'description': 'Maximum market price a row may have to be returned. Omit for no ceiling.'}, 'min_ev_ratio': {'type': 'number', 'description': 'Minimum stored evRatio a row must have to be returned. Rows with a null ratio are excluded. Omit for no floor.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId'], 'properties': {'limit': {'type': 'integer', 'maximum': 500, 'minimum': 1, 'description': 'Maximum groups to return, 1 to 500. Omit for the server default.'}, 'cursor': {'type': 'string', 'maxLength': 500, 'minLength': 1, 'description': 'Opaque nextCursor from a previous page, passed back unchanged. Omit to start from the first page.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace whose inventory to compare, from spellbook_workspaces_list. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId'], 'properties': {'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspaceId to score, from spellbook_workspaces_list. Required; this scores exactly one workspace.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'limit': {'type': 'integer', 'default': 200, 'maximum': 200, 'minimum': 1, 'description': 'Maximum buy-target rows to return, 1 to 200. Omit for the default of 200.'}, 'cursor': {'type': 'string', 'maxLength': 2000, 'minLength': 1, 'description': 'Opaque nextCursor from a previous page, passed back unchanged to continue traversal. Omit to start from the first page.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['cardId'], 'properties': {'cardId': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'The exact printing or catalog product id from spellbook_printings_search. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['cardId'], 'properties': {'days': {'type': 'integer', 'maximum': 180, 'minimum': 1, 'description': 'How many days back to read, 1 to 180. Omit for the longest window SpellBook returns.'}, 'cardId': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'The exact printing id from spellbook_printings_search. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['cardId'], 'properties': {'cardId': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'The exact printing id from spellbook_printings_search: a UUID for Magic, or the namespaced catalog product id for Riftbound or Pokemon. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId'], 'properties': {'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace to read, from spellbook_workspaces_list. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'channel', 'profileId'], 'properties': {'channel': {'enum': ['ebay', 'tcg', 'manapool', 'shopify', 'cardtrader'], 'type': 'string', 'description': 'The marketplace channel to pin: ebay, tcg (TCGplayer), manapool, shopify or cardtrader. Required.'}, 'profileId': {'anyOf': [{'type': 'string', 'maxLength': 100, 'minLength': 1}, {'type': 'null'}], 'description': "A profileId from spellbook_channel_pricing_profiles, or null to clear the pin so the channel falls back to the workspace's active profile. Required."}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace to change, from spellbook_workspaces_list. The signed-in customer must own it. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'dealId'], 'properties': {'dealId': {'type': 'string', 'pattern': '^[0-7][0-9A-HJKMNP-TV-Z]{25}$', 'description': 'Exact dealId from a record or list response. Required.'}, 'revision': {'type': 'integer', 'maximum': 100000, 'minimum': 1, 'description': 'One immutable revision number. Omit for the latest snapshot.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The seller-owned workspace. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId'], 'properties': {'limit': {'type': 'integer', 'maximum': 50, 'minimum': 1, 'description': 'Maximum deals on this page, 1 to 50. Omit for the default of 20.'}, 'cursor': {'type': 'string', 'maxLength': 500, 'minLength': 1, 'description': 'Opaque nextCursor from the previous page. Pass unchanged to continue; omit for the first page.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The seller-owned workspace. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'command'], 'properties': {'command': {'oneOf': [{'type': 'object', 'required': ['submissionId', 'occurredAt', 'kind', 'payload'], 'properties': {'kind': {'type': 'string', 'const': 'open', 'description': 'Start after the seller has agreed to the recorded terms.'}, 'payload': {'type': 'object', 'required': ['source', 'sourceReference', 'sellerLabel', 'agreement'], 'properties': {'source': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Where the deal originated.'}, 'agreement': {'type': 'object', 'required': ['commitment', 'sellerAcceptedAt', 'sellerAcceptanceEvidence', 'titleTransferPoint', 'paymentTiming', 'buckets'], 'properties': {'buckets': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['id', 'categories', 'kind', 'amountUsd'], 'properties': {'id': {'type': 'string', 'maxLength': 80, 'minLength': 1, 'description': 'Unique price bucket id.'}, 'kind': {'type': 'string', 'const': 'fixed_lot'}, 'amountUsd': {'type': 'number', 'maximum': 10000000, 'minimum': 0, 'multipleOf': 0.01, 'description': 'Flat price for the complete accepted lot, in USD.'}, 'categories': {'type': 'array', 'items': {'type': 'object', 'required': ['category', 'expectedQuantity'], 'properties': {'category': {'type': 'string', 'maxLength': 80, 'minLength': 1, 'description': 'Physical category in this bucket.'}, 'expectedQuantity': {'type': 'integer', 'maximum': 100000, 'minimum': 0, 'description': 'Known agreed quantity for this fixed lot.'}}, 'additionalProperties': False}, 'maxItems': 50, 'minItems': 1, 'description': 'Disjoint physical categories covered by the flat lot price.'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['id', 'categories', 'kind', 'amountUsd'], 'properties': {'id': {'type': 'string', 'maxLength': 80, 'minLength': 1, 'description': 'Unique price bucket id.'}, 'kind': {'type': 'string', 'const': 'per_unit'}, 'amountUsd': {'type': 'number', 'maximum': 10000, 'minimum': 0, 'multipleOf': 1e-06, 'description': 'USD per accepted physical unit, up to six decimal places.'}, 'categories': {'type': 'array', 'items': {'type': 'object', 'required': ['category', 'expectedQuantity'], 'properties': {'category': {'type': 'string', 'maxLength': 80, 'minLength': 1, 'description': 'Stable physical category identifier.'}, 'expectedQuantity': {'anyOf': [{'type': 'integer', 'maximum': 100000, 'minimum': 0}, {'type': 'null'}], 'description': 'Agreed quantity, or null when the lot size is unknown.'}}, 'additionalProperties': False}, 'maxItems': 50, 'minItems': 1, 'description': 'Disjoint physical categories priced at this unit rate.'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['id', 'categories', 'kind', 'percentage', 'basis'], 'properties': {'id': {'type': 'string', 'maxLength': 80, 'minLength': 1, 'description': 'Unique price bucket id.'}, 'kind': {'type': 'string', 'const': 'percent_market'}, 'basis': {'type': 'object', 'required': ['source', 'timeBasis', 'conditionBasis', 'finishBasis'], 'properties': {'source': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Exact source used for the market quote.'}, 'timeBasis': {'enum': ['agreement', 'evaluation', 'handover'], 'type': 'string', 'description': 'Quote timing contract.'}, 'finishBasis': {'enum': ['actual_finish', 'nonfoil', 'foil', 'etched', 'unknown'], 'type': 'string', 'description': 'Finish basis used by the quote.'}, 'conditionBasis': {'enum': ['actual_condition', 'near_mint', 'lightly_played', 'moderately_played', 'heavily_played', 'damaged', 'unknown'], 'type': 'string', 'description': 'Condition basis used by the quote.'}}, 'description': 'Explicit source, time, condition and finish basis; unknown is not a usable quote.', 'additionalProperties': False}, 'categories': {'type': 'array', 'items': {'type': 'object', 'required': ['category', 'expectedQuantity'], 'properties': {'category': {'type': 'string', 'maxLength': 80, 'minLength': 1, 'description': 'Stable physical category identifier.'}, 'expectedQuantity': {'anyOf': [{'type': 'integer', 'maximum': 100000, 'minimum': 0}, {'type': 'null'}], 'description': 'Agreed quantity, or null when the lot size is unknown.'}}, 'additionalProperties': False}, 'maxItems': 50, 'minItems': 1, 'description': 'Disjoint physical categories priced from exact market marks.'}, 'percentage': {'type': 'number', 'maximum': 100, 'minimum': 0, 'multipleOf': 0.01, 'description': 'Agreed percentage of the market mark.'}}, 'additionalProperties': False}]}, 'maxItems': 25, 'minItems': 1, 'description': 'Disjoint fixed-lot, decimal unit-rate, or explicit market-percentage price buckets.'}, 'commitment': {'enum': ['binding_formula', 'estimate_then_offer'], 'type': 'string', 'description': 'Whether accepted terms bind a formula or require seller acceptance of the exact evaluation.'}, 'paymentTiming': {'enum': ['upfront', 'at_handover', 'after_evaluation', 'deposit_then_balance', 'other'], 'type': 'string', 'description': 'Agreed payment timing.'}, 'sellerAcceptedAt': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$', 'maxLength': 30, 'description': 'Time seller accepted these exact agreement terms.'}, 'titleTransferPoint': {'enum': ['seller_acceptance', 'payment', 'handover'], 'type': 'string', 'description': 'Agreed title-transfer trigger; this ledger never performs a transfer.'}, 'sellerAcceptanceEvidence': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Short evidence note for seller acceptance.'}}, 'description': 'Agreed buckets, accepted terms and title/payment triggers.', 'additionalProperties': False}, 'sellerLabel': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': "Customer's short seller label."}, 'sourceReference': {'anyOf': [{'type': 'string', 'maxLength': 300}, {'type': 'null'}], 'description': 'Listing or conversation reference, or null.'}}, 'description': 'Agreed deal and seller evidence.', 'additionalProperties': False}, 'occurredAt': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$', 'maxLength': 30, 'description': 'When the agreement or evidence was observed.'}, 'submissionId': {'type': 'string', 'pattern': '^[0-7][0-9A-HJKMNP-TV-Z]{25}$', 'description': 'Fresh idempotency ULID; reuse this exact id and payload after an uncertain write.'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['submissionId', 'occurredAt', 'dealId', 'expectedRevision', 'kind', 'payload'], 'properties': {'kind': {'type': 'string', 'const': 'receipt', 'description': 'Add newly received physical counts.'}, 'dealId': {'type': 'string', 'pattern': '^[0-7][0-9A-HJKMNP-TV-Z]{25}$', 'description': 'Deal id returned by the open command.'}, 'payload': {'type': 'object', 'required': ['counts', 'provenance', 'evidence'], 'properties': {'counts': {'type': 'array', 'items': {'type': 'object', 'required': ['category', 'quantity', 'countMethod', 'scanCoverage'], 'properties': {'category': {'type': 'string', 'maxLength': 80, 'minLength': 1, 'description': 'Agreed physical category.'}, 'quantity': {'type': 'integer', 'maximum': 100000, 'minimum': 1, 'description': 'Physically counted quantity received in this submission.'}, 'countMethod': {'enum': ['buyer_count', 'seller_count', 'buyer_estimate', 'unique_unit_scan', 'mixed'], 'type': 'string', 'description': 'How the physical count was made.'}, 'scanCoverage': {'anyOf': [{'type': 'object', 'required': ['uniquePhysicalUnitsScanned', 'denominatorUnits'], 'properties': {'denominatorUnits': {'anyOf': [{'type': 'integer', 'maximum': 100000, 'minimum': 0}, {'type': 'null'}], 'description': 'Verified counted-unit denominator, or null when unknown.'}, 'uniquePhysicalUnitsScanned': {'type': 'integer', 'maximum': 100000, 'minimum': 0, 'description': 'Count of unique physical units scanned.'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'Unique scan count and verified denominator, or null when no scan count is claimed.'}}, 'additionalProperties': False}, 'maxItems': 50, 'minItems': 1, 'description': 'New positive quantities by disjoint category.'}, 'evidence': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Arrival and count evidence.'}, 'provenance': {'enum': ['customer_reported', 'agent_observed'], 'type': 'string', 'description': 'Evidence source.'}}, 'additionalProperties': False}, 'occurredAt': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$', 'maxLength': 30, 'description': 'When the agreement or evidence was observed.'}, 'submissionId': {'type': 'string', 'pattern': '^[0-7][0-9A-HJKMNP-TV-Z]{25}$', 'description': 'Fresh idempotency ULID; reuse this exact id and payload after an uncertain write.'}, 'expectedRevision': {'type': 'integer', 'maximum': 100000, 'minimum': 1, 'description': 'Current revision from spellbook_collection_buying_get; stale revisions are rejected.'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['submissionId', 'occurredAt', 'dealId', 'expectedRevision', 'kind', 'payload'], 'properties': {'kind': {'type': 'string', 'const': 'receipt_complete', 'description': 'Confirm the lot has been fully received and counted.'}, 'dealId': {'type': 'string', 'pattern': '^[0-7][0-9A-HJKMNP-TV-Z]{25}$', 'description': 'Deal id returned by the open command.'}, 'payload': {'type': 'object', 'required': ['evidence'], 'properties': {'evidence': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Evidence that all agreed parcels/lot units have arrived and were counted.'}}, 'additionalProperties': False}, 'occurredAt': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$', 'maxLength': 30, 'description': 'When the agreement or evidence was observed.'}, 'submissionId': {'type': 'string', 'pattern': '^[0-7][0-9A-HJKMNP-TV-Z]{25}$', 'description': 'Fresh idempotency ULID; reuse this exact id and payload after an uncertain write.'}, 'expectedRevision': {'type': 'integer', 'maximum': 100000, 'minimum': 1, 'description': 'Current revision from spellbook_collection_buying_get; stale revisions are rejected.'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['submissionId', 'occurredAt', 'dealId', 'expectedRevision', 'kind', 'payload'], 'properties': {'kind': {'type': 'string', 'const': 'receipt_correction', 'description': 'Correct previously submitted cumulative counts.'}, 'dealId': {'type': 'string', 'pattern': '^[0-7][0-9A-HJKMNP-TV-Z]{25}$', 'description': 'Deal id returned by the open command.'}, 'payload': {'type': 'object', 'required': ['counts', 'provenance', 'evidence'], 'properties': {'counts': {'type': 'array', 'items': {'type': 'object', 'required': ['category', 'correctedQuantity', 'countMethod', 'scanCoverage'], 'properties': {'category': {'type': 'string', 'maxLength': 80, 'minLength': 1, 'description': 'Agreed physical category being corrected.'}, 'countMethod': {'enum': ['buyer_count', 'seller_count', 'buyer_estimate', 'unique_unit_scan', 'mixed'], 'type': 'string', 'description': 'Method used for the corrected count.'}, 'scanCoverage': {'anyOf': [{'type': 'object', 'required': ['uniquePhysicalUnitsScanned', 'denominatorUnits'], 'properties': {'denominatorUnits': {'anyOf': [{'type': 'integer', 'maximum': 100000, 'minimum': 0}, {'type': 'null'}], 'description': 'Verified counted-unit denominator, or null when unknown.'}, 'uniquePhysicalUnitsScanned': {'type': 'integer', 'maximum': 100000, 'minimum': 0, 'description': 'Count of unique physical units scanned.'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'Updated unique scan count and verified denominator, or null when unknown.'}, 'correctedQuantity': {'type': 'integer', 'maximum': 100000, 'minimum': 0, 'description': 'Replacement cumulative received quantity.'}}, 'additionalProperties': False}, 'maxItems': 50, 'minItems': 1, 'description': 'Replacement quantities for named categories.'}, 'evidence': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Why the earlier count was wrong.'}, 'provenance': {'enum': ['customer_reported', 'agent_observed'], 'type': 'string', 'description': 'Evidence source.'}}, 'additionalProperties': False}, 'occurredAt': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$', 'maxLength': 30, 'description': 'When the agreement or evidence was observed.'}, 'submissionId': {'type': 'string', 'pattern': '^[0-7][0-9A-HJKMNP-TV-Z]{25}$', 'description': 'Fresh idempotency ULID; reuse this exact id and payload after an uncertain write.'}, 'expectedRevision': {'type': 'integer', 'maximum': 100000, 'minimum': 1, 'description': 'Current revision from spellbook_collection_buying_get; stale revisions are rejected.'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['submissionId', 'occurredAt', 'dealId', 'expectedRevision', 'kind', 'payload'], 'properties': {'kind': {'type': 'string', 'const': 'amend_agreement', 'description': 'Record seller-accepted amended terms.'}, 'dealId': {'type': 'string', 'pattern': '^[0-7][0-9A-HJKMNP-TV-Z]{25}$', 'description': 'Deal id returned by the open command.'}, 'payload': {'type': 'object', 'required': ['agreement'], 'properties': {'agreement': {'type': 'object', 'required': ['commitment', 'sellerAcceptedAt', 'sellerAcceptanceEvidence', 'titleTransferPoint', 'paymentTiming', 'buckets'], 'properties': {'buckets': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['id', 'categories', 'kind', 'amountUsd'], 'properties': {'id': {'type': 'string', 'maxLength': 80, 'minLength': 1, 'description': 'Unique price bucket id.'}, 'kind': {'type': 'string', 'const': 'fixed_lot'}, 'amountUsd': {'type': 'number', 'maximum': 10000000, 'minimum': 0, 'multipleOf': 0.01, 'description': 'Flat price for the complete accepted lot, in USD.'}, 'categories': {'type': 'array', 'items': {'type': 'object', 'required': ['category', 'expectedQuantity'], 'properties': {'category': {'type': 'string', 'maxLength': 80, 'minLength': 1, 'description': 'Physical category in this bucket.'}, 'expectedQuantity': {'type': 'integer', 'maximum': 100000, 'minimum': 0, 'description': 'Known agreed quantity for this fixed lot.'}}, 'additionalProperties': False}, 'maxItems': 50, 'minItems': 1, 'description': 'Disjoint physical categories covered by the flat lot price.'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['id', 'categories', 'kind', 'amountUsd'], 'properties': {'id': {'type': 'string', 'maxLength': 80, 'minLength': 1, 'description': 'Unique price bucket id.'}, 'kind': {'type': 'string', 'const': 'per_unit'}, 'amountUsd': {'type': 'number', 'maximum': 10000, 'minimum': 0, 'multipleOf': 1e-06, 'description': 'USD per accepted physical unit, up to six decimal places.'}, 'categories': {'type': 'array', 'items': {'type': 'object', 'required': ['category', 'expectedQuantity'], 'properties': {'category': {'type': 'string', 'maxLength': 80, 'minLength': 1, 'description': 'Stable physical category identifier.'}, 'expectedQuantity': {'anyOf': [{'type': 'integer', 'maximum': 100000, 'minimum': 0}, {'type': 'null'}], 'description': 'Agreed quantity, or null when the lot size is unknown.'}}, 'additionalProperties': False}, 'maxItems': 50, 'minItems': 1, 'description': 'Disjoint physical categories priced at this unit rate.'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['id', 'categories', 'kind', 'percentage', 'basis'], 'properties': {'id': {'type': 'string', 'maxLength': 80, 'minLength': 1, 'description': 'Unique price bucket id.'}, 'kind': {'type': 'string', 'const': 'percent_market'}, 'basis': {'type': 'object', 'required': ['source', 'timeBasis', 'conditionBasis', 'finishBasis'], 'properties': {'source': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Exact source used for the market quote.'}, 'timeBasis': {'enum': ['agreement', 'evaluation', 'handover'], 'type': 'string', 'description': 'Quote timing contract.'}, 'finishBasis': {'enum': ['actual_finish', 'nonfoil', 'foil', 'etched', 'unknown'], 'type': 'string', 'description': 'Finish basis used by the quote.'}, 'conditionBasis': {'enum': ['actual_condition', 'near_mint', 'lightly_played', 'moderately_played', 'heavily_played', 'damaged', 'unknown'], 'type': 'string', 'description': 'Condition basis used by the quote.'}}, 'description': 'Explicit source, time, condition and finish basis; unknown is not a usable quote.', 'additionalProperties': False}, 'categories': {'type': 'array', 'items': {'type': 'object', 'required': ['category', 'expectedQuantity'], 'properties': {'category': {'type': 'string', 'maxLength': 80, 'minLength': 1, 'description': 'Stable physical category identifier.'}, 'expectedQuantity': {'anyOf': [{'type': 'integer', 'maximum': 100000, 'minimum': 0}, {'type': 'null'}], 'description': 'Agreed quantity, or null when the lot size is unknown.'}}, 'additionalProperties': False}, 'maxItems': 50, 'minItems': 1, 'description': 'Disjoint physical categories priced from exact market marks.'}, 'percentage': {'type': 'number', 'maximum': 100, 'minimum': 0, 'multipleOf': 0.01, 'description': 'Agreed percentage of the market mark.'}}, 'additionalProperties': False}]}, 'maxItems': 25, 'minItems': 1, 'description': 'Disjoint fixed-lot, decimal unit-rate, or explicit market-percentage price buckets.'}, 'commitment': {'enum': ['binding_formula', 'estimate_then_offer'], 'type': 'string', 'description': 'Whether accepted terms bind a formula or require seller acceptance of the exact evaluation.'}, 'paymentTiming': {'enum': ['upfront', 'at_handover', 'after_evaluation', 'deposit_then_balance', 'other'], 'type': 'string', 'description': 'Agreed payment timing.'}, 'sellerAcceptedAt': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$', 'maxLength': 30, 'description': 'Time seller accepted these exact agreement terms.'}, 'titleTransferPoint': {'enum': ['seller_acceptance', 'payment', 'handover'], 'type': 'string', 'description': 'Agreed title-transfer trigger; this ledger never performs a transfer.'}, 'sellerAcceptanceEvidence': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Short evidence note for seller acceptance.'}}, 'description': 'Complete replacement agreement; changed terms invalidate the report and receipt completion.', 'additionalProperties': False}}, 'additionalProperties': False}, 'occurredAt': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$', 'maxLength': 30, 'description': 'When the agreement or evidence was observed.'}, 'submissionId': {'type': 'string', 'pattern': '^[0-7][0-9A-HJKMNP-TV-Z]{25}$', 'description': 'Fresh idempotency ULID; reuse this exact id and payload after an uncertain write.'}, 'expectedRevision': {'type': 'integer', 'maximum': 100000, 'minimum': 1, 'description': 'Current revision from spellbook_collection_buying_get; stale revisions are rejected.'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['submissionId', 'occurredAt', 'dealId', 'expectedRevision', 'kind', 'payload'], 'properties': {'kind': {'type': 'string', 'const': 'evaluate', 'description': 'Record an itemized acceptance/rejection/unresolved report.'}, 'dealId': {'type': 'string', 'pattern': '^[0-7][0-9A-HJKMNP-TV-Z]{25}$', 'description': 'Deal id returned by the open command.'}, 'payload': {'type': 'object', 'required': ['lines', 'evidence'], 'properties': {'lines': {'type': 'array', 'items': {'type': 'object', 'required': ['category', 'receivedQuantity', 'acceptedQuantity', 'rejectedQuantity', 'unresolvedQuantity', 'printing', 'marketValue'], 'properties': {'category': {'type': 'string', 'maxLength': 80, 'minLength': 1, 'description': 'Agreed physical category.'}, 'printing': {'anyOf': [{'type': 'object', 'required': ['game', 'setCode', 'collectorNumber', 'printingId', 'language', 'condition', 'finish'], 'properties': {'game': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Game name.'}, 'finish': {'enum': ['nonfoil', 'foil', 'etched', 'unknown'], 'type': 'string', 'description': 'Observed physical finish; unknown stays unknown.'}, 'setCode': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Set code.'}, 'language': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Card language.'}, 'condition': {'enum': ['near_mint', 'lightly_played', 'moderately_played', 'heavily_played', 'damaged', 'unknown'], 'type': 'string', 'description': 'Observed physical condition; unknown stays unknown.'}, 'printingId': {'anyOf': [{'type': 'string', 'maxLength': 120}, {'type': 'null'}], 'description': 'Exact printing id, or null if unresolved.'}, 'collectorNumber': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Collector number.'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'Resolved physical printing details, or null when unidentified.'}, 'marketValue': {'anyOf': [{'type': 'object', 'required': ['amountUsd', 'source', 'observedAt', 'quoteCondition', 'quoteFinish', 'referenceId'], 'properties': {'source': {'anyOf': [{'type': 'string', 'maxLength': 200, 'minLength': 1}, {'type': 'null'}], 'description': 'Quote source or null when unknown.'}, 'amountUsd': {'anyOf': [{'type': 'number', 'maximum': 10000000, 'minimum': 0, 'multipleOf': 0.01}, {'type': 'null'}], 'description': 'USD market mark or null when unknown.'}, 'observedAt': {'anyOf': [{'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$', 'maxLength': 30}, {'type': 'null'}], 'description': 'Quote observation time or null when unknown.'}, 'quoteFinish': {'anyOf': [{'enum': ['nonfoil', 'foil', 'etched', 'unknown'], 'type': 'string'}, {'type': 'null'}], 'description': 'Finish the quote represents, separate from observed card finish.'}, 'referenceId': {'anyOf': [{'type': 'string', 'maxLength': 200}, {'type': 'null'}], 'description': 'Source reference, if available.'}, 'quoteCondition': {'anyOf': [{'enum': ['near_mint', 'lightly_played', 'moderately_played', 'heavily_played', 'damaged', 'unknown'], 'type': 'string'}, {'type': 'null'}], 'description': 'Condition the quote represents, separate from observed card condition.'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'Exact market evidence, or null when no supported quote exists.'}, 'acceptedQuantity': {'type': 'integer', 'maximum': 100000, 'minimum': 0, 'description': 'Buyer-accepted units in this report.'}, 'receivedQuantity': {'type': 'integer', 'maximum': 100000, 'minimum': 0, 'description': 'Cumulative physically received count.'}, 'rejectedQuantity': {'type': 'integer', 'maximum': 100000, 'minimum': 0, 'description': 'Rejected units in this report.'}, 'unresolvedQuantity': {'type': 'integer', 'maximum': 100000, 'minimum': 0, 'description': 'Units whose identity, condition, count or status remains unresolved.'}}, 'additionalProperties': False}, 'maxItems': 50, 'minItems': 1, 'description': 'One line per agreed category; quantities account for every received unit.'}, 'evidence': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Short evidence note for the inspection and report.'}}, 'additionalProperties': False}, 'occurredAt': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$', 'maxLength': 30, 'description': 'When the agreement or evidence was observed.'}, 'submissionId': {'type': 'string', 'pattern': '^[0-7][0-9A-HJKMNP-TV-Z]{25}$', 'description': 'Fresh idempotency ULID; reuse this exact id and payload after an uncertain write.'}, 'expectedRevision': {'type': 'integer', 'maximum': 100000, 'minimum': 1, 'description': 'Current revision from spellbook_collection_buying_get; stale revisions are rejected.'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['submissionId', 'occurredAt', 'dealId', 'expectedRevision', 'kind', 'payload'], 'properties': {'kind': {'type': 'string', 'const': 'seller_response', 'description': 'Record seller acceptance or rejection of one exact estimate report.'}, 'dealId': {'type': 'string', 'pattern': '^[0-7][0-9A-HJKMNP-TV-Z]{25}$', 'description': 'Deal id returned by the open command.'}, 'payload': {'type': 'object', 'required': ['evaluationVersion', 'decision', 'evidence'], 'properties': {'decision': {'enum': ['accepted', 'rejected'], 'type': 'string', 'description': "Seller's response to that exact report."}, 'evidence': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': "Evidence of seller's response."}, 'evaluationVersion': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Exact evaluation version answered by seller.'}}, 'additionalProperties': False}, 'occurredAt': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$', 'maxLength': 30, 'description': 'When the agreement or evidence was observed.'}, 'submissionId': {'type': 'string', 'pattern': '^[0-7][0-9A-HJKMNP-TV-Z]{25}$', 'description': 'Fresh idempotency ULID; reuse this exact id and payload after an uncertain write.'}, 'expectedRevision': {'type': 'integer', 'maximum': 100000, 'minimum': 1, 'description': 'Current revision from spellbook_collection_buying_get; stale revisions are rejected.'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['submissionId', 'occurredAt', 'dealId', 'expectedRevision', 'kind', 'payload'], 'properties': {'kind': {'type': 'string', 'const': 'payment_observed', 'description': 'Record an external transfer already observed; never sends money.'}, 'dealId': {'type': 'string', 'pattern': '^[0-7][0-9A-HJKMNP-TV-Z]{25}$', 'description': 'Deal id returned by the open command.'}, 'payload': {'type': 'object', 'required': ['direction', 'amountUsd', 'method', 'payerRole', 'payeeRole', 'externalReference', 'provenance', 'evidence'], 'properties': {'method': {'enum': ['cash', 'paypal', 'venmo', 'zelle', 'check', 'store_credit', 'other'], 'type': 'string', 'description': 'Reported transfer method.'}, 'evidence': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Short evidence note; it does not prove bank settlement.'}, 'amountUsd': {'type': 'number', 'maximum': 10000000, 'minimum': 0.01, 'multipleOf': 0.01, 'description': 'Positive whole-cent USD transfer amount already observed.'}, 'direction': {'enum': ['payment', 'refund'], 'type': 'string', 'description': 'Already-observed external payment or refund direction.'}, 'payeeRole': {'enum': ['buyer', 'seller', 'third_party'], 'type': 'string', 'description': 'Reported payee role; third-party transfers are currently rejected.'}, 'payerRole': {'enum': ['buyer', 'seller', 'third_party'], 'type': 'string', 'description': 'Reported payer role; third-party transfers are currently rejected.'}, 'provenance': {'enum': ['customer_reported', 'agent_observed'], 'type': 'string', 'description': 'Whether the transfer was customer-reported or agent-observed.'}, 'externalReference': {'anyOf': [{'type': 'string', 'maxLength': 200}, {'type': 'null'}], 'description': 'Transfer reference for deduplication, or null when unavailable.'}}, 'additionalProperties': False}, 'occurredAt': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$', 'maxLength': 30, 'description': 'When the agreement or evidence was observed.'}, 'submissionId': {'type': 'string', 'pattern': '^[0-7][0-9A-HJKMNP-TV-Z]{25}$', 'description': 'Fresh idempotency ULID; reuse this exact id and payload after an uncertain write.'}, 'expectedRevision': {'type': 'integer', 'maximum': 100000, 'minimum': 1, 'description': 'Current revision from spellbook_collection_buying_get; stale revisions are rejected.'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['submissionId', 'occurredAt', 'dealId', 'expectedRevision', 'kind', 'payload'], 'properties': {'kind': {'type': 'string', 'const': 'payment_correction', 'description': 'Replace or void a mistaken reported payment; void is not a refund.'}, 'dealId': {'type': 'string', 'pattern': '^[0-7][0-9A-HJKMNP-TV-Z]{25}$', 'description': 'Deal id returned by the open command.'}, 'payload': {'oneOf': [{'type': 'object', 'required': ['direction', 'amountUsd', 'method', 'payerRole', 'payeeRole', 'externalReference', 'provenance', 'evidence', 'action', 'paymentSubmissionId', 'correctionReason'], 'properties': {'action': {'type': 'string', 'const': 'replace', 'description': 'Replace details for the same external transfer.'}, 'method': {'enum': ['cash', 'paypal', 'venmo', 'zelle', 'check', 'store_credit', 'other'], 'type': 'string', 'description': 'Reported transfer method.'}, 'evidence': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Short evidence note; it does not prove bank settlement.'}, 'amountUsd': {'type': 'number', 'maximum': 10000000, 'minimum': 0.01, 'multipleOf': 0.01, 'description': 'Positive whole-cent USD transfer amount already observed.'}, 'direction': {'enum': ['payment', 'refund'], 'type': 'string', 'description': 'Already-observed external payment or refund direction.'}, 'payeeRole': {'enum': ['buyer', 'seller', 'third_party'], 'type': 'string', 'description': 'Reported payee role; third-party transfers are currently rejected.'}, 'payerRole': {'enum': ['buyer', 'seller', 'third_party'], 'type': 'string', 'description': 'Reported payer role; third-party transfers are currently rejected.'}, 'provenance': {'enum': ['customer_reported', 'agent_observed'], 'type': 'string', 'description': 'Whether the transfer was customer-reported or agent-observed.'}, 'correctionReason': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Why the earlier observation was incorrect.'}, 'externalReference': {'anyOf': [{'type': 'string', 'maxLength': 200}, {'type': 'null'}], 'description': 'Transfer reference for deduplication, or null when unavailable.'}, 'paymentSubmissionId': {'type': 'string', 'pattern': '^[0-7][0-9A-HJKMNP-TV-Z]{25}$', 'description': 'Submission id of the prior payment observation.'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['action', 'paymentSubmissionId', 'correctionReason', 'evidence'], 'properties': {'action': {'type': 'string', 'const': 'void', 'description': 'Void a false/duplicate observation without creating a refund.'}, 'evidence': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Evidence supporting this void.'}, 'correctionReason': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Why the earlier observation was incorrect.'}, 'paymentSubmissionId': {'type': 'string', 'pattern': '^[0-7][0-9A-HJKMNP-TV-Z]{25}$', 'description': 'Submission id of the prior payment observation.'}}, 'additionalProperties': False}]}, 'occurredAt': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$', 'maxLength': 30, 'description': 'When the agreement or evidence was observed.'}, 'submissionId': {'type': 'string', 'pattern': '^[0-7][0-9A-HJKMNP-TV-Z]{25}$', 'description': 'Fresh idempotency ULID; reuse this exact id and payload after an uncertain write.'}, 'expectedRevision': {'type': 'integer', 'maximum': 100000, 'minimum': 1, 'description': 'Current revision from spellbook_collection_buying_get; stale revisions are rejected.'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['submissionId', 'occurredAt', 'dealId', 'expectedRevision', 'kind', 'payload'], 'properties': {'kind': {'type': 'string', 'const': 'goods_disposition', 'description': 'Record physical units acquired, returned, or still unresolved.'}, 'dealId': {'type': 'string', 'pattern': '^[0-7][0-9A-HJKMNP-TV-Z]{25}$', 'description': 'Deal id returned by the open command.'}, 'payload': {'type': 'object', 'required': ['categories'], 'properties': {'categories': {'type': 'array', 'items': {'type': 'object', 'required': ['category', 'acquiredQuantity', 'returnedQuantity', 'unresolvedQuantity', 'titleEvidence', 'releaseEvidence', 'unresolvedEvidence'], 'properties': {'category': {'type': 'string', 'maxLength': 80, 'minLength': 1, 'description': 'Agreed physical category.'}, 'titleEvidence': {'anyOf': [{'type': 'string', 'maxLength': 200, 'minLength': 1}, {'type': 'null'}], 'description': 'Evidence title transferred for acquired units; null otherwise.'}, 'releaseEvidence': {'anyOf': [{'type': 'string', 'maxLength': 200, 'minLength': 1}, {'type': 'null'}], 'description': 'Evidence goods were released to seller; null otherwise.'}, 'acquiredQuantity': {'type': 'integer', 'maximum': 100000, 'minimum': 0, 'description': 'Units for which title was acquired.'}, 'returnedQuantity': {'type': 'integer', 'maximum': 100000, 'minimum': 0, 'description': 'Units physically released back to seller.'}, 'unresolvedEvidence': {'anyOf': [{'type': 'string', 'maxLength': 200, 'minLength': 1}, {'type': 'null'}], 'description': 'Evidence for unresolved disposition; null otherwise.'}, 'unresolvedQuantity': {'type': 'integer', 'maximum': 100000, 'minimum': 0, 'description': 'Units whose location/title remains unresolved.'}}, 'additionalProperties': False}, 'maxItems': 50, 'minItems': 1, 'description': 'One line per report category.'}}, 'additionalProperties': False}, 'occurredAt': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$', 'maxLength': 30, 'description': 'When the agreement or evidence was observed.'}, 'submissionId': {'type': 'string', 'pattern': '^[0-7][0-9A-HJKMNP-TV-Z]{25}$', 'description': 'Fresh idempotency ULID; reuse this exact id and payload after an uncertain write.'}, 'expectedRevision': {'type': 'integer', 'maximum': 100000, 'minimum': 1, 'description': 'Current revision from spellbook_collection_buying_get; stale revisions are rejected.'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['submissionId', 'occurredAt', 'dealId', 'expectedRevision', 'kind', 'payload'], 'properties': {'kind': {'type': 'string', 'const': 'dispute', 'description': 'Open or resolve a named reconciliation dispute.'}, 'dealId': {'type': 'string', 'pattern': '^[0-7][0-9A-HJKMNP-TV-Z]{25}$', 'description': 'Deal id returned by the open command.'}, 'payload': {'oneOf': [{'type': 'object', 'required': ['action', 'disputeId', 'amountUsd', 'evidence'], 'properties': {'action': {'type': 'string', 'const': 'open', 'description': 'Open a dispute.'}, 'evidence': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Evidence for the dispute.'}, 'amountUsd': {'anyOf': [{'type': 'number', 'maximum': 10000000, 'minimum': 0, 'multipleOf': 0.01}, {'type': 'null'}], 'description': 'Disputed USD amount, or null when unknown.'}, 'disputeId': {'type': 'string', 'maxLength': 80, 'minLength': 1, 'description': 'Unique dispute id.'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['action', 'disputeId', 'resolution', 'evidence'], 'properties': {'action': {'type': 'string', 'const': 'resolve', 'description': 'Resolve an existing dispute.'}, 'evidence': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Evidence for resolution.'}, 'disputeId': {'type': 'string', 'maxLength': 80, 'minLength': 1, 'description': 'Existing dispute id.'}, 'resolution': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'How the dispute was resolved.'}}, 'additionalProperties': False}]}, 'occurredAt': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$', 'maxLength': 30, 'description': 'When the agreement or evidence was observed.'}, 'submissionId': {'type': 'string', 'pattern': '^[0-7][0-9A-HJKMNP-TV-Z]{25}$', 'description': 'Fresh idempotency ULID; reuse this exact id and payload after an uncertain write.'}, 'expectedRevision': {'type': 'integer', 'maximum': 100000, 'minimum': 1, 'description': 'Current revision from spellbook_collection_buying_get; stale revisions are rejected.'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['submissionId', 'occurredAt', 'dealId', 'expectedRevision', 'kind', 'payload'], 'properties': {'kind': {'type': 'string', 'const': 'close', 'description': 'Close only after all counts, goods, payments/refunds and disputes reconcile.'}, 'dealId': {'type': 'string', 'pattern': '^[0-7][0-9A-HJKMNP-TV-Z]{25}$', 'description': 'Deal id returned by the open command.'}, 'payload': {'type': 'object', 'required': ['evidence'], 'properties': {'evidence': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Evidence the submitted deal facts reconcile.'}}, 'additionalProperties': False}, 'occurredAt': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$', 'maxLength': 30, 'description': 'When the agreement or evidence was observed.'}, 'submissionId': {'type': 'string', 'pattern': '^[0-7][0-9A-HJKMNP-TV-Z]{25}$', 'description': 'Fresh idempotency ULID; reuse this exact id and payload after an uncertain write.'}, 'expectedRevision': {'type': 'integer', 'maximum': 100000, 'minimum': 1, 'description': 'Current revision from spellbook_collection_buying_get; stale revisions are rejected.'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['submissionId', 'occurredAt', 'dealId', 'expectedRevision', 'kind', 'payload'], 'properties': {'kind': {'type': 'string', 'const': 'reopen', 'description': 'Reopen a closed deal to record late corrections or disputes.'}, 'dealId': {'type': 'string', 'pattern': '^[0-7][0-9A-HJKMNP-TV-Z]{25}$', 'description': 'Deal id returned by the open command.'}, 'payload': {'type': 'object', 'required': ['reason', 'evidence'], 'properties': {'reason': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Why the closed deal must be reopened.'}, 'evidence': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'New evidence requiring recovery.'}}, 'additionalProperties': False}, 'occurredAt': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$', 'maxLength': 30, 'description': 'When the agreement or evidence was observed.'}, 'submissionId': {'type': 'string', 'pattern': '^[0-7][0-9A-HJKMNP-TV-Z]{25}$', 'description': 'Fresh idempotency ULID; reuse this exact id and payload after an uncertain write.'}, 'expectedRevision': {'type': 'integer', 'maximum': 100000, 'minimum': 1, 'description': 'Current revision from spellbook_collection_buying_get; stale revisions are rejected.'}}, 'additionalProperties': False}], 'description': 'One lifecycle command with a fresh submissionId and occurredAt. After open, supply dealId and expectedRevision.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The seller-owned workspace to record this deal in. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId'], 'properties': {'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace whose held cards to total, from spellbook_workspaces_list. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'boxType': {'enum': ['all', 'play', 'draft', 'jumpstart', 'commander', 'precon'], 'type': 'string', 'default': 'all', 'description': 'Restrict candidates to one box type. Defaults to all, covering every type.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['startingCreditUsd', 'exitChannel', 'maxSnapshotAgeHours', 'lines', 'costs'], 'properties': {'costs': {'type': 'object', 'properties': {'orderCount': {'type': 'object', 'required': ['value', 'basis'], 'properties': {'basis': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'value': {'type': 'integer', 'maximum': 100000, 'minimum': 1}}, 'description': 'Assumed number of orders with its basis. Omit if unknown.', 'additionalProperties': False}, 'parcelCount': {'type': 'object', 'required': ['value', 'basis'], 'properties': {'basis': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'value': {'type': 'integer', 'maximum': 100000, 'minimum': 1}}, 'description': 'Assumed number of parcels with its basis. Omit if unknown.', 'additionalProperties': False}, 'checkoutTaxUsd': {'type': 'object', 'required': ['value', 'basis'], 'properties': {'basis': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'value': {'type': 'number', 'maximum': 1000000, 'minimum': 0, 'multipleOf': 0.01}}, 'description': 'Assumed checkout tax in USD with its basis. Omit if unknown.', 'additionalProperties': False}, 'checkoutPayment': {'enum': ['cash', 'credit'], 'type': 'string', 'description': 'Whether checkout was paid in cash or credit. Omit if unknown.'}, 'checkoutOtherUsd': {'type': 'object', 'required': ['value', 'basis'], 'properties': {'basis': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'value': {'type': 'number', 'maximum': 1000000, 'minimum': 0, 'multipleOf': 0.01}}, 'description': 'Assumed other checkout costs in USD with its basis. Omit if unknown.', 'additionalProperties': False}, 'combinedFeeRatePct': {'type': 'object', 'required': ['value', 'basis'], 'properties': {'basis': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'value': {'type': 'number', 'maximum': 100, 'minimum': 0}}, 'description': 'Assumed combined marketplace fee rate as a percent with its basis. Omit if unknown.', 'additionalProperties': False}, 'salesTaxFeeBaseUsd': {'type': 'object', 'required': ['value', 'basis'], 'properties': {'basis': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'value': {'type': 'number', 'maximum': 1000000, 'minimum': 0, 'multipleOf': 0.01}}, 'description': 'Assumed sales-tax fee base in USD with its basis. Omit if unknown.', 'additionalProperties': False}, 'checkoutShippingUsd': {'type': 'object', 'required': ['value', 'basis'], 'properties': {'basis': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'value': {'type': 'number', 'maximum': 1000000, 'minimum': 0, 'multipleOf': 0.01}}, 'description': 'Assumed checkout shipping cost in USD with its basis. Omit if unknown.', 'additionalProperties': False}, 'fixedFeePerOrderUsd': {'type': 'object', 'required': ['value', 'basis'], 'properties': {'basis': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'value': {'type': 'number', 'maximum': 1000000, 'minimum': 0, 'multipleOf': 0.01}}, 'description': 'Assumed fixed fee per order in USD with its basis. Omit if unknown.', 'additionalProperties': False}, 'postagePerParcelUsd': {'type': 'object', 'required': ['value', 'basis'], 'properties': {'basis': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'value': {'type': 'number', 'maximum': 1000000, 'minimum': 0, 'multipleOf': 0.01}}, 'description': 'Assumed postage per parcel in USD with its basis. Omit if unknown.', 'additionalProperties': False}, 'otherExitCashCostsUsd': {'type': 'object', 'required': ['value', 'basis'], 'properties': {'basis': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'value': {'type': 'number', 'maximum': 1000000, 'minimum': 0, 'multipleOf': 0.01}}, 'description': 'Assumed other exit cash costs in USD with its basis. Omit if unknown.', 'additionalProperties': False}, 'packagingPerParcelUsd': {'type': 'object', 'required': ['value', 'basis'], 'properties': {'basis': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'value': {'type': 'number', 'maximum': 1000000, 'minimum': 0, 'multipleOf': 0.01}}, 'description': 'Assumed packaging cost per parcel in USD with its basis. Omit if unknown.', 'additionalProperties': False}, 'buyerShippingCollectedUsd': {'type': 'object', 'required': ['value', 'basis'], 'properties': {'basis': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'value': {'type': 'number', 'maximum': 1000000, 'minimum': 0, 'multipleOf': 0.01}}, 'description': 'Assumed shipping collected from the resale buyer in USD with its basis. Omit if unknown.', 'additionalProperties': False}}, 'description': 'Explicit cost assumptions for the resale scenario. Every field is optional; omit any cost that is unknown rather than guessing zero.', 'additionalProperties': False}, 'lines': {'type': 'array', 'items': {'type': 'object', 'required': ['tcgProductId', 'expectedBoxType', 'quantity'], 'properties': {'quantity': {'type': 'integer', 'maximum': 10000, 'minimum': 1, 'description': 'Number of units of this line in the scenario. Required.'}, 'tcgProductId': {'type': 'string', 'pattern': '^\\d{1,12}$', 'description': 'Exact TCGplayer product id for this sealed product line, digits only. Required.'}, 'expectedBoxType': {'enum': ['play', 'draft', 'jumpstart', 'commander', 'precon'], 'type': 'string', 'description': 'The expected box type for this line. Required.'}, 'resaleUnitPriceUsd': {'type': 'object', 'required': ['value', 'basis'], 'properties': {'basis': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'value': {'type': 'number', 'maximum': 1000000, 'minimum': 0, 'multipleOf': 0.01}}, 'description': 'Assumed per-unit intact resale price in USD with its basis. Omit to leave resale price unassumed.', 'additionalProperties': False}}, 'additionalProperties': False}, 'maxItems': 10, 'minItems': 1, 'description': 'Up to 10 exact sealed product lines to assess. Required, at least one.'}, 'exitChannel': {'type': 'string', 'maxLength': 30, 'minLength': 1, 'description': 'Name of the channel the intact resale would exit through. Required, up to 30 characters.'}, 'startingCreditUsd': {'type': 'number', 'maximum': 1000000, 'minimum': 0, 'multipleOf': 0.01, 'description': 'Card Kingdom store credit available to spend in this scenario, in USD. Required.'}, 'maxSnapshotAgeHours': {'type': 'number', 'maximum': 8760, 'description': 'Maximum age in hours of price snapshots this assessment may use. Required.', 'exclusiveMinimum': 0}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'receiptId'], 'properties': {'receiptId': {'type': 'string', 'pattern': '^[0-7][0-9A-HJKMNP-TV-Z]{25}$', 'description': "The receipt's receiptId from the record response, or the submissionId you chose when recording it. Either one resolves the same receipt inside the workspace. Required."}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace the receipt belongs to. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId'], 'properties': {'kind': {'enum': ['consideration', 'work_observation', 'realized_outcome'], 'type': 'string', 'description': 'Restrict the list to one receipt kind. Omit to include every kind.'}, 'limit': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1, 'description': 'Maximum receipts to return, 1 to 50. Omit for the default of 20.'}, 'cursor': {'type': 'string', 'maxLength': 500, 'minLength': 1, 'description': 'Opaque cursor from a previous page, passed back unchanged. Omit to start from the first page.'}, 'itemId': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Restrict the list to receipts referencing this exact item id. Omit for no item filter.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace to list receipts from. Required.'}, 'parentReceiptId': {'type': 'string', 'pattern': '^[0-7][0-9A-HJKMNP-TV-Z]{25}$', 'description': "Restrict the list to receipts linked to this parent receipt's receiptId from the record response. Omit for no parent filter."}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'request'], 'properties': {'request': {'oneOf': [{'type': 'object', 'required': ['submissionId', 'occurredAt', 'kind', 'payload'], 'properties': {'kind': {'type': 'string', 'const': 'realized_outcome'}, 'payload': {'type': 'object', 'required': ['parentReceiptId', 'candidateId', 'stage', 'provenance', 'summary', 'purchasedAt', 'receivedAt', 'soldAt', 'settledAt', 'quantityPurchased', 'quantityReceived', 'quantitySold', 'quantityWrittenOff', 'receivedDescription', 'paidUsd', 'refundUsd', 'saleGrossUsd', 'exitFeesUsd', 'exitShippingUsd', 'orderReference', 'benchmark'], 'properties': {'stage': {'enum': ['purchased', 'received', 'closed', 'abandoned'], 'type': 'string'}, 'soldAt': {'anyOf': [{'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$'}, {'type': 'null'}]}, 'paidUsd': {'type': 'number', 'maximum': 1000000000, 'minimum': 0, 'multipleOf': 0.01}, 'summary': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'benchmark': {'anyOf': [{'type': 'object', 'required': ['method', 'marks'], 'properties': {'marks': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'priceUsd', 'observedAt', 'source'], 'properties': {'id': {'type': 'string', 'maxLength': 100, 'minLength': 1}, 'source': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'priceUsd': {'type': 'number', 'maximum': 1000000, 'minimum': 0, 'multipleOf': 0.01}, 'observedAt': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$'}}, 'additionalProperties': False}, 'maxItems': 200, 'minItems': 1}, 'method': {'type': 'string', 'const': 'equal_weight_fixed_printing_basket'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'refundUsd': {'type': 'number', 'maximum': 1000000000, 'minimum': 0, 'multipleOf': 0.01}, 'settledAt': {'anyOf': [{'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$'}, {'type': 'null'}]}, 'provenance': {'enum': ['customer_reported', 'agent_observed'], 'type': 'string'}, 'receivedAt': {'anyOf': [{'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$'}, {'type': 'null'}]}, 'candidateId': {'type': 'string', 'maxLength': 100, 'minLength': 1}, 'exitFeesUsd': {'anyOf': [{'type': 'number', 'maximum': 1000000000, 'minimum': 0, 'multipleOf': 0.01}, {'type': 'null'}]}, 'purchasedAt': {'anyOf': [{'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$'}, {'type': 'null'}]}, 'quantitySold': {'type': 'integer', 'maximum': 100000, 'minimum': 0}, 'saleGrossUsd': {'anyOf': [{'type': 'number', 'maximum': 1000000000, 'minimum': 0, 'multipleOf': 0.01}, {'type': 'null'}]}, 'orderReference': {'anyOf': [{'type': 'string', 'maxLength': 200, 'minLength': 1}, {'type': 'null'}]}, 'exitShippingUsd': {'anyOf': [{'type': 'number', 'maximum': 1000000000, 'minimum': 0, 'multipleOf': 0.01}, {'type': 'null'}]}, 'parentReceiptId': {'type': 'string', 'pattern': '^[0-7][0-9A-HJKMNP-TV-Z]{25}$', 'description': "The parent consideration's receiptId from the record response, or the submissionId you chose when recording it. Either one resolves the same receipt inside the workspace; the stored link is always the receiptId. Required."}, 'quantityReceived': {'type': 'integer', 'maximum': 100000, 'minimum': 0}, 'quantityPurchased': {'type': 'integer', 'maximum': 100000, 'minimum': 0}, 'quantityWrittenOff': {'type': 'integer', 'maximum': 100000, 'minimum': 0}, 'receivedDescription': {'type': 'string', 'maxLength': 500, 'minLength': 1}}, 'additionalProperties': False}, 'occurredAt': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$'}, 'submissionId': {'type': 'string', 'pattern': '^[0-7][0-9A-HJKMNP-TV-Z]{25}$'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['submissionId', 'occurredAt', 'kind', 'payload'], 'properties': {'kind': {'type': 'string', 'const': 'consideration'}, 'payload': {'type': 'object', 'required': ['preferences', 'coverage', 'sources', 'resources', 'candidates'], 'properties': {'sources': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'source', 'observedAt'], 'properties': {'id': {'type': 'string', 'maxLength': 100, 'minLength': 1}, 'source': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'observedAt': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$'}, 'snapshotId': {'type': 'string', 'maxLength': 200, 'minLength': 1}}, 'additionalProperties': False}, 'maxItems': 20}, 'coverage': {'type': 'object', 'required': ['kind', 'searched', 'limitations'], 'properties': {'kind': {'type': 'string', 'const': 'agent_observed'}, 'searched': {'type': 'array', 'items': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'maxItems': 25}, 'limitations': {'type': 'array', 'items': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'maxItems': 25}}, 'additionalProperties': False}, 'benchmark': {'type': 'object', 'required': ['method', 'marks'], 'properties': {'marks': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'priceUsd', 'observedAt', 'source'], 'properties': {'id': {'type': 'string', 'maxLength': 100, 'minLength': 1}, 'source': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'priceUsd': {'type': 'number', 'maximum': 1000000, 'minimum': 0, 'multipleOf': 0.01}, 'observedAt': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$'}}, 'additionalProperties': False}, 'maxItems': 200, 'minItems': 1}, 'method': {'type': 'string', 'const': 'equal_weight_fixed_printing_basket'}}, 'additionalProperties': False}, 'resources': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'kind', 'capacity', 'unit'], 'properties': {'id': {'type': 'string', 'maxLength': 100, 'minLength': 1}, 'kind': {'enum': ['capital', 'stock'], 'type': 'string'}, 'unit': {'enum': ['usd', 'units'], 'type': 'string'}, 'capacity': {'anyOf': [{'type': 'number', 'maximum': 1000000000, 'minimum': 0}, {'type': 'null'}]}, 'sourceId': {'type': 'string', 'maxLength': 100, 'minLength': 1}}, 'additionalProperties': False}, 'maxItems': 20}, 'candidates': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'label', 'status', 'rationale', 'sourceIds', 'exclusiveGroupIds', 'resourceUses', 'effort', 'risk', 'holdingDays', 'economics', 'unknowns', 'actualRecordRefs'], 'properties': {'id': {'type': 'string', 'maxLength': 100, 'minLength': 1}, 'risk': {'type': 'object', 'required': ['condition', 'price', 'liquidity', 'basis'], 'properties': {'basis': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'price': {'enum': ['low', 'medium', 'high', 'unknown'], 'type': 'string'}, 'condition': {'enum': ['low', 'medium', 'high', 'unknown'], 'type': 'string'}, 'liquidity': {'enum': ['low', 'medium', 'high', 'unknown'], 'type': 'string'}}, 'additionalProperties': False}, 'label': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'effort': {'type': 'object', 'required': ['activeMinutes', 'parcels', 'cardsHandled', 'basis'], 'properties': {'basis': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'parcels': {'anyOf': [{'type': 'integer', 'maximum': 1000000000, 'minimum': 0}, {'type': 'null'}]}, 'cardsHandled': {'anyOf': [{'type': 'integer', 'maximum': 1000000000, 'minimum': 0}, {'type': 'null'}]}, 'activeMinutes': {'anyOf': [{'type': 'integer', 'maximum': 1000000000, 'minimum': 0}, {'type': 'null'}]}}, 'additionalProperties': False}, 'status': {'enum': ['chosen', 'declined', 'unknown'], 'type': 'string'}, 'unknowns': {'type': 'array', 'items': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'maxItems': 25}, 'buyTarget': {'type': 'object', 'required': ['id', 'label', 'scryfallId', 'tcgProductId', 'finish', 'condition', 'language', 'buy', 'exit', 'expectedNetUsd', 'status', 'reasons', 'thesisKillers', 'stopRules', 'thin'], 'properties': {'id': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'buy': {'type': 'object', 'required': ['venue', 'sellerName', 'listingId', 'url', 'unitPriceUsd', 'shippingPerOrderUsd', 'allInUnitUsd', 'availableQuantity', 'priceCeilingUsd', 'allInCeilingUsd', 'quantity', 'quantityCap', 'freshness'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'venue': {'type': 'string', 'const': 'tcgplayer'}, 'quantity': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'freshness': {'type': 'object', 'required': ['observedAt', 'ageHours'], 'properties': {'ageHours': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'observedAt': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}, 'listingId': {'anyOf': [{'type': 'string', 'maxLength': 500, 'minLength': 1}, {'type': 'null'}]}, 'sellerName': {'anyOf': [{'type': 'string', 'maxLength': 500, 'minLength': 1}, {'type': 'null'}]}, 'quantityCap': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'allInUnitUsd': {'type': 'number', 'maximum': 1000000, 'minimum': 0, 'multipleOf': 0.01}, 'unitPriceUsd': {'type': 'number', 'maximum': 1000000, 'minimum': 0, 'multipleOf': 0.01}, 'allInCeilingUsd': {'type': 'number', 'maximum': 1000000, 'minimum': 0, 'multipleOf': 0.01}, 'priceCeilingUsd': {'type': 'number', 'maximum': 1000000, 'minimum': 0, 'multipleOf': 0.01}, 'availableQuantity': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'shippingPerOrderUsd': {'type': 'number', 'maximum': 1000000, 'minimum': 0, 'multipleOf': 0.01}}, 'additionalProperties': False}, 'exit': {'type': 'object', 'required': ['venue', 'url', 'productName', 'gradeScenario', 'expectedUnitUsd', 'nmUnitUsd', 'exUnitUsd', 'feesAndDeliveryPerUnitUsd', 'expectedNetUnitUsd', 'quantityBuying', 'source', 'freshness'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'venue': {'type': 'string', 'const': 'cardkingdom'}, 'source': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'exUnitUsd': {'type': 'number', 'maximum': 1000000, 'minimum': 0, 'multipleOf': 0.01}, 'freshness': {'type': 'object', 'required': ['observedAt', 'ageHours'], 'properties': {'ageHours': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'observedAt': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}, 'nmUnitUsd': {'type': 'number', 'maximum': 1000000, 'minimum': 0, 'multipleOf': 0.01}, 'productName': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'gradeScenario': {'enum': ['NM', 'EX'], 'type': 'string'}, 'quantityBuying': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'expectedUnitUsd': {'type': 'number', 'maximum': 1000000, 'minimum': 0, 'multipleOf': 0.01}, 'expectedNetUnitUsd': {'type': 'number'}, 'feesAndDeliveryPerUnitUsd': {'type': 'number', 'maximum': 1000000, 'minimum': 0, 'multipleOf': 0.01}}, 'additionalProperties': False}, 'name': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'thin': {'type': 'boolean'}, 'label': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'finish': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'status': {'enum': ['candidate', 'rejected'], 'type': 'string'}, 'reasons': {'type': 'array', 'items': {'type': 'string', 'maxLength': 500, 'minLength': 1}}, 'setCode': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'setName': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'language': {'type': 'string', 'const': 'English'}, 'condition': {'type': 'string', 'const': 'NM'}, 'stopRules': {'type': 'array', 'items': {'type': 'string', 'maxLength': 500, 'minLength': 1}}, 'scryfallId': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'tcgProductId': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'thesisKillers': {'type': 'array', 'items': {'type': 'string', 'maxLength': 500, 'minLength': 1}}, 'expectedNetUsd': {'type': 'number'}, 'collectorNumber': {'anyOf': [{'type': 'string', 'maxLength': 500, 'minLength': 1}, {'type': 'null'}]}}, 'additionalProperties': False}, 'economics': {'type': 'object', 'required': ['cashOutUsd', 'cashInUsd', 'creditSpentUsd', 'creditReceivedUsd', 'inventoryMarketUsd', 'basis'], 'properties': {'basis': {'enum': ['quote', 'estimate', 'unknown'], 'type': 'string'}, 'cashInUsd': {'anyOf': [{'type': 'number', 'maximum': 1000000000, 'minimum': 0}, {'type': 'null'}]}, 'cashOutUsd': {'anyOf': [{'type': 'number', 'maximum': 1000000000, 'minimum': 0}, {'type': 'null'}]}, 'creditSpentUsd': {'anyOf': [{'type': 'number', 'maximum': 1000000000, 'minimum': 0}, {'type': 'null'}]}, 'creditReceivedUsd': {'anyOf': [{'type': 'number', 'maximum': 1000000000, 'minimum': 0}, {'type': 'null'}]}, 'inventoryMarketUsd': {'anyOf': [{'type': 'number', 'maximum': 1000000000, 'minimum': 0}, {'type': 'null'}]}}, 'additionalProperties': False}, 'rationale': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'sourceIds': {'type': 'array', 'items': {'type': 'string', 'maxLength': 100, 'minLength': 1}, 'maxItems': 25}, 'holdingDays': {'anyOf': [{'type': 'integer', 'maximum': 1000000000, 'minimum': 0}, {'type': 'null'}]}, 'resourceUses': {'type': 'array', 'items': {'type': 'object', 'required': ['resourceId', 'amount'], 'properties': {'amount': {'anyOf': [{'type': 'number', 'maximum': 1000000000, 'minimum': 0}, {'type': 'null'}]}, 'resourceId': {'type': 'string', 'maxLength': 100, 'minLength': 1}}, 'additionalProperties': False}, 'maxItems': 25}, 'actualRecordRefs': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'id'], 'properties': {'id': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'kind': {'enum': ['acquisition', 'disposition', 'earnings'], 'type': 'string'}}, 'additionalProperties': False}, 'maxItems': 25}, 'exclusiveGroupIds': {'type': 'array', 'items': {'type': 'string', 'maxLength': 100, 'minLength': 1}, 'maxItems': 25}}, 'additionalProperties': False}, 'maxItems': 20, 'minItems': 1}, 'preferences': {'type': 'object', 'required': ['version', 'asOf', 'capitalBudgetUsd', 'maxActiveMinutesPerWeek', 'maxParcelsPerWeek', 'riskTolerance', 'notes'], 'properties': {'asOf': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$'}, 'notes': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'version': {'type': 'string', 'maxLength': 100, 'minLength': 1}, 'riskTolerance': {'enum': ['low', 'medium', 'high', 'unknown'], 'type': 'string'}, 'capitalBudgetUsd': {'anyOf': [{'type': 'number', 'maximum': 1000000000, 'minimum': 0}, {'type': 'null'}]}, 'maxParcelsPerWeek': {'anyOf': [{'type': 'integer', 'maximum': 1000000000, 'minimum': 0}, {'type': 'null'}]}, 'maxActiveMinutesPerWeek': {'anyOf': [{'type': 'integer', 'maximum': 1000000000, 'minimum': 0}, {'type': 'null'}]}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'occurredAt': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$'}, 'submissionId': {'type': 'string', 'pattern': '^[0-7][0-9A-HJKMNP-TV-Z]{25}$'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['submissionId', 'occurredAt', 'kind', 'payload'], 'properties': {'kind': {'type': 'string', 'const': 'work_observation'}, 'payload': {'type': 'object', 'required': ['itemIds', 'observation', 'provenance', 'summary', 'actualRecordRefs'], 'properties': {'binId': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'itemIds': {'type': 'array', 'items': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'maxItems': 25}, 'summary': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'provenance': {'enum': ['customer_reported', 'agent_observed'], 'type': 'string'}, 'observation': {'enum': ['reported_done', 'placement_reported', 'api_save_failed', 'location_readback'], 'type': 'string'}, 'parentReceiptId': {'type': 'string', 'pattern': '^[0-7][0-9A-HJKMNP-TV-Z]{25}$', 'description': "The parent consideration's receiptId from the record response, or the submissionId you chose when recording it. Either one resolves the same receipt inside the workspace; the stored link is always the receiptId. Omit when the work links to no consideration."}, 'actualRecordRefs': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'id'], 'properties': {'id': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'kind': {'enum': ['acquisition', 'disposition', 'earnings'], 'type': 'string'}}, 'additionalProperties': False}, 'maxItems': 25}}, 'additionalProperties': False}, 'occurredAt': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$'}, 'submissionId': {'type': 'string', 'pattern': '^[0-7][0-9A-HJKMNP-TV-Z]{25}$'}}, 'additionalProperties': False}], 'description': "The evidence envelope: a submissionId, occurredAt, a kind (realized_outcome, consideration or work_observation), and that kind's payload. Required."}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace to append this evidence to. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['deckId'], 'properties': {'deckId': {'type': 'string', 'pattern': '^[A-Za-z0-9_-]+$', 'maxLength': 100, 'minLength': 1, 'description': 'The exact deck id returned by the deck workflow. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'eventId', 'playerId', 'idempotencyKey'], 'properties': {'name': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'Optional deck name.'}, 'format': {'enum': ['Standard', 'Expanded', 'Unlimited'], 'type': 'string', 'default': 'Standard', 'description': 'Deck format. Defaults to Standard.'}, 'eventId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The Limitless tournament event id. Required.'}, 'playerId': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'The exact player name or id as shown by the selected event. Required.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace to import into. The caller must be its owner. Required.'}, 'idempotencyKey': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'A caller-generated retry key. Reuse it unchanged after an uncertain result. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'mode'], 'properties': {'mode': {'enum': ['manual', 'auto_list', 'full'], 'type': 'string', 'description': 'The mode the seller chose: manual, auto_list, or full. Required.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace whose eBay automation mode to set. The caller must own it. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['jobId'], 'properties': {'jobId': {'type': 'string', 'pattern': '^(?:[0-9A-HJKMNP-TV-Z]{26}|autolist-[0-9a-f]{32})$', 'description': 'The jobId returned by spellbook_ebay_publish or spellbook_ebay_reprice. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'multiplier'], 'properties': {'binId': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'Restrict publishing to one exact bin. Omit to consider every owned copy.'}, 'dryRun': {'type': 'boolean', 'default': True, 'description': 'True previews the run with no live listings created. False publishes for real. Defaults to true; a live run needs an explicit false.'}, 'itemIds': {'type': 'array', 'items': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'maxItems': 100, 'minItems': 1, 'description': 'Restrict publishing to these exact Item ids, from a prior spellbook_inventory_items_query. Pass one id to list one card. The owned-only rule still applies to each id. Omit to consider every owned copy.'}, 'floorUsd': {'type': 'number', 'maximum': 100000, 'minimum': 0, 'description': 'A price floor in USD that only ever raises a computed price. Omit for no floor.'}, 'setCodes': {'type': 'array', 'items': {'type': 'string', 'maxLength': 20, 'minLength': 1}, 'maxItems': 50, 'description': 'Restrict publishing to these set codes. Omit to consider every set.'}, 'batchSize': {'type': 'integer', 'maximum': 2000, 'minimum': 1, 'description': 'Maximum copies to submit in this call. Omit for the default batch size.'}, 'multiplier': {'type': 'number', 'maximum': 20, 'description': "Price multiplier applied to each copy's market price, e.g. 0.96 lists at 96% of market. Required.", 'exclusiveMinimum': 0}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace whose owned copies to publish. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'multiplier'], 'properties': {'binId': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'Restrict the run to one exact inventory bin. Omit for every live eBay listing in the workspace.'}, 'dryRun': {'type': 'boolean', 'default': True, 'description': 'True previews the listings and counts with no marketplace change. False queues the reprice job. Defaults to true; applying requires explicit false.'}, 'itemIds': {'type': 'array', 'items': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'maxItems': 100, 'minItems': 1, 'description': 'Restrict the run to these exact listed Item ids from spellbook_inventory_items_query. Omit for every live eBay listing in the workspace.'}, 'floorUsd': {'type': 'number', 'maximum': 100000, 'minimum': 0, 'description': 'Optional minimum ask in USD. Existing backend floors and locks can still raise the resulting ask.'}, 'setCodes': {'type': 'array', 'items': {'type': 'string', 'maxLength': 20, 'minLength': 1}, 'maxItems': 50, 'description': 'Restrict the run to these set codes. Omit for every live eBay listing in the workspace.'}, 'multiplier': {'type': 'number', 'maximum': 20, 'description': 'Market price multiplier for the selected listings, such as 0.96 for 96% of market. Required.', 'exclusiveMinimum': 0}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace whose existing eBay listings to reprice. Required.'}, 'acquisitionSource': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': 'Restrict the run to one exact acquisition source. Omit for every live eBay listing in the workspace.'}, 'skipIfWithinPercent': {'type': 'number', 'default': 2, 'maximum': 50, 'minimum': 0, 'description': 'Skip an existing ask already within this percentage of the target. Defaults to 2.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'itemIds'], 'properties': {'itemIds': {'type': 'array', 'items': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'maxItems': 25, 'minItems': 1, 'description': 'Up to 25 exact Item ids whose eBay listings to end, from a prior spellbook_inventory_items_query. Required, at least one.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace that owns the copies. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'choiceConfirmed'], 'properties': {'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The exact workspaceId the seller explicitly selected for their one free Seller workspace. Required.'}, 'choiceConfirmed': {'type': 'boolean', 'const': True, 'description': 'True only after the seller explicitly confirms this workspace choice in the current conversation. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'topic': {'enum': ['sealed-ev', 'pricing', 'card-identity', 'buylist-and-exits', 'reprint-risk', 'selling', 'inventory', 'portfolio'], 'type': 'string', 'description': 'Narrow results to one education topic id. Omit to search every published topic.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'binId', 'physicallyConfirmed', 'items'], 'properties': {'binId': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'The bin these cards physically sit in. A bin id is a container letter plus an incrementing number, like B0001, where the letter names the physical box and the number names the bag inside it. Required.'}, 'items': {'type': 'array', 'items': {'type': 'object', 'required': ['scryfallId', 'cardName', 'setCode', 'collectorNumber', 'condition', 'finish', 'qty'], 'properties': {'qty': {'type': 'integer', 'maximum': 500, 'minimum': 1, 'description': 'The DESIRED TOTAL count of this exact printing, condition and finish in this bin, never an amount to add. Required.'}, 'finish': {'enum': ['nf', 'fo', 'etched', 'surge', 'rh', '1e', '1e-fo'], 'type': 'string', 'description': 'The finish of these copies, using the values listed in this field. Pokemon supports nf (Normal/Unlimited), fo (Holofoil), rh (Reverse Holofoil), 1e (1st Edition) and 1e-fo (1st Edition Holofoil); other games have their own valid finishes. Required.'}, 'setCode': {'type': 'string', 'maxLength': 20, 'minLength': 1, 'description': 'The set code of this exact printing. Required.'}, 'cardName': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': "The card's name, echoed back in the response. Required."}, 'condition': {'enum': ['NM', 'LP', 'MP', 'HP', 'DMG'], 'type': 'string', 'description': 'The physical condition of these copies. Required.'}, 'scryfallId': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'The exact printing id, from spellbook_printings_search. Required; a wrong id records the wrong card.'}, 'collectorNumber': {'type': 'string', 'maxLength': 20, 'minLength': 1, 'description': 'The collector number of this exact printing. Required.'}, 'acquisitionPrice': {'type': 'number', 'maximum': 1000000, 'minimum': 0, 'description': "Per-copy acquisition cost in USD. When it is omitted or zero, the server records an implied per-card cost from the set's box price instead. Pass the real cost when the person knows it."}, 'acquisitionSource': {'type': 'string', 'default': 'agent_intake', 'maxLength': 100, 'minLength': 1, 'description': 'Provenance tag for these rows. Defaults to agent_intake; omit unless a different source genuinely applies.'}}, 'additionalProperties': False}, 'maxItems': 200, 'minItems': 1, 'description': 'Up to 200 exact printing rows to record in this bin. Required, at least one.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace to record these cards into. Required; writes only to this workspace.'}, 'physicallyConfirmed': {'type': 'boolean', 'const': True, 'description': 'Must be true, asserting a person has physically counted these cards. The call is refused when this is omitted or false.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId'], 'properties': {'limit': {'type': 'integer', 'default': 100, 'maximum': 500, 'minimum': 1, 'description': 'Maximum rows to return, 1 to 500. Omit for the default of 100.'}, 'cursor': {'type': 'string', 'minLength': 1, 'description': 'Opaque cursor from a previous page, passed back unchanged. Omit to start from the first page.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace to read holdings for. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'source', 'csv'], 'properties': {'csv': {'type': 'string', 'maxLength': 200000, 'minLength': 1, 'description': 'The full CSV text, header row included, exactly as the export produced it. Required. At most 200,000 characters.'}, 'source': {'enum': ['manabox', 'tcg'], 'type': 'string', 'description': 'Which export this is: manabox for a ManaBox CSV (needs Scryfall ID, Quantity, Condition and Foil columns), tcg for a TCGplayer seller inventory export (needs the TCGplayer Id column). Required.'}, 'binName': {'type': 'string', 'pattern': '^[A-Za-z0-9 _-]+$', 'maxLength': 48, 'minLength': 1, 'description': 'A human name for that one bin, 1 to 48 letters, digits, spaces, dashes or underscores. Honored only when oneBinPerUpload is true. A name another import already holds is refused.'}, 'binPrefix': {'type': 'string', 'pattern': '^[A-Z]$', 'description': 'One capital letter that starts the auto-assigned bin codes, e.g. C gives C0001, C0002. Defaults to C.'}, 'totalCost': {'type': 'number', 'maximum': 10000000, 'minimum': 0, 'description': 'What the seller paid for the whole file in USD, split equally across every copy. Omit when the seller has not stated it; omitting records zero cost.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace to import into. Required; writes only to this workspace.'}, 'oneBinPerUpload': {'type': 'boolean', 'description': 'True puts the whole file in one fresh bin instead of packing 200 cards per bin across the rolling sequence. Defaults to false.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId'], 'properties': {'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace whose incoming inventory to read, from spellbook_workspaces_list. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'acquisitionSources'], 'properties': {'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace that holds the pending copies. Required; writes only to this workspace.'}, 'acquisitionSources': {'type': 'array', 'items': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'maxItems': 50, 'minItems': 1, 'description': 'The acquisitionSource of each order or import to receive, exactly as spellbook_inventory_incoming or spellbook_purchase_incoming_record returned it. Required, at least one.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId'], 'properties': {'bins': {'type': 'array', 'items': {'type': 'string', 'maxLength': 64, 'minLength': 1}, 'maxItems': 25, 'description': 'Restrict results to these exact bin names, up to 25. Omit to search every bin.'}, 'limit': {'type': 'integer', 'default': 20, 'maximum': 1000, 'minimum': 1, 'description': 'Maximum Items to return, 1 to 1000. Omit for the default of 20.'}, 'cursor': {'type': 'string', 'minLength': 1, 'description': 'Opaque cursor from a previous page, passed back unchanged. Omit to start from the first page.'}, 'groups': {'type': 'array', 'items': {'type': 'object', 'required': ['scryfallId', 'finish', 'condition'], 'properties': {'finish': {'type': 'string', 'minLength': 1, 'description': 'The finish to match, e.g. nf, fo, etched or surge. Required.'}, 'condition': {'type': 'string', 'minLength': 1, 'description': 'The condition to match, e.g. NM, LP, MP, HP or DMG. Required.'}, 'scryfallId': {'type': 'string', 'minLength': 1, 'description': "The printing's scryfallId. Required."}}, 'additionalProperties': False}, 'maxItems': 25, 'description': 'Restrict results to these exact printing, finish and condition groups, up to 25. Omit to skip this filter.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace to read Items from. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'itemIds', 'toBin', 'expectedBins'], 'properties': {'toBin': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': 'The bin these Items are being confirmed into. Required.'}, 'itemIds': {'type': 'array', 'items': {'type': 'string', 'minLength': 1}, 'maxItems': 25, 'minItems': 1, 'description': 'Up to 25 exact Item ids to move, from a prior spellbook_inventory_items_query. Required, at least one.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace the Items belong to. Required.'}, 'expectedBins': {'type': 'array', 'items': {'type': 'object', 'required': ['itemId', 'binId'], 'properties': {'binId': {'type': 'string', 'minLength': 1, 'description': 'The bin this Item was last observed in, before the move. Required.'}, 'itemId': {'type': 'string', 'minLength': 1, 'description': 'The Item id this observation is about. Required.'}}, 'additionalProperties': False}, 'maxItems': 25, 'minItems': 1, 'description': 'One prior-bin observation per itemId in itemIds, up to 25. Required; a missing or changed Item rejects the whole batch.'}, 'sourceSignalId': {'type': 'string', 'minLength': 1, 'description': 'An id linking this confirmation to its originating signal. Omit when there is none.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'tcgProductId', 'paidPriceUsd', 'acquisitionDate', 'binPrefix'], 'properties': {'binPrefix': {'type': 'string', 'pattern': '^[A-Z]$', 'description': 'One capital letter that starts the auto-assigned bin codes, e.g. C gives C0001. Required.'}, 'copyCount': {'type': 'integer', 'maximum': 20, 'minimum': 1, 'description': 'How many identical decks were opened, 1 to 20. Defaults to 1.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace to add the cards to, from spellbook_workspaces_list. Required; writes only to this workspace.'}, 'paidPriceUsd': {'type': 'number', 'maximum': 100000, 'minimum': 0, 'description': 'What the seller paid for ONE deck in USD. Required. Send 0 only when the deck cost nothing. Every copy of the deck is recorded at this price.'}, 'tcgProductId': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Exact TCGplayer product id of the sealed precon deck, from spellbook_sealed_product_search. Required. A product that is not a single Commander or Riftbound precon deck is refused.', 'exclusiveMinimum': 0}, 'oneBinPerDeck': {'type': 'boolean', 'description': 'True puts each deck in its own fresh bin. Defaults to false, which packs the cards into the rolling bin sequence.'}, 'acquisitionDate': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'The date the seller bought the deck, as YYYY-MM-DD. Required.'}, 'overrideDuplicate': {'type': 'boolean', 'description': 'True imports the deck even when this seller already imported the same product. Set it only when the person confirms a second physical deck.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'itemId'], 'properties': {'itemId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': "One inventory copy's itemId, from spellbook_inventory_items_query or spellbook_inventory_holdings. Required."}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace that holds the copy. The caller must own it. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 100, 'minimum': 1, 'description': 'Maximum offers in this page. Page with cursor to traverse the rest; a short page is not proof the cohort ended.'}, 'cursor': {'type': 'string', 'maxLength': 2000, 'minLength': 1, 'description': 'The opaque nextCursor from the previous page, passed back unchanged. It is signed by the server; never construct, decode or edit one.'}, 'buySources': {'type': 'array', 'items': {'enum': ['mercari', 'hareruya', 'bigweb'], 'type': 'string'}, 'maxItems': 3, 'minItems': 1, 'description': 'Which Japanese supply sources to read. Omit for all three. Narrow it only when the person named a merchant; a source you drop is simply absent, never proven empty.'}, 'includeStale': {'type': 'boolean', 'description': 'True also returns offers whose staleAfter has already passed, with their stamps intact. Default false returns only offers still inside their freshness window.'}, 'comparisonSources': {'type': 'array', 'items': {'enum': ['tcgplayer', 'manapool', 'ebay'], 'type': 'string'}, 'maxItems': 3, 'minItems': 1, 'description': 'Which comparison price sources to attach to each offer. Omit for all three. Each requested source returns a providerStatus row even when it has no reference.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'cohortId': {'enum': ['riftbound-jp', 'japanese-promos', 'pokemon', 'pokemon-en', 'pokemon-ja'], 'type': 'string', 'default': 'riftbound-jp', 'description': 'English Riftbound cards sold in Japan, Japanese-language Magic promos, or one exact-language Pokemon cohort. Use pokemon-en or pokemon-ja to keep source observations isolated. Defaults to riftbound-jp.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'mode'], 'properties': {'mode': {'enum': ['manual', 'assisted', 'automatic', 'paused'], 'type': 'string', 'description': 'The mode the seller chose: manual, assisted, automatic, or paused. Required.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace whose ManaPool automation mode to set. The caller must own it. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'previewToken'], 'properties': {'floorUsd': {'type': 'number', 'maximum': 1000, 'minimum': 0, 'description': 'Must match the floorUsd used to build the preview, or the token is refused.'}, 'maxActions': {'type': 'integer', 'default': 50, 'maximum': 250, 'minimum': 1, 'description': 'Maximum actions to apply in this call, 1 to 250. Omit for the default of 50; call again with the same token to continue.'}, 'multiplier': {'type': 'number', 'maximum': 10, 'description': 'Must match the multiplier used to build the preview, or the token is refused.', 'exclusiveMinimum': 0}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace whose previewed changes to apply. Required.'}, 'previewToken': {'type': 'string', 'maxLength': 500, 'minLength': 1, 'description': 'The previewToken from spellbook_manapool_sync_preview. Must still be valid; a stale token is refused.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId'], 'properties': {'floorUsd': {'type': 'number', 'maximum': 1000, 'minimum': 0, 'description': "A price floor in USD for this preview. Omit to use the workspace's stored floor."}, 'multiplier': {'type': 'number', 'maximum': 10, 'description': "Price multiplier applied to market price for this preview. Omit to use the workspace's stored pricing.", 'exclusiveMinimum': 0}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace to compare against live ManaPool state. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'marketplace'], 'properties': {'marketplace': {'enum': ['misprint'], 'type': 'string', 'description': 'The channel-lane marketplace whose onboarding steps and lane state to read.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace whose lane to read. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'game': {'enum': ['mtg', 'riftbound', 'pokemon'], 'type': 'string', 'description': 'Restrict card movers to one game. Omit for the default Magic board.'}, 'window': {'enum': ['daily', 'weekly', '30d', '90d'], 'type': 'string', 'description': 'Which price-change window to read: daily, weekly, 30d or 90d. Omit for the default window.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'marketplace', 'orderId'], 'properties': {'orderId': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': "The marketplace's order id exactly as the order lists it. Required."}, 'marketplace': {'enum': ['tcg', 'manapool', 'ebay', 'shopify', 'cardtrader'], 'type': 'string', 'description': 'The marketplace the order came from. Required.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace that shipped the order, from spellbook_workspaces_list. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'limit': {'type': 'integer', 'default': 25, 'maximum': 100, 'minimum': 1, 'description': 'Maximum rows to return, from 1 to 100. Defaults to 25.'}, 'finish': {'enum': ['nf', 'fo', 'rh', '1e', '1e-fo'], 'type': 'string', 'description': 'Optional exact finish filter.'}, 'cohortId': {'enum': ['pokemon', 'pokemon-en', 'pokemon-ja'], 'type': 'string', 'description': 'Optional Pokemon cohort. Use pokemon-ja or pokemon-en to keep language evidence isolated.'}, 'language': {'enum': ['en', 'ja'], 'type': 'string', 'description': 'Optional exact language filter.'}, 'condition': {'enum': ['NM', 'LP', 'MP', 'HP', 'DMG'], 'type': 'string', 'description': 'Optional condition filter.'}, 'productId': {'type': 'string', 'pattern': '^pokemon:tcgp:[1-9]\\d*$', 'description': 'Optional exact Pokemon catalog product id from spellbook_printings_search.'}, 'proxyFeeUsd': {'anyOf': [{'type': 'number', 'maximum': 1000000, 'minimum': 0}, {'type': 'null'}], 'description': 'Optional proxy fee assumption in USD; omitted keeps landed cost incomplete.'}, 'importDutyRate': {'anyOf': [{'type': 'number', 'maximum': 1, 'minimum': 0}, {'type': 'null'}], 'description': 'Optional import duty rate as a decimal; omitted keeps landed cost incomplete.'}, 'sellingFeeRate': {'anyOf': [{'type': 'number', 'maximum': 1, 'minimum': 0}, {'type': 'null'}], 'description': 'Optional selling fee rate as a decimal; omitted keeps net proceeds incomplete.'}, 'otherSellingUsd': {'anyOf': [{'type': 'number', 'maximum': 1000000, 'minimum': 0}, {'type': 'null'}], 'description': 'Optional other selling cost in USD; omitted keeps net proceeds incomplete.'}, 'importChargesUsd': {'anyOf': [{'type': 'number', 'maximum': 1000000, 'minimum': 0}, {'type': 'null'}], 'description': 'Optional import charges assumption in USD; omitted keeps landed cost incomplete.'}, 'inboundShippingUsd': {'anyOf': [{'type': 'number', 'maximum': 1000000, 'minimum': 0}, {'type': 'null'}], 'description': 'Optional inbound shipping assumption in USD; omitted keeps landed cost incomplete.'}, 'sellingFixedFeeUsd': {'anyOf': [{'type': 'number', 'maximum': 1000000, 'minimum': 0}, {'type': 'null'}], 'description': 'Optional selling fixed fee in USD; omitted keeps net proceeds incomplete.'}, 'otherAcquisitionUsd': {'anyOf': [{'type': 'number', 'maximum': 1000000, 'minimum': 0}, {'type': 'null'}], 'description': 'Optional other acquisition cost in USD; omitted keeps landed cost incomplete.'}, 'outboundShippingUsd': {'anyOf': [{'type': 'number', 'maximum': 1000000, 'minimum': 0}, {'type': 'null'}], 'description': 'Optional outbound shipping assumption in USD; omitted keeps net proceeds incomplete.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['game'], 'properties': {'date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Optional retained snapshot date, YYYY-MM-DD. Omit to read the latest snapshot.'}, 'game': {'type': 'string', 'const': 'pokemon', 'description': 'The game to read. Must be pokemon.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['cardId', 'language', 'finish', 'condition'], 'properties': {'cardId': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'The exact Pokemon catalog product id from spellbook_printings_search, such as pokemon:tcgp:12345. Required.'}, 'finish': {'enum': ['nf', 'fo', 'rh', '1e', '1e-fo'], 'type': 'string', 'description': 'Observed finish: nf regular, fo holo, rh reverse holo, 1e first edition, or 1e-fo first edition holo. Required.'}, 'language': {'type': 'string', 'minLength': 1, 'description': 'Observed card language, such as en or ja. Required; do not infer from the seller location.'}, 'condition': {'enum': ['NM', 'LP', 'MP', 'HP', 'DMG'], 'type': 'string', 'description': 'Observed condition: NM, LP, MP, HP, or DMG. Required; do not assume near mint.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['format', 'archetypeName'], 'properties': {'limit': {'type': 'integer', 'default': 100, 'maximum': 100, 'minimum': 1, 'description': 'Maximum cards to return, from 1 to 100. Defaults to 100.'}, 'format': {'enum': ['standard', 'expanded', 'unlimited'], 'type': 'string', 'description': 'Pokemon format. Required.'}, 'archetypeName': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Exact observed archetype name. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['cardId'], 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 100, 'minimum': 1, 'description': 'Maximum observations to return, from 1 to 100. Defaults to 20.'}, 'cardId': {'type': 'string', 'pattern': '^pokemon:tcgp:[1-9]\\d*$', 'description': 'Exact Pokemon catalog product id from spellbook_printings_search. Required.'}, 'format': {'enum': ['standard', 'expanded', 'unlimited'], 'type': 'string', 'description': 'Optional Pokemon format filter.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['format'], 'properties': {'limit': {'type': 'integer', 'default': 50, 'maximum': 100, 'minimum': 1, 'description': 'Maximum archetypes to return, from 1 to 100. Defaults to 50.'}, 'format': {'enum': ['standard', 'expanded', 'unlimited'], 'type': 'string', 'description': 'Pokemon format. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'itemIds'], 'properties': {'itemIds': {'type': 'array', 'items': {'type': 'string', 'minLength': 1}, 'maxItems': 25, 'minItems': 1, 'description': 'The exact Item ids selected by the seller, 1 to 25 unique non-empty values. Required; each copy must be owned and belong to Pokemon.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace that owns every selected Pokemon inventory copy. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'name', 'priority', 'selector', 'marketplaceScope', 'mode'], 'properties': {'mode': {'type': 'object', 'required': ['multiplier'], 'properties': {'multiplier': {'type': 'number', 'description': 'Absolute multiplier applied by this amendment. Required.', 'exclusiveMinimum': 0}, 'protectedBand': {'type': 'object', 'required': ['thresholdUsd', 'multiplier'], 'properties': {'multiplier': {'type': 'number', 'description': 'Protected multiplier at or above the threshold.', 'exclusiveMinimum': 0}, 'thresholdUsd': {'type': 'number', 'description': 'Original market anchor threshold in USD.', 'exclusiveMinimum': 0}}, 'description': 'Optional seller-approved protected band.', 'additionalProperties': False}}, 'description': 'Absolute multiplier and optional protected band. Required.', 'additionalProperties': False}, 'name': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': 'Seller-selected amendment name. Required.'}, 'notes': {'anyOf': [{'type': 'string', 'maxLength': 1000}, {'type': 'null'}], 'description': 'Optional seller notes; null clears notes.'}, 'enabled': {'type': 'boolean', 'default': True, 'description': 'Whether the amendment starts enabled. Omit for enabled.'}, 'priority': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Seller-selected precedence priority. Required.'}, 'selector': {'type': 'object', 'properties': {'finish': {'enum': ['nf', 'fo', 'etched', 'surge', 'rh', '1e', '1e-fo'], 'type': 'string', 'description': 'Optional finish selector.'}, 'setCode': {'type': 'string', 'maxLength': 32, 'minLength': 1, 'description': 'Set code selector.'}, 'condition': {'enum': ['NM', 'LP', 'MP', 'HP', 'DMG'], 'type': 'string', 'description': 'Optional condition selector.'}, 'scryfallId': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Exact Scryfall printing selector. Requires setCode when supplied.'}, 'releaseFamilyCode': {'type': 'string', 'maxLength': 32, 'minLength': 1, 'description': 'Release family selector.'}, 'originalAnchorPriceBand': {'type': 'object', 'properties': {'maxUsd': {'type': 'number', 'minimum': 0, 'description': 'Protected band upper bound in USD.'}, 'minUsd': {'type': 'number', 'minimum': 0, 'description': 'Protected band lower bound in USD.'}}, 'description': 'Optional original market anchor band selector.', 'additionalProperties': False}}, 'description': 'The bounded inventory selector. Required.', 'additionalProperties': False}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace the seller selected. The caller must own it. Required.'}, 'marketplaceScope': {'anyOf': [{'type': 'string', 'const': 'all', 'description': 'Apply across all supported marketplaces.'}, {'type': 'object', 'required': ['channels'], 'properties': {'channels': {'type': 'array', 'items': {'enum': ['ebay', 'tcg', 'manapool', 'shopify', 'cardtrader'], 'type': 'string'}, 'maxItems': 5, 'minItems': 1, 'description': 'Specific marketplace channels for this amendment.'}}, 'additionalProperties': False}], 'description': 'Marketplace scope. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'amendmentId'], 'properties': {'amendmentId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The exact saved amendment id from a prior amendment read. Required.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace the seller selected. The caller must own it. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'amendmentId'], 'properties': {'amendmentId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The exact saved amendment id from a prior amendment read. Required.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace the seller selected. The caller must own it. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId'], 'properties': {'channels': {'type': 'array', 'items': {'enum': ['ebay', 'tcg', 'manapool', 'shopify', 'cardtrader'], 'type': 'string'}, 'maxItems': 5, 'minItems': 1, 'description': 'Optional marketplace channels to preview.'}, 'amendment': {'type': 'object', 'required': ['priority', 'selector', 'marketplaceScope', 'mode'], 'properties': {'mode': {'type': 'object', 'required': ['multiplier'], 'properties': {'multiplier': {'type': 'number', 'description': 'Absolute multiplier applied by this amendment. Required.', 'exclusiveMinimum': 0}, 'protectedBand': {'type': 'object', 'required': ['thresholdUsd', 'multiplier'], 'properties': {'multiplier': {'type': 'number', 'description': 'Protected multiplier at or above the threshold.', 'exclusiveMinimum': 0}, 'thresholdUsd': {'type': 'number', 'description': 'Original market anchor threshold in USD.', 'exclusiveMinimum': 0}}, 'description': 'Optional seller-approved protected band.', 'additionalProperties': False}}, 'description': 'Preview absolute multiplier and protected band.', 'additionalProperties': False}, 'enabled': {'type': 'boolean', 'default': True, 'description': 'Whether the draft is enabled for preview.'}, 'priority': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Preview precedence priority.'}, 'selector': {'type': 'object', 'properties': {'finish': {'enum': ['nf', 'fo', 'etched', 'surge', 'rh', '1e', '1e-fo'], 'type': 'string', 'description': 'Optional finish selector.'}, 'setCode': {'type': 'string', 'maxLength': 32, 'minLength': 1, 'description': 'Set code selector.'}, 'condition': {'enum': ['NM', 'LP', 'MP', 'HP', 'DMG'], 'type': 'string', 'description': 'Optional condition selector.'}, 'scryfallId': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Exact Scryfall printing selector. Requires setCode when supplied.'}, 'releaseFamilyCode': {'type': 'string', 'maxLength': 32, 'minLength': 1, 'description': 'Release family selector.'}, 'originalAnchorPriceBand': {'type': 'object', 'properties': {'maxUsd': {'type': 'number', 'minimum': 0, 'description': 'Protected band upper bound in USD.'}, 'minUsd': {'type': 'number', 'minimum': 0, 'description': 'Protected band lower bound in USD.'}}, 'description': 'Optional original market anchor band selector.', 'additionalProperties': False}}, 'description': 'Preview selector.', 'additionalProperties': False}, 'marketplaceScope': {'anyOf': [{'type': 'string', 'const': 'all', 'description': 'Apply across all supported marketplaces.'}, {'type': 'object', 'required': ['channels'], 'properties': {'channels': {'type': 'array', 'items': {'enum': ['ebay', 'tcg', 'manapool', 'shopify', 'cardtrader'], 'type': 'string'}, 'maxItems': 5, 'minItems': 1, 'description': 'Specific marketplace channels for this amendment.'}}, 'additionalProperties': False}], 'description': 'Preview marketplace scope.'}}, 'description': 'Draft amendment; provide this or amendmentId.', 'additionalProperties': False}, 'amendmentId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The exact saved amendment id from a prior amendment read. Required.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace the seller selected. The caller must own it. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'jobId'], 'properties': {'jobId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The preview job id returned by spellbook_pricing_amendment_preview. Required.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace the seller selected. The caller must own it. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId'], 'properties': {'limit': {'type': 'integer', 'default': 50, 'maximum': 100, 'minimum': 1, 'description': 'Maximum amendments to return, 1 to 100. Omit for 50.'}, 'cursor': {'type': 'string', 'maxLength': 500, 'minLength': 1, 'description': 'Opaque cursor from a prior list response. Omit for the first page.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace the seller selected. The caller must own it. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'amendmentId'], 'properties': {'mode': {'type': 'object', 'required': ['multiplier'], 'properties': {'multiplier': {'type': 'number', 'description': 'Absolute multiplier applied by this amendment. Required.', 'exclusiveMinimum': 0}, 'protectedBand': {'type': 'object', 'required': ['thresholdUsd', 'multiplier'], 'properties': {'multiplier': {'type': 'number', 'description': 'Protected multiplier at or above the threshold.', 'exclusiveMinimum': 0}, 'thresholdUsd': {'type': 'number', 'description': 'Original market anchor threshold in USD.', 'exclusiveMinimum': 0}}, 'description': 'Optional seller-approved protected band.', 'additionalProperties': False}}, 'description': 'Replacement absolute multiplier and optional protected band.', 'additionalProperties': False}, 'name': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': 'Replacement seller-selected name.'}, 'notes': {'anyOf': [{'type': 'string', 'maxLength': 1000}, {'type': 'null'}], 'description': 'Replacement notes; null clears notes.'}, 'enabled': {'type': 'boolean', 'description': 'Replacement enabled state.'}, 'priority': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Replacement precedence priority.'}, 'selector': {'type': 'object', 'properties': {'finish': {'enum': ['nf', 'fo', 'etched', 'surge', 'rh', '1e', '1e-fo'], 'type': 'string', 'description': 'Optional finish selector.'}, 'setCode': {'type': 'string', 'maxLength': 32, 'minLength': 1, 'description': 'Set code selector.'}, 'condition': {'enum': ['NM', 'LP', 'MP', 'HP', 'DMG'], 'type': 'string', 'description': 'Optional condition selector.'}, 'scryfallId': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Exact Scryfall printing selector. Requires setCode when supplied.'}, 'releaseFamilyCode': {'type': 'string', 'maxLength': 32, 'minLength': 1, 'description': 'Release family selector.'}, 'originalAnchorPriceBand': {'type': 'object', 'properties': {'maxUsd': {'type': 'number', 'minimum': 0, 'description': 'Protected band upper bound in USD.'}, 'minUsd': {'type': 'number', 'minimum': 0, 'description': 'Protected band lower bound in USD.'}}, 'description': 'Optional original market anchor band selector.', 'additionalProperties': False}}, 'description': 'Replacement bounded selector.', 'additionalProperties': False}, 'amendmentId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The exact saved amendment id from a prior amendment read. Required.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace the seller selected. The caller must own it. Required.'}, 'marketplaceScope': {'anyOf': [{'type': 'string', 'const': 'all', 'description': 'Apply across all supported marketplaces.'}, {'type': 'object', 'required': ['channels'], 'properties': {'channels': {'type': 'array', 'items': {'enum': ['ebay', 'tcg', 'manapool', 'shopify', 'cardtrader'], 'type': 'string'}, 'maxItems': 5, 'minItems': 1, 'description': 'Specific marketplace channels for this amendment.'}}, 'additionalProperties': False}], 'description': 'Replacement marketplace scope.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'itemId', 'channel'], 'properties': {'itemId': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'The exact Item id, from a prior spellbook_inventory_items_query. Required.'}, 'channel': {'enum': ['tcg', 'ebay', 'manapool', 'cardtrader', 'shopify'], 'type': 'string', 'description': 'Which marketplace listing to explain. Required, because the same copy carries a different ask per channel.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace that owns the listing. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'profileId'], 'properties': {'profileId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The exact saved pricing profile id from a prior pricing profile read. Required.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace the seller selected. The caller must own it. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'name', 'mult', 'floor'], 'properties': {'mult': {'type': 'number', 'description': 'Explicit baseline market multiplier. Required.', 'exclusiveMinimum': 0}, 'name': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'Seller-selected profile name. Required.'}, 'floor': {'type': 'number', 'minimum': 0, 'description': 'Explicit baseline floor in USD. Required.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace the seller selected. The caller must own it. Required.'}, 'marketOffsetUsd': {'type': 'number', 'maximum': 1000, 'minimum': -1000, 'description': 'Optional baseline dollar adjustment.'}, 'channelOverrides': {'type': 'object', 'required': ['ebay', 'tcg', 'manapool', 'shopify', 'cardtrader'], 'description': 'Seller-approved overrides by marketplace channel. Omit when none are needed.', 'propertyNames': {'enum': ['ebay', 'tcg', 'manapool', 'shopify', 'cardtrader'], 'type': 'string'}, 'additionalProperties': {'type': 'object', 'properties': {'mult': {'type': 'number', 'description': 'Optional channel multiplier override.', 'exclusiveMinimum': 0}, 'floor': {'type': 'number', 'minimum': 0, 'description': 'Optional channel floor in USD.'}, 'valueBands': {'type': 'array', 'items': {'type': 'object', 'required': ['minUsd', 'mult'], 'properties': {'mult': {'type': 'number', 'description': 'Seller multiplier for this value band. Required.', 'exclusiveMinimum': 0}, 'floor': {'type': 'number', 'minimum': 0, 'description': 'Seller minimum price in USD for this value band. Omit to inherit the profile floor.'}, 'label': {'type': 'string', 'maxLength': 50, 'minLength': 1, 'description': 'Seller label for this ordinary market-value band. Omit when unlabeled.'}, 'maxUsd': {'type': 'number', 'description': 'Exclusive upper market value in USD. Omit for no upper bound.', 'exclusiveMinimum': 0}, 'minUsd': {'type': 'number', 'minimum': 0, 'description': 'Inclusive lower market value in USD. Required.'}, 'marketOffsetUsd': {'type': 'number', 'maximum': 1000, 'minimum': -1000, 'description': 'Seller dollar adjustment after the market multiplier. Omit for no adjustment.'}}, 'additionalProperties': False}, 'maxItems': 8, 'description': 'Optional ordinary market-value bands for this channel.'}, 'marketOffsetUsd': {'type': 'number', 'maximum': 1000, 'minimum': -1000, 'description': 'Optional channel dollar adjustment.'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'profileId'], 'properties': {'profileId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The exact saved pricing profile id from a prior pricing profile read. Required.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace the seller selected. The caller must own it. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId'], 'properties': {'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace the seller selected. The caller must own it. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'profileId'], 'properties': {'mult': {'type': 'number', 'description': 'Replacement baseline multiplier.', 'exclusiveMinimum': 0}, 'name': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'Replacement seller-selected profile name.'}, 'floor': {'type': 'number', 'minimum': 0, 'description': 'Replacement baseline floor in USD.'}, 'profileId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The exact saved pricing profile id from a prior pricing profile read. Required.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace the seller selected. The caller must own it. Required.'}, 'marketOffsetUsd': {'type': 'number', 'maximum': 1000, 'minimum': -1000, 'description': 'Replacement baseline dollar adjustment.'}, 'channelOverrides': {'type': 'object', 'required': ['ebay', 'tcg', 'manapool', 'shopify', 'cardtrader'], 'description': 'Selected per-channel overrides; omit to preserve all, null to clear one channel entry.', 'propertyNames': {'enum': ['ebay', 'tcg', 'manapool', 'shopify', 'cardtrader'], 'type': 'string'}, 'additionalProperties': {'anyOf': [{'type': 'object', 'properties': {'mult': {'anyOf': [{'type': 'number', 'exclusiveMinimum': 0}, {'type': 'null'}], 'description': 'Channel multiplier override; null clears only this override.'}, 'floor': {'anyOf': [{'type': 'number', 'minimum': 0}, {'type': 'null'}], 'description': 'Channel floor override; null clears only this override.'}, 'valueBands': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'required': ['minUsd', 'mult'], 'properties': {'mult': {'type': 'number', 'description': 'Seller multiplier for this value band. Required.', 'exclusiveMinimum': 0}, 'floor': {'type': 'number', 'minimum': 0, 'description': 'Seller minimum price in USD for this value band. Omit to inherit the profile floor.'}, 'label': {'type': 'string', 'maxLength': 50, 'minLength': 1, 'description': 'Seller label for this ordinary market-value band. Omit when unlabeled.'}, 'maxUsd': {'type': 'number', 'description': 'Exclusive upper market value in USD. Omit for no upper bound.', 'exclusiveMinimum': 0}, 'minUsd': {'type': 'number', 'minimum': 0, 'description': 'Inclusive lower market value in USD. Required.'}, 'marketOffsetUsd': {'type': 'number', 'maximum': 1000, 'minimum': -1000, 'description': 'Seller dollar adjustment after the market multiplier. Omit for no adjustment.'}}, 'additionalProperties': False}, 'maxItems': 8}, {'type': 'null'}], 'description': 'Channel value bands; null clears only this override.'}, 'marketOffsetUsd': {'anyOf': [{'type': 'number', 'maximum': 1000, 'minimum': -1000}, {'type': 'null'}], 'description': 'Channel dollar adjustment; null clears only this override.'}}, 'additionalProperties': False}, {'type': 'null'}]}}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['q'], 'properties': {'q': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': '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.'}, 'game': {'enum': ['mtg', 'riftbound', 'pokemon'], 'type': 'string', 'description': 'Restrict the search to one game. Omit to search all enabled games.'}, 'page': {'type': 'integer', 'maximum': 20, 'minimum': 1, 'description': 'Page number of results, 1 to 20. Omit for the first page.'}, 'language': {'enum': ['en', 'ja'], 'type': 'string', 'description': 'Restrict Pokemon results to English or Japanese catalog rows. Omit when language is unknown.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId'], 'properties': {'limit': {'type': 'integer', 'maximum': 50, 'minimum': 1, 'description': 'Maximum complete order groups to return on this page, from 1 to 50. Omit for 20.'}, 'cursor': {'type': 'string', 'maxLength': 2000, 'minLength': 1, 'description': 'Opaque nextCursor from the previous page. Pass it unchanged to continue; omit for the first page.'}, 'marketplace': {'enum': ['all', 'tcgplayer', 'ebay', 'shopify', 'manapool', 'cardtrader'], 'type': 'string', 'description': 'Filter to one marketplace, or use all for the combined bin walk. Omit for all.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The seller-owned workspace to read, from spellbook_workspaces_list. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'orderRef', 'marketplace', 'rows'], 'properties': {'rows': {'type': 'array', 'items': {'type': 'object', 'required': ['scryfallId', 'cardName', 'setCode', 'collectorNumber', 'condition', 'finish', 'quantity', 'unitPriceUsd'], 'properties': {'finish': {'enum': ['nf', 'fo', 'etched', 'surge', 'rh', '1e', '1e-fo'], 'type': 'string', 'description': 'The finish of these copies, using the values listed in this field. Required.'}, 'setCode': {'type': 'string', 'maxLength': 20, 'minLength': 1, 'description': 'The set code of this exact printing. Required.'}, 'cardName': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': "The card's name. Required."}, 'quantity': {'type': 'integer', 'maximum': 500, 'minimum': 1, 'description': 'How many copies of this printing, condition and finish the order bought. Required, at least 1.'}, 'condition': {'enum': ['NM', 'LP', 'MP', 'HP', 'DMG'], 'type': 'string', 'description': 'The condition the listing was sold as. Required.'}, 'scryfallId': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'The exact printing id, from spellbook_printings_search. Required; a wrong id records the wrong card.'}, 'unitPriceUsd': {'type': 'number', 'maximum': 1000000, 'minimum': 0, 'description': 'The price paid for ONE copy in USD, as the checkout showed it. Required.'}, 'collectorNumber': {'type': 'string', 'maxLength': 20, 'minLength': 1, 'description': 'The collector number of this exact printing. Required.'}}, 'additionalProperties': False}, 'maxItems': 200, 'minItems': 1, 'description': "The order's lines, one per exact printing, condition and finish. Required, at least one."}, 'orderRef': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': "The marketplace's order number from the checkout confirmation. Required. The same order number groups every copy for receiving."}, 'sellerName': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': "The seller's store name on the marketplace, when the checkout shows one. Shown beside the order in the incoming list."}, 'marketplace': {'enum': ['tcgplayer', 'ebay', 'manapool', 'cardtrader', 'other'], 'type': 'string', 'description': 'Where the order was placed. Required. Use other for any marketplace not listed.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace that bought the cards, from spellbook_workspaces_list. Required; writes only to this workspace.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'name', 'street', 'cityStateZip'], 'properties': {'name': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': "The name on the return address, such as the seller's name or store name, exactly as the seller gave it. Required."}, 'street': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'One street line, such as a house number and street, exactly as the seller gave it. Required.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace whose setup this address completes. The caller must own it. Required.'}, 'cityStateZip': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'One line with city, state, and ZIP code, such as Springfield, IL 62701, exactly as the seller gave it. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'productId', 'finish', 'condition', 'qty', 'salePricePerUnit', 'marketplace', 'orderId'], 'properties': {'qty': {'type': 'integer', 'maximum': 500, 'minimum': 1, 'description': 'How many copies sold. Required.'}, 'note': {'type': 'string', 'maxLength': 500, 'minLength': 1, 'description': 'A free-text note stored with the sale. Optional.'}, 'binId': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'Sell only copies from this bin. Omit to take the oldest copies from any bin.'}, 'finish': {'enum': ['nf', 'fo', 'etched', 'surge', 'rh', '1e', '1e-fo'], 'type': 'string', 'description': '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 Holofoil). Required.'}, 'orderId': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': "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 sale with replayed true and sells nothing."}, 'buyerName': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': "The buyer's name as the customer stated it. Optional."}, 'condition': {'enum': ['NM', 'LP', 'MP', 'HP', 'DMG'], 'type': 'string', 'description': 'The condition of the sold copies, matching how they were recorded. Required.'}, 'productId': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'The exact printing id, from spellbook_printings_search or spellbook_inventory_holdings. Required; a wrong id sells the wrong card.'}, 'occurredAt': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$', 'description': 'When the sale happened, as an ISO-8601 timestamp. Omit to use the time of this call.'}, 'marketplace': {'enum': ['tcg', 'manapool', 'ebay', 'in_person', 'buylist', 'unknown'], 'type': 'string', 'description': "Where the sale happened. in_person covers a store buy or a trade. buylist covers a sale to a dealer's buylist and needs buylistVendor. Required."}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace that held the sold copies, from spellbook_workspaces_list. Required.'}, 'buylistVendor': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The dealer that bought the copies, such as Card Kingdom. Required when marketplace is buylist. Omit for every other marketplace.'}, 'salePricePerUnit': {'type': 'number', 'minimum': 0, 'description': 'Price received PER COPY in USD, before any fee. Not the order total. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'game': {'enum': ['mtg', 'riftbound', 'pokemon'], 'type': 'string', 'description': 'Restrict rows to one game: mtg, riftbound or pokemon. Omit to include all games.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId'], 'properties': {'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace whose defaults to read. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'game', 'productType', 'intent'], 'properties': {'game': {'enum': ['mtg', 'riftbound', 'pokemon', '*'], 'type': 'string', 'description': 'The game to match, or * for every game. Required.'}, 'intent': {'enum': ['open', 'hold'], 'type': 'string', 'description': 'The capture intent: open or hold. This does not physically open or list stock. Required.'}, 'productType': {'enum': ['booster_display', 'collector_box', 'commander_deck', 'theme_deck', 'planeswalker_deck', 'starter_kit', 'challenger_deck', 'precon', 'bundle', 'prerelease_kit', 'jumpstart', 'secret_lair', '*'], 'type': 'string', 'description': 'The sealed product type to match, or * for every type. Required.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace whose rule to set. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'boxId', 'kind', 'expectedIntentRevision', 'idempotencyKey'], 'properties': {'game': {'enum': ['mtg', 'riftbound', 'pokemon'], 'type': 'string', 'default': 'mtg', 'description': 'The product game. Defaults to mtg.'}, 'kind': {'enum': ['box', 'pack', 'case'], 'type': 'string', 'description': 'The sealed kind from the same portfolio row. Required.'}, 'boxId': {'type': 'string', 'pattern': '^\\d{1,12}$', 'description': 'The exact TCGplayer sealed product id from the portfolio row. Required.'}, 'channel': {'enum': ['manapool', 'tcgplayer'], 'type': 'string', 'default': 'manapool', 'description': 'Marketplace whose managed listing should be removed. Defaults to manapool.'}, 'language': {'type': 'string', 'default': 'EN', 'maxLength': 8, 'minLength': 2, 'description': 'The product language code. Defaults to EN.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace that owns the listing. Required.'}, 'idempotencyKey': {'type': 'string', 'maxLength': 200, 'minLength': 8, 'description': '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.'}, 'expectedIntentRevision': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'The non-null intentRevision from a fresh spellbook_sealed_listing_preview. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'boxId', 'kind'], 'properties': {'cap': {'type': 'integer', 'maximum': 1000, 'minimum': 0, 'description': 'The most units to offer at once. Omit to offer every eligible unit.'}, 'game': {'enum': ['mtg', 'riftbound', 'pokemon'], 'type': 'string', 'default': 'mtg', 'description': 'The game of the product. Defaults to mtg.'}, 'kind': {'enum': ['box', 'pack', 'case'], 'type': 'string', 'description': 'The sealed kind, the kind on the same spellbook_sealed_portfolio row. Required, because units are counted by kind and boxId together.'}, 'boxId': {'type': 'string', 'pattern': '^\\d{1,12}$', 'description': 'The TCGplayer product id of the sealed product, the boxId on a spellbook_sealed_portfolio row. Required.'}, 'channel': {'enum': ['manapool', 'tcgplayer'], 'type': 'string', 'default': 'manapool', 'description': 'Marketplace to preview. Defaults to manapool.'}, 'floorUsd': {'type': 'number', 'maximum': 100000, 'description': 'undercut only. The lowest ask in USD the rule may choose. Omit to use catalog market times floorMarketFraction.', 'exclusiveMinimum': 0}, 'language': {'type': 'string', 'default': 'EN', 'maxLength': 8, 'minLength': 2, 'description': 'The product language code, such as EN or JA. Defaults to EN.'}, 'takeover': {'type': 'boolean', 'default': False, 'description': 'True adopts a listing on the selected marketplace that SpellBook did not create. Defaults to false; pass true only after the person agrees.'}, 'priceRule': {'enum': ['market', 'undercut'], 'type': 'string', 'description': "market asks the catalog market price. undercut sets the ask so the item plus the seller's own shipping lands one cent under the cheapest TCGplayer item plus shipping from another seller, never below the floor. Omit for market."}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace that holds the sealed units, from spellbook_workspaces_list. Required.'}, 'fixedPriceUsd': {'type': 'number', 'maximum': 100000, 'description': "A fixed ask in USD for every unit. Omit to list at the product's current market price. Cannot be combined with priceRule.", 'exclusiveMinimum': 0}, 'floorMarketFraction': {'type': 'number', 'maximum': 1, 'description': 'undercut only. The floor as a fraction of catalog market, used when floorUsd is omitted. Defaults to 0.9.', 'exclusiveMinimum': 0}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'boxId', 'kind', 'expectedStockRevision', 'expectedAskUsd', 'idempotencyKey'], 'properties': {'cap': {'type': 'integer', 'maximum': 1000, 'minimum': 0, 'description': 'The most units to offer at once. Omit to offer every eligible unit.'}, 'game': {'enum': ['mtg', 'riftbound', 'pokemon'], 'type': 'string', 'default': 'mtg', 'description': 'The game of the product. Defaults to mtg.'}, 'kind': {'enum': ['box', 'pack', 'case'], 'type': 'string', 'description': 'The sealed kind, the kind on the same spellbook_sealed_portfolio row. Required, because units are counted by kind and boxId together.'}, 'boxId': {'type': 'string', 'pattern': '^\\d{1,12}$', 'description': 'The TCGplayer product id of the sealed product, the boxId on a spellbook_sealed_portfolio row. Required.'}, 'channel': {'enum': ['manapool', 'tcgplayer'], 'type': 'string', 'default': 'manapool', 'description': 'Marketplace to submit to. Must match the preview. Defaults to manapool.'}, 'floorUsd': {'type': 'number', 'maximum': 100000, 'description': 'undercut only. The lowest ask in USD the rule may choose. Omit to use catalog market times floorMarketFraction.', 'exclusiveMinimum': 0}, 'language': {'type': 'string', 'default': 'EN', 'maxLength': 8, 'minLength': 2, 'description': 'The product language code, such as EN or JA. Defaults to EN.'}, 'takeover': {'type': 'boolean', 'default': False, 'description': 'True adopts a listing on the selected marketplace that SpellBook did not create. Defaults to false; pass true only after the person agrees.'}, 'priceRule': {'enum': ['market', 'undercut'], 'type': 'string', 'description': "market asks the catalog market price. undercut sets the ask so the item plus the seller's own shipping lands one cent under the cheapest TCGplayer item plus shipping from another seller, never below the floor. Omit for market."}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace that holds the sealed units, from spellbook_workspaces_list. Required.'}, 'fixedPriceUsd': {'type': 'number', 'maximum': 100000, 'description': "A fixed ask in USD for every unit. Omit to list at the product's current market price. Cannot be combined with priceRule.", 'exclusiveMinimum': 0}, 'expectedAskUsd': {'type': 'number', 'maximum': 100000, 'description': 'proposed.askUsd from the preview. Required; a different value means the market ask changed and the call is refused.', 'exclusiveMinimum': 0}, 'idempotencyKey': {'type': 'string', 'maxLength': 200, 'minLength': 8, 'description': '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.'}, 'floorMarketFraction': {'type': 'number', 'maximum': 1, 'description': 'undercut only. The floor as a fraction of catalog market, used when floorUsd is omitted. Defaults to 0.9.', 'exclusiveMinimum': 0}, 'expectedStockRevision': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'proposed.stockRevision from the preview. Required; a different value means stock moved and the call is refused.'}, 'expectedIntentRevision': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, {'type': 'null'}], 'description': 'intentRevision from the preview. Pass it unchanged, null included.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId'], 'properties': {'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace whose sealed positions to read, from spellbook_workspaces_list. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'entryId', 'hold'], 'properties': {'hold': {'type': 'boolean', 'description': 'True excludes live units from listing; false makes them eligible again. Required.'}, 'entryId': {'type': 'string', 'pattern': '^(?:[A-Za-z0-9_-]{1,64}|SEALED#[A-Za-z0-9_-]{1,64})$', 'description': 'The exact purchase entryId from spellbook_sealed_portfolio, including the SEALED# prefix when present. Required.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace that owns the entry. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'entryId', 'quantity'], 'properties': {'entryId': {'type': 'string', 'pattern': '^[A-Za-z0-9_-]{1,64}$', 'description': 'The exact sealed purchase entryId from spellbook_sealed_portfolio. Required.'}, 'quantity': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Exact count of units already opened from this entry. Required.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace that owns the sealed entry. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'entryId'], 'properties': {'entryId': {'type': 'string', 'pattern': '^[A-Za-z0-9_-]{1,64}$', 'description': 'The exact purchase entryId from spellbook_sealed_portfolio. Required.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace that owns the entry. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'entryId'], 'properties': {'entryId': {'type': 'string', 'pattern': '^[A-Za-z0-9_-]{1,64}$', 'description': 'The exact incoming display entryId from spellbook_sealed_portfolio. Required.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace that owns the incoming entry. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'boxId', 'quantity', 'acquisitionPrice', 'acquisitionDate'], 'properties': {'boxId': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': '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': {'type': 'integer', 'maximum': 1000, 'minimum': 1, 'description': 'How many units of this product were bought. Required.'}, 'salesTaxUsd': {'type': 'string', 'pattern': '^\\d{1,9}(\\.\\d{1,2})?$', 'description': 'Sales tax paid on the whole order in USD, as a decimal string. Optional.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace to record this sealed buy in, from spellbook_workspaces_list. Required.'}, 'acquisitionDate': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': "The date the buy happened, as YYYY-MM-DD. Required, and it sets which day's modeled EV the purchase is scored against."}, 'acquisitionPrice': {'type': 'string', 'pattern': '^\\d{1,9}(\\.\\d{1,2})?$', 'description': 'Price paid PER UNIT in USD, as a decimal string such as "114.99". Not the order total. Required.'}, 'acquisitionChannel': {'type': 'string', 'maxLength': 64, 'minLength': 1, 'description': 'Where the product was bought, such as a store name or marketplace. Optional, and it is stored as the customer stated it.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['tcgProductId'], 'properties': {'region': {'enum': ['US', 'CA', 'All'], 'type': 'string', 'description': 'Restrict retail references to one currency region: US, CA or All. Omit for all.'}, 'tcgProductId': {'type': 'string', 'pattern': '^\\d{1,12}$', 'description': 'Exact TCGplayer product id for this sealed product, digits only. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'q': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Free-text product name search. Omit to browse without a name filter.'}, 'game': {'enum': ['mtg', 'riftbound', 'pokemon'], 'type': 'string', 'description': 'Restrict results to one game: mtg, riftbound or pokemon. Omit for a mixed-game search.'}, 'limit': {'type': 'integer', 'default': 20, 'maximum': 100, 'minimum': 1, 'description': 'Maximum rows to return, 1 to 100. Omit for the default of 20.'}, 'store': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Exact store name to filter to. Omit to include every store.'}, 'cursor': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Opaque cursor from a previous page, passed back unchanged. Omit to start from the first page.'}, 'region': {'enum': ['US', 'CA', 'All'], 'type': 'string', 'description': 'Restrict results to one currency region: US, CA or All. Omit for all.'}, 'productType': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Exact sealed product type to filter to. Omit to include every type.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'productId', 'quantity', 'requestId', 'hold'], 'properties': {'hold': {'type': 'boolean', 'description': 'True marks these units as held from listing; false leaves them unheld. Required.'}, 'quantity': {'type': 'integer', 'maximum': 11, 'minimum': 1, 'description': 'How many recovered units to record: up to 11 for product 618698, or exactly 1 for product 579917. Required.'}, 'productId': {'enum': ['579917', '618698'], 'type': 'string', 'description': 'Exact TCG sealed pack product id: 618698 for Aetherdrift Box Topper, or 579917 for Modern Horizons 3 Collector Booster Sample Pack. Required.'}, 'requestId': {'type': 'string', 'pattern': '^[A-Za-z0-9_-]{1,100}$', 'description': 'Stable idempotency key for this recovery entry. Reuse this exact value to retry. Required.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace to add recovered sealed components to. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'interval'], 'properties': {'interval': {'enum': ['monthly', 'annual'], 'type': 'string', 'description': 'The billing interval the seller chose: monthly or annual. Required.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace the Store plan is for. The caller must own it. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'sets': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Exact set code(s) to filter to. Omit to include every set.'}, 'limit': {'type': 'integer', 'default': 20, 'maximum': 200, 'minimum': 1, 'description': 'Maximum rows to return, 1 to 200. Omit for the default of 20.'}, 'cursor': {'type': 'string', 'pattern': '^v1\\.[A-Za-z0-9_-]+$', 'maxLength': 2000, 'description': 'Opaque cursor from a previous page, passed back unchanged. Omit to start from the first page.'}, 'isFoil': {'type': 'boolean', 'description': 'True restricts to foil rows, false to non-foil. Omit to include both.'}, 'rarity': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'Exact rarity to filter to. Omit to include every rarity.'}, 'sortBy': {'enum': ['totalPotentialProfitUsd', 'spreadUsd', 'spreadPct', 'bestBuyPrice', 'usPriceUsd', 'actionableQuantity'], 'type': 'string', 'description': 'Which field ranks the rows. Omit for the default order.'}, 'sortDir': {'enum': ['asc', 'desc'], 'type': 'string', 'description': 'Sort direction for sortBy. Omit for the default direction.'}, 'minCkQty': {'type': 'integer', 'maximum': 100000, 'minimum': 0, 'description': 'Minimum Card Kingdom buylist quantity a row must have. Omit for no floor.'}, 'minValue': {'type': 'number', 'maximum': 1000000, 'minimum': 0, 'description': 'Minimum acquisition value in USD a row must have to be returned. Omit for no floor.'}, 'minSpreadPct': {'type': 'number', 'maximum': 1000000, 'minimum': 0, 'description': 'Minimum spread percentage a row must have to be returned. Omit for no floor.'}, 'minSpreadUsd': {'type': 'number', 'maximum': 1000000, 'minimum': 0, 'description': 'Minimum spread in USD a row must have to be returned. Omit for no floor.'}, 'minTotalPotentialProfitUsd': {'type': 'number', 'maximum': 1000000, 'minimum': 0, 'description': 'Minimum total potential profit in USD a row must have to be returned. Omit for no floor.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'name': {'enum': ['getting-started', 'buy-loop', 'collection-buying', 'physical-placement', 'fulfilling-orders'], 'type': 'string', 'description': 'The procedure to read in full. Omit to list every procedure with its title.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'scryfallId', 'finish', 'condition'], 'properties': {'finish': {'enum': ['nf', 'fo', 'etched', 'surge', 'rh', '1e', '1e-fo'], 'type': 'string', 'description': 'The exact finish for the SKU: nf, fo, etched, surge, rh, 1e or 1e-fo. Required.'}, 'condition': {'enum': ['NM', 'LP', 'MP', 'HP', 'DMG'], 'type': 'string', 'description': 'The exact physical condition for the SKU. Required.'}, 'scryfallId': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'The exact Scryfall printing id. Required.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace the seller selected. The caller must own it. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'scryfallId', 'finish', 'condition', 'priceUsd'], 'properties': {'finish': {'enum': ['nf', 'fo', 'etched', 'surge', 'rh', '1e', '1e-fo'], 'type': 'string', 'description': 'The exact finish for the SKU: nf, fo, etched, surge, rh, 1e or 1e-fo. Required.'}, 'priceUsd': {'type': 'number', 'maximum': 1000000, 'description': 'The seller-selected exact locked price in USD. Required.', 'exclusiveMinimum': 0}, 'condition': {'enum': ['NM', 'LP', 'MP', 'HP', 'DMG'], 'type': 'string', 'description': 'The exact physical condition for the SKU. Required.'}, 'scryfallId': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'The exact Scryfall printing id. Required.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace the seller selected. The caller must own it. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'scryfallId', 'finish', 'condition'], 'properties': {'finish': {'enum': ['nf', 'fo', 'etched', 'surge', 'rh', '1e', '1e-fo'], 'type': 'string', 'description': 'The exact finish for the SKU: nf, fo, etched, surge, rh, 1e or 1e-fo. Required.'}, 'condition': {'enum': ['NM', 'LP', 'MP', 'HP', 'DMG'], 'type': 'string', 'description': 'The exact physical condition for the SKU. Required.'}, 'scryfallId': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'The exact Scryfall printing id. Required.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace the seller selected. The caller must own it. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'scryfallId', 'finish', 'condition', 'minSellPriceUsd'], 'properties': {'finish': {'enum': ['nf', 'fo', 'etched', 'surge', 'rh', '1e', '1e-fo'], 'type': 'string', 'description': 'The exact finish for the SKU: nf, fo, etched, surge, rh, 1e or 1e-fo. Required.'}, 'condition': {'enum': ['NM', 'LP', 'MP', 'HP', 'DMG'], 'type': 'string', 'description': 'The exact physical condition for the SKU. Required.'}, 'scryfallId': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'The exact Scryfall printing id. Required.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace the seller selected. The caller must own it. Required.'}, 'minSellPriceUsd': {'type': 'number', 'maximum': 1000000, 'minimum': 0, 'description': 'The seller-selected minimum sell price in USD. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId', 'scryfallId', 'finish', 'condition'], 'properties': {'finish': {'enum': ['nf', 'fo', 'etched', 'surge', 'rh', '1e', '1e-fo'], 'type': 'string', 'description': 'The exact finish for the SKU: nf, fo, etched, surge, rh, 1e or 1e-fo. Required.'}, 'condition': {'enum': ['NM', 'LP', 'MP', 'HP', 'DMG'], 'type': 'string', 'description': 'The exact physical condition for the SKU. Required.'}, 'scryfallId': {'type': 'string', 'maxLength': 200, 'minLength': 1, 'description': 'The exact Scryfall printing id. Required.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace the seller selected. The caller must own it. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId'], 'properties': {'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace to read setup status for. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['submissionId', 'operation', 'clientVersion', 'occurredAt', 'errorCode'], 'properties': {'errorCode': {'enum': ['login_required', 'access_denied', 'invalid_input', 'invalid_upstream_response', 'upstream_http_error', 'upstream_timeout', 'upstream_unavailable', 'upstream_response_too_large', 'auth_unavailable', 'invalid_token_response', 'credential_store_busy', 'credential_store_unavailable', 'client_failure', 'request_cancelled', 'client_type_error', 'client_range_error', 'client_reference_error'], 'type': 'string', 'description': 'Which closed error code best matches the failure. Required.'}, 'operation': {'enum': ['spellbook_workspaces_list', 'spellbook_buy_targets', 'spellbook_buy_outcome_report', 'spellbook_entitlements', 'spellbook_singles_buylist_spreads', 'spellbook_credit_conversion_candidates', 'spellbook_credit_resale_assessment', 'spellbook_sealed_product_search', 'spellbook_sealed_product_offers', 'spellbook_sealed_deal_board', 'spellbook_customer_evidence_record', 'spellbook_customer_evidence_get', 'spellbook_customer_evidence_list', 'spellbook_collection_buying_record', 'spellbook_collection_buying_get', 'spellbook_collection_buying_list', 'spellbook_inventory_items_query', 'spellbook_inventory_location_confirm', 'spellbook_inventory_holdings', 'spellbook_sealed_portfolio', 'spellbook_sealed_portfolio_record', 'spellbook_sealed_portfolio_hold_set', 'spellbook_sealed_portfolio_open_intent_clear', 'spellbook_sealed_portfolio_receive', 'spellbook_sealed_portfolio_open', 'spellbook_sealed_recovered_component_record', 'spellbook_sealed_intent_defaults', 'spellbook_sealed_intent_default_set', 'spellbook_sale_record', 'spellbook_agent_gap_report', 'spellbook_support_report', 'spellbook_store_setup_status', 'spellbook_guides', 'spellbook_skill', 'spellbook_printings_search', 'spellbook_inventory_bin_ensure', 'spellbook_inventory_import_csv', 'spellbook_inventory_precon_import', 'spellbook_purchase_incoming_record', 'spellbook_inventory_incoming', 'spellbook_inventory_incoming_receive', 'spellbook_movers', 'spellbook_card_prices', 'spellbook_card_buylist', 'spellbook_pokemon_market_analytics', 'spellbook_pokemon_ath', 'spellbook_pokemon_arbitrage_spreads', 'spellbook_deck_contents', 'spellbook_deck_import_limitless', 'spellbook_pokemon_metagame_overview', 'spellbook_pokemon_metagame_archetype', 'spellbook_pokemon_metagame_card', 'spellbook_box_ev_rankings', 'spellbook_ebay_publish', 'spellbook_ebay_reprice', 'spellbook_ebay_unpublish', 'spellbook_ebay_job_status', 'spellbook_manapool_sync_preview', 'spellbook_manapool_sync_apply', 'spellbook_sealed_listing_preview', 'spellbook_sealed_listing_submit', 'spellbook_sealed_listing_pause', 'spellbook_tcg_listing_preview', 'spellbook_tcg_listing_export', 'spellbook_pokemon_tcg_staged_preview', 'spellbook_ebay_connect_link', 'spellbook_ebay_connection_status', 'spellbook_manapool_connect_link', 'spellbook_manapool_connection_status', 'spellbook_marketplace_onboarding', 'spellbook_item_photo_upload_link', 'spellbook_pull_work', 'spellbook_japanese_sourcing', 'spellbook_riftbound_japanese_comparables', 'spellbook_japan_source_scan', 'spellbook_pricing_decision_explain', 'spellbook_sku_price_controls', 'spellbook_sku_minimum_floor_set', 'spellbook_sku_minimum_floor_clear', 'spellbook_sku_exact_price_lock_set', 'spellbook_sku_exact_price_lock_clear', 'spellbook_pricing_profiles_list', 'spellbook_pricing_profile_get', 'spellbook_pricing_profile_create', 'spellbook_pricing_profile_update', 'spellbook_pricing_profile_activate', 'spellbook_pricing_amendments_list', 'spellbook_pricing_amendment_get', 'spellbook_pricing_amendment_create', 'spellbook_pricing_amendment_update', 'spellbook_pricing_amendment_delete', 'spellbook_pricing_amendment_preview', 'spellbook_pricing_amendment_preview_status', 'spellbook_ebay_automation_set', 'spellbook_manapool_automation_set', 'spellbook_channel_pricing_profiles', 'spellbook_channel_pricing_profile_set', 'spellbook_tcg_extension_pairing', 'spellbook_workspace_create', 'spellbook_workspace_plan_status', 'spellbook_free_seller_workspace_claim', 'spellbook_seller_plan_checkout_link', 'spellbook_return_address', 'spellbook_return_address_save', 'spellbook_alerts_list', 'spellbook_alert_create', 'spellbook_alert_delete', 'spellbook_card_buylist_history', 'spellbook_buylist_compare', 'spellbook_order_proof_photos', 'spellbook_repeat_buyers', 'spellbook_collection_receipt', 'login', 'refresh'], 'type': 'string', 'description': 'Which SpellBook operation failed. Required, one of the closed operation names.'}, 'occurredAt': {'type': 'string', 'format': 'date-time', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$', 'maxLength': 30, 'description': 'ISO-8601 timestamp of when the failure occurred. Required.'}, 'submissionId': {'type': 'string', 'pattern': '^[0-7][0-9A-HJKMNP-TV-Z]{25}$', 'description': '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.'}, 'clientVersion': {'type': 'string', 'pattern': '^\\d{1,4}\\.\\d{1,4}\\.\\d{1,4}$', 'description': 'This client\'s semantic version, e.g. "1.2.3". Required.'}, 'correlationId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$', 'description': 'A correlation id from a prior response, if one was returned. Omit when none was given.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId'], 'properties': {'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace to read extension pairing for, from spellbook_workspaces_list. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId'], 'properties': {'floorPrice': {'type': 'number', 'maximum': 1000, 'minimum': 0, 'description': 'Must match the value shown in spellbook_tcg_listing_preview to export the same priced candidates.'}, 'sampleSize': {'type': 'integer', 'maximum': 5000, 'minimum': 1, 'description': 'Must match the value shown in spellbook_tcg_listing_preview to export the same candidate set.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace to export a TCGplayer upload CSV for. Required; writes listing records for this workspace.'}, 'marketMultiplier': {'type': 'number', 'maximum': 10, 'description': 'Must match the value shown in spellbook_tcg_listing_preview to export the same priced candidates.', 'exclusiveMinimum': 0}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId'], 'properties': {'cursor': {'type': 'string', 'maxLength': 500, 'minLength': 1, 'description': 'Opaque cursor from a previous page, passed back unchanged. Omit to start from the first page.'}, 'floorPrice': {'type': 'number', 'maximum': 1000, 'minimum': 0, 'description': "A price floor in USD for this preview. Omit to use the workspace's stored floor."}, 'sampleSize': {'type': 'integer', 'maximum': 5000, 'minimum': 1, 'description': 'Maximum candidate rows to preview. Omit for the default sample size.'}, 'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace to preview a TCGplayer listing run for. Required.'}, 'marketMultiplier': {'type': 'number', 'maximum': 10, 'description': "Price multiplier applied to market price for this preview. Omit to use the workspace's stored pricing.", 'exclusiveMinimum': 0}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspaceId'], 'properties': {'workspaceId': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'The workspace to read the plan for. The caller must be a member. Required.'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}, 'additionalProperties': False}
Recent tool changes
Similar MCP servers
Sorsa
Supports Amazon FBA arbitrage with product analysis, sourcing and deal feeds, pricing alerts, inventory and order reporting, prof…
Bonhams
Searches Bonhams' auction archive for past lots and retrieves realized prices, estimates, sale dates, descriptions, and condition…
swop
Manages Swop profiles and storefronts, supports product sales, wallet balances and transfers, token swaps, perpetuals, and predic…
Cambio Uruguay
Provides Uruguayan exchange-rate data, rental and used-car searches, product pricing, market comparisons, and neighborhood inform…
The Undesirables TCG Oracle
Provides trading-card search, market and graded-slab pricing, price forecasts, grading analysis, ROI and lending calculations, sp…
kdata-gate
Provides Korean product, trend, weather, tourism, real estate, company, stock, and market data plus commercial research packet ge…
Thrifle
Provides US shopping research on deals, returns, discounts, price matching, product recalls, credit cards, consumer prices, and A…
Bling
Provides access to Bling ERP data for contacts, products, sales orders, inventory, electronic invoices, accounts payable and rece…