
CompletionKit MCP server
Which servers in the official MCP registry are CompletionKit's own, whether they answer, and what they offer. A program checked each of these, nobody copied them from a product page.
read 2026-10-21
- Registry namecom.completionkit/evalsverified in the MCP registry
The registry name sits under completionkit.com. The registry only lets a publisher use that namespace after proving control of the domain through DNS or HTTP.
- Stateanswerschecked 2026-10-21
- Tools54
- Server calls itselfCompletionKit
- Server version0.29.1
- Protocol version2025-06-18
On 2026-10-21 the server answered initialize and tools/list without a sign-in. First answer in 156 ms.
- Whether its tools do the product's job has not been judged yet.
- Checked on 2 of the 7 days it takes to judge reliability.
Once connected
- Keep approval on for prompts_delete, runs_delete, datasets_delete, metrics_delete, tags_delete: they delete, send or pay without saying so.
- prompts_create, prompts_update, prompts_delete, prompts_publish, runs_create change data without a sign-in: anyone with the address can call them.
- Parameters are untyped or undescribed in 43 of 54 tools: check arguments before calling.
Said by rules from the measurements above. The likely first call is a model's pick from the tool list; read its description before relying on it.
- INITE MCP scoreafter a weeka score needs 7 daily checks: 2 so far
- Use3 GitHub stars
- Answeredmeasuring2 of the 7 daily checks it takes to print a share
- Median first answer314 ms
- Space in an agent's context≈ 6,747 tokensthe definitions of all its tools (54), which an agent carries on every turn
- Tool definitionsC · 65 of 100
- Typed results0 of 54 toolsdeclared outputSchema: results come typed, read once
- No description an agent can choose by: 17 of 54
- Parameters without a description: in 43 of 54
- Not saying whether it only reads or can destroy: 54 of 54
Worth a look
- Tools that delete, send or pay without telling the client so: prompts_delete, runs_delete, datasets_delete, metrics_delete, tags_delete
- Tools that change data, on a server that answers without a sign-in: prompts_create, prompts_update, prompts_delete, prompts_publish, runs_create
A program checks the server once a day: initialize and tools/list, no model. Tokens are the definitions' length at about four characters a token. The grade averages six checks of every tool's name, description, schema and annotations; it says how well the tools are described, not whether they work. The score weighs what was measured and nothing else: answering (30%), doing the product's job (25%), definitions (20%), context (10%) and use (15%). A part that was not measured is left out, and a hidden instruction caps the score at 40. The state of vendors' MCP servers: method and numbers →
prompts_listList all prompts
prompts_getGet a prompt by ID
prompts_createCreate a prompt
prompts_updateUpdate a prompt. If the prompt already has runs, this creates a new DRAFT version (current=false) rather than editing in place or publishing. Promote it with prompts_publish, so an agent's edits don't go live without a gate. If it has no…
prompts_deleteDelete a prompt
prompts_publishPublish a prompt version, making it the current version
prompts_suggest_improvementSuggest an improved version of a prompt, grounded in a run's test results and judge feedback. Analyzes the run's responses, scores, and reviews, then returns reasoning plus a rewritten template (preserving {{variables}}) and persists it…
runs_listList all runs
runs_getGet a run by ID, including "metric_averages": a per-metric breakdown with each metric's average score (or pass rate for checks), how many rows it graded, and how many scored low. Use this to find the metric dragging a prompt down without…
runs_createCreate a run. Omit prompt_id and provide output_column to score existing outputs by grading a pre-existing dataset column instead of generating new ones.
runs_updateUpdate a run
runs_deleteDelete a run
runs_generateStart a run. Required for every run, including score-only runs (no prompt): generates responses with the prompt when there is one, otherwise copies the graded dataset column and grades it.
runs_regradeRe-grade a run's existing responses with its currently attached metrics, without regenerating. Use after attaching or editing metrics on an already-generated run.
runs_rerunCreate and start a fresh copy of a run with the same prompt, dataset, metrics, and settings. Use when the judge changed and you want a clean run instead of mixing versions.
runs_retry_failuresRe-run only the failed responses of a run, optionally limited to specific response ids via "only".
responses_listList responses for a run, in row order. Returns {total, limit, offset, returned, responses}. Defaults to 50 rows because full payloads are large: use "fields" to drop the bodies, "min_score"/"max_score" to isolate low scorers, and sort…
responses_getGet a specific response
datasets_listList all datasets
datasets_getGet a dataset by ID
datasets_createCreate a dataset with CSV data. First row is the header. Two column names are recognized specially: "expected_output" is each row's answer key (ground truth) given to the judge and to checks that compare against the row's expected value…
datasets_updateUpdate a dataset
datasets_deleteDelete a dataset
datasets_create_from_urlCreate a dataset by downloading CSV from a URL instead of inlining it. Use this for large datasets: pass a public http(s) URL and the server fetches the CSV directly, so the data never has to pass through the tool-call arguments. The URL…
metrics_listList all metrics
metrics_getGet a metric by ID
metrics_createCreate a metric with evaluation criteria. For a deterministic check set metric_type:"check" and check_config. Per-kind required keys: value (contains/not_contains/equals/list_overlap/numeric_equals), pattern (regex), json_path+expected…
metrics_updateUpdate a metric. For a deterministic check set metric_type:"check" and check_config. Per-kind required keys: value (contains/not_contains/equals/list_overlap/numeric_equals), pattern (regex), json_path+expected (json_path_equals), min…
metrics_deleteDelete a metric
metrics_suggest_variantsAsk the model to rewrite the metric's judge instruction in N variants targeted at the recent disagreements. Each variant is saved as a draft MetricVersion with source="suggestion". Returns the persisted drafts. Stripe-metering hooks fire…
metric_groups_listList all metric groups
metric_groups_getGet a metric group by ID
metric_groups_createCreate a metric group
metric_groups_updateUpdate a metric group
metric_groups_deleteDelete a metric group
metric_versions_listList every MetricVersion (drafts + published) for a metric, newest first. Each row carries version_number, state, source, current flag, and timestamps.
metric_versions_publishPublish a MetricVersion as the live version of its metric. Works for both 'draft → published' and 'revert to an older published version → current'. Transactionally flips current, demotes peers, and writes the version's instruction +…
metric_versions_dismissDestroy a draft MetricVersion (use for either source: 'edit' or source: 'suggestion'). Published versions are refused. To demote a published version, publish a different one as current instead.
provider_credentials_listList all provider credentials (API keys are not exposed)
provider_credentials_getGet a provider credential by ID (API key is not exposed)
provider_credentials_createCreate a provider credential
provider_credentials_updateUpdate a provider credential. Changing provider or api_endpoint on a credential with a stored key requires api_key in the same call, so a stored key never moves to a new provider or endpoint.
provider_credentials_deleteDelete a provider credential
tags_listList all tags
tags_getGet a tag by ID
tags_createCreate a tag. Color is auto-assigned.
tags_updateRename a tag.
tags_deleteDelete a tag. Removes the tag from every linked metric, prompt, run, and dataset.
agreements_listList agreements. Filter by run_id, response_id, metric_id, or created_by.
agreements_createUpsert an agreement for (run, response, metric, created_by). Verdict is one of agree, disagree, borderline. corrected_score (1..5) is required when verdict is 'disagree'.
judges_replayCreate a scoring run for the current judge over a dataset's existing outputs (wraps runs_create with prompt_id omitted and output_column supplied). This only sets up the run; call runs_generate to actually re-judge the outputs so you can…
judges_compareCompare two versions of one metric's agreement stats side by side. Requires metric_id, metric_version_a_id, and metric_version_b_id (both versions must belong to that metric). Unavailable for check metrics.
promptfoo_importImport a promptfooconfig.yaml. Creates a prompt, a dataset from the test vars, and metrics from the assert blocks (llm-rubric/g-eval become judge metrics; contains/equals/regex/is-json become deterministic check metrics). Returns a…
usage_getGet this organization's plan usage and limits for the current billing period: runs and prompt fetches used, their limits, how many remain, and when the period resets. Call this to pre-check quota before starting runs. Runs are…
How to connect
Add the server to your MCP client config. Claude Desktop, Cursor and most other clients read this shape:
{
"mcpServers": {
"evals": {
"type": "http",
"url": "https://completionkit.com/mcp"
}
}
}Add it
Claude Code, in a terminal
claude mcp add --transport http completionkit https://completionkit.com/mcpclaude.ai, ChatGPT and other clients: add https://completionkit.com/mcp as a custom connector in the settings.
Each line is something a program found when it went looking: the registry entry, the server's own answer, a spec that parses. A missing line means we did not find it, not that it does not exist.
Cookies
Before we count this visit
Analytics and ad measurement tell us which pages and which of our ads do their job: Google Analytics and Google Ads, the Meta pixel, Yandex Metrica, and one first-party id of our own. Nothing is stored until you answer, and declining changes nothing about the site.