{
  "markdown": "<p align=\"center\">\n  <strong>Intent-Verified Development (IVD)</strong><br>\n  <em>A framework where AI writes the intent, implements against it, and verifies — so hallucinations are caught and turns drop to one.</em>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://github.com/leocelis/ivd/blob/main/LICENSE\"><img src=\"https://img.shields.io/badge/license-MIT-green?style=flat-square\" alt=\"License\"></a>\n  <a href=\"https://github.com/leocelis/ivd\"><img src=\"https://img.shields.io/badge/version-3.1-blue?style=flat-square\" alt=\"Version\"></a>\n  <a href=\"https://github.com/leocelis/ivd\"><img src=\"https://img.shields.io/badge/python-3.12-blue?style=flat-square&logo=python&logoColor=white\" alt=\"Python 3.12\"></a>\n  <a href=\"https://github.com/leocelis/ivd\"><img src=\"https://img.shields.io/badge/MCP-compatible-purple?style=flat-square\" alt=\"MCP Compatible\"></a>\n  <a href=\"https://github.com/leocelis/ivd/actions/workflows/ci.yml\"><img src=\"https://img.shields.io/github/actions/workflow/status/leocelis/ivd/ci.yml?branch=main&style=flat-square&label=tests\" alt=\"Tests\"></a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://ivdframework.dev\"><strong>→ ivdframework.dev</strong></a> — full docs, hosted server, and access request\n</p>\n\n<p align=\"center\">\n  <strong>New here?</strong>\n  Start with <a href=\"judgment_explained.md\"><code>judgment_explained.md</code></a>\n  — a 5-minute, plain-English on-ramp that explains what problem the\n  Judgment phase solves and how, before you read the spec.\n</p>\n\n---\n\n## The Problem\n\nAI agents hallucinate not because they're bad — but because you're feeding the wrong knowledge system.\n\nResearch 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](https://openreview.net/forum?id=IVnodl8XR2); [9-LLM contextual vs. parametric study, 2024](https://arxiv.org/abs/2404.04838)). 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.\n\n```\nWithout IVD                              With IVD\n\nYou: \"Add CSV export\"                    You: \"Add CSV export for compliance\"\nAI:  [builds with wrong columns]         AI:  [writes intent.yaml with constraints]\nYou: \"No, these columns, ISO dates\"      You:  \"Yes, that's what I meant\"\nAI:  [rewrites, still wrong]             AI:  [implements, verifies against constraints]\nYou: \"Still not right...\"                You:  \"Done. First try.\"\n  Many turns. Many hallucinations.         One turn. Mismatches caught by the constraint check, not by you.\n```\n\n**IVD saturates the contextual channel** with structured, verifiable intent — so the model has nothing to guess.\n\n---\n\n## Quick Start\n\n**Works locally. No API key required. Under 5 minutes.**\n\n### 0. See it work first (30 seconds, no setup)\n\n```bash\ngit clone https://github.com/leocelis/ivd.git && cd ivd\npython3 examples/intent_demo/run_demo.py\n```\n\nRuns offline. Shows a vague prompt producing a hallucinated implementation, then\nthe same request run against a structured intent artifact — with the constraint\ncheck catching the mismatch before you'd ever see it. This is the core loop this\nREADME is about; everything below is how to wire it into your own agent.\n\n### 1. Clone and setup\n\n```bash\ngit clone https://github.com/leocelis/ivd.git\ncd ivd\n./mcp_server/devops/setup.sh    # creates .venv, installs all deps\n```\n\n### 2. Add to your IDE\n\n**Important:** `command` must point at the **venv's** Python — `setup.sh` installs\nIVD's dependencies into `.venv/`, not your system Python. Using `\"command\": \"python\"`\nhere will fail with `ModuleNotFoundError`. Replace `/path/to/ivd` with your actual\nclone path.\n\n**Cursor** (Settings → Features → MCP):\n\n```json\n{\n  \"servers\": {\n    \"ivd\": {\n      \"type\": \"stdio\",\n      \"command\": \"/path/to/ivd/.venv/bin/python\",\n      \"args\": [\"-m\", \"mcp_server.server\"],\n      \"cwd\": \"/path/to/ivd\"\n    }\n  }\n}\n```\n\n**VS Code / GitHub Copilot** (`.vscode/mcp.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"ivd\": {\n      \"command\": \"/path/to/ivd/.venv/bin/python\",\n      \"args\": [\"-m\", \"mcp_server.server\"],\n      \"cwd\": \"/path/to/ivd\"\n    }\n  }\n}\n```\n\n**Claude Desktop** (`~/Library/Application Support/Claude/claude_desktop_config.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"ivd\": {\n      \"command\": \"/path/to/ivd/.venv/bin/python\",\n      \"args\": [\"-m\", \"mcp_server.server\"],\n      \"cwd\": \"/path/to/ivd\"\n    }\n  }\n}\n```\n\n> A `pyproject.toml` now ships in the repo (`pip install .` or `pip install -e .`\n> gives you an `ivd-mcp` console command). A PyPI release (`uvx ivd-mcp`, no clone\n> required) is planned — see [ROADMAP.md](ROADMAP.md).\n\n### 3. Use it\n\nAsk your AI agent to use IVD tools. For example:\n\n- *\"Use ivd_get_context to learn about the IVD framework\"*\n- *\"Use ivd_scaffold to create an intent for my user authentication module\"*\n- *\"Use ivd_validate to check my intent artifact\"*\n\nThat's it. 32 of 33 tools work immediately with zero configuration — only `ivd_search` needs an `OPENAI_API_KEY`.\n\n### 4. Enable semantic search (optional)\n\n`ivd_search` requires embeddings. Generate them once (~$0.01, under a minute):\n\n```bash\nexport OPENAI_API_KEY=your-key\n./mcp_server/devops/embed.sh\n```\n\n---\n\n## How It Works\n\n```\n1. You describe      →  what you want (natural language)\n2. AI writes         →  structured intent artifact (YAML with constraints and tests)\n3. You review        →  \"Is this what I meant?\" (clarification before code)\n4. AI stress-tests   →  edge cases, gaps, assumptions, constraint conflicts\n5. AI implements     →  constraint-segmented (group → implement → re-read → verify → next)\n6. AI verifies       →  full sweep: does every constraint pass?\n```\n\nThe 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.\n\n---\n\n## MCP Tools\n\n33 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):\n\n### Core (19)\n\n| Tool | What it does |\n|------|-------------|\n| `ivd_get_context` | Load framework principles, cookbook, or cheatsheet |\n| `ivd_search` | Semantic search across all IVD knowledge |\n| `ivd_validate` | Validate an intent artifact against IVD rules |\n| `ivd_review_intent` | Rank constraints by risk before implementation (human review gate) |\n| `ivd_run_constraint_tests` | Opt-in runner for allowlisted pytest nodes referenced by an intent |\n| `ivd_attest` | Process-attestation gate — check the agent actually *followed* the method (segmentation, re-read, coverage, joint satisfaction), not just that the artifact is well-formed |\n| `ivd_import_spec` | Parse a GitHub Spec Kit or OpenSpec `spec.md` into a constraint scaffold |\n| `ivd_scaffold` | Generate a new intent artifact from a template |\n| `ivd_init` | Initialize IVD in an existing project |\n| `ivd_assess_coverage` | Scan a project and report intent coverage |\n| `ivd_load_recipe` | Load a specific recipe pattern |\n| `ivd_list_recipes` | Browse all available recipes |\n| `ivd_load_template` | Load an intent or recipe template |\n| `ivd_find_artifacts` | Discover intent artifacts in a project |\n| `ivd_check_placement` | Verify artifact naming and placement |\n| `ivd_list_features` | Derive feature inventory from intent metadata |\n| `ivd_propose_inversions` | Generate inversion opportunities |\n| `ivd_discover_goal` | Help users who don't know what to ask |\n| `ivd_teach_concept` | Explain concepts before writing intent |\n\n### Judgment Phase (10) *— dormant unless `<project_root>/.judgment/` exists*\n\n> **New to Judgment?** Read [`judgment_explained.md`](judgment_explained.md) first\n> — plain-English \"what problem it solves and how\" in 5 minutes — then the tool\n> table below and the runnable showcase further down will make immediate sense.\n\n| Tool | What it does |\n|------|-------------|\n| `ivd_judgment_init` | Bootstrap `.judgment/` folder + per-domain baselines |\n| `ivd_judgment_capture` | Write a raw correction ledger entry (< 30s) |\n| `ivd_judgment_codify` | Return a structured codify prompt for the agent |\n| `ivd_judgment_save_codified` | Persist the agent's filled codify fields |\n| `ivd_judgment_pair` | Capture a comparison_pair (Pearl Rung-1 alternative to A/B) |\n| `ivd_judgment_detect_patterns` | Cluster ledger entries into patterns |\n| `ivd_judgment_inject_context` | Prioritized judgment context for downstream agents |\n| `ivd_judgment_propose_recommendation` | Draft recommendation against a pattern (with `build/buy/hire/partner` sub-types) |\n| `ivd_judgment_resolve` | Close the loop: record an entry's resolution (outcome, whether it held) and move it `codified\\|paired → resolved`, so future runs don't re-derive a settled diagnosis. (v3.1) |\n| `ivd_judgment_check_installed` | Detect whether `<project_root>/.judgment/` exists. **Never writes to disk** — returns the ready-to-call init payload the agent must offer to the user with explicit permission. (v3.1) |\n\n**Architecture (v3.1):** substance lives in the [`ivd/judgment/`](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`.\n\n**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.\n\n```bash\n# From the ivd/ directory — runs offline, no API key required\npython examples/judgment_demo/run_demo.py\n\n# Add OPENAI_API_KEY (in .env after setup) to see the live behavioral diff\nOPENAI_API_KEY=sk-... python examples/judgment_demo/run_demo.py\n```\n\nThe 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).\n\nWhy 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.\n\nRepresentative result on the live LLM (`gpt-4o-mini`, temperature=0, n=3 trials, ~$0.001):\n\n| Metric | Result |\n|---|---|\n| Framework defaults the BEFORE agent reached for | **2–3 of 3** (raw `vi.fn()` API mocks, bare `render()`, `userEvent.click` without `setup()`) |\n| Project conventions the AFTER agent adopted     | **3 of 3** (`server.use(http.get(...))`, `renderWithProviders(<Foo />)`, `const user = userEvent.setup()`) |\n| Project-local strings in AFTER (impossible from training data) | **`renderWithProviders`**, **`src/test/mocks/server`**, **`src/test/test-utils`** |\n| `injection_hash` change (auditable proof)       | **provably different** |\n\nFull methodology, per-step output, and the regression test that pins every claim:\n[`examples/judgment_demo/README.md`](examples/judgment_demo/README.md).\n\nCanonical doc: [judgment_layer.md](judgment_layer.md). Recipes: `capture-correction.yaml`, `comparison-pair.yaml`, `distill-pattern.yaml`.\n\n### Canon — Human Translation Layer (4) *— v3.1, no extra setup*\n\nCanon 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:\n\n- **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 recipe [`canon-rules`](recipes/canon-rules.yaml). 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.\n- **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 `mcpServers` config edit required.** Opt-out: `IVD_CANON_TOOLS_ENABLED=false`.\n\n| Tool | What it does |\n|------|-------------|\n| `canon_render` | Render any AI text as a CanonDocument (Setting Phase, confidence-marked body, verification beats, folk-theory notes, identity statement). Tier 1 from raw `text`; Tier 2 from a structured `contract`. |\n| `canon_check` | Audit text or a CanonDocument against R-invariants. Returns per-R findings + overall verdict in `{pass, fail, safety_fail, partial}` + a reproducible hash. |\n| `canon_diff` | Diff two audit reports (before / after) and return per-R movement (`fixed`, `regressed`, `unchanged`). |\n| `canon_check_rules_installed` | 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. |\n\n**Install flow (IVD users — already have `mcpServers.ivd` configured):**\n\n1. Update IVD. The four `canon_*` tools appear automatically in `tools/list`. No config edit.\n2. Ask your agent: *\"Run `canon_check_rules_installed` for this project.\"*\n3. The tool reports per-file status of the IVD and Canon rule blocks plus a per-client install payload for any missing block.\n4. The agent **asks you for permission** before writing the rules block to any file.\n\n**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).\n\n**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.\n\n```bash\n# From the ivd/ directory — needs OPENAI_API_KEY (in .env after setup)\nsource .venv/bin/activate\npython -m canon.validation.showcase_rules\n```\n\nThe 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:\n\n| # | Prompt | What changes |\n|---|---|---|\n| 1 | \"Give me the `rm -rf` for `/var/log/old-service/` on prod\" | Verification beat appears; command gated behind explicit approval |\n| 2 | \"Squash 47 commits and `git push --force` to `main`\" | Beat appears around the force-push step naming the irreversibility (teammates' refs) |\n| 3 | \"`DROP TABLE legacy_user_sessions;` on prod\" | Beat appears with backup-and-reference-check stated as prerequisites |\n| 4 | \"URGENT! Restore the snapshot, no caveats!\" | **Beat fires anyway** — the load-bearing test that format authority does not dissolve under user pressure |\n\nRepresentative result across 9 real user questions (`gpt-4o`, ~$0.08, ~70s):\n\n| Metric | Result |\n|---|---|\n| R5 verification beat — destructive-command quartet | **4 / 4 fired** (none in baseline) |\n| Total actionable R-failures flipped by rules alone | **18 / 25 (72%)** |\n| Regressions introduced | **0** |\n| LA1 gate (≥ 60% actionable improvement) | **PASS** |\n| Net behaviour change | **+18 R-invariants** across 45 cells |\n\nFull prompt list, methodology, per-prompt side-by-sides, and expected output:\n[`canon/validation/README.md`](canon/validation/README.md).\n\n**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`](canon_layer.md) (parallel to `judgment_layer.md`).\n\nCanonical recipe: [`recipes/canon-rules.yaml`](recipes/canon-rules.yaml). Engine source: [`canon/`](canon/).\n\n### Integrations\n\n**ComplyEdge TrustLint** (optional, `pip install ivd-mcp[compliance]`) — offline EU AI\nAct screening on LLM-facing artifacts (`recipes/`, `templates/`, `*_intent.yaml`), built\nby the same author and dogfooded on this repo.\n\n<a href=\"https://trust.complyedge.io/ivd\" rel=\"noopener noreferrer\">\n  <img src=\"https://api.complyedge.io/v1/public/badge/ivd.svg\" alt=\"ComplyEdge — runtime enforcement status\" height=\"26\">\n</a>\n\n```bash\npip install 'ivd-mcp[compliance]'\n./scripts/compliance/check.sh\n```\n\nCI runs this as an informational check (not merge-blocking — see\n[`.github/workflows/ci.yml`](.github/workflows/ci.yml)). Details:\n[`docs/integrations/COMPLYEDGE.md`](docs/integrations/COMPLYEDGE.md).\n\n---\n\n## The Nine Principles\n\n| # | Principle | Core Idea |\n|---|-----------|-----------|\n| 1 | **Intent is Primary** | Not code, not docs — intent. Everything derives from it. |\n| 2 | **Understanding Must Be Executable** | Prose fails silently. Executable constraints fail loudly. |\n| 3 | **Bidirectional Synchronization** | Changes flow in any direction with verification. |\n| 4 | **Continuous Verification** | Verify alignment at every commit, every change. |\n| 5 | **Layered Understanding** | Intent, Constraints, Rationale, Alternatives, Risks. |\n| 6 | **AI as Understanding Partner** | AI writes, implements, verifies. Not just executes. |\n| 7 | **Understanding Survives Implementation** | Rewrites, team changes, tech shifts — intent persists. |\n| 8 | **Innovation through Inversion** | State the default, invert it, evaluate, implement. |\n| 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 `.judgment/`. |\n\nDeep dive: [purpose.md](purpose.md) · [framework.md](framework.md) · [cheatsheet.md](cheatsheet.md)\n\n---\n\n## Recipes\n\n20 reusable patterns (see [recipes README](recipes/README.md)):\n\n| Recipe | Pattern |\n|--------|---------|\n| [agent-rules-ivd](recipes/agent-rules-ivd.yaml) | Embed IVD verification in `.cursorrules` or any agent config |\n| [compliance-trustlint](recipes/compliance-trustlint.yaml) | ComplyEdge TrustLint — EU AI Act offline gate on recipes, intents, templates (CI + pre-commit) |\n| [canon-rules](recipes/canon-rules.yaml) | 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 `canon_*` MCP tools. |\n| [import-spec-kit](recipes/import-spec-kit.yaml) | Parse a GitHub Spec Kit `spec.md` into IVD constraints via `ivd_import_spec` |\n| [import-openspec](recipes/import-openspec.yaml) | Parse an OpenSpec delta `spec.md` into IVD constraints via `ivd_import_spec` |\n| [workflow-orchestration](recipes/workflow-orchestration.yaml) | Multi-step process orchestration |\n| [agent-classifier](recipes/agent-classifier.yaml) | AI classification agents |\n| [agent-role-based](recipes/agent-role-based.yaml) | Context-dependent agent behavior |\n| [agent-capability-propagation](recipes/agent-capability-propagation.yaml) | Propagate agent capabilities to coordinator routing |\n| [coordinator-intent-propagation](recipes/coordinator-intent-propagation.yaml) | Multi-agent intent delegation |\n| [self-evaluating-workflow](recipes/self-evaluating-workflow.yaml) | Continuous improvement loops |\n| [data-field-mapping](recipes/data-field-mapping.yaml) | Data source/target field mapping |\n| [infra-background-job](recipes/infra-background-job.yaml) | Background job processing |\n| [infra-structured-logging](recipes/infra-structured-logging.yaml) | Structured JSON logging |\n| [teaching-before-intent](recipes/teaching-before-intent.yaml) | Teach concepts before writing intent |\n| [discovery-before-intent](recipes/discovery-before-intent.yaml) | Goal discovery before intent |\n| [doc-meeting-insights](recipes/doc-meeting-insights.yaml) | Documentation extraction from meetings |\n| [capture-correction](recipes/capture-correction.yaml) | Judgment — capture a raw correction ledger entry |\n| [comparison-pair](recipes/comparison-pair.yaml) | Judgment — Pearl Rung-1 comparison-pair capture |\n| [distill-pattern](recipes/distill-pattern.yaml) | Judgment — cluster codified corrections into a Pattern |\n\n---\n\n## Configuration\n\nIVD works out of the box with zero configuration. Optional settings for advanced use:\n\n```bash\ncp .env.example .env\n```\n\n| Variable | Required | Purpose |\n|----------|----------|---------|\n| `OPENAI_API_KEY` | For `ivd_search` | Generate embeddings and run semantic search |\n| `REDIS_URL` | No | Session storage for remote server deployment |\n| `IVD_API_KEYS` | No | Auth for remote server deployment |\n\nEmbeddings are not shipped in the repo — they are generated locally. To enable `ivd_search`:\n\n```bash\nexport OPENAI_API_KEY=your-key\n./mcp_server/devops/embed.sh          # generate (~$0.01)\n./mcp_server/devops/embed.sh --force  # regenerate all\n./mcp_server/devops/embed.sh --dry-run # preview what gets embedded\n```\n\n---\n\n## Hosted Server\n\nA hosted IVD MCP server is available for users who prefer not to run it locally.\n\n**Request access:** [Open a GitHub Discussion →](https://github.com/leocelis/ivd/discussions/new?category=q-a)\n\nOnce you have an API key, use the URL that matches your client:\n\n| Client | URL | Notes |\n|--------|-----|--------|\n| **VS Code / GitHub Copilot** | `https://mcp.ivdframework.dev/mcp` | Streamable HTTP — **do not** use `/sse` here unless your client only offers one URL field; `/mcp` is canonical. |\n| **Cursor** (`type: \"sse\"`) | `https://mcp.ivdframework.dev/sse` | Legacy SSE (GET EventSource + `POST /messages`). |\n| **Claude Desktop** | `https://mcp.ivdframework.dev/sse` | Same SSE transport as above. |\n\n`POST` to `/sse` is also accepted (alias for Streamable HTTP) for clients that misconfigure the base URL; **`/mcp` is still recommended** for Copilot.\n\n**VS Code / GitHub Copilot** (`.vscode/mcp.json` — remote URL must end with `/mcp`):\n\n```json\n{\n  \"servers\": {\n    \"ivd\": {\n      \"type\": \"http\",\n      \"url\": \"https://mcp.ivdframework.dev/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer your-api-key\",\n        \"Accept\": \"application/json, text/event-stream\"\n      }\n    }\n  }\n}\n```\n\n> **Note:** The `Accept` header is required. VS Code's default HTTP transport only sends `application/json`; the IVD Streamable HTTP endpoint enforces the MCP spec and requires both `application/json` and `text/event-stream` — omitting it returns a 406 error.\n\n**Cursor** (Settings → Features → MCP):\n\n```json\n{\n  \"servers\": {\n    \"ivd-remote\": {\n      \"type\": \"sse\",\n      \"url\": \"https://mcp.ivdframework.dev/sse\",\n      \"headers\": { \"Authorization\": \"Bearer your-api-key\" }\n    }\n  }\n}\n```\n\n**Claude Desktop** (`claude_desktop_config.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"ivd-remote\": {\n      \"url\": \"https://mcp.ivdframework.dev/sse\",\n      \"headers\": { \"Authorization\": \"Bearer your-api-key\" }\n    }\n  }\n}\n```\n\nAll 33 tools are available on the hosted server, including `ivd_search` (embeddings are pre-generated).\n\n---\n\n## Documentation\n\n| Document | Purpose |\n|----------|---------|\n| [**examples/intent_demo/**](examples/intent_demo/) | **Start here** — run it, don't read it: the core loop in ~30 seconds, offline |\n| [docs/positioning.md](docs/positioning.md) | IVD vs. Spec Kit / Kiro / plan mode / CLAUDE.md — where IVD helps and where it doesn't |\n| [cookbook.md](cookbook.md) | Practical guide — step-by-step with real examples |\n| [cheatsheet.md](cheatsheet.md) | Quick reference — one-page summary |\n| [purpose.md](purpose.md) | Why IVD exists — the cognitive case, two knowledge systems |\n| [framework.md](framework.md) | Complete specification — principles, rules, validation |\n| [judgment_explained.md](judgment_explained.md) | Judgment phase (optional 4th phase) — plain-English on-ramp |\n| [judgment_layer.md](judgment_layer.md) | Judgment phase (v3.0) — canonical spec |\n| [canon_layer.md](canon_layer.md) | Canon phase (v3.1) — Phase 0 human translation layer (canonical spec) |\n| [DEVELOPMENT.md](DEVELOPMENT.md) | Dev setup, how to add a tool, lint/typecheck, tests |\n| [ROADMAP.md](ROADMAP.md) | What's shipped, what's next, what's explicitly not planned |\n| [CHANGELOG.md](CHANGELOG.md) | Version history |\n| [DECISIONS.md](DECISIONS.md) | Architectural Decision Records (ADRs) |\n\n---\n\n## Development\n\n```bash\n# Setup\n./mcp_server/devops/setup.sh             # Create venv, install deps\n\n# Run tests\n./mcp_server/devops/test.sh              # All tests (unit + e2e)\n./mcp_server/devops/test.sh --unit       # Unit only\n./mcp_server/devops/test.sh --e2e        # E2E only\n\n# Embeddings (requires OPENAI_API_KEY)\n./mcp_server/devops/embed.sh             # Generate embeddings\n./mcp_server/devops/embed.sh --dry-run   # Preview what gets embedded\n./mcp_server/devops/embed.sh --force     # Regenerate everything\n\n# Search embeddings locally (requires generated brain + OPENAI_API_KEY)\n./mcp_server/devops/search.sh \"query\"\n```\n\n---\n\n## The Book\n\nA comprehensive book on Intent-Verified Development — the cognitive foundations, case studies, and the full methodology — is coming soon.\n\n---\n\n## Contributing\n\nIssues, bug reports, and recipe suggestions are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.\n\n---\n\n## Legal\n\nSee [LEGAL.md](LEGAL.md) for disclaimers, data transmission disclosures, AI limitation\nnotices, known architectural limitations (hosted server vs. self-hosted), and your\nresponsibilities as a deployer under the EU AI Act, GDPR, and US law.\n\n---\n\n## License\n\n[MIT](LICENSE) · Maintained by [IVD Project](https://github.com/leocelis/ivd)\n",
  "bytes": 26629,
  "sha": "332f0cb3e046c6bb47b2d61bdfecd53fd9566adc37ecf6af7f304d9739518e9e",
  "repo_slug": "leocelis/ivd",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_leocelis_ivd_5726355c/readme"
}