{"_id":"@ankan-ai/syrin","_rev":"6-ab172cd281d3b9d0943839e6a6fac2a4","name":"@ankan-ai/syrin","dist-tags":{"latest":"1.2.2"},"versions":{"1.0.0":{"name":"@ankan-ai/syrin","version":"1.0.0","keywords":["mcp","model-context-protocol","debugging","testing","cli","runtime-intelligence","llm","ai"],"author":{"name":"Ankan AI Labs Team"},"license":"ISC","_id":"@ankan-ai/syrin@1.0.0","maintainers":[{"name":"dshekhar17","email":"imdshekhar@gmail.com"}],"homepage":"https://github.com/ankan-labs/syrin#readme","bugs":{"url":"https://github.com/ankan-labs/syrin/issues"},"bin":{"syrin":"dist/index.js"},"dist":{"shasum":"f4d58ba1db2c392ec78c1e223020ab986f30d4ff","tarball":"https://registry.npmjs.org/@ankan-ai/syrin/-/syrin-1.0.0.tgz","fileCount":89,"integrity":"sha512-y8JI+AlGQZWL+GAshquOwhRJULQpBQjNjKQHowD12NGC5D9E1NX8vLj/ZvrUTLWeiEXAabH7ZrBTjr2kW/ZwEw==","signatures":[{"sig":"MEUCIEMRvqzO2d9/Zs0mYmiV22rikZBCrGAn8JPdWeean8i2AiEA8uHwZmEllCCjpwptHs5+ZEuoC+DsCRrVi60WyXM88Z8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":465911},"main":"dist/index.js","engines":{"node":">=18.0.0"},"gitHead":"83872f081657a58fd40b2c05166f0ed417480b15","scripts":{"lint":"eslint .","test":"echo \"Error: no test specified\" && exit 1","build":"tsc && tsc-alias -p tsconfig.json -f","syrin":"sh -c 'npm run build && node dist/index.js \"$@\"' --","format":"prettier --write \"**/*.{ts,json,md}\"","lint:fix":"eslint . --fix","type-check":"tsc --noEmit","format:check":"prettier --check \"**/*.{ts,json,md}\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"dshekhar17","email":"imdshekhar@gmail.com"},"repository":{"url":"git+https://github.com/ankan-labs/syrin.git","type":"git"},"_npmVersion":"10.9.2","description":"Syrin is a runtime intelligence system that makes MCP servers debuggable, testable, and safe to run in production.","directories":{"doc":"docs"},"_nodeVersion":"22.14.0","dependencies":{"ink":"^6.6.0","zod":"^4.2.1","uuid":"^13.0.0","react":"^19.2.3","ollama":"^0.6.3","openai":"^6.15.0","js-yaml":"^4.1.1","inquirer":"^13.1.0","commander":"^14.0.2","@types/js-yaml":"^4.0.9","ink-text-input":"^6.0.0","@types/inquirer":"^9.0.9","@anthropic-ai/sdk":"^0.71.2","@modelcontextprotocol/sdk":"^1.25.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.2","prettier":"^3.7.4","tsc-alias":"^1.8.16","typescript":"^5.9.3","@types/node":"^25.0.3","@types/uuid":"^10.0.0","@types/react":"^19.2.7","tsconfig-paths":"^4.2.0","typescript-eslint":"^8.50.1","eslint-plugin-import":"^2.32.0","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.4","@typescript-eslint/parser":"^8.50.1","@typescript-eslint/eslint-plugin":"^8.50.1","eslint-import-resolver-typescript":"^4.4.4"},"_npmOperationalInternal":{"tmp":"tmp/syrin_1.0.0_1766926004639_0.39269518114042423","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.1.0":{"name":"@ankan-ai/syrin","version":"1.1.0","keywords":["mcp","model-context-protocol","debugging","testing","cli","runtime-intelligence","llm","ai"],"author":{"name":"Ankan AI Labs Team"},"license":"ISC","_id":"@ankan-ai/syrin@1.1.0","maintainers":[{"name":"dshekhar17","email":"imdshekhar@gmail.com"}],"homepage":"https://github.com/ankan-labs/syrin#readme","bugs":{"url":"https://github.com/ankan-labs/syrin/issues"},"bin":{"syrin":"dist/index.js"},"dist":{"shasum":"0e46e068a65d71f73654775c8bccb12773d7c90d","tarball":"https://registry.npmjs.org/@ankan-ai/syrin/-/syrin-1.1.0.tgz","fileCount":127,"integrity":"sha512-i7wOJ8ZGF1jLuNpvel/BtD8V2KQShqlWKfJs5mWnA7nyoSaAYRNeX0QTiDZP3JMzRD6BMNWubhdhBqvjjIxSRg==","signatures":[{"sig":"MEQCIE7fllJa0PIRu1ERS+Aa/WW8MAwgLdML6H4DnfLnfasDAiBpa48y6FMCQ4IZGF9X3CwMbocKam5DlMhrWLoHoky34A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":627089},"main":"dist/index.js","engines":{"node":">=18.0.0"},"gitHead":"983b3cc4dd8b9ecb802d6e420e6491bbc3335ead","scripts":{"lint":"eslint .","test":"echo \"Error: no test specified\" && exit 1","build":"tsc && tsc-alias -p tsconfig.json -f","syrin":"sh -c 'npm run build && node dist/index.js \"$@\"' --","format":"prettier --write \"**/*.{ts,json,md}\"","lint:fix":"eslint . --fix","type-check":"tsc --noEmit","format:check":"prettier --check \"**/*.{ts,json,md}\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"dshekhar17","email":"imdshekhar@gmail.com"},"repository":{"url":"git+https://github.com/ankan-labs/syrin.git","type":"git"},"_npmVersion":"10.9.2","description":"Syrin is a runtime intelligence system that makes MCP servers debuggable, testable, and safe to run in production.","directories":{"doc":"docs"},"_nodeVersion":"22.14.0","dependencies":{"ink":"^6.6.0","zod":"^4.2.1","uuid":"^13.0.0","react":"^19.2.3","ollama":"^0.6.3","openai":"^6.15.0","js-yaml":"^4.1.1","inquirer":"^13.1.0","commander":"^14.0.2","@types/js-yaml":"^4.0.9","ink-text-input":"^6.0.0","@types/inquirer":"^9.0.9","@anthropic-ai/sdk":"^0.71.2","@modelcontextprotocol/sdk":"^1.25.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.2","prettier":"^3.7.4","tsc-alias":"^1.8.16","typescript":"^5.9.3","@types/node":"^25.0.3","@types/uuid":"^10.0.0","@types/react":"^19.2.7","tsconfig-paths":"^4.2.0","typescript-eslint":"^8.50.1","eslint-plugin-import":"^2.32.0","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.4","@typescript-eslint/parser":"^8.50.1","@typescript-eslint/eslint-plugin":"^8.50.1","eslint-import-resolver-typescript":"^4.4.4"},"_npmOperationalInternal":{"tmp":"tmp/syrin_1.1.0_1767254226029_0.5351332543470286","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.2.0":{"name":"@ankan-ai/syrin","version":"1.2.0","keywords":["mcp","model-context-protocol","debugging","testing","cli","runtime-intelligence","llm","ai"],"author":{"name":"Ankan AI Labs Team"},"license":"ISC","_id":"@ankan-ai/syrin@1.2.0","maintainers":[{"name":"dshekhar17","email":"imdshekhar@gmail.com"}],"homepage":"https://github.com/ankan-labs/syrin#readme","bugs":{"url":"https://github.com/ankan-labs/syrin/issues"},"bin":{"syrin":"dist/index.js"},"dist":{"shasum":"d2681ceb32c6245d9f87fbb2826ba3b99ed898c1","tarball":"https://registry.npmjs.org/@ankan-ai/syrin/-/syrin-1.2.0.tgz","fileCount":281,"integrity":"sha512-soOswPPxT8unZv/4MmnjI3goG913ekg8gxY4EEZKbzhsY3L3Q2EST0UM2hHP+pNK0jUkosok15bTTowwh9aWfg==","signatures":[{"sig":"MEUCIQDGZN07n5R12/VDOdzCU2F9PsxVVs4erG1hxJ0br5R5PwIgY7jYbUwbKGxF1yT8ZZvm/H2/payjTBhYnExBJc7/Fc4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":638157},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"0455f0405f938f4c7b2aafa76ae6107f2975b467","scripts":{"lint":"eslint .","test":"vitest","build":"tsc && tsc-alias -p tsconfig.json -f","syrin":"sh -c 'npm run build && node dist/index.js \"$@\"' --","format":"prettier --write \"**/*.{ts,json,md}\"","test:ui":"vitest --ui","lint:fix":"eslint . --fix","test:run":"vitest run","type-check":"tsc --noEmit","format:check":"prettier --check \"**/*.{ts,json,md}\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"dshekhar17","email":"imdshekhar@gmail.com"},"repository":{"url":"git+https://github.com/ankan-labs/syrin.git","type":"git"},"_npmVersion":"10.9.2","description":"Syrin is a runtime intelligence system that makes MCP servers debuggable, testable, and safe to run in production.","directories":{"doc":"docs"},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"ink":"^6.6.0","zod":"^4.3.5","uuid":"^13.0.0","react":"^19.2.3","ollama":"^0.6.3","openai":"^6.15.0","js-yaml":"^4.1.1","inquirer":"^13.1.0","commander":"^14.0.2","ink-text-input":"^6.0.0","@anthropic-ai/sdk":"^0.71.2","@modelcontextprotocol/sdk":"^1.25.1","@apidevtools/json-schema-ref-parser":"^15.1.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.2","vitest":"^3.2.4","globals":"^17.0.0","prettier":"^3.7.4","tsc-alias":"^1.8.16","@vitest/ui":"^3.2.4","typescript":"^5.9.3","@types/node":"^25.0.3","@types/uuid":"^10.0.0","@types/react":"^19.2.7","@types/js-yaml":"^4.0.9","tsconfig-paths":"^4.2.0","@types/inquirer":"^9.0.9","@vitest/coverage-v8":"^3.2.4","eslint-plugin-import":"^2.32.0","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.4","@typescript-eslint/parser":"^8.52.0","@typescript-eslint/eslint-plugin":"^8.52.0","eslint-import-resolver-typescript":"^4.4.4"},"_npmOperationalInternal":{"tmp":"tmp/syrin_1.2.0_1767706275663_0.6461579727924547","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.2.1":{"name":"@ankan-ai/syrin","version":"1.2.1","keywords":["mcp","model-context-protocol","debugging","testing","cli","runtime-intelligence","llm","ai"],"author":{"name":"Ankan AI Labs Team"},"license":"ISC","_id":"@ankan-ai/syrin@1.2.1","maintainers":[{"name":"dshekhar17","email":"imdshekhar@gmail.com"}],"homepage":"https://github.com/ankan-labs/syrin#readme","bugs":{"url":"https://github.com/ankan-labs/syrin/issues"},"bin":{"syrin":"dist/index.js"},"dist":{"shasum":"1878aafd3f3ca9bf0c04a01384fced3ba47f2255","tarball":"https://registry.npmjs.org/@ankan-ai/syrin/-/syrin-1.2.1.tgz","fileCount":281,"integrity":"sha512-mvA9AmBZlxVbP+a2SG/t3PPWV8tJVXEOk6jgWPk4HGxxdk0tlJSkkdwKW9twrs4YOim2bUK4/TxW42LFocAEvA==","signatures":[{"sig":"MEUCICaG44E13EHZ1GU9UgK28mUSFrWN9pzr6NVz4ZFLn6TqAiEAonj91w7UDyVkQ1+ak79Ea7cVSSHY+9X/JXfUD16blN0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":638380},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"965fe32b1abd893b2263af4378edc14cd2b859d7","scripts":{"lint":"eslint .","test":"vitest","build":"tsc && tsc-alias -p tsconfig.json -f","syrin":"sh -c 'npm run build && node dist/index.js \"$@\"' --","format":"prettier --write \"**/*.{ts,json,md}\"","test:ui":"vitest --ui","lint:fix":"eslint . --fix","test:run":"vitest run","type-check":"tsc --noEmit","format:check":"prettier --check \"**/*.{ts,json,md}\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"dshekhar17","email":"imdshekhar@gmail.com"},"repository":{"url":"git+https://github.com/ankan-labs/syrin.git","type":"git"},"_npmVersion":"10.9.2","description":"Syrin is a runtime intelligence system that makes MCP servers debuggable, testable, and safe to run in production.","directories":{"doc":"docs"},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"ink":"^6.6.0","zod":"^4.3.5","uuid":"^13.0.0","react":"^19.2.3","ollama":"^0.6.3","openai":"^6.15.0","js-yaml":"^4.1.1","inquirer":"^13.1.0","commander":"^14.0.2","ink-text-input":"^6.0.0","@anthropic-ai/sdk":"^0.71.2","@modelcontextprotocol/sdk":"^1.25.1","@apidevtools/json-schema-ref-parser":"^15.1.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.2","vitest":"^3.2.4","globals":"^17.0.0","prettier":"^3.7.4","tsc-alias":"^1.8.16","@vitest/ui":"^3.2.4","typescript":"^5.9.3","@types/node":"^25.0.3","@types/uuid":"^10.0.0","@types/react":"^19.2.7","@types/js-yaml":"^4.0.9","tsconfig-paths":"^4.2.0","@types/inquirer":"^9.0.9","@vitest/coverage-v8":"^3.2.4","eslint-plugin-import":"^2.32.0","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.4","@typescript-eslint/parser":"^8.52.0","@typescript-eslint/eslint-plugin":"^8.52.0","eslint-import-resolver-typescript":"^4.4.4"},"_npmOperationalInternal":{"tmp":"tmp/syrin_1.2.1_1767708374430_0.028024365789451666","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."},"1.2.2":{"name":"@ankan-ai/syrin","version":"1.2.2","keywords":["mcp","model-context-protocol","debugging","testing","cli","runtime-intelligence","llm","ai"],"author":{"name":"Ankan AI Labs Team"},"license":"ISC","_id":"@ankan-ai/syrin@1.2.2","maintainers":[{"name":"dshekhar17","email":"imdshekhar@gmail.com"}],"homepage":"https://github.com/ankan-labs/syrin#readme","bugs":{"url":"https://github.com/ankan-labs/syrin/issues"},"bin":{"syrin":"dist/index.js"},"dist":{"shasum":"f8670a93236a45b7e3c0fea8149cd962cb063555","tarball":"https://registry.npmjs.org/@ankan-ai/syrin/-/syrin-1.2.2.tgz","fileCount":289,"integrity":"sha512-gdRQZgpUBvn4BAOcB6NOSrguGW04OmJzcNTT2G2NuGmXsWrnpkqZZHszObzkStBu/GlLDjWBZ2Fie5IjccVnOQ==","signatures":[{"sig":"MEUCIQCXPYsCFNhY5+k6iVKcMndDWXH4BV+KfvfGbSD5OOHm7wIgUiPsj4e9OXmKFEpIm1ugSPsQYD2p+YO5H1PoSdS9Fws=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":653553},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"077b68f64bafe9916a20bb59ee1983ab36eda5b5","scripts":{"lint":"eslint .","test":"vitest","build":"tsc && tsc-alias -p tsconfig.json -f","syrin":"sh -c 'npm run build && node dist/index.js \"$@\"' --","format":"prettier --write \"**/*.{ts,json,md}\"","test:ui":"vitest --ui","lint:fix":"eslint . --fix","test:run":"vitest run","type-check":"tsc --noEmit","format:check":"prettier --check \"**/*.{ts,json,md}\"","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"dshekhar17","email":"imdshekhar@gmail.com"},"repository":{"url":"git+https://github.com/ankan-labs/syrin.git","type":"git"},"_npmVersion":"10.9.2","description":"Syrin is a runtime intelligence system that makes MCP servers debuggable, testable, and safe to run in production.","directories":{"doc":"docs"},"sideEffects":false,"_nodeVersion":"22.14.0","dependencies":{"ink":"^6.6.0","zod":"^4.3.5","uuid":"^13.0.0","react":"^19.2.3","ollama":"^0.6.3","openai":"^6.15.0","js-yaml":"^4.1.1","inquirer":"^13.1.0","commander":"^14.0.2","ink-text-input":"^6.0.0","@anthropic-ai/sdk":"^0.71.2","@modelcontextprotocol/sdk":"^1.25.1","@apidevtools/json-schema-ref-parser":"^15.1.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.2","vitest":"^3.2.4","globals":"^17.0.0","prettier":"^3.7.4","tsc-alias":"^1.8.16","@vitest/ui":"^3.2.4","typescript":"^5.9.3","@types/node":"^25.0.3","@types/uuid":"^10.0.0","@types/react":"^19.2.7","@types/js-yaml":"^4.0.9","tsconfig-paths":"^4.2.0","@types/inquirer":"^9.0.9","@vitest/coverage-v8":"^3.2.4","eslint-plugin-import":"^2.32.0","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.4","@typescript-eslint/parser":"^8.52.0","@typescript-eslint/eslint-plugin":"^8.52.0","eslint-import-resolver-typescript":"^4.4.4"},"_npmOperationalInternal":{"tmp":"tmp/syrin_1.2.2_1767900963163_0.027479091650284726","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info."}},"time":{"created":"2025-12-28T12:46:44.174Z","modified":"2026-01-12T05:02:40.202Z","1.0.0":"2025-12-28T12:46:44.805Z","1.1.0":"2026-01-01T07:57:06.180Z","1.2.0":"2026-01-06T13:31:15.856Z","1.2.1":"2026-01-06T14:06:14.596Z","1.2.2":"2026-01-08T19:36:03.339Z"},"bugs":{"url":"https://github.com/ankan-labs/syrin/issues"},"author":{"name":"Ankan AI Labs Team"},"license":"ISC","homepage":"https://github.com/ankan-labs/syrin#readme","keywords":["mcp","model-context-protocol","debugging","testing","cli","runtime-intelligence","llm","ai"],"repository":{"url":"git+https://github.com/ankan-labs/syrin.git","type":"git"},"description":"Syrin is a runtime intelligence system that makes MCP servers debuggable, testable, and safe to run in production.","maintainers":[{"name":"dshekhar17","email":"imdshekhar@gmail.com"}],"readme":"# Syrin\n\n![Syrin Logo](/assets/syrin-logo-dark-bg.png)\n\n[![npm version](https://badge.fury.io/js/%40ankan-ai%2Fsyrin.svg)](https://badge.fury.io/js/%40ankan-ai%2Fsyrin) [![License: ISC](https://img.shields.io/badge/License-ISC-blue.svg)](https://opensource.org/licenses/ISC) [![Node.js Version](https://img.shields.io/badge/node-%3E%3D18.0.0-brightgreen)](https://nodejs.org/)\n\n**Syrin is a runtime intelligence system for MCP servers.**\n\nIt helps developers **see, validate, and reason about MCP execution** before systems reach production.\n\nDocumentation: [https://docs.syrin.dev](https://docs.syrin.dev)\n\n---\n\n## The Problem\n\nBuilding MCP servers today usually looks like this:\n\n1. Define tools and prompts\n2. Connect an LLM\n3. Run the server\n4. Hope execution behaves as expected\n\nWhen things go wrong:\n\n- Tools are called for unclear reasons\n- Behaviour changes between runs\n- Debugging relies on logs and guesswork\n- Contract issues surface only after failures\n\nMost problems are discovered **after** deployment.\n\n---\n\n## Installation\n\n### Quick start\n\n```bash\nnpx @ankan-ai/syrin init\n```\n\n### Global install\n\n```bash\nnpm install -g @ankan-ai/syrin\n```\n\n### Local install (recommended for CI)\n\n```bash\nnpm install @ankan-ai/syrin\n```\n\nRequirements:\n\n- Node.js ≥ 18\n- npm ≥ 9\n\n---\n\n## The Syrin Way\n\nSyrin changes the workflow.\n\nInstead of guessing how MCP behaves, you **inspect and validate it explicitly**.\n\n**Before:**\n\n```text\nWrite tools → Connect LLM → Run server → Debug via logs\n```\n\n**With Syrin:**\n\n```text\nDefine tools\n→ Analyse contracts\n→ Validate protocol\n→ Inspect behaviour interactively\n→ Enable execution with confidence\n```\n\nSyrin does not replace MCP.  \nIt makes MCP systems understandable and testable.\n\n---\n\n## What Syrin Does\n\n- Validates MCP protocol compliance\n- Analyses tool contracts statically\n- Lets you interact with MCP servers using real LLMs\n- Shows which tools are proposed and why\n- Prevents accidental execution by default\n- Surfaces configuration and contract errors early\n\n---\n\n## Key Capabilities\n\n### Static Tool Contract Analysis (`syrin analyse`)\n\nLLMs rely entirely on tool contracts.  \nIf contracts are vague or incomplete, behaviour becomes unreliable.\n\n`syrin analyse` inspects:\n\n- Tool definitions\n- Parameter schemas\n- Description clarity\n- Implicit dependencies between tools\n\nThis catches issues **before runtime**.\n\n```bash\nsyrin analyse\n```\n\nThis is especially useful in CI:\n\n```bash\nsyrin analyse --ci\n```\n\n---\n\n### Interactive Execution Inspection (`syrin dev`)\n\n`syrin dev` provides a governed chat interface for MCP servers.\n\n- Preview tool calls before execution\n- Execute tools only when explicitly enabled\n- Switch between LLM providers\n- Inspect large tool outputs safely\n\n```bash\nsyrin dev\n```\n\nEnable execution only when ready:\n\n```bash\nsyrin dev --exec\n```\n\n---\n\n### Protocol and Configuration Validation\n\nBefore running anything, Syrin validates assumptions.\n\n```bash\nsyrin doctor\nsyrin test\n```\n\nThese commands ensure:\n\n- Configuration is valid\n- Environment variables are set\n- MCP protocol is followed correctly\n\n---\n\n## Typical Workflow\n\n```bash\nsyrin init        # Initialise configuration\nsyrin doctor      # Validate setup\nsyrin analyse     # Check tool contracts\nsyrin test        # Validate MCP protocol\nsyrin dev         # Inspect behaviour interactively\n```\n\nThis workflow is designed to catch issues **before production**.\n\n---\n\n## Commands Overview\n\n| Command         | Purpose                                |\n| --------------- | -------------------------------------- |\n| `syrin init`    | Initialise a Syrin project             |\n| `syrin doctor`  | Validate configuration and environment |\n| `syrin analyse` | Static analysis of MCP tool contracts  |\n| `syrin test`    | Validate MCP protocol compliance       |\n| `syrin list`    | Inspect tools, resources, and prompts  |\n| `syrin dev`     | Interactive execution inspection       |\n\nFull documentation: [https://docs.syrin.dev/commands](https://docs.syrin.dev/commands)\n\n---\n\n## Configuration\n\nSyrin uses a single configuration file:\n\n```bash\n.syrin/config.yaml\n```\n\nThis file defines:\n\n- Transport type (`stdio` or `http`)\n- MCP server connection\n- Allowed LLM providers\n\nConfiguration reference: [https://docs.syrin.dev/configuration](https://docs.syrin.dev/configuration)\n\n---\n\n## Transport Support\n\n- **stdio** – Syrin manages the MCP server process (recommended for development)\n- **http** – Syrin connects to an existing server (common in production)\n\nTransport documentation: [https://docs.syrin.dev/configuration/transport](https://docs.syrin.dev/configuration/transport)\n\n---\n\n## LLM Providers\n\nSupported providers:\n\n- OpenAI\n- Claude (Anthropic)\n- Ollama (local models)\n\nLLMs propose actions.  \nSyrin governs execution.\n\nProvider configuration: [https://docs.syrin.dev/configuration/llm](https://docs.syrin.dev/configuration/llm)\n\n---\n\n## Links\n\n- Documentation: [https://docs.syrin.dev](https://docs.syrin.dev)\n- GitHub: [https://github.com/ankan-labs/syrin](https://github.com/ankan-labs/syrin)\n- Issues: [https://github.com/ankan-labs/syrin/issues](https://github.com/ankan-labs/syrin/issues)\n- npm: [https://www.npmjs.com/package/@ankan-ai/syrin](https://www.npmjs.com/package/@ankan-ai/syrin)\n\n---\n\n## License\n\nISC License. See LICENSE for details.\n\nMade with ❤️ by **Ankan AI Labs**.\n","readmeFilename":"README.md"}