whycant
Roast any AI agent idea from your IDE: verdict tier, readiness score, top risk, shareable URL.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"whycant": {
"url": "https://whycantwehaveanagentforthis.com/api/mcp"
}
}
}Remote endpoints
https://whycantwehaveanagentforthis.com/api/mcpstreamable-httpWhat it can do
Tool inventory
Tools (4)
🟡roast_idea(idea)
Get the full whycantwehaveanagentforthis.com roast for an AI agent idea: the verdict tier, an agent-readiness score (0-100 + band), the top OWASP-MCP security risk, the "you're the X% who…" framing, and a shareable /result URL. Every call mints a real, persistent result page (its own OG share card) — so roasting from your IDE also publishes it. Anonymous (no token): 3/hour, 10/day. Add a token for higher limits.
Input Schema
{
"type": "object",
"properties": {
"idea": {
"type": "string",
"description": "The agent idea or problem to analyze, in one or two sentences. e.g. \"an agent that auto-declines pointless meetings\"."
}
},
"required": [
"idea"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"agentName": {
"type": "string"
},
"verdict": {
"type": "string",
"description": "Real VerdictTier enum value, e.g. SHUT_UP_AND_TAKE_MY_MONEY"
},
"verdictLabel": {
"type": "string"
},
"readinessScore": {
"type": "number",
"description": "Agent-readiness 0-100"
},
"readinessBand": {
"type": "string",
"description": "Letter band A-F"
},
"topRiskCode": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Top OWASP-MCP risk code, e.g. MCP-3"
},
"topRiskTitle": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"percentileFraming": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "\"You're the X% who…\" line"
},
"savageLine": {
"type": "string"
},
"resultUrl": {
"type": "string",
"description": "Canonical /result/[id] share URL"
},
"scopeCallUrl": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cal.com 20-min scope-call URL"
}
},
"required": [
"agentName",
"verdict",
"verdictLabel",
"readinessScore",
"readinessBand",
"topRiskCode",
"topRiskTitle",
"percentileFraming",
"savageLine",
"resultUrl",
"scopeCallUrl"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢get_verdict(id)
Fetch a verdict that was already minted, by its result id or slug. Read-only — no new analysis, no rate-limit cost. Returns the same structured verdict shape as roast_idea.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The /result/[id] id or slug returned by a prior roast_idea call."
}
},
"required": [
"id"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"agentName": {
"type": "string"
},
"verdict": {
"type": "string",
"description": "Real VerdictTier enum value, e.g. SHUT_UP_AND_TAKE_MY_MONEY"
},
"verdictLabel": {
"type": "string"
},
"readinessScore": {
"type": "number",
"description": "Agent-readiness 0-100"
},
"readinessBand": {
"type": "string",
"description": "Letter band A-F"
},
"topRiskCode": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Top OWASP-MCP risk code, e.g. MCP-3"
},
"topRiskTitle": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"percentileFraming": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "\"You're the X% who…\" line"
},
"savageLine": {
"type": "string"
},
"resultUrl": {
"type": "string",
"description": "Canonical /result/[id] share URL"
},
"scopeCallUrl": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Cal.com 20-min scope-call URL"
}
},
"required": [
"agentName",
"verdict",
"verdictLabel",
"readinessScore",
"readinessBand",
"topRiskCode",
"topRiskTitle",
"percentileFraming",
"savageLine",
"resultUrl",
"scopeCallUrl"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢get_stats
Live public numbers for whycantwehaveanagentforthis.com: total ideas roasted, live results, % told to ship, % that already exist, roast battles, and how many roasts came in via MCP. Read-only, no rate-limit cost.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢browse_explore(query, sort, limit)
Page through existing public roasts (the /explore feed) with their shareable /result URLs. Optional free-text query and sort (newest | top | money). Read-only, no rate-limit cost — use it to see whether an idea was already roasted before minting a new one.
Input Schema
{
"type": "object",
"properties": {
"query": {
"description": "Free-text filter over name/problem.",
"type": "string"
},
"sort": {
"description": "Sort order. Default: newest.",
"type": "string",
"enum": [
"newest",
"top",
"money"
]
},
"limit": {
"description": "Max 20. Default 10.",
"type": "integer",
"minimum": 1,
"maximum": 20
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}Community
Evidence