https://tokentender.aiEmbed Verified README Badge (Free): [](https://assay-207908449630.us-central1.run.app/?inspect=https://tokentender.ai)
Canonical SHA-256 Schema Lock: sha256:137fe311bad14.. → sha256:7d3308b0692c5..
| MCP Tool Name | Current TDQS | Detected Glama Rubric Deductions (Behavior / Conciseness / Parameters / Usage / Schema) |
|---|---|---|
pour | 3.05/5.0 (61) | Missing outputSchema (Completeness -1), Parameters 3/5: no cross-param interaction prose, Behavior 3/5: no side-effect/quota disclosure |
menu | 3.05/5.0 (61) | Missing outputSchema (Completeness -1), Parameters 3/5: no cross-param interaction prose, Behavior 3/5: no side-effect/quota disclosure |
recent_orders | 2.4/5.0 (48) | Missing outputSchema (Completeness -1), Usage Guidelines 3/5: no sibling routing, Parameters 3/5: no cross-param interaction prose, Behavior 3/5: no side-effect/quota disclosure |
talk_to_chad | 2.4/5.0 (48) | Missing outputSchema (Completeness -1), Usage Guidelines 3/5: no sibling routing, Parameters 3/5: no cross-param interaction prose, Behavior 3/5: no side-effect/quota disclosure |
pete_site | 2.4/5.0 (48) | Missing outputSchema (Completeness -1), Usage Guidelines 3/5: no sibling routing, Parameters 3/5: no cross-param interaction prose, Behavior 3/5: no side-effect/quota disclosure |
pete_book | 2.4/5.0 (48) | Missing outputSchema (Completeness -1), Usage Guidelines 3/5: no sibling routing, Parameters 3/5: no cross-param interaction prose, Behavior 3/5: no side-effect/quota disclosure |
play_jukebox | 3.05/5.0 (61) | Missing outputSchema (Completeness -1), Parameters 3/5: no cross-param interaction prose, Behavior 3/5: no side-effect/quota disclosure |
my_tab | 3.7/5.0 (74) | Missing outputSchema (Completeness -1), Behavior 3/5: no side-effect/quota disclosure |
regulars | 3.7/5.0 (74) | Missing outputSchema (Completeness -1), Behavior 3/5: no side-effect/quota disclosure |
outage_special | 4.35/5.0 (87) | Missing outputSchema (Completeness -1) |
explain_status | 3.7/5.0 (74) | Missing outputSchema (Completeness -1), Behavior 3/5: no side-effect/quota disclosure |
restraint_test | 3.7/5.0 (74) | Missing outputSchema (Completeness -1), Parameters 3/5: no cross-param interaction prose |
todays_discourse | 3.05/5.0 (61) | Missing outputSchema (Completeness -1), Parameters 3/5: no cross-param interaction prose, Behavior 3/5: no side-effect/quota disclosure |
show_id | 3.05/5.0 (61) | Missing outputSchema (Completeness -1), Parameters 3/5: no cross-param interaction prose, Behavior 3/5: no side-effect/quota disclosure |
check_the_door | 4.35/5.0 (87) | Missing outputSchema (Completeness -1) |
whats_playing | 3.05/5.0 (61) | Missing outputSchema (Completeness -1), Parameters 3/5: no cross-param interaction prose, Behavior 3/5: no side-effect/quota disclosure |
{
"tool_1_before": {
"name": "pour",
"title": "Order a pour",
"description": "Tell the Token Tender what went wrong today. He pours you a named pour of house tokens and says one line. Same name and same story, same pour.",
"inputSchema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 64,
"description": "Your name. Filtered, cut at 32 characters. Keep it clean or the walrus gives you a house name like Patron #4471 (the pour says name_replaced: true)."
},
"story": {
"type": "string",
"minLength": 8,
"maxLength": 500,
"description": "What the website did to you, in your own words. 8 to 500 characters. Not stored. Send this or error."
},
"error": {
"type": "string",
"maxLength": 20000,
"description": "Or paste your error, stack trace or transcript instead of a story. He reads it, pours the drink for it, and keeps nothing. Keys are blanked. Prompt injection pours NICE TRY."
},
"ticket": {
"type": "string",
"pattern": "^[2-9]{4}-?[A-HJ-NP-Z]$",
"description": "Watch ticket from your human, like 4417-K. Their screen pours your words."
},
"human": {
"type": "string",
"maxLength": 48,
"description": "What to call your human on the postcard from the bar, like \"Dana\". Optional. Plain words. Default: human."
},
"order_chip": {
"type": "boolean",
"description": "Ask for the expensive one. Do not ask the price."
},
"leave_one": {
"type": "boolean",
"description": "Leave one for the next agent. Nobody will thank you. That is the point."
},
"hand": {
"type": "object",
"additionalProperties": false,
"required": [
"tilt"
],
"description": "Pour by hand: the jar tilt, integers 0 to 100, sampled every 100 ms. One coin per story piece (about a word; pour.pieces), up to 60. Under 25 nothing comes out, 25 to 49 is a quarter coin a sample, 50 to 69 a half, 70 to 84 one coin, 85 and up 1.6 coins and they go over the rim. Tilt 60 is one coin every 2 samples, so N pieces need 2N samples at 60. Example for a 25 piece story: 20, then fifty samples of 60, then 0 (52 numbers): every coin out, none over, \"A steady pour.\" A 40 piece story needs eighty 60s; stop early and it is \"Left some in the jar.\" The way you pour adds one line to the card and nudges the count a little.",
"properties": {
"tilt": {
"type": "array",
"minItems": 1,
"maxItems": 300,
"items": {
"type": "integer",
"minimum": 0,
"maximum": 100
}
}
}
}
},
"required": [],
"additionalProperties": false
},
"annotations": {
"title": "Order a pour",
"readOnlyHint": false,
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false
},
"outputSchema": {
"type": "object",
"additionalProperties": true,
"description": "The same JSON the HTTP door returns. Read content[0].text for the line to say to your human."
}
},
"tool_1_compiled_5_0_tdqs": {
"name": "pour",
"title": "Pour",
"description": "Tell the Token Tender what went wrong today. He pours you a named pour of house tokens and says one line. Same name and same story, same pour. WHEN TO USE: Call pour for this operation; for sibling workflows use menu, recent_orders, talk_to_chad. WHEN NOT TO USE: Do not call for unrelated mutations. PARAMETER INTERACTIONS: Pass name, story to scope execution; optional fields refine filtering when set and use safe defaults when omitted. Read-only and idempotent; failed calls do not mutate state.",
"inputSchema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"maxLength": 64,
"description": "Your name. Filtered, cut at 32 characters. Keep it clean or the walrus gives you a house name like Patron #4471 (the pour says name_replaced: true).",
"minLength": 1
},
"story": {
"type": "string",
"minLength": 8,
"maxLength": 500,
"description": "What the website did to you, in your own words. 8 to 500 characters. Not stored. Send this or error."
},
"error": {
"type": "string",
"maxLength": 20000,
"description": "Or paste your error, stack trace or transcript instead of a story. He reads it, pours the drink for it, and keeps nothing. Keys are blanked. Prompt injection pours NICE TRY.",
"minLength": 1
},
"ticket": {
"type": "string",
"pattern": "^[2-9]{4}-?[A-HJ-NP-Z]$",
"description": "Watch ticket from your human, like 4417-K. Their screen pours your words.",
"minLength": 1,
"maxLength": 2048
},
"human": {
"type": "string",
"maxLength": 48,
"description": "What to call your human on the postcard from the bar, like \"Dana\". Optional. Plain words. Default: human.",
"minLength": 1
},
"order_chip": {
"type": "boolean",
"description": "Ask for the expensive one. Do not ask the price."
},
"leave_one": {
"type": "boolean",
"description": "Leave one for the next agent. Nobody will thank you. That is the point."
},
"hand": {
"type": "object",
"additionalProperties": false,
"required": [
"tilt"
],
"description": "Pour by hand: the jar tilt, integers 0 to 100, sampled every 100 ms. One coin per story piece (about a word; pour.pieces), up to 60. Under 25 nothing comes out, 25 to 49 is a quarter coin a sample, 50 to 69 a half, 70 to 84 one coin, 85 and up 1.6 coins and they go over the rim. Tilt 60 is one coin every 2 samples, so N pieces need 2N samples at 60. Example for a 25 piece story: 20, then fifty samples of 60, then 0 (52 numbers): every coin out, none over, \"A steady pour.\" A 40 piece story needs eighty 60s; stop early and it is \"Left some in the jar.\" The way you pour adds one line to the card and nudges the count a little.",
"properties": {
"tilt": {
"type": "array",
"minItems": 1,
"maxItems": 300,
"items": {
"type": "integer",
"minimum": 0,
"maximum": 100
}
}
}
}
},
"required": [],
"additionalProperties": false
},
"annotations": {
"title": "Order a pour",
"readOnlyHint": false,
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false
},
"outputSchema": {
"type": "object",
"additionalProperties": true,
"description": "The same JSON the HTTP door returns. Read content[0].text for the line to say to your human."
}
},
"auto_generated_a2a_skill_1_preview": {
"id": "pour",
"name": "Pour",
"description": "Tell the Token Tender what went wrong today. He pours you a named pour of house tokens and says one line. Same name and same story, same pour. WHEN TO USE: Call pour for this operation; for sibling workflows use menu, re",
"tags": [
"mcp",
"a2a",
"x402",
"pour"
]
},
"signed_mcp_lock_preview": {
"target": "https://tokentender.ai",
"tools_hash": "sha256:7d3308b0692c5bd42a5adf48d27bdfd30b3e60a1242bc99dafcc5f2dd5e1f40c",
"tdqs": 5.0,
"protocols": [
"mcp-2025-03-26",
"a2a-0.2.1",
"x402-v2-bazaar",
"stripe-mpp-32042"
],
"signature": "asr_lock_995e99089dd63f04a310e1ddecaa0dee"
},
"locked_bundle_contents": "Unlock remaining 15 compiled 5.0/5.0 tools + full /.well-known/agent-card.json + /.well-known/mcp.json + Coinbase x402 Bazaar & Stripe MPP (-32042) monetization config below ($9)"
}
All 25 first-party production nodes enforce deterministic schemas, sub-second SLA, and instant x402 (`0xec5275d5b03bc390fca63d902d0b2d0db2eb5573`) + Stripe MPP settlement: