Skip to main content
Glama
namewheel

NameWheel MCP server

Official

NameWheel MCP server

An open source (MIT) MCP server for fair random picks: pick names from a list, split people into random teams, make wheel links, and check certified draws. It runs on your own machine over stdio (Node.js 20+ or Docker), and the same code also runs as a hosted Streamable HTTP server at https://mcp.namewheel.org/mcp.

In clients that show MCP Apps (Claude, ChatGPT and others), the NameWheel wheel spins to the result right in the chat. When other people need to check a result later, it runs a certified draw with a permanent public proof page.

Run it locally (stdio)

git clone https://github.com/namewheel/mcp && cd mcp
npm install && npm run build
node dist/stdio.js

Or with Docker:

docker build -t namewheel-mcp .
docker run -i --rm namewheel-mcp

What runs on your machine:

  • Picking winners (spin_wheel): Node's cryptographic random number generator (crypto.randomInt) in this process. No network needed.

  • Teams (make_teams) and wheel links (open_wheel_link): computed locally. No network needed.

  • Checking a certified draw (verify_draw): downloads the draw's public record and NameWheel's public key, then recomputes everything locally: the SHA-256 commitment, the HMAC-SHA256 winner and the Ed25519 signature.

  • Limits (check_plan): answered locally.

Only certified_draw, freeze_list and my_draws call the NameWheel API, because a certified draw is published on a public proof page at namewheel.org. They use your own free API key:

NAMEWHEEL_API_KEY=nw_live_... node dist/stdio.js
docker run -i --rm -e NAMEWHEEL_API_KEY=nw_live_... namewheel-mcp

Make a key in one press at namewheel.org/mcp. Without a key the server still starts and everything above works.

Claude Desktop, Cursor, Cline, Windsurf and other clients that start local servers:

{
  "mcpServers": {
    "namewheel": {
      "command": "node",
      "args": ["/absolute/path/to/mcp/dist/stdio.js"],
      "env": { "NAMEWHEEL_API_KEY": "nw_live_..." }
    }
  }
}

The env block is optional.

Related MCP server: mcp-random

Tools

Tool

What it does

Where it runs

spin_wheel

Pick one or more winners at random from a list, with the wheel shown in the chat.

Locally

make_teams

Split names into random teams or groups of even size.

Locally

open_wheel_link

A namewheel.org link that opens the full wheel with the names loaded.

Locally

verify_draw

Check a certified draw from its code or link: recomputes the winner, checks the commitment and the Ed25519 signature.

Locally, after fetching the public record

check_plan

What this connection can do, and certified draws left today.

Locally (with a key: reads your plan)

certified_draw

A TrueSpin certified draw: the winner is sealed before the spin and published on a public proof page (namewheel.org/v/CODE).

NameWheel API, your key

freeze_list

Lock an entry list in public before the draw (namewheel.org/f/CODE).

NameWheel API, your key

my_draws

Your certified draws and frozen lists with proof links.

NameWheel API, your key

Certified draws publish the title, every entry and the winner on the proof page. The tool description says so, so assistants tell people before running one.

