{"_id":"@askturret/mcp-sources-openapi","_rev":"4-b2367d761b5d674799e9415f1f3b82ca","name":"@askturret/mcp-sources-openapi","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"@askturret/mcp-sources-openapi","version":"0.1.0","license":"Apache-2.0","_id":"@askturret/mcp-sources-openapi@0.1.0","maintainers":[{"name":"didi178","email":"dmitry.stepanov37@gmail.com"},{"name":"alprimak","email":"alprimak@gmail.com"}],"dist":{"shasum":"2ae63235e7402059c412b4d2bde83cb56bda8008","tarball":"https://registry.npmjs.org/@askturret/mcp-sources-openapi/-/mcp-sources-openapi-0.1.0.tgz","fileCount":17,"integrity":"sha512-Yr4dNRZxeUjdHdsrO2eVhoEXvidEe9UZuBYoEeDXGTLD3PTGpX5Q1bu8PJx9FNBTjBXw0uEWxDqr/7x1OhV9mg==","signatures":[{"sig":"MEQCIALIpsqviet3xofAoSlr+mrLc965/idrRvQLHVnDjOYwAiBFwRBIiNhbzpX4ovjyYEHM87tYM6Wv44d9S5p1v8PxZg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":44389},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"c54b62a19421ed3bc620807cfc871e2c94b76576","scripts":{"lint":"echo \"Linting not yet configured\"","test":"NODE_OPTIONS=--experimental-vm-modules jest","build":"tsc","test:watch":"npm test -- --watch"},"_npmUser":{"name":"didi178","email":"dmitry.stepanov37@gmail.com"},"_npmVersion":"11.8.0","description":"OpenAPI import source adapter","directories":{},"_nodeVersion":"25.5.0","dependencies":{"openapi-types":"^12.1.3","@askturret/mcp-core":"^0.1.0","@apidevtools/swagger-parser":"^10.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.0","typescript":"*","@types/jest":"^29.5.0","@types/node":"^20.14.0","@jest/globals":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-sources-openapi_0.1.0_1788200431798_0.8036707756100661","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@askturret/mcp-sources-openapi","version":"0.1.1","keywords":["askturret","mcp","server","client"],"license":"Apache-2.0","_id":"@askturret/mcp-sources-openapi@0.1.1","maintainers":[{"name":"didi178","email":"dmitry.stepanov37@gmail.com"},{"name":"alprimak","email":"alprimak@gmail.com"}],"dist":{"shasum":"e074fc46b3cadbc06a7e094ad73e6cdb6251b9ac","tarball":"https://registry.npmjs.org/@askturret/mcp-sources-openapi/-/mcp-sources-openapi-0.1.1.tgz","fileCount":20,"integrity":"sha512-L6KDVz9p8KrPv98/01e33d3bN14++mykQ+SL51OCKNkQOIq3ITaUABbZD3J4ZK/FTnl0pr8yaH+tMHTWNxyCuQ==","signatures":[{"sig":"MEQCIA06XXqQCIGXIKuvytU5802nVjyl/hczNgAPGIflCptKAiBcY9QpI25Ri0iWO1Cl12+BU40GYXmhF8ReNZjSQtxHHA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDGuhrodDW00UYdIewyx9MYVQgSjkcFmGGZMsb/MancQAIgaMhplL1iONtdgZ8NOFeNwnI8vGcB7DzETUHzo/+tf/Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66187},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"69d35f79c070c6322357902e786a527261463d3f","scripts":{"lint":"echo \"Linting not yet configured\"","test":"NODE_OPTIONS=--experimental-vm-modules jest","build":"tsc","test:watch":"npm test -- --watch"},"_npmUser":{"name":"didi178","email":"dmitry.stepanov37@gmail.com"},"_npmVersion":"11.8.0","description":"OpenAPI import source adapter","directories":{},"_nodeVersion":"25.5.0","dependencies":{"openapi-types":"^12.1.3","@askturret/mcp-core":"^0.1.0","@apidevtools/swagger-parser":"^10.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.0","typescript":"*","@types/jest":"^29.5.0","@types/node":"^20.14.0","@jest/globals":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-sources-openapi_0.1.1_1788458706464_0.6808049606582316","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@askturret/mcp-sources-openapi","version":"0.1.2","keywords":["askturret","mcp","server","client"],"license":"Apache-2.0","_id":"@askturret/mcp-sources-openapi@0.1.2","maintainers":[{"name":"didi178","email":"dmitry.stepanov37@gmail.com"},{"name":"alprimak","email":"alprimak@gmail.com"}],"homepage":"https://github.com/askturret/mcp#readme","bugs":{"url":"https://github.com/askturret/mcp/issues"},"dist":{"shasum":"e5002b2c3495d25797890f07ccb547b17ae0536d","tarball":"https://registry.npmjs.org/@askturret/mcp-sources-openapi/-/mcp-sources-openapi-0.1.2.tgz","fileCount":20,"integrity":"sha512-efU52LNt5UwNRmQUuJRZ8ok8cN68frquk5RZgHPd+gONUYKdnhEbiBZhEDaT/O2rxKNfr1oof+CRtjzkyFpiZg==","signatures":[{"sig":"MEUCICXrD5clTzpyY/ABDyL/QIKsYNqiOS9z+GG2RIfgIFYSAiEA1X9Cqu9ZMqF+spDJLRot4PQHcxlUQvLgtmU+gN6IG10=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBhxlaSzdQqehNKpglj7ci4AAnlDju9n2J9I2oJepQjvAiEAizZE1rmAI4TQqNUwzY+gPuQXxwmjPQDbRRbMMO9lYSE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@askturret%2fmcp-sources-openapi@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":66475},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"ec334b34d1a55df0d4f8c2d5f69c7e80679476e5","scripts":{"lint":"echo \"Linting not yet configured\"","test":"NODE_OPTIONS=--experimental-vm-modules jest","build":"tsc","test:watch":"npm test -- --watch"},"_npmUser":{"name":"didi178","email":"dmitry.stepanov37@gmail.com"},"repository":{"url":"git+https://github.com/askturret/mcp.git","type":"git","directory":"packages/sources-openapi"},"_npmVersion":"10.8.2","description":"OpenAPI import source adapter","directories":{},"_nodeVersion":"20.20.2","dependencies":{"openapi-types":"^12.1.3","@askturret/mcp-core":"^0.1.0","@apidevtools/swagger-parser":"^10.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.0","typescript":"*","@types/jest":"^29.5.0","@types/node":"^20.14.0","@jest/globals":"^29.7.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-sources-openapi_0.1.2_1788607393432_0.4644275590614939","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"_id":"@askturret/mcp-sources-openapi@0.2.0","bugs":{"url":"https://github.com/askturret/mcp/issues"},"dist":{"shasum":"3eae1e28f8ba194dc3298bd6c6bd4a54d9b78650","tarball":"https://registry.npmjs.org/@askturret/mcp-sources-openapi/-/mcp-sources-openapi-0.2.0.tgz","fileCount":20,"integrity":"sha512-6A7P/NSWvTL5M/H5toSlwid3Zn9Uw0cNChMt6Ml8D93OFi2DznEiq1bYMq5BJ0OZbm7oLNEuWCanMIoMqedTOg==","signatures":[{"sig":"MEUCIEzFjLAHTKL7z1SMYRymYlmiRcgL/CjnkMIa3xSbbpBuAiEAgLmSItL+VWUgfdJUR3YIRw67i+enTpP8o8nboozyQJU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD62vAyvXVRzySsU2UrEEKzK3SdgAgrnofnXXghRcKhUQIgV1IBSUfw7QFWqnbk4BruxXP0J1e3xDkBlOfafPpGof8="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@askturret%2fmcp-sources-openapi@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":89836},"main":"./dist/index.js","name":"@askturret/mcp-sources-openapi","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"01db00fa88fb96dac636f82fc70bd248e834c9c7","license":"Apache-2.0","scripts":{"lint":"echo \"Linting not yet configured\"","test":"NODE_OPTIONS=--experimental-vm-modules jest","build":"tsc","test:watch":"npm test -- --watch"},"version":"0.2.0","_npmUser":{"name":"didi178","email":"dmitry.stepanov37@gmail.com"},"homepage":"https://github.com/askturret/mcp#readme","keywords":["askturret","mcp","server","client"],"repository":{"url":"git+https://github.com/askturret/mcp.git","type":"git","directory":"packages/sources-openapi"},"_npmVersion":"10.8.2","description":"OpenAPI import source adapter","directories":{},"maintainers":[{"name":"didi178","email":"dmitry.stepanov37@gmail.com"},{"name":"alprimak","email":"alprimak@gmail.com"}],"_nodeVersion":"20.20.2","dependencies":{"openapi-types":"^12.1.3","@askturret/mcp-core":"^0.2.0","@apidevtools/swagger-parser":"^10.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","ts-jest":"^29.1.0","typescript":"*","@types/jest":"^29.5.0","@types/node":"^20.14.0","@jest/globals":"^29.7.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-sources-openapi_0.2.0_1789133988673_0.536671496657011"}}},"time":{"created":"2026-08-31T18:20:31.543Z","modified":"2026-09-11T13:39:49.184Z","0.1.0":"2026-08-31T18:20:31.935Z","0.1.1":"2026-09-03T18:05:06.558Z","0.1.2":"2026-09-05T11:23:13.515Z","0.2.0":"2026-09-11T13:39:48.759Z"},"bugs":{"url":"https://github.com/askturret/mcp/issues"},"license":"Apache-2.0","homepage":"https://github.com/askturret/mcp#readme","keywords":["askturret","mcp","server","client"],"repository":{"url":"git+https://github.com/askturret/mcp.git","type":"git","directory":"packages/sources-openapi"},"description":"OpenAPI import source adapter","maintainers":[{"name":"didi178","email":"dmitry.stepanov37@gmail.com"},{"name":"alprimak","email":"alprimak@gmail.com"}],"readme":"# @askturret/mcp-sources-openapi\n\nTurns an OpenAPI document into the canonical operations the AskTurret runtime\ncompiles. It is the bridge between a spec you already maintain and the tools an\nagent sees.\n\n## What it is for\n\n```js\nimport { fromOpenApi } from '@askturret/mcp-sources-openapi';\n\nconst source = fromOpenApi('./openapi.yaml');\n```\n\nHand the result to the runtime — or, more often, let an adapter do it: the\n`mcpFromOpenApi(...)` one-liner in the Express and Fastify adapters is this\nsource wired up for you.\n\nIt supports **OpenAPI 3.0 and 3.1**, resolves `$ref`, preserves where each\noperation came from, and extracts `x-mcp` extension metadata so a spec can carry\nMCP-specific hints without a second file.\n\n## MCP metadata goes in a nested `x-mcp` object\n\n```yaml\npaths:\n  /pets:\n    post:\n      operationId: createPet\n      x-mcp:\n        effects: [destructive]\n```\n\nThe extractor reads `x-mcp` and merges path-level with operation-level, the\noperation winning. Flat `x-mcp-*` keys are a different shape and are not read\nhere.\n\n## Installing\n\n```bash\nnpm install @askturret/mcp-sources-openapi\n```\n\nNode 20+.\n\n## What it does not do\n\nThis package **discovers**; it does not serve and it does not execute. It\nproduces `OperationDefinition`s and stops there:\n\n- it does not open a port — that is `@askturret/mcp-transports`, or an adapter;\n- it does not decide what is exposed — presets and the include filter, in\n  `@askturret/mcp-core`, do that, and mutating operations are opt-in;\n- it does not call your API — executors do, and which executor runs is your choice.\n\nNor does it validate that your spec is *good*. `turret doctor` in\n[`@askturret/mcp-cli`](https://www.npmjs.com/package/@askturret/mcp-cli) is the\ntool that scores a spec for agent-readiness and tells you what is missing.\n\n---\n\nFull documentation is in the [main README](https://github.com/askturret/mcp#readme).\n","readmeFilename":"README.md"}