servers / completionkit
CompletionKit MCP server
communitystreamable_httpremotedestructive capablehealthy
Prompt evals over MCP: run a prompt on your dataset, score each output 1-5 with an LLM judge.
01Tools · 54
How to read this: tool names here are observed from a live tools/list handshake. The Risk label is a heuristic inferred from the tool name (write/destructive verbs), not from executing the tool — a conservative guess, not a verified capability. We never escalate risk from a description. Found one that's wrong? Tell us — we fix on report.
| Tool | Risk | Side effects | Approval |
|---|---|---|---|
| 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'. | write | true | unknown |
| agreements_list List agreements. Filter by run_id, response_id, metric_id, or created_by. | read | false | unknown |
| 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, and "actual_output" is a pre-made output to score in a prompt-less run. Both are overridable per run (expected_column / output_column). Every column is also available to the prompt as a variable. | write | true | unknown |
| 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 is SSRF-checked and the download is capped at 10MB. First row is the header; the "expected_output" (answer key) and "actual_output" (pre-made output) columns are recognized specially, overridable per run. | write | true | unknown |
| datasets_delete Delete a dataset | destructive | true | true |
| datasets_get Get a dataset by ID | read | false | unknown |
| datasets_list List all datasets | read | false | unknown |
| datasets_update Update a dataset | write | true | unknown |
| 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. | unknown | unknown | unknown |
| 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 compare against human verdicts. | unknown | unknown | unknown |
| metric_groups_create Create a metric group | write | true | unknown |
| metric_groups_delete Delete a metric group | destructive | true | true |
| metric_groups_get Get a metric group by ID | read | false | unknown |
| metric_groups_list List all metric groups | read | false | unknown |
| metric_groups_update Update a metric group | write | true | unknown |
| 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. | unknown | unknown | unknown |
| metric_versions_list List every MetricVersion (drafts + published) for a metric, newest first. Each row carries version_number, state, source, current flag, and timestamps. | read | false | unknown |
| 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 + rubric_bands back onto the metric so the judge grades against it. | write | true | unknown |
| 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), pattern (regex), json_path+expected (json_path_equals), min and/or max (length_bounds); valid_json takes no extra keys. target_path is required when target is json_path. For contains, not_contains, and equals, set compare_to:"expected" to grade against each row's own expected_output (ground truth) instead of a constant value (drop value); add expected_path to dig into the expected value when it is JSON. | write | true | unknown |
| metrics_delete Delete a metric | destructive | true | true |
| metrics_get Get a metric by ID | read | false | unknown |
| metrics_list List all metrics | read | false | unknown |
| 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 via ActiveSupport::Notifications under completion_kit.judge_suggestion.generated. | read | false | unknown |
| 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), pattern (regex), json_path+expected (json_path_equals), min and/or max (length_bounds); valid_json takes no extra keys. target_path is required when target is json_path. For contains, not_contains, and equals, set compare_to:"expected" to grade against each row's own expected_output (ground truth) instead of a constant value (drop value); add expected_path to dig into the expected value when it is JSON. | write | true | unknown |
| 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 summary of what mapped and what was skipped and why; nothing is dropped silently. | read | false | unknown |
| prompts_create Create a prompt | write | true | unknown |
| prompts_delete Delete a prompt | destructive | true | true |
| prompts_get Get a prompt by ID | read | false | unknown |
| prompts_list List all prompts | read | false | unknown |
| prompts_publish Publish a prompt version, making it the current version | write | true | unknown |
| 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 as a Suggestion. Requires a run that has a prompt (not a scoring-only run). | read | false | unknown |
| 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 runs, it is updated in place. | write | true | unknown |
| provider_credentials_create Create a provider credential | write | true | unknown |
| provider_credentials_delete Delete a provider credential | destructive | true | true |
| provider_credentials_get Get a provider credential by ID (API key is not exposed) | read | false | unknown |
| provider_credentials_list List all provider credentials (API keys are not exposed) | read | false | unknown |
| provider_credentials_update Update a provider credential | write | true | unknown |
| responses_get Get a specific response | read | false | unknown |
| 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 "score_asc" to read the worst rows first. For per-metric averages of the whole run use runs_get instead of aggregating here. | read | false | unknown |
| 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. | write | true | unknown |
| runs_delete Delete a run | destructive | true | true |
| 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. | unknown | unknown | unknown |
| 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 listing responses. | read | false | unknown |
| runs_list List all runs | read | false | unknown |
| 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. | unknown | unknown | unknown |
| 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. | unknown | unknown | unknown |
| runs_retry_failures Re-run only the failed responses of a run, optionally limited to specific response ids via "only". | unknown | unknown | unknown |
| runs_update Update a run | write | true | unknown |
| tags_create Create a tag. Color is auto-assigned. | write | true | unknown |
| tags_delete Delete a tag. Removes the tag from every linked metric, prompt, run, and dataset. | destructive | true | true |
| tags_get Get a tag by ID | read | false | unknown |
| tags_list List all tags | read | false | unknown |
| tags_update Rename a tag. | write | true | unknown |
| 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 hard-blocked once the run limit is reached (with a small grace band), so a run over the limit will fail with run_limit_reached. | read | false | unknown |
02Install & source
https://completionkit.com/mcp
remote_url- repohttps://github.com/homemade-software-inc/completion-kit
- homepagehttps://completionkit.com/mcp
- licenseNOASSERTION
- adoption3 stars · 1 forks
05Provenance & freshness
sourcesOfficial MCP Registry [p1]
last_checked2026-09-01 12:59Z
next_check2026-09-01 15:58Z
cadenceevery 3h
verifiedtools_list:passed handshake:passed metadata:passed tools_list:passed handshake:passed metadata:passed tools_list:passed handshake:passed metadata:passed tools_list:passed
index_statusindex — 8 unique facts >= 5
06Badge
Add the “as seen on MCPExplorer” badge to your README.
[](https://mcpexplorer.com/servers/completionkit)
Next step
This is one server. A loadout combines the right servers, governance, and proven plays for a whole job — assembled deliberately, not tool-dumped.
Explore loadouts →