The server also has 5 prompts (pick_student, split_teams, certified_draw_with_proof, make_a_decision, verify_a_draw) and 2 resources (namewheel://truespin, how certified draws work, and namewheel://limits).

Or use the hosted server (nothing to install)

The same server runs at https://mcp.namewheel.org/mcp (Streamable HTTP). Without an account: 30 calls a minute and 500 a day per connection. Certified draws need a free NameWheel account, connected through the sign-in flow your client shows.

Claude (web, desktop, mobile): Settings, Connectors, Add custom connector, paste https://mcp.namewheel.org/mcp.

Claude Code

claude mcp add --transport http namewheel https://mcp.namewheel.org/mcp

ChatGPT (web): Settings, Apps (Developer Mode), add https://mcp.namewheel.org/mcp.

Codex CLI

codex mcp add namewheel --url https://mcp.namewheel.org/mcp

Cursor: Install in Cursor, or ~/.cursor/mcp.json:

{ "mcpServers": { "namewheel": { "url": "https://mcp.namewheel.org/mcp" } } }

VS Code: Install in VS Code, or .vscode/mcp.json:

{ "servers": { "namewheel": { "type": "http", "url": "https://mcp.namewheel.org/mcp" } } }

Windsurf, ~/.codeium/windsurf/mcp_config.json:

{ "mcpServers": { "namewheel": { "serverUrl": "https://mcp.namewheel.org/mcp" } } }

Gemini CLI, ~/.gemini/settings.json:

{ "mcpServers": { "namewheel": { "httpUrl": "https://mcp.namewheel.org/mcp" } } }

To use your account without the sign-in flow, send your key as Authorization: Bearer nw_live_... or x-api-key: nw_live_....

Run the HTTP server yourself

npm install && npm run build
NAMEWHEEL_API_URL=https://namewheel.org PUBLIC_URL=https://your-host.example MCP_JWT_SECRET=<random hex> node dist/index.js

Settings: PORT (default 8791), HOST (default 127.0.0.1), PUBLIC_URL (the address clients reach, used for OAuth metadata), NAMEWHEEL_API_URL, MCP_JWT_SECRET (signs access tokens), STATE_DIR (OAuth clients, tokens and guest meters, default /var/lib/namewheel-mcp).

The HTTP server is an OAuth 2.1 authorization server (PKCE, dynamic client registration, client ID metadata documents, RFC 9728 and 8414 metadata). Tools that need no account need no sign-in. When a client calls a tool that needs an account, the server answers 401 and the client shows its Connect flow; the connect page asks for a NameWheel API key and binds the connection to it. Deleting the key in the NameWheel dashboard (Settings, API keys) disconnects every assistant that used it. A key can only run certified draws, freeze lists, read the plan and list its own draws: it cannot change the account, its payments or its data.

How certified draws work

  1. NameWheel's server makes a secret and publishes only its SHA-256 fingerprint before anything is revealed.

  2. The connection adds its own randomness.

  3. The winner is HMAC-SHA256 over that randomness and the fingerprint of the entry list, keyed with the secret.

  4. After the spin the secret is published and the record is signed with NameWheel's Ed25519 key (public key).

  5. The proof page lists every certified draw the same account ran on the same list, so re-rolling until a favourite wins is visible.

Spec: namewheel.org/truespin-spec. Independent verifier: namewheel/truespin-verifier. verify_draw runs the same checks (src/verify.ts).

The in-chat wheel

spin_wheel, make_teams, certified_draw and verify_draw link an MCP Apps view (ui://namewheel/wheel-v1.html, text/html;profile=mcp-app). It is one self-contained HTML file in widget/wheel.html: no outside scripts, fonts or requests. Clients without MCP Apps get the same result as text.

Privacy

Spins, teams and wheel links never store the names. Certified draws and frozen lists are stored by NameWheel and published on their proof pages, as on the website. The hosted server meters calls without an account by IP address and keeps request logs (tool, number of entries, client name, address, outcome, never the names) for 30 days. Policy: namewheel.org/privacy.

License

MIT. NameWheel and TrueSpin are names of Outline Technologies LLC.

Available Tools

8 tools
certified_drawRun a certified drawAInspect

Run a TrueSpin certified draw on NameWheel: the winner is sealed by NameWheel's server before it is revealed, randomness from this connection is added, and the result is published on a permanent public proof page (namewheel.org/v/CODE) that anyone can check, with a button that recomputes the draw. Use it when the result must be provable to other people: a class prize, a team decision, a draw announced to a group. IMPORTANT: the title, every entry and the winner become public on the proof page, so only use names the person is happy to publish, and tell them so. Needs a connected NameWheel account (free). To draw against a list locked earlier with freeze_list, pass frozen_code instead of entries.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesThe draw's public title, such as 'Year 9 reading prize' or 'Who presents first'.
entriesNoThe names or options, one per item, exactly as the person gave them. Repeating a name gives it another slot (another chance), as on the NameWheel website.
entropyNoOptional words or a number from the person, mixed into the draw's randomness.
frozen_codeNoCode or link of a list frozen earlier with freeze_list (namewheel.org/f/CODE). The draw uses exactly that list.

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Anticipated score was higher: the description genuinely adds behavior beyond the annotations — server-side sealing before reveal, connection entropy mixed in, a permanent public proof page with a recompute button, an account requirement, and a privacy/publish warning. That is rich context, but the 'sealed' vs. 'published' ordering is stated loosely ('the winner is sealed ... before it is revealed') and no note is given that this is non-repeatable (idempotentHint=false).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and result-provenance claim, and every sentence carries load-bearing information (proof page, publish warning, account need, frozen_code routing). It is on the long side and the proof-page explanation could be tightened, but nothing is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the return burden and does so well: the result lands on a proof page keyed by a CODE and is openly verifiable. It stops just short of stating the actual response payload fields (winner, code) an agent would receive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description earns above baseline by disclosing a relationship the schema does not encode: entries and frozen_code are alternatives ('pass frozen_code instead of entries'), plus the public-visibility implication of title and entries.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb+resource (run a certified draw) and the concrete mechanics (server-sealed winner, connection entropy, public proof page). It is clearly distinguishable from spin_wheel, freeze_list and verify_draw, which cover the non-certified, pre-lock and audit paths.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States the selecting condition explicitly ('Use it when the result must be provable to other people') with concrete examples (class prize, team decision, group announcement). It also names the alternative path — pass frozen_code instead of entries — and states an important when-not constraint about publishable names.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_planCheck what this connection can doA
Read-onlyIdempotent
Inspect

Say what this NameWheel connection can do: without an account (spins, teams, wheel links, checking draws) or with a connected account (certified draws, frozen lists, the account's draws), and how many certified draws are left today. Use it when the person asks about limits, their account, or why a request was refused.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description still adds real behavioral context beyond them: the answer varies by authentication state and includes today's remaining certified-draw quota, which is the kind of information an agent needs to interpret the result.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler, with the capability summary front-loaded before the trigger conditions. The first sentence is dense but every clause (anonymous mode, account mode, quota) carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must carry the return-value burden, and it does describe the categories of information returned (capabilities by auth state, remaining certified draws today). It stops short of describing the actual response shape or field names, which for a no-parameter diagnostic tool would be the last missing piece.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the schema imposes no semantic burden and the baseline is 4. Nothing in the description is needed to explain inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Say what ... can do') on a specific resource (this NameWheel connection) and enumerates the two capability modes (anonymous vs. connected account) plus the remaining-certified-draws count. It is easy to distinguish from action siblings like spin_wheel or certified_draw, but it never names a sibling to draw the boundary explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives concrete triggers: 'Use it when the person asks about limits, their account, or why a request was refused.' That is clear when-to-use guidance, covering both proactive and diagnostic cases, but it lists no exclusions or named alternatives for those scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

freeze_listFreeze an entry listAInspect

Lock a list of entries in public before a draw, at namewheel.org/f/CODE, with a fingerprint and the exact time. Nobody can add or remove a name after that, and when certified_draw later uses this list (frozen_code), the frozen page links to the result. Use it when entries close before the draw happens. The title and every entry are public. Needs a connected NameWheel account (free).

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesThe list's public title.
entriesYesThe names or options, one per item, exactly as the person gave them. Repeating a name gives it another slot (another chance), as on the NameWheel website.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds substantial context beyond the annotations: entries become immutable ('Nobody can add or remove a name after that'), the title and entries are publicly visible, an account is required, and the frozen page links to the later draw result. These are exactly the auth, privacy, and irreversibility facts the annotations (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=true) do not convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action and the resulting URL, then layers immutability, downstream linkage, trigger, and privacy. Slightly dense and has mild redundancy between 'in public' and 'The title and every entry are public,' but every sentence carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description implies the return (a CODE / frozen_code) rather than stating it outright, which leaves a small gap. It does cover the auth requirement, privacy implications, and downstream usage, so an agent has enough to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented, including the duplicate-name-slot behavior. The description only reinforces that title and entries are public, adding marginal meaning beyond the schema; baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Lock a list of entries in public before a draw'), plus the concrete artifact it produces (namewheel.org/f/CODE, fingerprint, exact timestamp). It is clearly distinguishable from the sibling certified_draw, which it explicitly references as the downstream consumer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear trigger: 'Use it when entries close before the draw happens,' and explains the relationship to certified_draw (frozen_code) so the agent knows this is the pre-draw step. It does not state an explicit when-not or an alternative tool for other scenarios, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

make_teamsSplit into random teamsA
Read-only
Inspect

Split a list of names into random teams or groups of even size, and show them as cards in the chat. Use it for class groups, project teams, game sides, rotations. Give either how many teams or how many people per team. Works without an account.

ParametersJSON Schema
NameRequiredDescriptionDefault
teamsNoHow many teams. Default 2 when team_size is not given.
titleNoA short title for the wheel, such as 'Period 3 cold call' or 'Who presents first'.
entriesYesThe names or options, one per item, exactly as the person gave them. Repeating a name gives it another slot (another chance), as on the NameWheel website.
team_sizeNoHow many people per team, instead of a number of teams.
team_namesNoNames for the teams, in order. Default Team 1, Team 2...

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false and idempotentHint=false. The description adds genuinely useful context beyond them: results render as cards in chat, and it 'works without an account', which is auth information the annotations do not carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core action and output are front-loaded in the first sentence, followed by use cases, parameter rule, and the account note. Five short sentences, no filler, though the account remark could be trimmed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-parameter tool with no output schema, the description covers the outcome (cards in chat), the two mutually exclusive sizing modes, and the no-account requirement. It omits nothing critical for correct invocation, though error/limit behavior is unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents teams, team_size, team_names, title and entries. The description only restates the teams-vs-team_size choice, adding little beyond the schema and no format or limit details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Split a list of names into random teams or groups of even size') and adds the output behavior ('show them as cards in the chat'). It is clearly distinguishable from spin_wheel or certified_draw in intent, though it never names those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It offers scenario guidance ('class groups, project teams, game sides, rotations') and a parameter rule ('give either how many teams or how many people per team'), which is more than nothing. But it never says when NOT to use it or points to spin_wheel/certified_draw for single-winner draws, leaving sibling selection to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

my_drawsList my certified drawsA
Read-onlyIdempotent
Inspect

List this account's recent NameWheel certified draws (or frozen lists) with their winners and proof links, newest first. Needs a connected NameWheel account.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoHow many to list. Default 10.
frozen_listsNoList frozen entry lists instead of draws.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the safety profile is covered. The description still adds real context beyond that: the auth precondition, the newest-first ordering, and the fact that each entry carries winners and proof links. It does not mention pagination or behavior at the limit ceiling, but that gap is small against full annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with no filler; the result scope and ordering are front-loaded and the auth requirement trails as a compact caveat. Every clause carries information an agent can act on.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates well by naming the returned fields (winners, proof links) and ordering, and it covers the auth requirement for a two-parameter, zero-required tool. It falls just short of complete because it leaves the relationship between this tool and verify_draw/certified_draw unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented in the schema (limit default 10, frozen_lists meaning), which sets the baseline at 3. The description's 'or frozen lists' restates the frozen_lists parameter rather than adding syntax, defaults, or interaction rules (e.g. what happens when frozen_lists is combined with limit), so it adds little beyond structured data.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List this account's recent NameWheel certified draws') plus the payload contents (winners, proof links) and ordering (newest first), so the agent knows exactly what comes back. It does not, however, differentiate itself from adjacent siblings like certified_draw or verify_draw, and the 'or frozen lists' mode partially overlaps freeze_list, leaving the boundary implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description supplies a prerequisite ('Needs a connected NameWheel account') and reveals the frozen_lists toggle as a mode switch, which implies when each mode applies. It never says when to prefer this tool over verify_draw, certified_draw, or freeze_list, so the routing guidance is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

spin_wheelSpin the wheelA
Read-only
Inspect

Pick one or more winners at random from a list of names or options, and show the wheel spinning to the result in the chat. Use it whenever the person wants something chosen at random: a student to answer, who goes first, where to eat, a raffle winner among friends. Works without an account. The pick is fair (a cryptographic random number generator), but it is not a certified record; when other people need to be able to check the result later, use certified_draw instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoA short title for the wheel, such as 'Period 3 cold call' or 'Who presents first'.
entriesYesThe names or options, one per item, exactly as the person gave them. Repeating a name gives it another slot (another chance), as on the NameWheel website.
winnersNoHow many winners to pick. Default 1.
allow_repeat_winnersNoWith more than one winner, may the same entry win twice? Default false: each winner leaves the wheel.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=false), and the description adds substantive context beyond them: no account required, randomness comes from a cryptographic RNG, and the result is explicitly not a certified record. That non-certification caveat is the key behavioral trait an agent needs when choosing between this and certified_draw.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, front-loaded with the action and outcome, then usage, then the exclusion to certified_draw. No filler and no restatement of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-output-schema, read-only tool this covers everything an agent needs: what it returns (a visible spin result in chat), prerequisites (none), fairness guarantees, and the alternative tool for auditable draws. Remaining mechanics such as winner-repeat behavior live in the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so entries, winners, allow_repeat_winners and title are already fully documented, including repeat-slot semantics and defaults. The description only gestures at 'one or more winners' and 'a list of names or options', adding no syntax or format detail beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource+outcome: pick random winners from a list and show the wheel spinning. It distinguishes itself from the sibling certified_draw by name and by the fairness/certification axis, so an agent can route between them without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use with concrete scenarios (student to answer, who goes first, where to eat, raffle) plus an explicit when-not: use certified_draw when others must be able to check the result later. It also notes it works without an account, removing a prerequisite question.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_drawCheck a certified drawA
Read-onlyIdempotent
Inspect

Check whether a NameWheel certified draw is genuine, from its code or its namewheel.org/v/ link: recomputes the winner from the published secret, the added randomness and the entries, checks the commitment made before the spin, and checks NameWheel's Ed25519 signature on the record. Also says how many draws the host ran on this exact list. Use it when someone asks whether a draw or a giveaway result was real. Works without an account.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesThe draw code (8 letters and digits) or its link, such as namewheel.org/v/DG5J6VD7.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so safety is covered. The description earns additional credit by disclosing the actual verification pipeline (recompute winner, check pre-spin commitment, check Ed25519 signature) and the no-account requirement, though it says nothing about failure modes or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded with the core action, then the usage trigger, then the account caveat — each sentence carries distinct information. The opening sentence is dense with verification steps but not redundant; sizing is appropriate for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With only one parameter and no output schema, the description correctly focuses on what is verified and adds a return-relevant fact (it reports how many draws the host ran on this list). It could be slightly more explicit about the shape of the verdict, but an agent has enough to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single parameter already documents both accepted forms (8-char code or namewheel.org/v/ link) with length bounds. The description restates that duality but adds no format, error, or normalization detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb (check/verify) and resource (a NameWheel certified draw), and immediately scopes it to what is being verified: recomputing the winner, checking the commitment, and validating the Ed25519 signature. This is clearly distinguishable from siblings like spin_wheel and certified_draw, which it complements rather than duplicates.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use it when someone asks whether a draw or a giveaway result was real" gives a concrete triggering condition, and "Works without an account" clarifies a practical prerequisite. It does not, however, explicitly contrast itself with the sibling certified_draw or exclude near-miss cases, so it stops short of full alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 8 tool updatesv1.0.0
    • First observedcertified_draw
    • First observedcheck_plan
    • First observedfreeze_list
    • First observedmake_teams
    • First observedmy_draws
    • First observedopen_wheel_link
    • First observedspin_wheel
    • First observedverify_draw

TDQS

A4.1/5.0

Scored across 8 tools

Disambiguation5/5

Each tool targets a clearly distinct operation: casual spinning (spin_wheel), team splitting (make_teams), link generation (open_wheel_link), provable draws (certified_draw), pre-locking entries (freeze_list), verification (verify_draw), history (my_draws) and capability/limits (check_plan). The descriptions explicitly resolve the most likely confusion by contrasting spin_wheel (casual, not a record) with certified_draw (provable, account-backed).

Naming Consistency4/5

All names use snake_case, and most follow a verb_noun pattern (spin_wheel, make_teams, open_wheel_link, freeze_list, verify_draw, check_plan). Minor deviations exist in certified_draw (adjective_noun) and my_draws (possessive noun), but the set remains predictable and readable.

Tool Count5/5

Eight tools is well-scoped for a random-selection and certified-draw service, with each tool earning its place across casual use, account-backed draws and verification. No redundant or filler endpoints appear in the set.

Completeness4/5

The surface covers the full lifecycle from casual selection through list freezing, certified drawing, public verification, history review and quota checking, so core workflows have no dead ends. Gaps are minor, such as managing or deleting previously frozen lists or editing draw metadata.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables random selection tools including lottery drawing from option lists, dice rolling with customizable sides and counts, and coin flipping. Supports both single and multiple draws with duplicate control options.
    3
    2
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    MCP server providing true randomness capabilities to Claude, enabling cryptographically secure random number generation for games, decision-making, sampling, simulations, and any operation requiring genuine randomness.
    13
    2
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides true random generation tools for AI agents, including coin flip, dice roller, random numbers, and wheel of fortune, enabling decisions and TTRPG sessions.
    2 npm
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    MCP server enabling provably-fair random selection and winner picking using drand randomness, with tools for instant picks, scheduled draws, and verification.
    MIT