Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Beschreibung vom Entwickler (englisches Original)
Free bar for digital product briefs: your model judges, open rules and code score it.
Diese drei werden nie zu einer Punktzahl zusammengefasst: Meinungen, Messungen und Beliebtheit sind verschiedene Dinge.
Für diesen Server haben wir noch keine Zusammenfassung in einfacher Sprache geschrieben. Unten stehen die Fakten, die wir aus der Registry gelesen haben.
Wähle die KI-App, die du nutzt, und kopiere die Einstellungen.
Du brauchst
Welche App nutzt du?
Wähle oben deine App. Wir merken sie uns, damit der Button beim nächsten Mal „In … installieren“ anzeigt.
Funktioniert in Claude im Web, auf dem Desktop und auf dem Handy:
https://briefs.welance.com/mcpFühre das in deinem Terminal aus
claude mcp add --transport http perfect-brief https://briefs.welance.com/mcpIn .cursor/mcp.json in deinem Projekt oder in ~/.cursor/mcp.json einfügen
{
"mcpServers": {
"perfect-brief": {
"url": "https://briefs.welance.com/mcp"
}
}
}Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.
In .vscode/mcp.json in deinem Projekt einfügen
{
"servers": {
"perfect-brief": {
"type": "http",
"url": "https://briefs.welance.com/mcp"
}
}
}Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.
ChatGPT verbindet sich nur mit Servern im Internet:
https://briefs.welance.com/mcpMenünamen können sich je nach Tarif und mit der Zeit leicht unterscheiden.
Deine Auswahl bleibt in einem Cookie auf diesem Gerät; kein Konto nötig.
Diese Einstellungen werden aus dem Registry-Eintrag des Entwicklers erzeugt. Wenn in der README etwas anderes steht, folge der README.
Tool-Namen und -Beschreibungen genau so, wie der Server sie am 7. Nov. 2026 gemeldet hat. Geschrieben hat sie der Entwickler, nicht wir; wir zeigen sie als reinen Text.
get_rulesRead 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
get_brief_templateA 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.
get_judge_promptThe 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
get_improvement_promptA 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 invent
check_briefDeterministic 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
aggregate_verdictsTurn 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 aggrega
bar_statusWhich 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.
Wir prüfen Informationen, die jeder sehen kann; den Code haben wir nicht gelesen. Checks, die nicht zutreffen, werden nicht mitgezählt. · Geprüft am 7. Nov. 2026
Der Registry-Name wurde über die Domain welance.com bestätigt (die Registry prüft, wem die Domain gehört)
Dieses Repo haben wir noch nicht von GitHub gelesen
Dieses Repo haben wir noch nicht von GitHub gelesen
Antwort in 191 ms (HTTP 200)
Keine Anmeldung nötig
Wir haben 7 Tool-Beschreibungen gelesen und keine versteckten Anweisungen an die KI gefunden
Verglichen mit allen aktiven Servern dieser Kategorie in der Registry. Sterne zählen nur, wenn dem Herausgeber das Repo gehört.
Er hat 3 von 3 zutreffenden Basischecks bestanden. Den Code haben wir nicht gelesen. Bevor du einen Schlüssel oder Token hinzufügst, sieh nach, welche Zugriffe der Server verlangt, und nutze einen Schlüssel, der nur die Berechtigungen hat, die du brauchst.
Die Registry nennt keinen erforderlichen Schlüssel, manche Server bitten dich aber bei der ersten Nutzung, dich anzumelden.
Er läuft in der Cloud des Entwicklers. Du verbindest dich übers Internet, ohne etwas zu installieren, aber was du sendest, läuft über die Server des Entwicklers.
Das GitHub-Repo wurde zuletzt – geändert, und die neueste Version (1.14.1) kam vor 10 Tagen in die Registry.
Apps, die MCP unterstützen, etwa Claude Desktop, Claude Code, Cursor und VS Code. Er verbindet sich per URL, also funktionieren auch Apps, die Remote-MCP-Server akzeptieren, zum Beispiel ChatGPT im Entwicklermodus.
In derselben Kategorie: Spec Driven Development, Remote Desktop Commander, MCP Server Autocad Lisp Helper
Server derselben Kategorie von anderen Entwicklern, sortiert nach Sternen.
So liest du eine Karte:★ GitHub-SterneiDrei Säulen: Bewertungen · Checks · NutzungiAktualisiert = neueste Version in der Registry veröffentlichti
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
High-precision static analysis and debug server for AutoCAD AutoLISP (.lsp) files.
Unverändert aus dem Repo des Entwicklers übernommen. PopNx MCP hat den Inhalt weder geprüft noch empfiehlt es ihn. HTML, Bilder und Skripte wurden entfernt. Links führen von dieser Website weg.
briefs.welance.com)| [Welance Directory](https://welance.com/directory) | guided brief builder and marketplace powered by this scoring service |
| [Brief Bar](https://briefs.welance.com/) | what the service does · [console](https://briefs.welance.com/console.html) · [rules](https://briefs.welance.com/rules.html) |
| [API docs](https://briefs.welance.com/docs) | OpenAPI, every field described |
| [Integrate](https://briefs.welance.com/integrate.html) | four routes into your workflow: console · prompt · MCP · API |
| [Your brief, your key](https://briefs.welance.com/data.html) | what travels where, what we keep, and how to bring your own key |
| [Privacy](https://briefs.welance.com/privacy.html) · [Terms](https://briefs.welance.com/terms.html) | the hosted service and its MCP connector: who runs it, what is kept and for how long, fair use |
| [llms.txt](https://briefs.welance.com/llms.txt) | the bar, written for machines — point your assistant at it |
Eight languages, no build step, no tracking. Same origin serves the pages and the API.
Scores a digital product brief against an open, versioned ruleset. The score says *how good* a brief is; a separate gate says *whether it may publish*. An LLM only ever judges (server-side, key never leaves the box); deterministic code owns every number, the gate, and the decision.
The product target is a brief that makes expectations explicit and open to discussion, so client and supplier can understand whether and how to work together before committing. See the product decision and audit of current rule coverage. The audit identifies proposed improvements; it does not change current scoring.
This repo is the service. The ruleset + engine live inside it as an installable package (brief_bar/) so they can later be split into their own OSS repo and consumed here as a pinned dependency — the seam is already drawn.
brief_bar/ the open ruleset + deterministic engine (the OSS core)
rules/*.yaml 14 rules, weights sum to 100, ★ = gate requirement scoring.yaml the €10k floor, the 4-requirement gate (anonymised is directory-context, deactivatable), the bands score.py weighted average + gate + decision (no model here) judge.py MockJudge (keyword, offline) + LLMJudge protocol llm.py batched-judge & suggestion prompts (versioned with rules) fixtures/*.yaml labelled briefs = the regression corpus / CI immune system app/ the FastAPI service main.py routes, rate limit, CORS; mounts site/ at / scorer.py mock/LLM orchestration + Redis verdict cache site/ THE public pages: landing, console, rules — served both by GitHub Pages and by the service itself (one surface) CLAUDE.md · PLAN.md bootstrap + phased mission for an agentic coding session GOVERNANCE.md · CONTRIBUTING.md · CODEOWNERS · LICENSE the open-bar machinery (MIT) docker-compose.yml api + redis (the only stateful dependency: ephemeral cache)
cp .env.example .env # add a spend-capped PB_OPENROUTER_API_KEY
make up # docker compose up --build -d (api + redis) make health # GET /v1/healthz open http://localhost:8000 # the console (mock judge works with no key)
Without an API key the service runs mock-only (instant keyword engine, fully deterministic) — enough to develop against and to run the whole test suite. Add the key to unlock the llm judge and /v1/suggest.
The console can import PDF, UTF-8 TXT and Markdown documents up to 10 MB (10,000,000 bytes). Text extraction runs locally using the vendored PDF.js display API and worker; the original file is not uploaded. Review the extracted text before explicitly scoring with AI. Imported-document scoring sets no_cache: true.
The API's separate text limit defaults to 1,000,000 characters (PB_REQUEST_MAX_CHARS). Existing environment overrides still apply. Provider context limits may be lower; a successful import does not guarantee that every model can judge the document. Text is never silently truncated or summarised. PDF extraction is limited to 1,000 pages and 60 seconds; pages without extractable text, password-protected PDFs and malformed files are refused. Run OCR or remove blank pages before import when needed. There is no multipart/file storage API.
POST /v1/score
{ "brief": "…", "locale": "it", "judge": "mock" } // judge: "mock" | "llm"
{ "score": 92.0, "band": "Directory-ready", "decision": "blocked",
"decision_label": "Blocked — hard requirements unmet", "gate": { "passed": false, "missing": ["anonymised"] }, "verdicts": [ { "rule_id": "anonymised", "status": "fail", "confidence": 0.8, "quote": "Stripe … mara@acme.it", "note": "identifying info present", "weight": 8, "severity": "high", "gate": "pass" }, … ], "review_required": false, "low_confidence": [], "ruleset_version": "1.0.0+83107baec655", "engine": "brief-bar@1.0.0+83107baec655", "judge": "mock", "cached": false }
The `ruleset_version` is your audit trail: it pins exactly which bar judged a
brief, and every verdict carries a verbatim quote from the brief as evidence — inspectable by a human long after any particular model is gone. (The mock judge is reproducible forever; the LLM judge runs at temperature 0 and is cached by (ruleset_version, model, brief), but temperature 0 is not a determinism guarantee across provider updates — the quotes are the part of the trail that never expires.)
Welance uses OpenRouter (PB_OPENROUTER_API_KEY). Publish scoring runs on deepseek/deepseek-v4-pro; interactive suggestion generation runs on google/gemini-3.1-flash-lite. Self-hosters may still configure the optional direct-Anthropic adapter, but it is not part of the Welance deployment. With OpenRouter, requests may pick a model from the server's allowlist (PB_OPENROUTER_MODELS, exact vendor-prefixed slugs, comma-separated); anything else is rejected with 422. The resolved model is returned in every score for a reproducible audit trail. Suggestion generation may use a lower-latency model selected by PB_SUGGEST_MODEL. Single-rule suggestions are editable human choices and default to one generation call; set PB_SUGGEST_VERIFY=true to restore a second LLM review. The authoritative score and the multi-gap repair loop keep their verification behavior. Suggestion responses name their verifier model when one ran. The service reuses its OpenRouter connection pool and applies separate bounded output ceilings (PB_SUGGEST_MAX_TOKENS, PB_SUGGEST_ALL_MAX_TOKENS, and PB_VERIFIER_MAX_TOKENS) because short suggestion JSON does not need the judge's larger allowance. Successful service-funded suggestions are cached; BYOK calls always bypass that shared cache.
The judge normally asks for all fourteen verdicts in one provider call. PB_JUDGE_BATCH_SIZE=5 instead runs deterministic 5/5/4 rule batches with at most PB_JUDGE_CONCURRENCY=3 calls in flight, then merges them before the same deterministic aggregation. It is an operational latency option, not a scoring mode: any incomplete or failed batch refuses the entire score. Keep it at its default 0 until the live make test-llm-batching comparison has passed for the deployed model.
Bring your own key: send X-LLM-Key: and the call runs on your key — any valid OpenRouter model slug is allowed unless this deployment sets PB_BYOK_MODELS (you pay), used per request, never stored or logged. BYOK scoring deliberately bypasses the shared verdict cache, so the supplied key always funds a fresh call. Use a spend-capped key. The console exposes this as an optional field in live mode.
Sending a key to somebody else's server deserves more than that paragraph. Every line that touches it, where it provably is not, and the honest limits are at briefs.welance.com/security.html; the claim is enforced by tests/test_byok_leak.py, which fails if the key ever reaches a log, a cache write, or a response.
Other endpoints:
POST /v1/suggest {brief, rule_id, locale, model?} → tailored fixes for one gap (LLM).POST /v1/suggest/all {brief, rule_ids?, locale, model?} → one fix per failing gap; omit rule_ids to auto-detect (LLM).GET /v1/rules → the full catalogue (id, title, weight, gate, criteria, references) for the directory UI.GET /v1/models → the enabled judge models (default + available) for a model picker.GET /v1/healthz → service release, ruleset version, engine + LLM availability.GET / → the interactive console.Suggestion responses include X-PB-Generation-Ms, X-PB-Verification-Ms, X-PB-Cached, X-PB-Cache-Ms, X-PB-Model, and the standard Server-Timing header, so callers can distinguish model latency from network/UI latency without exposing prompts or document contents. /v1/healthz also reports whether the optional Redis cache/rate-limit store is currently connected.
https://briefs.welance.com/mcp is a free remote MCP server (Streamable HTTP, stateless JSON). No model of ours runs. Your assistant's own model judges the brief with the service judge's own prompt; the bar's code validates those verdicts and does the arithmetic with the same engine as /v1/score.
| tool | what it does |
|---|---|
get_rules | the live catalogue: criteria, weights, gate, policy contexts, status scores, bands, version |
get_brief_template | a Markdown brief built from the live rules, with the inputs each section needs |
get_judge_prompt | the judge prompt (word for word the service's) + the verdict JSON Schema, for your model |
get_improvement_prompt | a gate-first working order for your model to improve the brief |
check_brief | deterministic checks only (contacts, stated budget/timeline, data cues, placeholders) — semantic coverage is incomplete, never a score |
aggregate_verdicts | validates your model's verdicts (every rule once, verbatim quotes, live version) and aggregates them |
bar_status | live ruleset version and capabilities |
Also as prompts (score_with_your_model — the whole workflow, gate first — judge_brief, improve_brief, brief_template) and resources (perfect-brief://rules, …/template, …/judge-prompt, …/verdict-schema). The same contract is plain HTTP at /v1/byo/* (see /docs).
Advisory, never authority. An aggregated result is tagged evaluation_source: "client", authoritative: false, with the ruleset version, evidence errors and pattern conflicts, and a *Find a team on welance/directory →* link (PB_DIRECTORY_URL). It cannot authorise publication: the welance/directory scores every brief itself on /v1/score.
Claude (claude.ai, Desktop): Settings → Connectors → *Add custom connector* → https://briefs.welance.com/mcp. Claude Code:
claude mcp add --transport http perfect-brief https://briefs.welance.com/mcp
ChatGPT: Settings → Apps & Connectors → Advanced → enable developer mode → *Create* → URL https://briefs.welance.com/mcp, no authentication (availability depends on the plan).
Cursor (~/.cursor/mcp.json or .cursor/mcp.json):
{ "mcpServers": { "perfect-brief": { "url": "https://briefs.welance.com/mcp" } } }
VS Code (.vscode/mcp.json, or *MCP: Add Server…* → HTTP):
{ "servers": { "perfect-brief": { "type": "http", "url": "https://briefs.welance.com/mcp" } } }
Local (stdio) — same tools, f
Nur der Anfang wird gezeigt; den Rest findest du im Repo