Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,536Letters: 14Defects: 1,322counted just now
teppi

Server definition

Hash
sha256:b15de8fb8efd66cfc9ca01225daa028b0ea6af5b03a5331d7380a410bf2ba6ce
What it is
What a remote MCP server returned when asked what it offers: 12 tools

The blob, as servednamed by its sha256

{ "instructions": null, "tools": [ { "description": "Cancel an in-flight gift and receive the refund amount. Free. Only possible before the booklet goes to print; once printing has started it fails with cancel_too_late. Pass the gift_id from create_gift and an optional reason for your records.", "inputSchema": { "properties": { "gift_id": { "description": "The gift_id returned by create_gift, identifying the order to cancel.", "type": "string" }, "reason": { "description": "Optional human-readable reason for the cancellation, recorded on the order.", "maxLength": 200, "type": "string" } }, "required": [ "gift_id" ], "type": "object" }, "name": "cancel_gift", "outputSchema": null }, { "description": "Place the order: write, print, and mail the booklet. CHARGES the buyer. The recipient is whoever you name in recipient, which may be your own user. Idempotent on idempotency_key for 24 hours. Pass shared_payment_token to pay tokenlessly, or omit it to charge the account's saved card.", "inputSchema": { "properties": { "agent_note": { "description": "Optional note from the agent, stored with the order for support. Never printed in the booklet.", "maxLength": 500, "type": "string" }, "brief": { "description": "Structured brief about the recipient: what to celebrate, what to tease gently, and the inside jokes worth knowing.", "properties": { "celebrate": { "items": { "maxLength": 140, "minLength": 4, "type": "string" }, "maxItems": 8, "minItems": 2, "type": "array" }, "do_not_mention": { "items": { "maxLength": 60, "minLength": 1, "type": "string" }, "maxItems": 8, "minItems": 0, "type": "array" }, "image_brief": { "maxLength": 300, "type": "string" }, "image_model": { "enum": [ "flux_2_pro", "imagen_4", "ideogram_3", "recraft_v4", "gpt_image_2", "nano_banana_2" ], "type": "string" }, "in_jokes": { "items": { "maxLength": 200, "minLength": 4, "type": "string" }, "maxItems": 6, "minItems": 0, "type": "array" }, "recipient_first_name": { "maxLength": 40, "minLength": 1, "pattern": "^[a-zA-Z\\s'-]+$", "type": "string" }, "tease_gently": { "items": { "maxLength": 140, "minLength": 4, "type": "string" }, "maxItems": 6, "minItems": 0, "type": "array" }, "tone": { "enum": [ "warm_with_ribbing", "warm_only", "deep_appreciation" ], "type": "string" }, "voice": { "enum": [ "hype_man", "best_friend", "conspiracy" ], "type": "string" } }, "required": [ "recipient_first_name", "voice", "tone", "celebrate" ], "type": "object" }, "format": { "description": "Booklet format. Only manual_v1, a 16-page booklet, is supported today.", "enum": [ "manual_v1" ], "type": "string" }, "idempotency_key": { "description": "Caller-chosen key that makes this order idempotent for 24 hours. Reuse the same key to retry safely without charging twice.", "maxLength": 64, "minLength": 8, "type": "string" }, "preview_before_print": { "description": "If true, the gift pauses for buyer review before printing instead of printing automatically.", "type": "boolean" }, "recipient": { "description": "Who receives the booklet and where to mail it. Pass an inline recipient with a US ship_to, or a saved recipient_id.", "oneOf": [ { "properties": { "recipient_id": { "minLength": 1, "type": "string" } }, "required": [ "recipient_id" ], "type": "object" }, { "properties": { "first_name": { "maxLength": 40, "minLength": 1, "pattern": "^[a-zA-Z\\s'-]+$", "type": "string" }, "ship_to": { "properties": { "city": { "maxLength": 60, "minLength": 1, "type": "string" }, "country": { "maxLength": 2, "minLength": 2, "pattern": "^[A-Z]{2}$", "type": "string" }, "line1": { "maxLength": 120, "minLength": 1, "type": "string" }, "line2": { "maxLength": 120, "type": "string" }, "name": { "maxLength": 100, "minLength": 1, "type": "string" }, "phone": { "maxLength": 30, "type": "string" }, "postal_code": { "maxLength": 20, "minLength": 1, "type": "string" }, "region": { "maxLength": 60, "minLength": 1, "type": "string" } }, "required": [ "name", "line1", "city", "region", "postal_code", "country" ], "type": "object" } }, "required": [ "first_name", "ship_to" ], "type": "object" } ] }, "shared_payment_token": { "description": "Single-use Stripe Shared Payment Token (spt_...) to pay without a stored card. Omit to charge the account default.", "pattern": "^spt_", "type": "string" } }, "required": [ "idempotency_key", "brief", "recipient" ], "type": "object" }, "name": "create_gift", "outputSchema": null }, { "description": "Return a hosted Stripe link for the buyer to save a card or wallet to the account. After that, create_gift without a shared_payment_token charges the saved card.", "inputSchema": { "properties": { "return_url": { "format": "uri", "type": "string" } }, "type": "object" }, "name": "create_setup_link", "outputSchema": null }, { "description": "Return this account's spending caps and month-to-date spend. Free. Use it to confirm budget before create_gift.", "inputSchema": { "properties": {}, "type": "object" }, "name": "get_account", "outputSchema": null }, { "description": "Fetch a gift by gift_id and return its full resource: status, voice, format, pricing, the recipient, and fulfillment (Lulu job id, carrier, tracking URL, estimated delivery). Free and read-only. Use it to poll progress after create_gift: status advances through the pipeline to shipped then delivered, or ends at held, refused, cancelled, or failed.", "inputSchema": { "properties": { "gift_id": { "description": "The gift_id returned by create_gift, identifying the order to fetch.", "type": "string" } }, "required": [ "gift_id" ], "type": "object" }, "name": "get_gift", "outputSchema": null }, { "description": "Compute the exact total for a hypothetical gift (format, voice, image model, ship_to) before you commit. Free, no order is created. Call before create_gift so you know the charge.", "inputSchema": { "properties": { "format": { "description": "Booklet format to price. Only manual_v1 is supported today.", "enum": [ "manual_v1" ], "type": "string" }, "image_model": { "description": "Optional cover image model id. Some models add a small per-call cost.", "type": "string" }, "ship_to": { "description": "Destination address. US is supported; the total and tax depend on the destination.", "properties": { "city": { "maxLength": 60, "minLength": 1, "type": "string" }, "country": { "maxLength": 2, "minLength": 2, "pattern": "^[A-Z]{2}$", "type": "string" }, "line1": { "maxLength": 120, "minLength": 1, "type": "string" }, "line2": { "maxLength": 120, "type": "string" }, "name": { "maxLength": 100, "minLength": 1, "type": "string" }, "phone": { "maxLength": 30, "type": "string" }, "postal_code": { "maxLength": 20, "minLength": 1, "type": "string" }, "region": { "maxLength": 60, "minLength": 1, "type": "string" } }, "required": [ "name", "line1", "city", "region", "postal_code", "country" ], "type": "object" }, "voice": { "description": "Optional comedic voice. It does not change the price; accepted for parity with create_gift.", "enum": [ "hype_man", "best_friend", "conspiracy" ], "type": "string" } }, "required": [ "ship_to" ], "type": "object" }, "name": "get_pricing", "outputSchema": null }, { "description": "List supported booklet formats. There is one today: manual_v1, a 16-page booklet. Free, no side effects.", "inputSchema": { "properties": {}, "type": "object" }, "name": "list_formats", "outputSchema": null }, { "description": "Paginated list of gifts on the account, with optional status and date filters. Free.", "inputSchema": { "properties": { "cursor": { "description": "Opaque pagination cursor from a previous list_gifts response.", "type": "string" }, "limit": { "description": "Maximum number of gifts to return, 1 to 100. Defaults to 50.", "maximum": 100, "minimum": 1, "type": "integer" }, "since": { "description": "Only return gifts created at or after this ISO 8601 timestamp.", "format": "date-time", "type": "string" }, "status": { "description": "Only return gifts in this status, for example shipped, delivered, or cancelled.", "enum": [ "created", "validating", "generating", "output_validating", "rendering", "awaiting_buyer_preview", "queued_for_print", "printed", "shipped", "delivered", "held", "refused", "cancelled", "failed" ], "type": "string" } }, "type": "object" }, "name": "list_gifts", "outputSchema": null }, { "description": "List supported cover image models and their per-call cost. Free, no side effects.", "inputSchema": { "properties": {}, "type": "object" }, "name": "list_image_models", "outputSchema": null }, { "description": "Return the account's saved recipients (address book). Free. Reuse a recipient_id in create_gift instead of re-entering an address.", "inputSchema": { "properties": {}, "type": "object" }, "name": "list_recipients", "outputSchema": null }, { "description": "List the three comedic voices (Hype Man, Best Friend Roast, Conspiracy Theorist) and the cover image model each prefers. Free, no side effects. Call this first to pick a voice.", "inputSchema": { "properties": {}, "type": "object" }, "name": "list_voices", "outputSchema": null }, { "description": "Run the content policy on a brief without charging or ordering. Free. Call before create_gift so a refusal surfaces early. A booklet that would wound the recipient is refused here, not at charge time.", "inputSchema": { "properties": { "brief": { "description": "The same brief you would pass to create_gift. It is checked against the content policy, free, with no order created.", "properties": { "celebrate": { "items": { "maxLength": 140, "minLength": 4, "type": "string" }, "maxItems": 8, "minItems": 2, "type": "array" }, "do_not_mention": { "items": { "maxLength": 60, "minLength": 1, "type": "string" }, "maxItems": 8, "minItems": 0, "type": "array" }, "image_brief": { "maxLength": 300, "type": "string" }, "image_model": { "enum": [ "flux_2_pro", "imagen_4", "ideogram_3", "recraft_v4", "gpt_image_2", "nano_banana_2" ], "type": "string" }, "in_jokes": { "items": { "maxLength": 200, "minLength": 4, "type": "string" }, "maxItems": 6, "minItems": 0, "type": "array" }, "recipient_first_name": { "maxLength": 40, "minLength": 1, "pattern": "^[a-zA-Z\\s'-]+$", "type": "string" }, "tease_gently": { "items": { "maxLength": 140, "minLength": 4, "type": "string" }, "maxItems": 6, "minItems": 0, "type": "array" }, "tone": { "enum": [ "warm_with_ribbing", "warm_only", "deep_appreciation" ], "type": "string" }, "voice": { "enum": [ "hype_man", "best_friend", "conspiracy" ], "type": "string" } }, "required": [ "recipient_first_name", "voice", "tone", "celebrate" ], "type": "object" } }, "required": [ "brief" ], "type": "object" }, "name": "validate_brief", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:b15de8fb8efd66cfc9ca01225daa028b0ea6af5b03a5331d7380a410bf2ba6ce | sha256sum