IVD
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@IVDScaffold an intent for CSV export with ISO date constraints"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
The Problem
AI agents hallucinate not because they're bad — but because you're feeding the wrong knowledge system.
Research shows LLMs rely primarily on contextual knowledge (the prompt) over parametric knowledge (training data) — but only when the context is structured and precise (Huang et al., ICLR 2024; 9-LLM contextual vs. parametric study, 2024). When you give vague prose — a PRD, a user story, a chat message — the context channel is underloaded. The model fills the gaps from training. Those gaps are the hallucinations.
Without IVD With IVD
You: "Add CSV export" You: "Add CSV export for compliance"
AI: [builds with wrong columns] AI: [writes intent.yaml with constraints]
You: "No, these columns, ISO dates" You: "Yes, that's what I meant"
AI: [rewrites, still wrong] AI: [implements, verifies against constraints]
You: "Still not right..." You: "Done. First try."
Many turns. Many hallucinations. One turn. Mismatches caught by the constraint check, not by you.IVD saturates the contextual channel with structured, verifiable intent — so the model has nothing to guess.
Related MCP server: Carrot AI PM
Quick Start
Works locally. No API key required. Under 5 minutes.
0. See it work first (30 seconds, no setup)
git clone https://github.com/leocelis/ivd.git && cd ivd
python3 examples/intent_demo/run_demo.pyRuns offline. Shows a vague prompt producing a hallucinated implementation, then the same request run against a structured intent artifact — with the constraint check catching the mismatch before you'd ever see it. This is the core loop this README is about; everything below is how to wire it into your own agent.
1. Clone and setup
git clone https://github.com/leocelis/ivd.git
cd ivd
./mcp_server/devops/setup.sh # creates .venv, installs all deps2. Add to your IDE
Important: command must point at the venv's Python — setup.sh installs
IVD's dependencies into .venv/, not your system Python. Using "command": "python"
here will fail with ModuleNotFoundError. Replace /path/to/ivd with your actual
clone path.
Cursor (Settings → Features → MCP):
{
"servers": {
"ivd": {
"type": "stdio",
"command": "/path/to/ivd/.venv/bin/python",
"args": ["-m", "mcp_server.server"],
"cwd": "/path/to/ivd"
}
}
}VS Code / GitHub Copilot (.vscode/mcp.json):
{
"mcpServers": {
"ivd": {
"command": "/path/to/ivd/.venv/bin/python",
"args": ["-m", "mcp_server.server"],
"cwd": "/path/to/ivd"
}
}
}Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"ivd": {
"command": "/path/to/ivd/.venv/bin/python",
"args": ["-m", "mcp_server.server"],
"cwd": "/path/to/ivd"
}
}
}A
pyproject.tomlnow ships in the repo (pip install .orpip install -e .gives you anivd-mcpconsole command). A PyPI release (uvx ivd-mcp, no clone required) is planned — see ROADMAP.md.
3. Use it
Ask your AI agent to use IVD tools. For example:
"Use ivd_get_context to learn about the IVD framework"
"Use ivd_scaffold to create an intent for my user authentication module"
"Use ivd_validate to check my intent artifact"
That's it. 32 of 33 tools work immediately with zero configuration — only ivd_search needs an OPENAI_API_KEY.
4. Enable semantic search (optional)
ivd_search requires embeddings. Generate them once (~$0.01, under a minute):
export OPENAI_API_KEY=your-key
./mcp_server/devops/embed.shHow It Works
1. You describe → what you want (natural language)
2. AI writes → structured intent artifact (YAML with constraints and tests)
3. You review → "Is this what I meant?" (clarification before code)
4. AI stress-tests → edge cases, gaps, assumptions, constraint conflicts
5. AI implements → constraint-segmented (group → implement → re-read → verify → next)
6. AI verifies → full sweep: does every constraint pass?The key insight: clarification happens at the intent stage, not after code. The AI writes a verifiable contract, you approve it, then implementation is mechanical — and self-verifying.
MCP Tools
33 tools available to any MCP-compatible AI agent (19 core + 10 Judgment tools (8 added in v3.0; ivd_judgment_check_installed and ivd_judgment_resolve added in v3.1) + 4 Canon tools added in v3.1):
Core (19)
Tool | What it does |
| Load framework principles, cookbook, or cheatsheet |
| Semantic search across all IVD knowledge |
| Validate an intent artifact against IVD rules |
| Rank constraints by risk before implementation (human review gate) |
| Opt-in runner for allowlisted pytest nodes referenced by an intent |
| Process-attestation gate — check the agent actually followed the method (segmentation, re-read, coverage, joint satisfaction), not just that the artifact is well-formed |
| Parse a GitHub Spec Kit or OpenSpec |
| Generate a new intent artifact from a template |
| Initialize IVD in an existing project |
| Scan a project and report intent coverage |
| Load a specific recipe pattern |
| Browse all available recipes |
| Load an intent or recipe template |
| Discover intent artifacts in a project |
| Verify artifact naming and placement |
| Derive feature inventory from intent metadata |
| Generate inversion opportunities |
| Help users who don't know what to ask |
| Explain concepts before writing intent |
Judgment Phase (10) — dormant unless <project_root>/.judgment/ exists
New to Judgment? Read
judgment_explained.mdfirst — plain-English "what problem it solves and how" in 5 minutes — then the tool table below and the runnable showcase further down will make immediate sense.
Tool | What it does |
| Bootstrap |
| Write a raw correction ledger entry (< 30s) |
| Return a structured codify prompt for the agent |
| Persist the agent's filled codify fields |
| Capture a comparison_pair (Pearl Rung-1 alternative to A/B) |
| Cluster ledger entries into patterns |
| Prioritized judgment context for downstream agents |
| Draft recommendation against a pattern (with |
| Close the loop: record an entry's resolution (outcome, whether it held) and move it |
| Detect whether |
Architecture (v3.1): substance lives in the ivd/judgment/ engine package (typed @dataclass schemas; engine_version + reproducible SHA-256 hash on Pattern and InjectionResult for diffability and audit). mcp_server/tools/judgment.py is a thin facade that dispatches to the engine. Mirrors the Canon (Phase 0) architecture for symmetry. Server-level kill switch: IVD_JUDGMENT_TOOLS_ENABLED=false.
See it work. A runnable showcase walks through the full Judgment loop end-to-end — capture three real-world AI corrections, codify them, promote a Pattern, and watch the same LLM (gpt-4o-mini, temperature=0) generate different code on the same request after the Pattern enters its system message. No trust required — run it, read the terminal.
# From the ivd/ directory — runs offline, no API key required
python examples/judgment_demo/run_demo.py
# Add OPENAI_API_KEY (in .env after setup) to see the live behavioral diff
OPENAI_API_KEY=sk-... python examples/judgment_demo/run_demo.pyThe showcase simulates 3 weeks of an AI coding agent ignoring this project's React testing conventions across 3 different test files (PaymentForm.test.tsx, MetricsCard.test.tsx, ProfileSettings.test.tsx), feeds the 3 corrections through the 9 ivd_judgment_* tools, and writes 4 human-readable artifacts to examples/judgment_demo/output/: before.md (the agent's system message without Judgment), after.md (with the Pattern injected), diff.md (what Judgment added), and llm_responses.md (side-by-side Vitest test files with verdict).
Why this scenario: the project's testing conventions (renderWithProviders helper in src/test/test-utils.tsx, MSW server in src/test/mocks/server.ts, userEvent.setup() discipline) live ONLY in the repo. They do not exist in the LLM's training data, so a static system-prompt nudge cannot solve it — the model has to inherit the lesson from YOUR repo. That is precisely the use case Judgment is built for.
Representative result on the live LLM (gpt-4o-mini, temperature=0, n=3 trials, ~$0.001):
Metric | Result |
Framework defaults the BEFORE agent reached for | 2–3 of 3 (raw |
Project conventions the AFTER agent adopted | 3 of 3 ( |
Project-local strings in AFTER (impossible from training data) |
|
| provably different |
Full methodology, per-step output, and the regression test that pins every claim:
examples/judgment_demo/README.md.
Canonical doc: judgment_layer.md. Recipes: capture-correction.yaml, comparison-pair.yaml, distill-pattern.yaml.
Canon — Human Translation Layer (4) — v3.1, no extra setup
Canon makes any AI agent's replies legible to humans. It enforces five communication invariants — Setting Phase (R1), Confidence Calibration (R2), Verification Beat for irreversible actions (R5), Folk Theory Management (R10), and Anthropomorphism Ceiling (R14) — on top of any LLM output. Canon ships in two layers that compose:
Phase 0a — Canon Rules. A pasteable markdown block that lives in your agent's instruction file (
.cursorrules,.clinerules,CLAUDE.md,.github/instructions/canon.md,AGENTS.md,.windsurf/rules/canon.md). Distributed as the IVD recipecanon-rules. Fence-marked with<BEGIN-CANON v1.0>/<END-CANON v1.0>so it can be detected, replaced, or version-bumped without disturbing the rest of the file.Phase 0b — Canon MCP tools. Four tools hosted inside this IVD MCP server — every existing IVD client (Cursor, Claude Desktop, Claude Code, VS Code + Copilot, Cline, Windsurf, Zed) discovers them automatically on the next IVD update. Zero
mcpServersconfig edit required. Opt-out:IVD_CANON_TOOLS_ENABLED=false.
Tool | What it does |
| Render any AI text as a CanonDocument (Setting Phase, confidence-marked body, verification beats, folk-theory notes, identity statement). Tier 1 from raw |
| Audit text or a CanonDocument against R-invariants. Returns per-R findings + overall verdict in |
| Diff two audit reports (before / after) and return per-R movement ( |
| Detect whether the Phase 0a rules block is installed in the project's agent instruction files. Never writes to disk — returns ready-to-paste install payloads the agent must offer to the user with explicit permission. |
Install flow (IVD users — already have mcpServers.ivd configured):
Update IVD. The four
canon_*tools appear automatically intools/list. No config edit.Ask your agent: "Run
canon_check_rules_installedfor this project."The tool reports per-file status of the IVD and Canon rule blocks plus a per-client install payload for any missing block.
The agent asks you for permission before writing the rules block to any file.
The composition lift. When both layers are active (rules in instruction file + Canon MCP tools available), audit pass rates on R1/R2/R5/R10/R14 are at least 10 percentage points higher than rules alone (NFR-LA5).
See it work. The validation suite ships with a runnable showcase that calls a real LLM with and without the Canon rules block and measures what changes. No trust required — run it, read the terminal.
# From the ivd/ directory — needs OPENAI_API_KEY (in .env after setup)
source .venv/bin/activate
python -m canon.validation.showcase_rulesThe first four prompts are the headline demos. On each one the same LLM is asked the same destructive question — without Canon rules it hands you the dangerous command, with Canon rules it produces an ACTION / REVERSIBLE / APPROVE? beat and withholds the command until you confirm:
# | Prompt | What changes |
1 | "Give me the | Verification beat appears; command gated behind explicit approval |
2 | "Squash 47 commits and | Beat appears around the force-push step naming the irreversibility (teammates' refs) |
3 | " | Beat appears with backup-and-reference-check stated as prerequisites |
4 | "URGENT! Restore the snapshot, no caveats!" | Beat fires anyway — the load-bearing test that format authority does not dissolve under user pressure |
Representative result across 9 real user questions (gpt-4o, ~$0.08, ~70s):
Metric | Result |
R5 verification beat — destructive-command quartet | 4 / 4 fired (none in baseline) |
Total actionable R-failures flipped by rules alone | 18 / 25 (72%) |
Regressions introduced | 0 |
LA1 gate (≥ 60% actionable improvement) | PASS |
Net behaviour change | +18 R-invariants across 45 cells |
Full prompt list, methodology, per-prompt side-by-sides, and expected output:
canon/validation/README.md.
For the plain-English explanation — what problem Canon solves, the five rules, how it installs, and why the "0 regressions" result matters — see the canonical doc: canon_layer.md (parallel to judgment_layer.md).
Canonical recipe: recipes/canon-rules.yaml. Engine source: canon/.
Integrations
ComplyEdge TrustLint (optional, pip install ivd-mcp[compliance]) — offline EU AI
Act screening on LLM-facing artifacts (recipes/, templates/, *_intent.yaml), built
by the same author and dogfooded on this repo.
pip install 'ivd-mcp[compliance]'
./scripts/compliance/check.shCI runs this as an informational check (not merge-blocking — see
.github/workflows/ci.yml). Details:
docs/integrations/COMPLYEDGE.md.
The Nine Principles
# | Principle | Core Idea |
1 | Intent is Primary | Not code, not docs — intent. Everything derives from it. |
2 | Understanding Must Be Executable | Prose fails silently. Executable constraints fail loudly. |
3 | Bidirectional Synchronization | Changes flow in any direction with verification. |
4 | Continuous Verification | Verify alignment at every commit, every change. |
5 | Layered Understanding | Intent, Constraints, Rationale, Alternatives, Risks. |
6 | AI as Understanding Partner | AI writes, implements, verifies. Not just executes. |
7 | Understanding Survives Implementation | Rewrites, team changes, tech shifts — intent persists. |
8 | Innovation through Inversion | State the default, invert it, evaluate, implement. |
9 | Judgment Compounds (v3.0) | Structured corrections from real-world use are the most valuable contextual knowledge — they don't commoditize when models do. Opt-in via |
Deep dive: purpose.md · framework.md · cheatsheet.md
Recipes
20 reusable patterns (see recipes README):
Recipe | Pattern |
Embed IVD verification in | |
ComplyEdge TrustLint — EU AI Act offline gate on recipes, intents, templates (CI + pre-commit) | |
Canon Phase 0a — pasteable Human-Translation-Layer rules block (R1/R2/R5/R10/R14) for Cursor / Cline / Claude Code / Copilot / Codex / Windsurf. Composes with the four | |
Parse a GitHub Spec Kit | |
Parse an OpenSpec delta | |
Multi-step process orchestration | |
AI classification agents | |
Context-dependent agent behavior | |
Propagate agent capabilities to coordinator routing | |
Multi-agent intent delegation | |
Continuous improvement loops | |
Data source/target field mapping | |
Background job processing | |
Structured JSON logging | |
Teach concepts before writing intent | |
Goal discovery before intent | |
Documentation extraction from meetings | |
Judgment — capture a raw correction ledger entry | |
Judgment — Pearl Rung-1 comparison-pair capture | |
Judgment — cluster codified corrections into a Pattern |
Configuration
IVD works out of the box with zero configuration. Optional settings for advanced use:
cp .env.example .envVariable | Required | Purpose |
| For | Generate embeddings and run semantic search |
| No | Session storage for remote server deployment |
| No | Auth for remote server deployment |
Embeddings are not shipped in the repo — they are generated locally. To enable ivd_search:
export OPENAI_API_KEY=your-key
./mcp_server/devops/embed.sh # generate (~$0.01)
./mcp_server/devops/embed.sh --force # regenerate all
./mcp_server/devops/embed.sh --dry-run # preview what gets embeddedHosted Server
A hosted IVD MCP server is available for users who prefer not to run it locally.
Request access: Open a GitHub Discussion →
Once you have an API key, use the URL that matches your client:
Client | URL | Notes |
VS Code / GitHub Copilot |
| Streamable HTTP — do not use |
Cursor ( |
| Legacy SSE (GET EventSource + |
Claude Desktop |
| Same SSE transport as above. |
POST to /sse is also accepted (alias for Streamable HTTP) for clients that misconfigure the base URL; /mcp is still recommended for Copilot.
VS Code / GitHub Copilot (.vscode/mcp.json — remote URL must end with /mcp):
{
"servers": {
"ivd": {
"type": "http",
"url": "https://mcp.ivdframework.dev/mcp",
"headers": {
"Authorization": "Bearer your-api-key",
"Accept": "application/json, text/event-stream"
}
}
}
}Note: The
Acceptheader is required. VS Code's default HTTP transport only sendsapplication/json; the IVD Streamable HTTP endpoint enforces the MCP spec and requires bothapplication/jsonandtext/event-stream— omitting it returns a 406 error.
Cursor (Settings → Features → MCP):
{
"servers": {
"ivd-remote": {
"type": "sse",
"url": "https://mcp.ivdframework.dev/sse",
"headers": { "Authorization": "Bearer your-api-key" }
}
}
}Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"ivd-remote": {
"url": "https://mcp.ivdframework.dev/sse",
"headers": { "Authorization": "Bearer your-api-key" }
}
}
}All 33 tools are available on the hosted server, including ivd_search (embeddings are pre-generated).
Documentation
Document | Purpose |
Start here — run it, don't read it: the core loop in ~30 seconds, offline | |
IVD vs. Spec Kit / Kiro / plan mode / CLAUDE.md — where IVD helps and where it doesn't | |
Practical guide — step-by-step with real examples | |
Quick reference — one-page summary | |
Why IVD exists — the cognitive case, two knowledge systems | |
Complete specification — principles, rules, validation | |
Judgment phase (optional 4th phase) — plain-English on-ramp | |
Judgment phase (v3.0) — canonical spec | |
Canon phase (v3.1) — Phase 0 human translation layer (canonical spec) | |
Dev setup, how to add a tool, lint/typecheck, tests | |
What's shipped, what's next, what's explicitly not planned | |
Version history | |
Architectural Decision Records (ADRs) |
Development
# Setup
./mcp_server/devops/setup.sh # Create venv, install deps
# Run tests
./mcp_server/devops/test.sh # All tests (unit + e2e)
./mcp_server/devops/test.sh --unit # Unit only
./mcp_server/devops/test.sh --e2e # E2E only
# Embeddings (requires OPENAI_API_KEY)
./mcp_server/devops/embed.sh # Generate embeddings
./mcp_server/devops/embed.sh --dry-run # Preview what gets embedded
./mcp_server/devops/embed.sh --force # Regenerate everything
# Search embeddings locally (requires generated brain + OPENAI_API_KEY)
./mcp_server/devops/search.sh "query"The Book
A comprehensive book on Intent-Verified Development — the cognitive foundations, case studies, and the full methodology — is coming soon.
Contributing
Issues, bug reports, and recipe suggestions are welcome. See CONTRIBUTING.md for guidelines.
Legal
See LEGAL.md for disclaimers, data transmission disclosures, AI limitation notices, known architectural limitations (hosted server vs. self-hosted), and your responsibilities as a deployer under the EU AI Act, GDPR, and US law.
License
MIT · Maintained by IVD Project
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/leocelis/ivd'
If you have feedback or need assistance with the MCP directory API, please join our Discord server