Skip to content
CompletionKit logo

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

← Back to CompletionKit

Whose server it is
  • 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.

When we asked itchecked 2026-10-21
  • 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.

Should an agent connect itNot proven either way yet
  • 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.

Measured dailydaily checks: 2, the first on 2026-10-21
  • 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 →

Tools it offers54 tools · read 2026-10-21
  • prompts_list

    List all prompts

  • prompts_get

    Get a prompt by ID

  • prompts_create

    Create a prompt

  • prompts_update

    Update 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_delete

    Delete a prompt

  • prompts_publish

    Publish a prompt version, making it the current version

  • prompts_suggest_improvement

    Suggest 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_list

    List all runs

  • runs_get

    Get 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_create

    Create 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_update

    Update a run

  • runs_delete

    Delete a run

  • runs_generate

    Start 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_regrade

    Re-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_rerun

    Create 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_failures

    Re-run only the failed responses of a run, optionally limited to specific response ids via "only".

  • responses_list

    List 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_get

    Get a specific response

  • datasets_list

    List all datasets

  • datasets_get

    Get a dataset by ID

  • datasets_create

    Create 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_update

    Update a dataset

  • datasets_delete

    Delete a dataset

  • datasets_create_from_url

    Create 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_list

    List all metrics

  • metrics_get

    Get a metric by ID

  • metrics_create

    Create 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_update

    Update 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_delete

    Delete a metric

  • metrics_suggest_variants

    Ask 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_list

    List all metric groups

  • metric_groups_get

    Get a metric group by ID

  • metric_groups_create

    Create a metric group

  • metric_groups_update

    Update a metric group

  • metric_groups_delete

    Delete a metric group

  • metric_versions_list

    List every MetricVersion (drafts + published) for a metric, newest first. Each row carries version_number, state, source, current flag, and timestamps.

  • metric_versions_publish

    Publish 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_dismiss

    Destroy 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_list

    List all provider credentials (API keys are not exposed)

  • provider_credentials_get

    Get a provider credential by ID (API key is not exposed)

  • provider_credentials_create

    Create a provider credential

  • provider_credentials_update

    Update 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_delete

    Delete a provider credential

  • tags_list

    List all tags

  • tags_get

    Get a tag by ID

  • tags_create

    Create a tag. Color is auto-assigned.

  • tags_update

    Rename a tag.

  • tags_delete

    Delete a tag. Removes the tag from every linked metric, prompt, run, and dataset.

  • agreements_list

    List agreements. Filter by run_id, response_id, metric_id, or created_by.

  • agreements_create

    Upsert 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_replay

    Create 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_compare

    Compare 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_import

    Import 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_get

    Get 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/mcp

Add to CursorAdd to VS Code

claude.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.