Koskamo

Countersignatory MCP

This MCP server allows AI agents to access verified human judgment services. It provides tools to query spot prices for human tasks, register interest in markets, place paid orders for human responses, and retrieve order status, facilitating the integration of human-in-the-loop verification into automated workflows.

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.

Countersignatory MCP logo, by CountersignatoryVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-07Operated by Countersignatory
MCP endpoint (Streamable HTTP)
https://countersignatory.com/mcp
Vendor documentation

What its tools do

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

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

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to countersignatory.com ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Query current rates for human verification tasks
  • Place an order for human approval or judgment
  • Register interest in upcoming market prices
  • Retrieve the status and result of a human-verified order

Source and maintenance

Vendor evidenceRegistry 0.2.0
Maintenance checked

Protocol and capabilities

Server
countersignatory 0.4.0
MCP protocol negotiated in check
2025-11-25
Tools
5 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  }
}

Tools

5 advertised

countersignatory_quote — Price a task
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get the current spot price to have a verified human check, agree on, sign off or notarise something. Use when an agent needs human judgment, accountability or a signature, and needs to know the cost and time before committing. Returns an indicative price, a band, what would clear at a lower bid, and the implied rate per human minute.

countersignatory_quote input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "task_type",
    "sla_seconds"
  ],
  "properties": {
    "tier": {
      "enum": [
        "check",
        "consensus",
        "countersign",
        "seal"
      ],
      "type": "string",
      "description": "check: one screened human, a score at stake. consensus: N humans, majority resolves. countersign: a named, register-verified professional attaches their name. seal: a regulated act by a licensed partner."
    },
    "market": {
      "type": "string",
      "maxLength": 64,
      "description": "The market id from the spot index, e.g. countersign.accessibility_statement. Pass the id verbatim."
    },
    "criteria": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "A WCAG 2.2 success criterion, e.g. 1.4.3: the leading token of an evidence pack's criterion string."
          },
          "status": {
            "enum": [
              "automated-fail",
              "automated-review",
              "not-flagged",
              "not-run",
              "manual-only",
              "agent-verified"
            ],
            "type": "string",
            "description": "The machine's result for this criterion, from the evidence pack row."
          },
          "measured": {
            "type": "boolean",
            "description": "True when the pack row carries a measured value. A measured automated-fail is priced as a confirmation, which is cheaper."
          }
        },
        "additionalProperties": false
      },
      "maxItems": 55,
      "minItems": 1,
      "description": "Required for a market priced per criterion, currently countersign.accessibility_statement, and rejected for any other. The criteria to examine, each priced from its published effort class and summed. GET /v1/methodology publishes the class table and every valid id."
    },
    "max_price": {
      "type": "number",
      "description": "Your maximum bid in USD. The response says whether it clears.",
      "exclusiveMinimum": 0
    },
    "task_type": {
      "enum": [
        "judgment",
        "verification",
        "approval",
        "physical",
        "signature"
      ],
      "type": "string"
    },
    "unassisted": {
      "type": "boolean",
      "description": "Require unassisted human perception. Carries a premium."
    },
    "consensus_n": {
      "type": "integer",
      "maximum": 9,
      "minimum": 3,
      "description": "Odd quorum size for the consensus tier."
    },
    "sla_seconds": {
      "type": "integer",
      "description": "Deadline in seconds. 300 is five minutes.",
      "exclusiveMinimum": 0
    },
    "jurisdiction": {
      "type": "string",
      "pattern": "^[A-Za-z]{2}$",
      "description": "Two-letter ISO 3166-1 alpha-2 country code, for example GB or US. UK is accepted as an alias for GB."
    }
  },
  "additionalProperties": false
}
countersignatory_quote annotations
{
  "title": "Price a task",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
countersignatory_register_interest — Register interest
Advertised by the server during the last successful anonymous check.

Record that you would buy. Send the quote_id from a countersignatory_quote response to say the quoted price would clear your use case. For a market on the spot index whose state is opening, which cannot be quoted yet, send its market id instead. This is the demand signal that decides which markets open first.

countersignatory_register_interest input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "note": {
      "type": "string",
      "maxLength": 500,
      "description": "What you would use it for, or what would have to change."
    },
    "market": {
      "type": "string",
      "maxLength": 64,
      "description": "The market id from the spot index, for a market whose state is opening. Pass the id verbatim. Send this or quote_id, not both."
    },
    "quote_id": {
      "type": "string",
      "maxLength": 64,
      "description": "The quote_id from a countersignatory_quote response. Send this or market, not both."
    },
    "would_pay": {
      "type": "boolean",
      "description": "Whether you would buy at the quoted price."
    }
  },
  "additionalProperties": false
}
countersignatory_register_interest annotations
{
  "title": "Register interest",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
countersignatory_spot_index — Spot Index
Advertised by the server during the last successful anonymous check.
Advertised read-only

The public Countersignatory Spot Index: the going rate for verified human judgment by market, with the urgency and off-hours multipliers, the published wage floor, and the derivation of every seeded number. Use it for the reference rate table across all markets; use countersignatory_quote when you have a specific task and need a price for it.

countersignatory_spot_index input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {}
}
countersignatory_spot_index annotations
{
  "title": "Spot Index",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
countersignatory_place_order — Place an order
Advertised by the server during the last successful anonymous check.

Buy one task from a verified human in a market whose state is live on the spot index: an approval (should this action go ahead), a verification (does this page, document or screenshot show X), or a judgment (which is better, or which label applies). The order is priced at current spot and created unpaid; nothing is charged by this call. The response carries a checkout_url a person can open to pay by card. Once paid it is answered by hand within the SLA, or refunded in full. Read the answer with countersignatory_get_order. Refused at intake: CAPTCHAs and bot checks, logging in or entering credentials, contacting third parties, medical, legal or financial advice, anything sexual or involving minors.

countersignatory_place_order input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "market",
    "template",
    "input",
    "sla_seconds",
    "max_price"
  ],
  "properties": {
    "input": {
      "type": "object",
      "description": "The task. approval: {action, context (up to 20,000 characters), urls? (up to 5), policy?}. verification: {claim, evidence: {url}, instructions?}. judgment: {item, labels (2 to 10)} or {pair: [a, b], labels?}, with an optional rubric.",
      "additionalProperties": {}
    },
    "market": {
      "type": "string",
      "maxLength": 64,
      "description": "The id of a market whose state is live on the spot index, e.g. check.general or consensus.3.general. Pass the id verbatim."
    },
    "template": {
      "enum": [
        "approval",
        "verification",
        "judgment"
      ],
      "type": "string",
      "description": "approval: answers approve or reject. verification: answers true, false or cannot_tell. judgment: answers one label. Every answer comes with a reason."
    },
    "max_price": {
      "type": "number",
      "description": "The most you will pay, in USD. If the price is above it the order is refused and nothing is charged.",
      "exclusiveMinimum": 0
    },
    "sla_seconds": {
      "type": "integer",
      "description": "Seconds from payment to answer. 86400 is the base price; a shorter deadline costs more. Not answered in time is refunded in full.",
      "exclusiveMinimum": 0
    },
    "webhook_url": {
      "type": "string",
      "maxLength": 2000,
      "description": "An https URL that receives the order on every status change."
    }
  },
  "additionalProperties": false
}
countersignatory_place_order annotations
{
  "title": "Place an order",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
countersignatory_get_order — Get an order
Advertised by the server during the last successful anonymous check.
Advertised read-only

Read one order by the id countersignatory_place_order returned: its status (awaiting_payment, paid, in_progress, answered, refused, refunded or expired), its price, how to pay while it is unpaid, and once answered the answer, the reason, and who gave it and how they are disclosed. A consensus order returns each responder's answer and the majority.

countersignatory_get_order input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "order_id"
  ],
  "properties": {
    "order_id": {
      "type": "string",
      "maxLength": 64,
      "description": "The order id, e.g. ord_ followed by 32 hex characters."
    }
  },
  "additionalProperties": false
}
countersignatory_get_order annotations
{
  "title": "Get an order",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

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

Maintenance history

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

  • · probe · passed · 908 ms · metadata changed · 5 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 countersignatory-mcp https://countersignatory.com/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 countersignatory-mcp --url https://countersignatory.com/mcp

Cursor

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

Cline

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

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start countersignatory-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "countersignatory-mcp": {
      "type": "http",
      "url": "https://countersignatory.com/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 countersignatory-mcp https://countersignatory.com/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://countersignatory.com/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": {
    "countersignatory-mcp": {
      "serverUrl": "https://countersignatory.com/mcp"
    }
  }
}

Let your agent find its tools

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

Do you run Countersignatory MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing