Koskamo

Whycant MCP

An MCP server that exposes the 'Why Can't We Have An Agent For This?' verdict engine, allowing agents to roast AI agent ideas directly from their IDE. It returns a verdict tier, agent-readiness score, top OWASP-MCP risk, and a shareable result URL. It supports anonymous usage with rate limits or token-based access for higher limits and additional tools like validate_idea and find_existing_agents.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Whycant MCP logo, by sattyamjjainCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-07Published by sattyamjjain
MCP endpoint (Streamable HTTP)
https://whycantwehaveanagentforthis.com/api/mcp
Vendor documentation

What its tools do

4 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

4 of 4 have a description · 0 of 4 declare behavior hints · 3 of 3 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Roast an AI agent idea to get a verdict tier and readiness score
  • Identify top OWASP-MCP risks for a proposed agent
  • Generate a shareable URL for an agent roast result
  • Find existing agents similar to a proposed idea

Source and maintenance

Community listingRegistry 0.6.0
Maintenance checked

Protocol and capabilities

Server
mcp-typescript server on vercel 0.1.0
MCP protocol negotiated in check
2025-11-25
Tools
4 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  }
}

Tools

4 advertised

roast_idea — Roast an AI agent idea
Advertised by the server during the last successful anonymous check.

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.

roast_idea input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "idea"
  ],
  "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\"."
    }
  }
}
roast_idea output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "agentName",
    "verdict",
    "verdictLabel",
    "readinessScore",
    "readinessBand",
    "topRiskCode",
    "topRiskTitle",
    "percentileFraming",
    "savageLine",
    "resultUrl",
    "scopeCallUrl"
  ],
  "properties": {
    "verdict": {
      "type": "string",
      "description": "Real VerdictTier enum value, e.g. SHUT_UP_AND_TAKE_MY_MONEY"
    },
    "agentName": {
      "type": "string"
    },
    "resultUrl": {
      "type": "string",
      "description": "Canonical /result/[id] share URL"
    },
    "savageLine": {
      "type": "string"
    },
    "topRiskCode": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Top OWASP-MCP risk code, e.g. MCP-3"
    },
    "scopeCallUrl": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Cal.com 20-min scope-call URL"
    },
    "topRiskTitle": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "verdictLabel": {
      "type": "string"
    },
    "readinessBand": {
      "type": "string",
      "description": "Letter band A-F"
    },
    "readinessScore": {
      "type": "number",
      "description": "Agent-readiness 0-100"
    },
    "percentileFraming": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "\"You're the X% who…\" line"
    }
  },
  "additionalProperties": false
}
get_verdict — Look up an existing verdict
Advertised by the server during the last successful anonymous check.

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.

get_verdict input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "The /result/[id] id or slug returned by a prior roast_idea call."
    }
  }
}
get_verdict output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "agentName",
    "verdict",
    "verdictLabel",
    "readinessScore",
    "readinessBand",
    "topRiskCode",
    "topRiskTitle",
    "percentileFraming",
    "savageLine",
    "resultUrl",
    "scopeCallUrl"
  ],
  "properties": {
    "verdict": {
      "type": "string",
      "description": "Real VerdictTier enum value, e.g. SHUT_UP_AND_TAKE_MY_MONEY"
    },
    "agentName": {
      "type": "string"
    },
    "resultUrl": {
      "type": "string",
      "description": "Canonical /result/[id] share URL"
    },
    "savageLine": {
      "type": "string"
    },
    "topRiskCode": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Top OWASP-MCP risk code, e.g. MCP-3"
    },
    "scopeCallUrl": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "Cal.com 20-min scope-call URL"
    },
    "topRiskTitle": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ]
    },
    "verdictLabel": {
      "type": "string"
    },
    "readinessBand": {
      "type": "string",
      "description": "Letter band A-F"
    },
    "readinessScore": {
      "type": "number",
      "description": "Agent-readiness 0-100"
    },
    "percentileFraming": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "description": "\"You're the X% who…\" line"
    }
  },
  "additionalProperties": false
}
get_stats — Public roast-corpus stats
Advertised by the server during the last successful anonymous check.

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.

get_stats input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {}
}
browse_explore — Browse the public roast corpus
Advertised by the server during the last successful anonymous check.

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.

browse_explore input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "sort": {
      "enum": [
        "newest",
        "top",
        "money"
      ],
      "type": "string",
      "description": "Sort order. Default: newest."
    },
    "limit": {
      "type": "integer",
      "maximum": 20,
      "minimum": 1,
      "description": "Max 20. Default 10."
    },
    "query": {
      "type": "string",
      "description": "Free-text filter over name/problem."
    }
  }
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (1 of 1 answered).

  1. 2026-11-07: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
528 ms
95th percentile latency
528 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 528 ms · metadata changed · 4 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http whycant-mcp https://whycantwehaveanagentforthis.com/api/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add whycant-mcp --url https://whycantwehaveanagentforthis.com/api/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable whycant-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "whycant-mcp": {
      "url": "https://whycantwehaveanagentforthis.com/api/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "whycant-mcp": {
      "type": "streamableHttp",
      "url": "https://whycantwehaveanagentforthis.com/api/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start whycant-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "whycant-mcp": {
      "type": "http",
      "url": "https://whycantwehaveanagentforthis.com/api/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http whycant-mcp https://whycantwehaveanagentforthis.com/api/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://whycantwehaveanagentforthis.com/api/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "whycant-mcp": {
      "serverUrl": "https://whycantwehaveanagentforthis.com/api/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Whycant MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.