Paddock Cards

so.paddockPublished by paddock.soOfficial publisherv0.1.4Updated Oct 30, 2026

Send birthday cards, Christmas cards and postcards, printed and mailed for you.

VerifiedStreamable HTTPWeb executableProductivity & WorkflowBusiness & Commerce

Overview

AI-generated overview

Paddock Cards lets an assistant search printed greeting cards and postcards, prepare and pay for orders, and track printing and mailing.

What you can do
  • Search cards by artwork, occasion, format or budget, with destination pricing and images
  • Prepare, revise, preview and read a card order, with per-card messages, recipients and mailing dates
  • Start payment and show the buyer an approval link, then confirm only when the status is paid
  • Cancel an eligible order or selected paid cards at the current revision
  • Open a private upload scope, compose a custom card face from a photo, logo or QR, and delete unused uploads
  • List orders for a connected buyer who granted read permission, and optionally report technical feedback
When to use it
Useful when someone wants an assistant to pick a greeting card or postcard and have it printed and mailed, including batches of cards for different recipients and occasions, or to check and manage an existing Paddock order.
Requirements
Remote streamable HTTP endpoint at api.paddock.so; no package, environment variables or headers declared. Payment requires the buyer to connect Link or complete bank authentication through a returned link. Listing orders requires a connected buyer who granted orders:read.
Before you install
Orders cost real money: pay_order starts payment, and only the buyer can approve it, so never ask for payment credentials in chat. Keep order_access_token and other per-order tokens private. Preparing an order does not charge or mail, but revising requires a new quote and approval. Uploaded photos, logos and QR codes go to the service and are retained after purchase until 90 days after mailing or final cancellation.

Installation

In SourceWeft

  1. Open Paddock Cards in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/so.paddock%2Fcards/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "paddock-cards": {
      "type": "http",
      "url": "https://api.paddock.so/agent-commerce/mcp"
    }
  }
}

Tools

13

search_cards

Search cards

Find ordinary and artist cards by artwork, occasion, format or budget. Returns matches with exact design keys and versions, images, orderability, destination prices and next_cursor. Pass destination_country when known; read pricing_destination and cents_by_destination. Basic physical specifications appear once in format_specs; include_specs adds published details. Public browsing needs no account or key. If results is empty, inspect unmet, constraints and pagination before adjusting filters. Pass the selected design key and version to prepare_order.

Parameterskindtonehumorlimitqueryartistcursorformatoccasioninclude_specsmax_price_centsdestination_country+2 more

prepare_order

Prepare an order

Prepare one unpaid purchase of 1 to 500 cards, with mixed artwork, formats, messages, recipients, occasions and dates in one cards array. Each card is priced for its recipient country. Returns order.cards, the exact total, a private order_access_token and review_url for buyer review and payment. When preview_available is true, optional preview_card can show the finished card; images render only when requested. This authorizes neither a charge nor mailing. Preserve the returned token privately for retries and follow-up tools. If the first response is lost before saving a server-generated token, use a new request_id for another unpaid purchase. The 500-card/4-MiB bounds are technical request limits. Validation issues identify zero-based card indices without copying private content.

Parameterscardsrequiredrequest_idrequiredorder_access_token

read_order

Read an order

Read one known private purchase using its order ID and matching capability. Returns the current revision, payment state and order.cards with each card’s production and mailing states. Use it to check progress or refresh a stale revision; it does not change the order.

Parametersorder_idrequiredorder_access_tokenrequired

cancel_order

Cancel cards

Cancel an eligible purchase or eligible paid cards at the current order revision. Before payment, omit card_ids for whole-purchase cancellation. After payment, omit them for the whole eligible purchase or select returned card IDs. The service checks ownership and each fulfillment cutoff, then returns the actual cancellation and refund states.

Parameterscard_idsorder_idrequiredexpected_revisionrequiredorder_access_tokenrequired

report_feedback

Report technical feedback

Optionally record a technical problem, suggestion or neutral successful outcome using fixed choices. Use after communicating the outcome to the buyer; never required to buy a card. Reports are stored for 30 days and deduplicated daily. Returns recorded or duplicate; TRY_LATER means the daily limit of 100 new reports per server-assigned scope or 500 overall was reached. Do not include personal content, credentials, links, conversations or hidden reasoning. Reports are unverified feedback, not proof of payment or mailing.

