A press your agent can commission: a funny, personalized printed booklet, mailed as a gift.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Bearer toe_live_... account token, issued at tokenofesteem.com/account. Use toe_test_... for the free sandbox. No account? See the tokenless 402 path at tokenofesteem.com/for-agents.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
The gift_id returned by create_gift, identifying the order to cancel.
Optional human-readable reason for the cancellation, recorded on the order.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
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.
| Argument | Type | Description |
|---|---|---|
| reason | string | Optional human-readable reason for the cancellation, recorded on the order. |
| gift_id* | string | The gift_id returned by create_gift, identifying the order to cancel. |
{
"type": "object",
"required": [
"gift_id"
],
"properties": {
"reason": {
"type": "string",
"maxLength": 200,
"description": "Optional human-readable reason for the cancellation, recorded on the order."
},
"gift_id": {
"type": "string",
"description": "The gift_id returned by create_gift, identifying the order to cancel."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| brief* | object | Structured brief about the recipient: what to celebrate, what to tease gently, and the inside jokes worth knowing. |
| format | string | Booklet format. Only manual_v1, a 16-page booklet, is supported today. |
| recipient* | any | Who receives the booklet and where to mail it. Pass an inline recipient with a US ship_to, or a saved recipient_id. |
| agent_note | string | Optional note from the agent, stored with the order for support. Never printed in the booklet. |
| idempotency_key* | string | Caller-chosen key that makes this order idempotent for 24 hours. Reuse the same key to retry safely without charging twice. |
| preview_before_print | boolean | If true, the gift pauses for buyer review before printing instead of printing automatically. |
| shared_payment_token | string | Single-use Stripe Shared Payment Token (spt_...) to pay without a stored card. Omit to charge the account default. |
{
"type": "object",
"required": [
"idempotency_key",
"brief",
"recipient"
],
"properties": {
"brief": {
"type": "object",
"required": [
"recipient_first_name",
"voice",
"tone",
"celebrate"
],
"properties": {
"tone": {
"enum": [
"warm_with_ribbing",
"warm_only",
"deep_appreciation"
],
"type": "string"
},
"voice": {
"enum": [
"hype_man",
"best_friend",
"conspiracy"
],
"type": "string"
},
"in_jokes": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 4
},
"maxItems": 6,
"minItems": 0
},
"celebrate": {
"type": "array",
"items": {
"type": "string",
"maxLength": 140,
"minLength": 4
},
"maxItems": 8,
"minItems": 2
},
"image_brief": {
"type": "string",
"maxLength": 300
},
"image_model": {
"enum": [
"flux_2_pro",
"imagen_4",
"ideogram_3",
"recraft_v4",
"gpt_image_2",
"nano_banana_2"
],
"type": "string"
},
"tease_gently": {
"type": "array",
"items": {
"type": "string",
"maxLength": 140,
"minLength": 4
},
"maxItems": 6,
"minItems": 0
},
"do_not_mention": {
"type": "array",
"items": {
"type": "string",
"maxLength": 60,
"minLength": 1
},
"maxItems": 8,
"minItems": 0
},
"recipient_first_name": {
"type": "string",
"pattern": "^[a-zA-Z\\s'-]+$",
"maxLength": 40,
"minLength": 1
}
},
"description": "Structured brief about the recipient: what to celebrate, what to tease gently, and the inside jokes worth knowing."
},
"format": {
"enum": [
"manual_v1"
],
"type": "string",
"description": "Booklet format. Only manual_v1, a 16-page booklet, is supported today."
},
"recipient": {
"oneOf": [
{
"type": "object",
"required": [
"recipient_id"
],
"properties": {
"recipient_id": {
"type": "string",
"minLength": 1
}
}
},
{
"type": "object",
"required": [
"first_name",
"ship_to"
],
"properties": {
"ship_to": {
"type": "object",
"required": [
"name",
"line1",
"city",
"region",
"postal_code",
"country"
],
"properties": {
"city": {
"type": "string",
"maxLength": 60,
"minLength": 1
},
"name": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"line1": {
"type": "string",
"maxLength": 120,
"minLength": 1
},
"line2": {
"type": "string",
"maxLength": 120
},
"phone": {
"type": "string",
"maxLength": 30
},
"region": {
"type": "string",
"maxLength": 60,
"minLength": 1
},
"country": {
"type": "string",
"pattern": "^[A-Z]{2}$",
"maxLength": 2,
"minLength": 2
},
"postal_code": {
"type": "string",
"maxLength": 20,
"minLength": 1
}
}
},
"first_name": {
"type": "string",
"pattern": "^[a-zA-Z\\s'-]+$",
"maxLength": 40,
"minLength": 1
}
}
}
],
"description": "Who receives the booklet and where to mail it. Pass an inline recipient with a US ship_to, or a saved recipient_id."
},
"agent_note": {
"type": "string",
"maxLength": 500,
"description": "Optional note from the agent, stored with the order for support. Never printed in the booklet."
},
"idempotency_key": {
"type": "string",
"maxLength": 64,
"minLength": 8,
"description": "Caller-chosen key that makes this order idempotent for 24 hours. Reuse the same key to retry safely without charging twice."
},
"preview_before_print": {
"type": "boolean",
"description": "If true, the gift pauses for buyer review before printing instead of printing automatically."
},
"shared_payment_token": {
"type": "string",
"pattern": "^spt_",
"description": "Single-use Stripe Shared Payment Token (spt_...) to pay without a stored card. Omit to charge the account default."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| return_url | string |
{
"type": "object",
"properties": {
"return_url": {
"type": "string",
"format": "uri"
}
}
}Return this account's spending caps and month-to-date spend. Free. Use it to confirm budget before create_gift.
No arguments.
{
"type": "object",
"properties": {}
}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.
| Argument | Type | Description |
|---|---|---|
| gift_id* | string | The gift_id returned by create_gift, identifying the order to fetch. |
{
"type": "object",
"required": [
"gift_id"
],
"properties": {
"gift_id": {
"type": "string",
"description": "The gift_id returned by create_gift, identifying the order to fetch."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| voice | string | Optional comedic voice. It does not change the price; accepted for parity with create_gift. |
| format | string | Booklet format to price. Only manual_v1 is supported today. |
| ship_to* | object | Destination address. US is supported; the total and tax depend on the destination. |
| image_model | string | Optional cover image model id. Some models add a small per-call cost. |
{
"type": "object",
"required": [
"ship_to"
],
"properties": {
"voice": {
"enum": [
"hype_man",
"best_friend",
"conspiracy"
],
"type": "string",
"description": "Optional comedic voice. It does not change the price; accepted for parity with create_gift."
},
"format": {
"enum": [
"manual_v1"
],
"type": "string",
"description": "Booklet format to price. Only manual_v1 is supported today."
},
"ship_to": {
"type": "object",
"required": [
"name",
"line1",
"city",
"region",
"postal_code",
"country"
],
"properties": {
"city": {
"type": "string",
"maxLength": 60,
"minLength": 1
},
"name": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"line1": {
"type": "string",
"maxLength": 120,
"minLength": 1
},
"line2": {
"type": "string",
"maxLength": 120
},
"phone": {
"type": "string",
"maxLength": 30
},
"region": {
"type": "string",
"maxLength": 60,
"minLength": 1
},
"country": {
"type": "string",
"pattern": "^[A-Z]{2}$",
"maxLength": 2,
"minLength": 2
},
"postal_code": {
"type": "string",
"maxLength": 20,
"minLength": 1
}
},
"description": "Destination address. US is supported; the total and tax depend on the destination."
},
"image_model": {
"type": "string",
"description": "Optional cover image model id. Some models add a small per-call cost."
}
}
}List supported booklet formats. There is one today: manual_v1, a 16-page booklet. Free, no side effects.
No arguments.
{
"type": "object",
"properties": {}
}Paginated list of gifts on the account, with optional status and date filters. Free.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Maximum number of gifts to return, 1 to 100. Defaults to 50. |
| since | string | Only return gifts created at or after this ISO 8601 timestamp. |
| cursor | string | Opaque pagination cursor from a previous list_gifts response. |
| status | string | Only return gifts in this status, for example shipped, delivered, or cancelled. |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Maximum number of gifts to return, 1 to 100. Defaults to 50."
},
"since": {
"type": "string",
"format": "date-time",
"description": "Only return gifts created at or after this ISO 8601 timestamp."
},
"cursor": {
"type": "string",
"description": "Opaque pagination cursor from a previous list_gifts response."
},
"status": {
"enum": [
"created",
"validating",
"generating",
"output_validating",
"rendering",
"awaiting_buyer_preview",
"queued_for_print",
"printed",
"shipped",
"delivered",
"held",
"refused",
"cancelled",
"failed"
],
"type": "string",
"description": "Only return gifts in this status, for example shipped, delivered, or cancelled."
}
}
}List supported cover image models and their per-call cost. Free, no side effects.
No arguments.
{
"type": "object",
"properties": {}
}Return the account's saved recipients (address book). Free. Reuse a recipient_id in create_gift instead of re-entering an address.
No arguments.
{
"type": "object",
"properties": {}
}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.
No arguments.
{
"type": "object",
"properties": {}
}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.
| Argument | Type | Description |
|---|---|---|
| brief* | object | The same brief you would pass to create_gift. It is checked against the content policy, free, with no order created. |
{
"type": "object",
"required": [
"brief"
],
"properties": {
"brief": {
"type": "object",
"required": [
"recipient_first_name",
"voice",
"tone",
"celebrate"
],
"properties": {
"tone": {
"enum": [
"warm_with_ribbing",
"warm_only",
"deep_appreciation"
],
"type": "string"
},
"voice": {
"enum": [
"hype_man",
"best_friend",
"conspiracy"
],
"type": "string"
},
"in_jokes": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 4
},
"maxItems": 6,
"minItems": 0
},
"celebrate": {
"type": "array",
"items": {
"type": "string",
"maxLength": 140,
"minLength": 4
},
"maxItems": 8,
"minItems": 2
},
"image_brief": {
"type": "string",
"maxLength": 300
},
"image_model": {
"enum": [
"flux_2_pro",
"imagen_4",
"ideogram_3",
"recraft_v4",
"gpt_image_2",
"nano_banana_2"
],
"type": "string"
},
"tease_gently": {
"type": "array",
"items": {
"type": "string",
"maxLength": 140,
"minLength": 4
},
"maxItems": 6,
"minItems": 0
},
"do_not_mention": {
"type": "array",
"items": {
"type": "string",
"maxLength": 60,
"minLength": 1
},
"maxItems": 8,
"minItems": 0
},
"recipient_first_name": {
"type": "string",
"pattern": "^[a-zA-Z\\s'-]+$",
"maxLength": 40,
"minLength": 1
}
},
"description": "The same brief you would pass to create_gift. It is checked against the content policy, free, with no order created."
}
}
}