GitDiagram
Architecture diagrams, explanations and Mermaid source for public GitHub repositories.
JSON contract registry and validator for structured LLM and agent outputs.
Pick the AI app you use, then copy the settings.
Passed 1/3 checks · Runs on your computer · ✓ Commands checked Nov 14, 2026
First: which AI do you use?
Pick your app and the steps appear below.
Works with Claude, with some setup first
Install Node.js on your computer first (one time) · Only the Claude desktop app (Windows or Mac), not the web or phone
Copy this message into a Claude chat. The AI checks your computer, tells you which file it will change, and waits for your OK every time.
Please install the MCP server JSON Contracts for Claude on this computer, in this order: 1) Check Node.js with node -v. If it is missing, tell me to install it from https://nodejs.org/en/download; do not install it yourself. 2) Use only this config (already checked by PopNx MCP): { "mcpServers": { "json-contracts": { "command": "npx", "args": [ "-y", "json-contracts" ] } } } 3) Tell me the full path of the file you will change, or the command you will run, and wait for my OK. 4) No key is needed. 5) Do what we agreed, then check that the JSON Contracts tools really show up.This message has no key in it. If a key is needed, the AI will ask you to paste it yourself into the file or the app’s field.
Already installed? Check first · Open Terminal, type this command and press Enter
node -vMac: press ⌘ + Space, type Terminal, press Enter
Windows: open Start, type Windows PowerShell, then Open
Not installed: Open the official download page, pick the LTS version and the click-through installer: .pkg on Mac · .msi on Windows. Double-click and follow it to the end. No curl command needed
Open the Node.js download page ↗
When it’s done, close Terminal, open it again and run the same command. You should see a version number: node -v
Install once; it works for everything that needs Node.js
SettingsDeveloperEdit Config
{
"mcpServers": {
"json-contracts": {
"command": "npx",
"args": [
"-y",
"json-contracts"
]
}
}
}Use JSON Contracts and tell me what you can do for me, then show me one thing✓ If Claude says it is using JSON Contracts or shows a JSON Contracts tool in the answer, you are connected
The command above works without these. Add them only if you want to change something, following the maker’s description.
JSON_CONTRACTS_DIR Folder containing JSON contract files. Defaults to ./json-contracts.Descriptions are as written by the maker.
Menu names checked against Anthropic’s help page on Nov 11, 2026 · your screen may differ slightly by app version
ChatGPT cannot connect JSON Contracts yet
JSON Contracts runs on your computer, but ChatGPT can only connect servers that run on the web
A · Use an app that can connect JSON Contracts
B · Others in Developer tools that work with ChatGPT
Picked from the most used in the same category, only ones that connect by address with no key
Works with Claude Code, with some setup first
Install Node.js on your computer first (one time)
Copy this message into a Claude Code chat. The AI checks your computer, tells you which file it will change, and waits for your OK every time.
Please install the MCP server JSON Contracts for Claude Code on this computer, in this order: 1) Check Node.js with node -v. If it is missing, tell me to install it from https://nodejs.org/en/download; do not install it yourself. 2) Use only this config (already checked by PopNx MCP): claude mcp add --scope user json-contracts -- npx -y json-contracts 3) Tell me the full path of the file you will change, or the command you will run, and wait for my OK. 4) No key is needed. 5) Do what we agreed, then check that the JSON Contracts tools really show up.This message has no key in it. If a key is needed, the AI will ask you to paste it yourself into the file or the app’s field.
Already installed? Check first · Open Terminal, type this command and press Enter
node -vMac: press ⌘ + Space, type Terminal, press Enter
Windows: open Start, type Windows PowerShell, then Open
Not installed: Open the official download page, pick the LTS version and the click-through installer: .pkg on Mac · .msi on Windows. Double-click and follow it to the end. No curl command needed
Open the Node.js download page ↗
When it’s done, close Terminal, open it again and run the same command. You should see a version number: node -v
Install once; it works for everything that needs Node.js
Mac: press Command+Space and type Terminal · Windows: open PowerShell
claude mcp add --scope user json-contracts -- npx -y json-contractsYou should see JSON Contracts listed as connected
Use JSON Contracts and tell me what you can do for me, then show me one thing✓ If Claude Code says it is using JSON Contracts or shows a JSON Contracts tool in the answer, you are connected
The command above works without these. Add them only if you want to change something, following the maker’s description.
JSON_CONTRACTS_DIR Folder containing JSON contract files. Defaults to ./json-contracts.Descriptions are as written by the maker.
Menu names checked against Anthropic’s help page on Nov 11, 2026 · your screen may differ slightly by app version
Works with Cursor, with some setup first
Install Node.js on your computer first (one time)
Copy this message into a Cursor chat. The AI checks your computer, tells you which file it will change, and waits for your OK every time.
Please install the MCP server JSON Contracts for Cursor on this computer, in this order: 1) Check Node.js with node -v. If it is missing, tell me to install it from https://nodejs.org/en/download; do not install it yourself. 2) Use only this config (already checked by PopNx MCP): { "mcpServers": { "json-contracts": { "command": "npx", "args": [ "-y", "json-contracts" ] } } } 3) Tell me the full path of the file you will change, or the command you will run, and wait for my OK. 4) No key is needed. 5) Do what we agreed, then check that the JSON Contracts tools really show up.This message has no key in it. If a key is needed, the AI will ask you to paste it yourself into the file or the app’s field.
Already installed? Check first · Open Terminal, type this command and press Enter
node -vMac: press ⌘ + Space, type Terminal, press Enter
Windows: open Start, type Windows PowerShell, then Open
Not installed: Open the official download page, pick the LTS version and the click-through installer: .pkg on Mac · .msi on Windows. Double-click and follow it to the end. No curl command needed
Open the Node.js download page ↗
When it’s done, close Terminal, open it again and run the same command. You should see a version number: node -v
Install once; it works for everything that needs Node.js
Use JSON Contracts and tell me what you can do for me, then show me one thing✓ If Cursor says it is using JSON Contracts or shows a JSON Contracts tool in the answer, you are connected
The command above works without these. Add them only if you want to change something, following the maker’s description.
JSON_CONTRACTS_DIR Folder containing JSON contract files. Defaults to ./json-contracts.Descriptions are as written by the maker.
Menu names checked against Cursor’s help page on Nov 11, 2026 · your screen may differ slightly by app version
Works with VS Code, with some setup first
Install Node.js on your computer first (one time)
Copy this message into a VS Code chat. The AI checks your computer, tells you which file it will change, and waits for your OK every time.
Please install the MCP server JSON Contracts for VS Code on this computer, in this order: 1) Check Node.js with node -v. If it is missing, tell me to install it from https://nodejs.org/en/download; do not install it yourself. 2) Use only this config (already checked by PopNx MCP): { "servers": { "json-contracts": { "type": "stdio", "command": "npx", "args": [ "-y", "json-contracts" ] } } } 3) Tell me the full path of the file you will change, or the command you will run, and wait for my OK. 4) No key is needed. 5) Do what we agreed, then check that the JSON Contracts tools really show up.This message has no key in it. If a key is needed, the AI will ask you to paste it yourself into the file or the app’s field.
Already installed? Check first · Open Terminal, type this command and press Enter
node -vMac: press ⌘ + Space, type Terminal, press Enter
Windows: open Start, type Windows PowerShell, then Open
Not installed: Open the official download page, pick the LTS version and the click-through installer: .pkg on Mac · .msi on Windows. Double-click and follow it to the end. No curl command needed
Open the Node.js download page ↗
When it’s done, close Terminal, open it again and run the same command. You should see a version number: node -v
Install once; it works for everything that needs Node.js
Use JSON Contracts and tell me what you can do for me, then show me one thing✓ If VS Code says it is using JSON Contracts or shows a JSON Contracts tool in the answer, you are connected
The command above works without these. Add them only if you want to change something, following the maker’s description.
JSON_CONTRACTS_DIR Folder containing JSON contract files. Defaults to ./json-contracts.Descriptions are as written by the maker.
Menu names checked against VS Code’s help page on Nov 11, 2026 · your screen may differ slightly by app version
Other apps that use MCP, such as Windsurf, Zed or Gemini CLI, each add servers differently. See how in the app list.
JSON settings are under “For developers” below
Claude Code
claude mcp add --scope user json-contracts -- npx -y json-contractsClaude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"json-contracts": {
"command": "npx",
"args": [
"-y",
"json-contracts"
]
}
}
}Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"json-contracts": {
"command": "npx",
"args": [
"-y",
"json-contracts"
]
}
}
}VS Code (mcp.json)
{
"servers": {
"json-contracts": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"json-contracts"
]
}
}
}JSON_CONTRACTS_DIR envDescriptions are as written by the maker.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
npm: json-contractsBased on how this server connects and on each app’s own docs, checked Nov 10, 2026.
Run on your computer in
ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 15, 2026
The registry name was verified with the GitHub account json-contracts, which owns the repo
Code last changed 6 months ago, more than 6 months ago
GitHub could not identify the licence type; open the file to check
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Not checked yet
Ask, share a tip or report that it does not work. Sorted by what people marked helpful.
No posts yet. Be the first to ask or share.
Posts here are written by users, not the PopNx team.
No reviews yet
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 3 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed 6 months ago, and the latest version (0.1.2) reached the registry 6 months ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js on your computer.
In the same category: GitDiagram, Appllama, Cloudflare MCP, Omnara, Repowise
Same category, other makers, commands already checked. Official ones first, then by stars.
Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
Architecture diagrams, explanations and Mermaid source for public GitHub repositories.
Study screens, flows and paywalls from top-earning iOS apps, then build from what wins.
Cloudflare MCP servers
Deploy durable AI agents with Omnara, an open-source managed-agent platform.
Codebase intelligence for AI coding agents: graph, git history, docs, decisions, code health.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
JSON Contracts is a local MCP contract server for natural-language-to-JSON workflows. It gives agents Git-controlled JSON contracts, rules, examples, and JSON Schema validation tools so any model can reliably convert natural-language requests into schema-valid JSON.
The MCP server does not call an LLM provider. The MCP server does not need API keys. The MCP server does not use BAML, LangChain, Markdown, or a DSL. The MCP server does not use MCP sampling. The MCP server does not generate JSON by itself.
The optional Studio is a separate package/repo for live demos and local contract testing. The MCP stdio server itself does not call LLM providers.
Your user provides natural language. Your agent chooses the model. Your agent performs the natural-language-to-JSON conversion. json-contracts provides the contract and validates the result.
Not this:
json-contracts = generator
This:
json-contracts = schema contract registry + validator
Like TypeScript:
developer writes code
TypeScript validates it
With json-contracts:
agent writes JSON
json-contracts validates it
User
↓ Agent using whatever model the user picked ↓ json-contracts MCP server
Agent generates or repairs JSON itself ↓ App consumes valid JSON
The MCP server never performs natural-language-to-JSON conversion itself. It only provides contracts, validation, and repair guidance.
Install globally:
npm install -g json-contracts
json-contracts --help
Or run without installing:
npx -y json-contracts@latest
The npm package is json-contracts; the installed CLI binary is still json-contracts.
Create a starter contract folder and validate it:
mkdir my-json-contracts
cd my-json-contracts npx -y json-contracts@latest init npx -y json-contracts@latest validate
Then add the MCP config below to your agent host. Point JSON_CONTRACTS_DIR at the json-contracts folder that init created.
Validate contracts in CI without starting MCP:
npx -y json-contracts@latest validate --contracts ./json-contracts
npx -y json-contracts@latest lint --strict --contracts ./json-contracts
By default, the server starts as a local stdio MCP server and loads contracts from:
./json-contracts
{
"mcpServers": { "json-contracts": { "command": "npx", "args": ["-y", "json-contracts@latest"], "env": { "JSON_CONTRACTS_DIR": "./json-contracts" } } } }
Adding a new behavior only requires adding a new .json file to the contracts folder. No MCP config change is required.
Most MCP hosts use the same stdio shape. Adapt paths for your machine and point JSON_CONTRACTS_DIR at your app-owned contracts folder.
{
"mcpServers": { "json-contracts": { "command": "npx", "args": ["-y", "json-contracts@latest"], "env": { "JSON_CONTRACTS_DIR": "/absolute/path/to/json-contracts" } } } }
{
"mcpServers": { "json-contracts": { "command": "npx", "args": ["-y", "json-contracts@latest"], "env": { "JSON_CONTRACTS_DIR": "./json-contracts" } } } }
{
"name": "json-contracts", "command": "npx", "args": ["-y", "json-contracts@latest"], "env": { "JSON_CONTRACTS_DIR": "./json-contracts" } }
If npx startup is too slow or your host requires explicit executables, install globally and use:
{
"command": "json-contracts", "args": [] }
Use json-contracts as a local contract/validation tool beside the model your app already uses.
If your agent host supports MCP, add the server config above and point JSON_CONTRACTS_DIR at the contracts folder your app owns.
If your app has its own agent runtime, connect to the same MCP stdio server and call the tools directly. The important part is the flow, not the host.
Create files such as:
json-contracts/support-ticket.json
json-contracts/real-estate-lead.json json-contracts/chart-generation.json
Each file contains:
schema for the final JSON shaperules for app-specific mapping behaviorexamples for model guidanceoperations for create/edit behaviorcontextDo not hide runtime variables in the user prompt. Pass them as context:
{
"contract": "real-estate-lead", "input": "I'm pre-approved for a 4 bedroom house in Durham NC up to 900k.", "context": { "current_datetime": "2026-05-03T00:00:00Z", "email": "JohnnyAppleseed@gmail.com", "source": "website-lead-form" } }
json-contracts passes context through unchanged. Contracts decide how to use it through rules/examples. The final JSON still must match the schema.
Use this as the system/developer instruction for your agent:
When converting natural language into app JSON, use json-contracts.
Create flow:
Edit flow:
Never skip validation. Never add fields that are not allowed by the schema. Do not copy context fields into output unless the schema allows them and the contract rules say to use them.
At request time, your app should do:
user input + app context
-> get_json_contract or get_edit_contract -> your chosen model generates JSON -> validate_json -> if invalid: get_repair_contract -> model repairs -> validate_json -> app consumes valid JSON
The MCP server does not call the model and does not mutate output. Your app/agent remains in control of model choice, provider keys, context, and business defaults.
Each contract is one .json file in json-contracts/.
The contract name is derived from the filename:
json-contracts/support-ticket.json -> support-ticket
There is no manifest file and no manually maintained resources file. Git handles versioning.
{
"description": "Convert natural language into a support ticket object.", "rules": [ "If the user says urgent, severity must be critical.", "Summary must be under 80 characters.", "Category must be authentication, billing, bug, feature_request, or other." ], "operations": { "create": { "enabled": true }, "edit": { "enabled": true, "return": "full_object", "rules": [ "Start from currentJson.", "Apply only the user's requested change.", "Preserve all unspecified fields exactly.", "Return the complete updated JSON object." ] } }, "schema": { "type": "object", "additionalProperties": false, "properties": { "summary": { "type": "string", "maxLength": 80 }, "severity": { "type": "string", "enum": ["low", "medium", "high", "critical"] }, "category": { "type": "string", "enum": ["authentication", "billing", "bug", "feature_request", "other"] } }, "required": ["summary", "severity", "category"] }, "examples": [ { "input": "Urgent, users cannot log in after SSO update.", "output": { "summary": "Users cannot log in after SSO update", "severity": "critical", "category": "authentication" } } ] }
Rules:
schema is required and must be valid JSON Schema. Omit $schema for the default 2020-12 validator, or set $schema to draft-07 or 2020-12 explicitly.description is optional but recommended.rules is optional and defaults to [].examples is optional and defaults to []. Example output values must validate against schema.operations is optional and defaults to enabled create and edit operations. Operation metadata belongs at the top level, not inside the JSON Schema.name is optional, but the filename is the source of truth.version field is rejected; use Git for versioning.The default json-contracts/ folder includes examples from different app categories where teams commonly rebuild the same AI glue code:
| Contract | Industry/app pattern | Converts natural language into |
|---|---|---|
support-ticket | SaaS support | Triage-ready support tickets. |
create-filter | Internal tools/API builders | API filter objects. |
chart-generation | BI/analytics tools | Dashboard chart generation specs. |
patient-intake | Healthcare intake | Triage and appointment-routing objects. |
ecommerce-return | Ecommerce support | Return, refund, exchange, and warranty requests. |
real-estate-lead | Real estate CRM | Buyer, renter, seller, and lease lead profiles. |
legal-client-intake | Legal tech intake | Matter routing and conflict-check data. |
expense-report | Finance/expense apps | Reimbursement and expense line items. |
Each one uses the same MCP tools: read the contract, let the model create or edit JSON, validate it, and repair if needed. New apps should not need a new bespoke prompt framework just to get reliable JSON.
Every loaded contract is exposed dynamically as:
json-contract://{contractName}
Examples:
json-contract://support-ticket
json-contract://create-filter json-contract://chart-generation
resources/list returns all loaded contracts. resources/read returns the normalized full contract JSON.
list_contractsInput:
{}
Output:
{
"contracts": [ { "name": "support-ticket", "description": "Convert natural language into a support ticket object.", "contractHash": "sha256:...", "schemaHash": "sha256:..." } ] }
read_contractInput:
{
"contract": "support-ticket" }
Returns the selected contract's description, rules, operations, schema, examples, contractHash, and schemaHash.
Hashes are deterministic SHA-256 values over the normalized contract/schema payload. They are for logging, cache keys, and audit trails; contract files still use Git for versioning.
get_json_contractInput:
{
"contract": "support-ticket", "input": "Urgent, users cannot log in after SSO update.", "context": {} }
Output:
{
"contract": "support-ticket", "contractHash": "sha256:...", "schemaHash": "sha256:...", "operation": "create", "instructions": [ "Convert the input into JSON.", "Return JSON only.", "Do not return markdown.", "Do not include commentary.", "Do not include extra keys.", "Match the schema exactly.", "Use enum values exactly.", "Follow all rules.", "Use examples as guidance." ], "description": "Convert natural language into a support ticket object.", "rules": [ "If the user says urgent, severity must be critical.", "Summary must be under 80 characters.", "Category must