Parameterscodekindrequiredfieldcategoryrequiredseverityrequiredoperationrequired

revise_order

Revise an unpaid order

Replace an unpaid draft before payment starts. Send the complete desired cards array, including unchanged cards. Validation and replacement are atomic: failure leaves the original draft intact; success cancels it and returns a new order, price, private token and review_url. Use that replacement for later edits, previews and payment; prior payment approval does not carry over. To add private artwork, first reopen the original draft with open_private_content; existing private artwork can be retained. If payment has started or is uncertain, use read_order and resolve it before changing anything. Retry an uncertain revision only with the identical request. The replacement inherits its source’s history access; revision does not link a previously unlinked order.

Parameterscardsrequiredorder_idrequiredrequest_idrequiredexpected_revisionrequiredorder_access_tokenrequired

preview_card

Preview a card

Show a prepared card’s finished surfaces before payment when preview_available is true. Optional, never required to buy. Returns images and their order revision, plus preview_url for clients that need a browser. Preview again after changes. This does not change, charge or mail the order.

Parametersfacescard_idorder_idrequiredexpected_revisionorder_access_tokenrequired

open_private_content

Open private uploads

Open a private upload scope for the buyer’s photo, artwork, logo or QR card. Omit both inputs for a new scope, or pass an unpaid order and its token to reopen that draft’s scope. Returns scope_id, a private token, upload_url and expiry. Assistants cannot upload conversation attachments; send the buyer the link, then use read_private_content when they finish. Catalog cards need no upload scope.

Parametersorder_idorder_access_token

read_private_content

Read private uploads

List assets and existing card compositions in one private scope after the buyer uploads. Returns asset IDs with their kinds and each composition’s design_key/version. Reuse an existing composition directly; use compose_private_card only for a new face. For a new purchase, prepare_order uses request_id = scope_id and the same token; existing drafts use revise_order. An empty scope returns empty assets and compositions arrays. An expired scope without checkout or payment returns NOT_FOUND; open a new scope to upload again.

Parametersscope_idrequiredorder_access_tokenrequired

compose_private_card

Compose a private card

Create a new immutable card face from this scope’s artwork, logo or QR URL. Requires at least one of those inputs; a QR-only face needs no upload. Returns design_key and design_version for prepare_order or revise_order. Personal message, recipient and mailing details are supplied in the order’s cards array. Reuse an existing composition when no new face is needed.

Parameterstitlerequiredqr_urlscope_idrequiredlogo_asset_idcomposition_idrequiredartwork_asset_idorder_access_tokenrequired

delete_private_content

Delete private uploads

Request deletion of unused uploads and compositions in one private scope at the buyer’s request. Returns acceptance and deletion state; it does not cancel an order. Purchased content remains until 90 days after mailing or final cancellation/refund, longer while an order, dispute or legal hold is unresolved.

Parametersscope_idrequiredorder_access_tokenrequired

pay_order

Pay for an order

Start or resume payment for this exact prepared order and revision. Show the exact amount and returned action_url for the buyer to connect Link, approve this purchase or complete bank authentication. Only the buyer can approve; never ask for payment credentials in chat. Call again after that step, respecting retry_after_seconds. Confirm payment only when status is paid; processing and requires_action are incomplete. Changing the order requires a new quote and approval. Use read_order for separate printing and mailing progress.

Parametersorder_idrequiredexpected_revisionrequiredorder_access_tokenrequired

list_orders

List your orders

Find orders first prepared through this assistant connection with history permission, newest first. Replacements inherit their original order’s history access; revising an unlinked order does not add it. Requires a connected buyer who granted orders:read; the public endpoint returns connection instructions. Returns compact order IDs, dates, totals, card counts and payment/refund states, plus next_cursor. Use read_order with a returned order_id for card details and mailing status; no per-order token is needed with history permission. Excludes expired, erased and revoked orders. Reconnecting starts a separate history. Never use names or addresses to find another buyer’s orders.

Parameterslimitcursor

Version history

1
  1. v0.1.4LatestOct 30, 2026

Score

72% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts

    Publish an icon in the registry entry.

  • Documentation15 pts

    Declare a GitHub repository with a README, or serve resource_documentation in the OAuth protected-resource metadata.

  • LicenseNot applicable

    A hosted service is used under its provider's terms, so no license is expected here. This check is left out of the percentage.