← Back to Clody

Clody connector

Let an AI assistant keep your card show books — Model Context Protocol server reference

What this is

Clody is bookkeeping for trading card dealers: inventory, takings per show, what you owe the people you sell for, and a public storefront page. This connector exposes those books to an AI assistant over the Model Context Protocol, so a dealer can say "log that I sold the Charizard for $450" with their hands full, instead of typing it later from memory.

It is the dealer's own books and nothing else. An assistant holding a key reaches one team's data — not another dealer's, not a buyer's, not a payment method.

Endpoint

POST https://www.theclody.com/api/mcp
Content-Type: application/json
Authorization: Bearer clody_sk_...

MCP over streamable HTTP: JSON-RPC 2.0 in the request body, JSON in the response. Protocol version 2025-06-18, or whichever of 2024-11-05 and 2025-03-26 you ask for in initialize. There is no SSE stream to hold open and no session to maintain — every call stands on its own.

Use the www. The bare domain answers a POST with 308 to this address. A client that follows redirects gets there and works; many HTTP libraries do not follow them on POST by default, and those see the 308 and stop. Nothing about the failure says what is wrong, so it is worth getting right the first time.

Connecting, as a dealer

  1. Sign in to Clody and open your Dashboard.
  2. Under Run Clody from your AI assistant, choose New key. Copy it then — it is shown once and we keep only a hash, so we can't show it to you again.
  3. In your assistant, add a custom connector with the endpoint above and paste the key as the bearer token.
  4. Ask it something only your books know — "how did today's show go?" — to confirm it's through.

Authentication

A bearer API key, created by the dealer, prefixed clody_sk_. No OAuth flow: the key is generated in the browser and only its SHA-256 hash is ever sent to us, so a database dump does not yield working keys.

A dealer can hold several keys and revoke any of them from the Dashboard. Revocation is checked on every call, so a revoked key stops working on the assistant's next request — there is no cache to wait out. Calling with a missing or revoked key returns JSON-RPC error -32001 with HTTP 401.

initialize, ping and tools/list need no key — the tool list is public metadata and carries no dealer data. Every tools/call does.

Who can use it

  • Account: a Clody account, free to create.
  • Plan: key generation needs an active paid plan — Clody Pro (CA$9.99/month) or a Basic activation code from a partner dealer or show. The free tier can't mint keys. Publishing a storefront through the connector needs the same.
  • Region: available anywhere; built for the Canadian and US card show circuit. Shows trade in CAD or USD, and each trade is pinned to its show's currency and rate at the moment it is logged.
  • Clock: "today" means the dealer's day in America/Vancouver, which is what decides the show a trade belongs to.

Rate limits

Reads and writes against a dealer's own ledger are not metered — that is their data and a database row costs nothing worth counting.

Photo recognition is: 250 photos per hour per key. The ceiling sits far above any real session — a dealer shooting a whole box will not meet it — and exists to stop something running unattended. Over it, the tool returns a plain-language error telling the assistant to wait; the underlying endpoint answers HTTP 429 with Retry-After. Metering is per key, not per IP, so one dealer's assistant cannot exhaust another's.

What the tools do

The current list always comes from tools/list, and it grows between releases. If a dealer asks for something you can't see a tool for, call tools/list again before telling them it isn't possible — assistants that cached an older list have told dealers exactly that about features which shipped the same week.

Inventory

  • search_inventory — find cards the dealer holds, by name, set or number
  • get_card — one card in full, including what they paid for it
  • add_card — put a card into inventory
  • recognize_card_photo — read a photo and say what the card is, checking PSA for graded cards
  • get_card_price_stats — what this card has actually bought and sold for in these books
  • set_safety_stock — the level at which a card should raise a restock warning

Trades and shows

  • record_sale — log a sale, attributed to whichever show was running
  • record_purchase — log buying a card in
  • record_expense — log a cost — table fee, parking, shipping
  • record_trades_batch — a stack sold together, or a box bought in, in one call
  • list_transactions — recent trades, with the id each needs to be corrected by
  • void_transaction — undo a trade within 30 minutes of logging it
  • delete_transaction — remove a trade permanently — no undo
  • list_shows — the dealer's shows, with dates and currency
  • create_show — start a new show
  • get_show_summary — how one show went: in, out, expenses, trade count
  • get_today_summary — everything logged today, on the dealer's own clock
  • query_analytics — takings by show, set, month or card, over any period

Selling

  • draft_marketplace_listing — everything needed to post one card to Facebook Marketplace, as the fields that form asks for
  • set_listing_status — record where a card stands on Marketplace after you post or take down
  • list_portfolios — the selections the dealer has sorted their stock into
  • publish_portfolio — put one selection online as a public shop, or take it off
  • list_consignors — the people this dealer sells for, and what is still owed to each
  • settle_consignor — mark everything owed to one consignor as paid

Getting it right

  • list_pending_review — trades logged by voice that the dealer has not confirmed yet
  • confirm_transactions — mark them checked, once the dealer has actually heard the amounts
  • poll_events — what is worth raising with this dealer right now
  • ack_event — mark one as told
  • get_onboarding_state — how far a new dealer has got
  • get_report_preferences — whether they've asked for a daily wrap-up, and when
  • set_report_preferences — turn it on or off, or move it

Writing to someone's real books

These are a small business's actual accounts, and a misheard number becomes a wrong one silently. Two rules, and the server is built around both:

  • Read the amount back and wait for a yes before logging anything. Trades logged this way are flagged in the app for the dealer to confirm, and list_pending_review exists so an assistant can chase its own unconfirmed work rather than leaving it.
  • Pass a fresh idempotency_key on every write, and reuse the same one when retrying. A retried sale that logs twice is worse than one that fails, because nobody notices.

Errors come back as tool results rather than protocol errors, worded to be read aloud to the dealer, so a failure ends in an explanation rather than silence.

What it deliberately cannot do

  • Take payment. No tool moves money. Subscriptions run through Stripe on our own site; what a buyer pays a dealer for a card never touches Clody.
  • Reach another dealer. Every query is scoped to the key's own team, server-side.
  • Expose cost price publicly. A dealer's buying price is their margin. It is readable by their own assistant and never appears on a public storefront.
  • Delete quietly. Voids and deletions are recorded with the trade they removed.

Privacy

We record which tool was called, whether it worked, and when — never amounts, card names, or anything about a buyer — so we can help a dealer whose integration has gone quiet. A scheduled job deletes those records once they pass 30 days old. Data is hosted in Canada.

Once an assistant has read a dealer's books, what its provider does with that data is governed by their policy, not ours. The full terms are in our Privacy Policy (see "Connecting an outside AI assistant") and Terms of Service (section 7).

Contact

Magna Arc Financial Ltd. — 700-838 W Hastings Street, Vancouver, BC, Canada, V6C 0A6
Email: bw79814513@gmail.com