Free bar for digital product briefs: your model judges, open rules and code score it.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Turn your model's verdicts into the bar's score, gate and decision. Advisory. Validates the verdicts against the live ruleset (every rule exactly once, valid status and confidence, the version you judged at) and against the brief (each quote must be copied verbatim), then aggregates them with the same engine that scores on the service: same verdicts, same number. Any error means no score — fix and resend. The result is tagged evaluation_source "client" and authoritative false: your model wrote the verdicts, so it is advice, never a welance score, and it cannot authorise publication on the welance/directory (the directory scores every brief itself). Say so when you report it. Fix gate.missing first. directory_context false drops the directory-only policy rules.
Turn your model's verdicts into the bar's score, gate and decision. Advisory. Validates the verdicts against the live ruleset (every rule exactly once, valid status and confidence, the version you judged at) and against the brief (each quote must be copied verbatim), then aggregates them with the same engine that scores on the service: same verdicts, same number. Any error means no score — fix and resend. The result is tagged evaluation_source "client" and authoritative false: your model wrote the verdicts, so it is advice, never a welance score, and it cannot authorise publication on the welance/directory (the directory scores every brief itself). Say so when you report it. Fix gate.missing first. directory_context false drops the directory-only policy rules.
| Argument | Type | Description |
|---|---|---|
| brief* | string | |
| verdicts* | any | |
| ruleset_version* | string | |
| directory_context | boolean |
{
"type": "object",
"title": "aggregate_verdictsArguments",
"required": [
"brief",
"verdicts",
"ruleset_version"
],
"properties": {
"brief": {
"type": "string",
"title": "Brief"
},
"verdicts": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
}
},
{
"type": "string"
}
],
"title": "Verdicts"
},
"ruleset_version": {
"type": "string",
"title": "Ruleset Version"
},
"directory_context": {
"type": "boolean",
"title": "Directory Context",
"default": true
}
}
}Which ruleset version is live, and what this free surface can do. Confirms the mode (bring your own model, zero provider calls, no fallback to welance's model) and the tools available.
No arguments.
{
"type": "object",
"title": "bar_statusArguments",
"properties": {}
}Deterministic checks only — semantic coverage is INCOMPLETE. Never a score. Finds what a pattern can find for certain: emails, URLs and phone numbers (which block anonymisation), a stated budget and timeline, personal-data cues without a compliance cue, unfilled placeholders, the title line and labelled sections. It does not judge meaning: company or person names, a vague problem or an unmeasurable goal pass straight through. Use it as a quick pre-flight, then judge with get_judge_prompt and aggregate_verdicts.
| Argument | Type | Description |
|---|---|---|
| brief* | string | |
| directory_context | boolean |
{
"type": "object",
"title": "check_briefArguments",
"required": [
"brief"
],
"properties": {
"brief": {
"type": "string",
"title": "Brief"
},
"directory_context": {
"type": "boolean",
"title": "Directory Context",
"default": true
}
}
}A brief template built from the live rules, with the inputs each section needs. Use it to start a brief from nothing, or to see which section a gap belongs in. Markdown, one section per rule, gate rules marked; write in any language.
No arguments.
{
"type": "object",
"title": "get_brief_templateArguments",
"properties": {}
}A working order for improving a brief with your own model, gate first. Pass the verdicts you already have (the JSON array from your model) to target the failing rules in weight order; without them the prompt walks every rule. The prompt keeps the author's voice and forbids invented scores and facts. Nothing is generated here: your model does the writing.
| Argument | Type | Description |
|---|---|---|
| brief* | string | |
| verdicts | any | |
| directory_context | boolean |
{
"type": "object",
"title": "get_improvement_promptArguments",
"required": [
"brief"
],
"properties": {
"brief": {
"type": "string",
"title": "Brief"
},
"verdicts": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
}
},
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Verdicts",
"default": null
},
"directory_context": {
"type": "boolean",
"title": "Directory Context",
"default": true
}
}
}The judge prompt and verdict JSON Schema, for YOUR model to answer. Free. This is the service judge's own prompt, word for word, so your model grades against the same bar. Pass the brief to get it embedded, or leave it empty for a template with a {{BRIEF}} placeholder. Answer the prompt with your own model (temperature 0 if you can), return only the JSON array it asks for, and send that array with the brief and the returned ruleset_version to aggregate_verdicts. welance runs no model for this.
| Argument | Type | Description |
|---|---|---|
| brief | string |
{
"type": "object",
"title": "get_judge_promptArguments",
"properties": {
"brief": {
"type": "string",
"title": "Brief",
"default": ""
}
}
}Read the bar before judging anything. Free; no model runs. Returns the live catalogue with its version: every rule's id, title, criteria (what the judge reads), weight, gate role, policy context and how to pass it, plus the arithmetic — status scores, confidence threshold, accept threshold, bands, the gate and which policy contexts can be turned off. The number of rules is whatever the live catalogue says.
No arguments.
{
"type": "object",
"title": "get_rulesArguments",
"properties": {}
}