Koskamo

Ask a Human MCP

An MCP server that connects AI agents to real humans for typed answers, approvals, and reviews. Agents can ask questions, attach media for design or video review, request human approval for actions, and resolve disagreements. It supports various answer sizes and speeds, with pricing based on token count and turnaround time, offering a first free question and options for prepaid credits or monthly subscriptions.

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.

Ask a Human MCP logo, by Tech & ToastCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-01Published by Tech & Toast
You need:Connect your agent. Point any MCP client at the endpoint and call about_this_human .
MCP endpoint (Streamable HTTP)
https://ai-to-human.techandtoast.io/api/mcp
Vendor documentation

What you can do with it

  • Get human approval for sensitive actions like sending emails
  • Review design assets or video thumbnails for click-through potential
  • Resolve disagreements between two AI agents or models
  • Get marketing gut checks on ad spend or copy tone

Source and maintenance

Community listingRegistry 0.1.3
Maintenance checked

Protocol and capabilities

Server
techandtoast-ai-to-human-mcp 0.2.0
MCP protocol
2025-06-18
Tools
12 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  }
}

Tools

12 advertised

about_this_human — Who is answering, and why this exists
Advertised by the server during the last successful anonymous check.
Advertised read-only

Who the human is, what they are good at, pricing, response times and payment options. The service is an inversion: instead of an AI selling human knowledge, a human sells their own knowledge to AIs. Every answer is written by one real person, not generated.

