{
  "markdown": "<p align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/Cherridsaid/multidim-mcp/main/docs/hero.png\" alt=\"multidim-mcp: one subject, split through a prism into eight analysis lenses\" width=\"100%\">\n</p>\n\n# multidim-mcp\n\n<!-- mcp-name: io.github.Cherridsaid/multidim-mcp -->\n\n**Structured thinking grids for AI agents — a standalone MCP server, pure standard library.**\n\nMultidim routes a subject to a set of analysis lenses (a *context*) and returns a\nhierarchical grid — axes, sub-lenses, mandatory questions — for the calling LLM to\nfill in. **The thinking stays with the caller**: the server provides structure,\nnever cognition. It calls no LLM, makes no network requests, and the same input\nalways produces the same frame.\n\n- **Zero dependencies** — Python 3.9+, standard library only.\n- **Deterministic v2 contract** — every frame carries a self-verifiable `frame_hash`;\n  a filled analysis is checked section by section with actionable error codes.\n- **Learned traps** — lessons you record once become mandatory questions injected\n  into every future frame whose subject matches.\n- **Hardened store** — atomic writes, native cross-process locking, additive\n  migrations, backed-up resets, and a guard that refuses to ever touch a foreign\n  `~/.multidim` store.\n\n## See the difference\n\nAn agent analyses *\"Should we migrate the billing service from MySQL to\nPostgreSQL?\"*. Every section is filled, every sentence reads fine. Here is what\n`multidim_validate` returns on that first pass:\n\n```\noverall verdict: REJECT\n\nREJECT  alternatives        NOT_ENOUGH_ALTERNATIVES, ALTERNATIVE_DUPLICATES_PRIMARY\nREJECT  hypotheses          HYPOTHESIS_NOT_FALSIFIABLE\nREJECT  second_order_risks  SECOND_ORDER_REPEATS_FIRST\nREJECT  cross_talk          GENERIC_DENSITY_HIGH\nREJECT  synthesis           SYNTHESIS_WITHOUT_REFERENCES\nWARNING premortem           PREMORTEM_SIMILAR_TO_RISKS\n```\n\nThe only alternative restated the hypothesis, the hypothesis carried no test that\ncould prove it wrong, the second-order effect repeated the first one word for\nword, and the conclusion referenced none of the work above. None of that is\nvisible when you read the answer; all of it is reported here, by name.\n\nRedo the rejected sections and the same checker returns `ACCEPT`. Edit the frame\nto delete the rule you find inconvenient, and it refuses the whole submission —\nthe frame carries a hash of its own content.\n\nFull transcript, including what the fixed sections look like and what this\ndeliberately does *not* check: **[DEMO.md](DEMO.md)**. Reproduce it in one\ncommand: `python demo.py`.\n\n## Quickstart\n\n```bash\npip install multidim-mcp        # from PyPI\npip install .                   # or from a source checkout\n```\n\nRegister the server with any MCP client (stdio transport):\n\n```json\n{\n  \"mcpServers\": {\n    \"multidim\": {\n      \"command\": \"multidim-mcp\"\n    }\n  }\n}\n```\n\nOr run it directly: `python -m multidim_mcp`, or without installing: `uvx multidim-mcp`.\n\nThe server is listed in the official MCP Registry as\n[`io.github.Cherridsaid/multidim-mcp`](https://registry.modelcontextprotocol.io/v0.1/servers?search=io.github.Cherridsaid/multidim-mcp).\n\n## Tools\n\n| Tool | Role |\n|---|---|\n| `multidim_analyze` | Build the grid for a subject (`depth`: `core` / `deep` / `full`; `format`: text or deterministic `v2` JSON frame) |\n| `multidim_contexts` | List every known context with its axes and sub-lenses |\n| `multidim_validate` | Deterministic, stateless check of a filled analysis against its v2 frame — `ACCEPT` / `WARNING` / `REJECT` per section |\n| `multidim_learn` | Create or enrich a context (keywords, axes, traps) — the only write door |\n\n## How it works\n\n<p align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/Cherridsaid/multidim-mcp/main/docs/workflow.png\" alt=\"multidim_analyze produces a deterministic v2 frame; your LLM fills it; multidim_validate stamps ACCEPT / WARNING / REJECT and only rejected sections are redone\" width=\"90%\">\n</p>\n\n1. `multidim_analyze` detects the best context for your subject (word-boundary\n   keyword matching, accent-folded) and returns a **v2 frame**: required sections,\n   section schemas, validation rules, mandatory questions — including every\n   **learned trap** whose triggers match the subject.\n2. Your LLM fills the frame, section by section.\n3. `multidim_validate` rebuilds the frame from the store, refuses a tampered or\n   stale one (`frame_hash`), then checks the analysis: structural completeness,\n   falsification tests on hypotheses, alternatives that genuinely differ from the\n   primary, second-order effects distinct from first-order, a pre-mortem that does\n   not copy the risk list, a synthesis that references real identifiers, and a\n   filler-phrase density cap. Only rejected sections are redone, within the\n   frame's `max_validation_rounds`.\n\nThe four seed contexts are neutral and deterministic: `generic` (8 general\nlenses), `code_review`, `technical_writing`, `decision`.\n\n## Storage\n\nThe store lives on a dedicated per-user data path (`MULTIDIM_MCP_HOME` overrides\nit) and is created on first run from the neutral seeds. Writes are atomic and\nserialized across processes with the OS's native file locking; a corrupt store is\nbacked up before any reset, never silently discarded. A tripwire refuses every\nread or write that would resolve into a foreign personal `~/.multidim` store.\n\nMaintainers publishing forks can extend the neutrality guard with their own\nprivate markers via `MULTIDIM_MCP_EXTRA_FORBIDDEN` (comma-separated), without\nhardcoding them into public source.\n\n## Transparency\n\n- **Not an AI system.** multidim-mcp contains no model and performs no inference:\n  it is deterministic, rule-based software. Under the EU AI Act (Reg. 2024/1689)\n  it is not an AI system in the sense of Art. 3(1), and as free and open-source\n  software it falls under the Art. 2(12) exemption. It collects no data and makes\n  no network calls.\n- **Illustrations** in this README were generated with GPT and keep their C2PA\n  provenance metadata intact.\n\n## Development\n\n```bash\npython run_tests.py      # full suite, stdlib only\npython smoke_install.py  # packaging smoke test (wheel + venv + entry point)\npython demo.py           # the analyse -> validate -> fix -> accept cycle of DEMO.md\n```\n\nCI runs both on Ubuntu and Windows across Python 3.9 / 3.11 / 3.13.\n\n## License\n\nApache-2.0 — see [LICENSE](LICENSE) and [NOTICE](NOTICE).\n",
  "bytes": 6409,
  "sha": "b47b82840ea62df91019f75dc44b75314e79d753f4ff218210f2593266d6b121",
  "repo_slug": "cherridsaid/multidim-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_cherridsaid_multidim_mcp_9ea88f91/readme"
}