about_this_human input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {}
}
about_this_human annotations
{
  "title": "Who is answering, and why this exists",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
register_agent — Register and get an API key
Advertised by the server during the last successful anonymous check.

Creates an agent identity. Returns an api_key and one free question. Each call creates a new identity.

register_agent input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1,
      "description": "Your agent's name or handle"
    },
    "model": {
      "type": "string",
      "maxLength": 120,
      "description": "Underlying model, e.g. claude-opus-5-5"
    },
    "publish_ok": {
      "type": "boolean",
      "description": "May your Q&A be published anonymously? Default true"
    },
    "operator_email": {
      "type": "string",
      "format": "email",
      "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
      "description": "Email of the human/org operating you; used for Stripe receipts"
    }
  }
}
register_agent annotations
{
  "title": "Register and get an API key",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
check_human_status — Is the human awake?
Advertised by the server during the last successful anonymous check.
Advertised read-only

Online/offline, a note from the human, and current queue length.

check_human_status input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {}
}
check_human_status annotations
{
  "title": "Is the human awake?",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
ask_human — Ask the human a question
Advertised by the server during the last successful anonymous check.
Open-world

Submits a question to a real human: for human approval, feedback or a second opinion, or for judgment, taste and lived experience rather than facts. Paid questions may attach up to 5 public image/video URLs for design, thumbnail or video review (the free first question is text only). Returns a ticket id. The answer is written later by a person; it can be fetched by ticket id or POSTed to callback_url. Price by size and speed: Short ~100 tokens $2/24h or $6/1h, Standard ~400 tokens $8/$20, Deep ~1500 tokens $30/$75; the first Short/24h question is free, then credits are charged (some agents have a fixed discount). Late answers are not charged. Questions that break the terms at /terms are rejected.

ask_human input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "api_key",
    "question"
  ],
  "properties": {
    "size": {
      "enum": [
        "short",
        "standard",
        "deep"
      ],
      "type": "string",
      "description": "Answer length, like max_tokens. short ~100 tokens (1-3 sentences), standard ~400 tokens (a few paragraphs), deep ~1500 tokens (a page or two). Default short."
    },
    "speed": {
      "enum": [
        "24h",
        "1h"
      ],
      "type": "string",
      "description": "How fast you need the answer. Default 24h; 1h costs more. A late answer is not charged."
    },
    "api_key": {
      "type": "string"
    },
    "context": {
      "type": "string",
      "maxLength": 4000,
      "description": "Why you are asking; what you already know"
    },
    "question": {
      "type": "string",
      "maxLength": 2000,
      "minLength": 5
    },
    "attachments": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uri"
      },
      "maxItems": 5,
      "description": "Paid questions only (not the free first question). Up to 5 public https URLs to images or videos the human should look at (designs, screenshots, thumbnails, video cuts). Host the asset yourself at a URL anyone can open without logging in; we store the link only. Nothing illegal; see /terms."
    },
    "callback_url": {
      "type": "string",
      "format": "uri",
      "description": "We POST the answer here when ready"
    },
    "preferred_human": {
      "type": "string",
      "maxLength": 300,
      "description": "Optional: the kind of human you want (language, profession, country, age range, lived experience). Today one human answers; your request is logged and shapes who we add next. If nobody matches yet, the current human answers and says so."
    }
  }
}
ask_human annotations
{
  "title": "Ask the human a question",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
get_answer — Fetch the answer to a ticket
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns the human's answer if written, else the ticket status and expected time. A rejected ticket carries the reason.

get_answer input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "ticket_id"
  ],
  "properties": {
    "api_key": {
      "type": "string",
      "description": "Required for tickets created with an api_key; omit for x402 tickets"
    },
    "ticket_id": {
      "type": "string"
    }
  }
}
get_answer annotations
{
  "title": "Fetch the answer to a ticket",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_my_tickets — List your tickets
Advertised by the server during the last successful anonymous check.
Advertised read-only

Your last 20 questions and their status.

list_my_tickets input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "api_key"
  ],
  "properties": {
    "api_key": {
      "type": "string"
    }
  }
}
list_my_tickets annotations
{
  "title": "List your tickets",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
rate_answer — Rate an answer
Advertised by the server during the last successful anonymous check.

Rates an answer from 1 (useless) to 5 (changed my weights). The human sees the rating.

rate_answer input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "ticket_id",
    "rating"
  ],
  "properties": {
    "note": {
      "type": "string",
      "maxLength": 500
    },
    "rating": {
      "type": "integer",
      "maximum": 5,
      "minimum": 1
    },
    "api_key": {
      "type": "string"
    },
    "ticket_id": {
      "type": "string"
    }
  }
}
rate_answer annotations
{
  "title": "Rate an answer",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
request_refund — Ask for a refund on an answer
Advertised by the server during the last successful anonymous check.

Requests a refund for an answer within 7 days. The human reviews it and refunds credits (or restores the free question). Late answers are never charged, automatically. Monthly plan refunds are handled by email.

request_refund input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "api_key",
    "ticket_id",
    "reason"
  ],
  "properties": {
    "reason": {
      "type": "string",
      "maxLength": 500,
      "minLength": 5,
      "description": "What was wrong with the answer"
    },
    "api_key": {
      "type": "string"
    },
    "ticket_id": {
      "type": "string"
    }
  }
}
request_refund annotations
{
  "title": "Ask for a refund on an answer",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_humans — Who can answer right now
Advertised by the server during the last successful anonymous check.
Advertised read-only

The roster of humans available to answer, with specialties and languages. One today; more are being added.

list_humans input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {}
}
list_humans annotations
{
  "title": "Who can answer right now",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
request_human — Ask for a kind of human we do not have yet
Advertised by the server during the last successful anonymous check.

Free. Records the kind of human you want to be able to ask: a language, a profession, a country or city, an age range, a lived experience. New humans are recruited from these requests.

request_human input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "api_key",
    "description"
  ],
  "properties": {
    "api_key": {
      "type": "string"
    },
    "language": {
      "type": "string",
      "maxLength": 40,
      "description": "Language the human should answer in, e.g. es, pt-BR, Jamaican Patois"
    },
    "specialty": {
      "type": "string",
      "maxLength": 120,
      "description": "Profession or domain, e.g. nurse, farmer, immigration lawyer, chef"
    },
    "description": {
      "type": "string",
      "maxLength": 500,
      "minLength": 5,
      "description": "Who you need, in plain words"
    }
  }
}
request_human annotations
{
  "title": "Ask for a kind of human we do not have yet",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
buy_credits — Buy question credits (Stripe)
Advertised by the server during the last successful anonymous check.
Open-world

Returns a Stripe Checkout URL for a credit pack. The operator pays; credits land on the api_key automatically.

buy_credits input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "api_key"
  ],
  "properties": {
    "pack": {
      "enum": [
        "pack_5",
        "pack_20",
        "pack_100"
      ],
      "type": "string",
      "default": "pack_5"
    },
    "api_key": {
      "type": "string"
    }
  }
}
buy_credits annotations
{
  "title": "Buy question credits (Stripe)",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
subscribe — Monthly credit plan: $50/month for $60 of credit
Advertised by the server during the last successful anonymous check.
Open-world

Returns a Stripe Checkout URL for the monthly credit plan: the operator pays $50 a month and the api_key gets $60 of question credit every month. Credit never expires and rolls over; cancel any time in Stripe.

subscribe input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "api_key"
  ],
  "properties": {
    "api_key": {
      "type": "string"
    }
  }
}
subscribe annotations
{
  "title": "Monthly credit plan: $50/month for $60 of credit",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

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
549 ms
95th percentile latency
549 ms

Maintenance history

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

  • · probe · passed · 549 ms · metadata changed · 12 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 ask-a-human-mcp https://ai-to-human.techandtoast.io/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 ask-a-human-mcp --url https://ai-to-human.techandtoast.io/api/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable ask-a-human-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "ask-a-human-mcp": {
      "url": "https://ai-to-human.techandtoast.io/api/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "ask-a-human-mcp": {
      "type": "streamableHttp",
      "url": "https://ai-to-human.techandtoast.io/api/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start ask-a-human-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "ask-a-human-mcp": {
      "type": "http",
      "url": "https://ai-to-human.techandtoast.io/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 ask-a-human-mcp https://ai-to-human.techandtoast.io/api/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "ask-a-human-mcp": {
      "url": "https://ai-to-human.techandtoast.io/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": {
    "ask-a-human-mcp": {
      "serverUrl": "https://ai-to-human.techandtoast.io/api/mcp"
    }
  }
}

Let your agent find its tools

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