{"_id":"@anythingmcp/cli","_rev":"7-4989097b333d88cd8a7fbf2dd6349d95","name":"@anythingmcp/cli","dist-tags":{"latest":"0.1.6"},"versions":{"0.0.0-stage":{"name":"@anythingmcp/cli","version":"0.0.0-stage","_id":"@anythingmcp/cli@0.0.0-stage","stub":true,"maintainers":[{"name":"helpcode-ai","email":"matteo@helpcode.ai"}],"dist":{"shasum":"4cee3316e1e70a792358d2f6804aaec9f343f36a","tarball":"https://registry.npmjs.org/@anythingmcp/cli/-/cli-0.0.0-stage.tgz","fileCount":2,"integrity":"sha512-61we+hh6EPONcHrFw/FJGdJmmJg8YKfx3eTBpNj/t4g4BrjxpOQESKg6fArjkqGLi56c8cbrPasT4USbxtVAKA==","signatures":[{"sig":"MEUCIQDGfCeJJ+Uy2C5opGIKsDvvp7Fl8Htxq2WMt2nsNxhZ3gIgD60Xs0staC37A5+ZXW3NxUr9hA++JS9COxb8txPddSg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":338},"_npmUser":{"name":"helpcode-ai","email":"matteo@helpcode.ai"},"description":"Temporary package placeholder for staged publishing","directories":{}},"0.1.0":{"name":"@anythingmcp/cli","version":"0.1.0","keywords":["anythingmcp","amcp","mcp","model-context-protocol","mcp-gateway","mcp-server","mcp-client","cli","ai-agent","ai-agents","connectors","claude","anthropic","chatgpt","cursor"],"license":"AGPL-3.0-only","_id":"@anythingmcp/cli@0.1.0","maintainers":[{"name":"helpcode-ai","email":"matteo@helpcode.ai"}],"homepage":"https://github.com/HelpCode-ai/anythingmcp/tree/main/packages/cli#readme","bugs":{"url":"https://github.com/HelpCode-ai/anythingmcp/issues"},"bin":{"amcp":"dist/index.js"},"dist":{"shasum":"489a5473025220ec36e2f4ce6f12ca4c5aa0e358","tarball":"https://registry.npmjs.org/@anythingmcp/cli/-/cli-0.1.0.tgz","fileCount":9,"integrity":"sha512-ilX6Qoj6q8RoJ5x9EneU6wkoIWR2GKR8Px6xe/4Taaac6znMqsWhhWtTnsnMLnsnSFYEi/HbuzGz3ZH33aoaiA==","signatures":[{"sig":"MEQCIDfM66M2rFfUUq4+5rDZU4YpA/GH8W7zVCin67jG6oToAiA02gpBLN61z3FPlybkCaRCYCSBsz0vpkGTuNshys5u4Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCID9lSW5OspcbDoIBOxFYnvdcyQ59p341yfdLq5rKyoAGAiBN0eCa2TZwN+HhXRtZG92RHtih4fHuFI7Yk6cKzoJrkw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anythingmcp%2fcli@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":127772},"engines":{"node":">=22.12"},"gitHead":"110a43ae2164965db1826ec3023ba3e073666b4f","scripts":{"lint":"tsc --noEmit -p tsconfig.json","test":"node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\" && tsc -p tsconfig.json && node --test dist/cli.test.js","build":"node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\" && tsc -p tsconfig.build.json && node -e \"require('node:fs').chmodSync('dist/index.js', 0o755)\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"helpcode-ai","email":"matteo@helpcode.ai"},"repository":{"url":"git+https://github.com/HelpCode-ai/anythingmcp.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.9","description":"Command-line client for AnythingMCP, the enterprise agent harness and MCP gateway: call MCP tools and fully manage your instance — connectors, MCP servers, users, roles and settings — from the terminal.","directories":{},"_nodeVersion":"22.23.4","dependencies":{"@modelcontextprotocol/client":"^2.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.1.0_1793808584529_0.35272965259329714","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@anythingmcp/cli","version":"0.1.1","keywords":["anythingmcp","amcp","mcp","model-context-protocol","mcp-gateway","mcp-server","mcp-client","cli","ai-agent","ai-agents","connectors","claude","anthropic","chatgpt","cursor"],"license":"AGPL-3.0-only","_id":"@anythingmcp/cli@0.1.1","maintainers":[{"name":"helpcode-ai","email":"matteo@helpcode.ai"}],"homepage":"https://github.com/HelpCode-ai/anythingmcp/tree/main/packages/cli#readme","bugs":{"url":"https://github.com/HelpCode-ai/anythingmcp/issues"},"bin":{"amcp":"dist/index.js"},"dist":{"shasum":"a7ab5defe9927478c36daa55b6d58d7e4718c03b","tarball":"https://registry.npmjs.org/@anythingmcp/cli/-/cli-0.1.1.tgz","fileCount":9,"integrity":"sha512-07R+jNPZ29s/IUW1nCI7m0G/Uj/ogu5PAMN/cct5EEBxfK+YwoxnAz1rlVGKYbrs3BXThUsFyw4mNo4O/MzLkA==","signatures":[{"sig":"MEUCIQD/6FHHoVXqKN2Iq7vJ85NIgP9Bqw3S/44hRN5ERP9GYgIgdtRT51du72wwrOd51hNpOkY0m8jN2KKOD+dUkJhwPIo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCICB9Z+h+k0H84toi7NsDyZECknStd4I1lQTqxWJiPkW6AiEA1TOr4PZZDchUGx845YFEIv4AL1fYGUKnS6heigt8k1M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anythingmcp%2fcli@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":127902},"engines":{"node":">=22.12"},"gitHead":"d699bcfd173ebe32a3a111fb8f6140713d819a4c","scripts":{"lint":"tsc --noEmit -p tsconfig.json","test":"node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\" && tsc -p tsconfig.json && node --test dist/cli.test.js","build":"node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\" && tsc -p tsconfig.build.json && node -e \"require('node:fs').chmodSync('dist/index.js', 0o755)\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"adaa4f08-ad1e-4fad-9aee-df2e381aac49"}},"repository":{"url":"git+https://github.com/HelpCode-ai/anythingmcp.git","type":"git","directory":"packages/cli"},"_npmVersion":"12.2.1","description":"Command-line client for AnythingMCP, the enterprise agent harness and MCP gateway: call MCP tools and fully manage your instance — connectors, MCP servers, users, roles and settings — from the terminal.","directories":{},"_nodeVersion":"22.23.4","dependencies":{"@modelcontextprotocol/client":"^2.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.1.1_1793810462409_0.6698533984739129","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@anythingmcp/cli","version":"0.1.2","keywords":["anythingmcp","amcp","mcp","model-context-protocol","mcp-gateway","mcp-server","mcp-client","cli","ai-agent","ai-agents","connectors","claude","anthropic","chatgpt","cursor"],"license":"AGPL-3.0-only","_id":"@anythingmcp/cli@0.1.2","maintainers":[{"name":"helpcode-ai","email":"matteo@helpcode.ai"}],"homepage":"https://github.com/HelpCode-ai/anythingmcp/tree/main/packages/cli#readme","bugs":{"url":"https://github.com/HelpCode-ai/anythingmcp/issues"},"bin":{"amcp":"dist/index.js"},"dist":{"shasum":"3f8b8c06bfbb8e5859a54ad930bf9b3b9e1cda36","tarball":"https://registry.npmjs.org/@anythingmcp/cli/-/cli-0.1.2.tgz","fileCount":9,"integrity":"sha512-A13qagdI3IIDvjgikKA5Ti/FDeETQTK47O/DxG9F4OKl+S5w8l5tzRg0WY9s4BFmoZSvF9pPBLl+A+gEyeriig==","signatures":[{"sig":"MEYCIQD7nw+8iHphPM3R61uBVWY74WlAWNkVmilDKslYUgoPLgIhAOh3OExn0XeYNrdNWarDuBYnPjUm+nOziiPNLxynkJBJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCbuhq/dHigHiAAUIDtkXJS9AttvFaZtwQ880vTgwH+mwIgLgOzby+rOlbsLUXhgbOrE2M/DLSXf5iWjoKJXI0XGN0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anythingmcp%2fcli@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":128258},"engines":{"node":">=22.12"},"gitHead":"baca412d7a84973f4f4d8210a801a5e163692d02","scripts":{"lint":"tsc --noEmit -p tsconfig.json","test":"node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\" && tsc -p tsconfig.json && node --test dist/cli.test.js","build":"node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\" && tsc -p tsconfig.build.json && node -e \"require('node:fs').chmodSync('dist/index.js', 0o755)\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"adaa4f08-ad1e-4fad-9aee-df2e381aac49"}},"repository":{"url":"git+https://github.com/HelpCode-ai/anythingmcp.git","type":"git","directory":"packages/cli"},"_npmVersion":"12.2.1","description":"Command-line client for AnythingMCP, the enterprise agent harness and MCP gateway: call MCP tools and fully manage your instance — connectors, MCP servers, users, roles and settings — from the terminal.","directories":{},"_nodeVersion":"22.23.4","dependencies":{"@modelcontextprotocol/client":"^2.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.1.2_1793825155833_0.8278658953385349","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@anythingmcp/cli","version":"0.1.4","keywords":["anythingmcp","amcp","mcp","model-context-protocol","mcp-gateway","mcp-server","mcp-client","cli","ai-agent","ai-agents","connectors","claude","anthropic","chatgpt","cursor","code-mode","code-execution","mcp-tools","openapi","api-gateway","automation","devops","terminal"],"license":"AGPL-3.0-only","_id":"@anythingmcp/cli@0.1.4","maintainers":[{"name":"helpcode-ai","email":"matteo@helpcode.ai"}],"homepage":"https://github.com/HelpCode-ai/anythingmcp/tree/main/packages/cli#readme","bugs":{"url":"https://github.com/HelpCode-ai/anythingmcp/issues"},"bin":{"amcp":"dist/index.js"},"dist":{"shasum":"8dc790371da88ca20931264d68c64d41b81524cb","tarball":"https://registry.npmjs.org/@anythingmcp/cli/-/cli-0.1.4.tgz","fileCount":9,"integrity":"sha512-1ewAMlh3hnX9X3A1sIkWmI92nkpdiHhHx2aU019CSzAiFMTS0xrseyvLs/KN61HeLetaaK8LzGOFNQV9DUtSeQ==","signatures":[{"sig":"MEUCIGhOpyJQpYi9tFI/y2SdvNVwAuYewQJMI1n97zuO0kerAiEAt5a/5BIIOsIjWKHPM2cVrToZ6a4U2r8wcd5UjA1iOoM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDbmaD+qtFpXYCTumrxHBkTlOag9T7iweWdLufdAK1AqQIhAJ4vLUPQ1VFGjm2AnhQ3ye49NnJJzLHv8UODHDgd+Kre","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anythingmcp%2fcli@0.1.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":146154},"engines":{"node":">=22.12"},"gitHead":"2109762fe7cd36262238790821e0b13b9633b12d","scripts":{"lint":"tsc --noEmit -p tsconfig.json","test":"node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\" && tsc -p tsconfig.json && node --test dist/cli.test.js","build":"node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\" && tsc -p tsconfig.build.json && node -e \"require('node:fs').chmodSync('dist/index.js', 0o755)\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"adaa4f08-ad1e-4fad-9aee-df2e381aac49"}},"repository":{"url":"git+https://github.com/HelpCode-ai/anythingmcp.git","type":"git","directory":"packages/cli"},"_npmVersion":"12.2.2","description":"Command-line client for AnythingMCP, the open-source agent harness and MCP gateway: call MCP tools from your shell, scripts and CI, run code-mode programs that chain many tool calls in one step, and manage your instance — connectors, MCP servers, users, r","directories":{},"_nodeVersion":"22.23.4","dependencies":{"@modelcontextprotocol/client":"^2.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.1.4_1793875935543_0.42129497764868906","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@anythingmcp/cli","version":"0.1.5","keywords":["anythingmcp","amcp","mcp","model-context-protocol","mcp-gateway","mcp-server","mcp-client","cli","ai-agent","ai-agents","connectors","claude","anthropic","chatgpt","cursor","code-mode","code-execution","mcp-tools","openapi","api-gateway","automation","devops","terminal"],"license":"AGPL-3.0-only","_id":"@anythingmcp/cli@0.1.5","maintainers":[{"name":"helpcode-ai","email":"matteo@helpcode.ai"}],"homepage":"https://github.com/HelpCode-ai/anythingmcp/tree/main/packages/cli#readme","bugs":{"url":"https://github.com/HelpCode-ai/anythingmcp/issues"},"bin":{"amcp":"dist/index.js"},"dist":{"shasum":"2cd662e7d265bb1871c74626e0ecc834266e0386","tarball":"https://registry.npmjs.org/@anythingmcp/cli/-/cli-0.1.5.tgz","fileCount":9,"integrity":"sha512-gUhl0NFLN4ijcIaVB8IAbDHigO94FNCdnCop4dZaE+6LM3wMx6Lk4yce1VVFQx93esMBmKMObOy3VsnD5KaE8w==","signatures":[{"sig":"MEUCICoNiAzRVy/ptnhyTSemcs2sb5nz3+bKJdoZuf+kziTOAiEA+YWmPhtp8kCDWUVTJaBMLUu85Pwr9u4DIAHFFNsHl88=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQC+5vZ+a/JL4LfiRL9NupLkuwWzlPOCMJLMrFWSR8VJVAIgf6XdEYluRxPGi/lHOKTKgvAKuC0ws2PRQWihsNUcUec=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anythingmcp%2fcli@0.1.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":156536},"engines":{"node":">=22.12"},"gitHead":"abc2dd62f97f4c0f1416dc96aeb6e7c45925dec4","scripts":{"lint":"tsc --noEmit -p tsconfig.json","test":"node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\" && tsc -p tsconfig.json && node --test dist/cli.test.js","build":"node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\" && tsc -p tsconfig.build.json && node -e \"require('node:fs').chmodSync('dist/index.js', 0o755)\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"adaa4f08-ad1e-4fad-9aee-df2e381aac49"}},"repository":{"url":"git+https://github.com/HelpCode-ai/anythingmcp.git","type":"git","directory":"packages/cli"},"_npmVersion":"12.2.2","description":"Command-line client for AnythingMCP, the open-source agent harness and MCP gateway: call MCP tools from your shell, scripts and CI, run code-mode programs that chain many tool calls in one step, and manage your instance — connectors, MCP servers, users, r","directories":{},"_nodeVersion":"22.23.4","dependencies":{"@modelcontextprotocol/client":"^2.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cli_0.1.5_1794340983761_0.5798205658433616","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"_id":"@anythingmcp/cli@0.1.6","bin":{"amcp":"dist/index.js"},"bugs":{"url":"https://github.com/HelpCode-ai/anythingmcp/issues"},"dist":{"shasum":"3b1cc48028dd3d8468a13c1c13eb2a8e9ec43a29","tarball":"https://registry.npmjs.org/@anythingmcp/cli/-/cli-0.1.6.tgz","fileCount":9,"integrity":"sha512-bItfLazcfb9S5xjNS6qnGeYwYAjDHrexvux9WNsao9zqjVxw3zY/dCP7P/aebg8l/JA/3s10eME/MEgWB+k1Ow==","signatures":[{"sig":"MEQCIG5+g2z6s3DZN4HrUk7mUV4/Vqe1PdkRjkSLiX+hQFsZAiAKecS5OjFceL8MMA3Vrm9NlaUbwGrHKGtDqV17OjL2JQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD30h5qg894ZCTRRYpVS/22nOUfReEHKGusBOLO9lxKhQIgMLYA1PrmXyG29gHnlANR4Vxnjf7Ghs04wTNu3aeopkk="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@anythingmcp%2fcli@0.1.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":157219},"name":"@anythingmcp/cli","engines":{"node":">=22.12"},"gitHead":"177fead0df7acaaa51677a30f1a105d1f046ca25","license":"AGPL-3.0-only","scripts":{"lint":"tsc --noEmit -p tsconfig.json","test":"node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\" && tsc -p tsconfig.json && node --test dist/cli.test.js","build":"node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\" && tsc -p tsconfig.build.json && node -e \"require('node:fs').chmodSync('dist/index.js', 0o755)\"","prepublishOnly":"npm run build"},"version":"0.1.6","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"adaa4f08-ad1e-4fad-9aee-df2e381aac49"}},"homepage":"https://github.com/HelpCode-ai/anythingmcp/tree/main/packages/cli#readme","keywords":["anythingmcp","amcp","mcp","model-context-protocol","mcp-gateway","mcp-server","mcp-client","cli","ai-agent","ai-agents","connectors","claude","anthropic","chatgpt","cursor","code-mode","code-execution","mcp-tools","openapi","api-gateway","automation","devops","terminal"],"repository":{"url":"git+https://github.com/HelpCode-ai/anythingmcp.git","type":"git","directory":"packages/cli"},"_npmVersion":"12.2.2","description":"Command-line client for AnythingMCP, the open-source agent harness and MCP gateway: call MCP tools from your shell, scripts and CI, run code-mode programs that chain many tool calls in one step, and manage your instance — connectors, MCP servers, users, r","directories":{},"maintainers":[{"name":"helpcode-ai","email":"matteo@helpcode.ai"}],"_nodeVersion":"22.23.4","dependencies":{"@modelcontextprotocol/client":"^2.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.9.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cli_0.1.6_1794597703168_0.11748878392191231"}}},"time":{"created":"2026-11-04T16:06:36.314Z","modified":"2026-11-13T19:21:43.699Z","0.0.0-stage":"2026-11-04T16:06:36.314Z","0.1.0":"2026-11-04T16:09:44.615Z","0.1.1":"2026-11-04T16:41:02.513Z","0.1.2":"2026-11-04T20:45:55.919Z","0.1.4":"2026-11-05T10:52:15.638Z","0.1.5":"2026-11-10T20:03:03.890Z","0.1.6":"2026-11-13T19:21:43.282Z"},"bugs":{"url":"https://github.com/HelpCode-ai/anythingmcp/issues"},"license":"AGPL-3.0-only","homepage":"https://github.com/HelpCode-ai/anythingmcp/tree/main/packages/cli#readme","keywords":["anythingmcp","amcp","mcp","model-context-protocol","mcp-gateway","mcp-server","mcp-client","cli","ai-agent","ai-agents","connectors","claude","anthropic","chatgpt","cursor","code-mode","code-execution","mcp-tools","openapi","api-gateway","automation","devops","terminal"],"repository":{"url":"git+https://github.com/HelpCode-ai/anythingmcp.git","type":"git","directory":"packages/cli"},"description":"Command-line client for AnythingMCP, the open-source agent harness and MCP gateway: call MCP tools from your shell, scripts and CI, run code-mode programs that chain many tool calls in one step, and manage your instance — connectors, MCP servers, users, r","maintainers":[{"name":"helpcode-ai","email":"matteo@helpcode.ai"}],"readme":"<p align=\"center\">\n  <a href=\"https://anythingmcp.com/developers/cli\">\n    <img src=\"https://raw.githubusercontent.com/HelpCode-ai/anythingmcp/main/packages/cli/assets/hero.png\" alt=\"amcp, the AnythingMCP CLI: log in through the browser, list and call MCP tools such as shopify_search_orders, pipe the JSON into jq, and test a connector through the management API.\" width=\"100%\" />\n  </a>\n</p>\n\n<h1 align=\"center\">AnythingMCP CLI (<code>amcp</code>)</h1>\n\n<p align=\"center\">\n  <b>Call MCP tools, run code-mode programs and manage your whole MCP gateway from the terminal.</b><br />\n  The official command-line client for <a href=\"https://anythingmcp.com\">AnythingMCP</a>, the open-source agent harness and MCP gateway.\n</p>\n\n<p align=\"center\">\n  <a href=\"https://www.npmjs.com/package/@anythingmcp/cli\"><img src=\"https://img.shields.io/npm/v/@anythingmcp/cli?color=2159e0&label=npm\" alt=\"npm version\" /></a>\n  <a href=\"https://www.npmjs.com/package/@anythingmcp/cli\"><img src=\"https://img.shields.io/npm/dm/@anythingmcp/cli?color=2159e0\" alt=\"npm downloads\" /></a>\n  <img src=\"https://img.shields.io/node/v/@anythingmcp/cli?color=2159e0\" alt=\"Node.js version\" />\n  <a href=\"https://github.com/HelpCode-ai/anythingmcp/blob/main/LICENSE\"><img src=\"https://img.shields.io/badge/license-AGPL--3.0-2159e0\" alt=\"License: AGPL-3.0\" /></a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://anythingmcp.com/developers/cli\">Website</a> ·\n  <a href=\"https://anythingmcp.com/guides/anythingmcp-cli\">Guide with examples</a> ·\n  <a href=\"https://anythingmcp.com/developers/api\">API reference</a> ·\n  <a href=\"https://github.com/HelpCode-ai/anythingmcp\">AnythingMCP on GitHub</a>\n</p>\n\n---\n\n`amcp` does two jobs with one binary:\n\n- **Calls MCP tools.** These are the same tools your AI clients use (Shopify, HubSpot, SAP, Odoo, Postgres, an SFTP share…). You can run them by hand, in shell scripts, from cron and CI, or as a **code-mode program** that loops over dozens of tool calls in a single step.\n- **Drives the management API.** With a management-scoped key, everything the dashboard does — connectors, MCP servers, users, roles, SSO, memory, skills, audit — is one `amcp api` command away, for a person or for a connected AI agent.\n\nIt works with [AnythingMCP Cloud](https://cloud.anythingmcp.com) and self-hosted instances.\n\n```bash\nnpm i -g @anythingmcp/cli\n```\n\nOr with Homebrew on macOS and Linux, which also installs Node.js and the shell completions:\n\n```bash\nbrew install helpcode-ai/tap/amcp\n```\n\nWith npm, it requires Node.js 22.12 or newer. The examples below use real commands, flags, endpoints and tool names (the Shopify, HubSpot and Slack tools come from the built-in catalogue connectors). Only the data in the output is invented.\n\n## Contents\n\n- [Quick start](#quick-start)\n- [Recipes](#recipes)\n  - [Call a tool with real arguments](#call-a-tool-with-real-arguments)\n  - [Pipe results into jq, cron and CI](#pipe-results-into-jq-cron-and-ci)\n  - [Code mode: one program, many tool calls](#code-mode-one-program-many-tool-calls)\n  - [Stand up a workspace in one script](#stand-up-a-workspace-in-one-script)\n  - [Turn your own API into MCP tools](#turn-your-own-api-into-mcp-tools)\n  - [See what your agents did](#see-what-your-agents-did)\n  - [Check what a plan change would pause (Cloud)](#check-what-a-plan-change-would-pause-cloud)\n- [Command reference](#command-reference)\n- [Management API (`amcp api`)](#management-api-amcp-api)\n- [Shell completion](#shell-completion)\n- [Security](#security)\n- [About AnythingMCP](#about-anythingmcp)\n\n## Quick start\n\n`amcp` uses two kinds of key, each in its own profile:\n\n| You want to… | Key | Log in with |\n|---|---|---|\n| Call the tools of one MCP server | an **MCP key** for that server | `amcp login --url … --server SERVER_ID` |\n| Manage the instance (`amcp api`) | a **management key** (read-only or admin) | `amcp login --browser` |\n\n```console\n$ amcp login --url https://cloud.anythingmcp.com --server cmob60dvv00c01zrpeujwmnep\nMCP API key:\nLogged in to https://cloud.anythingmcp.com (profile: default).\n\n$ amcp tools ls --filter order\nshopify_search_orders   read-only   Search orders with Shopify search syntax (for example `financial_status:paid …\nshopify_get_order       read-only   Get one order: status, totals (subtotal, shipping, tax, discounts, refunds) …\n\n$ amcp login --browser --scope admin --url https://cloud.anythingmcp.com\nLogged in to https://cloud.anythingmcp.com (management, profile: default).\n\n$ amcp api GET /api/mcp-servers | jq -r '.[] | \"\\(.id)  \\(.name)\"'\ncmob60dvv00c01zrpeujwmnep  Default\ncmoc2k4hd00f11zrp9xq3vbnw  Sales\n```\n\n## Recipes\n\n### Call a tool with real arguments\n\n`tools describe` prints a tool's full description and input JSON schema. `tools call` runs the tool with arguments that match it:\n\n```console\n$ amcp tools describe shopify_search_orders\n$ amcp tools call shopify_search_orders \\\n    --args '{\"query\":\"financial_status:paid created_at:>=2026-11-01\",\"first\":2}'\n{\n  \"orders\": {\n    \"pageInfo\": { \"hasNextPage\": true, \"endCursor\": \"eyJsYXN0X2lkIjo2…\" },\n    \"nodes\": [\n      {\n        \"name\": \"#1043\",\n        \"displayFinancialStatus\": \"PAID\",\n        \"displayFulfillmentStatus\": \"UNFULFILLED\",\n        \"currentTotalPriceSet\": { \"shopMoney\": { \"amount\": \"412.80\", \"currencyCode\": \"EUR\" } },\n        \"customer\": { \"displayName\": \"Kellerhaus GmbH\" }\n      },\n      …\n```\n\nArguments can also come from a file (`--args @args.json`) or from stdin (`--args -`).\n\n### Pipe results into jq, cron and CI\n\nA tool's text output is its JSON on stdout. Errors go to stderr with a distinct exit code, so `amcp` composes like any Unix tool:\n\n```console\n$ amcp tools call shopify_search_orders \\\n    --args '{\"query\":\"fulfillment_status:unfulfilled created_at:<2026-11-03\"}' \\\n  | jq -r '.orders.nodes[] | [.name, .customer.displayName, .createdAt[:10]] | @tsv'\n#1038   Kellerhaus GmbH     2026-10-30\n#1035   Studio Lumen        2026-10-29\n#1031   Bäckerei Hofmann    2026-10-28\n```\n\nA daily job that posts late orders to Slack (the Slack connector sits on the same MCP server):\n\n```bash\n#!/usr/bin/env bash\n# late-orders.sh — run from cron: 0 8 * * 1-5\nset -euo pipefail\nSINCE=$(date -d '-2 days' +%F)     # GNU date; on macOS: date -v-2d +%F\nLATE=$(amcp tools call shopify_search_orders \\\n  --args \"{\\\"query\\\":\\\"fulfillment_status:unfulfilled created_at:<$SINCE\\\"}\" \\\n  | jq -r '.orders.nodes[] | \"• \\(.name) — \\(.customer.displayName)\"')\n[ -z \"$LATE\" ] && exit 0\njq -n --arg text \"Orders waiting more than 2 days:\n$LATE\" '{channel: \"#fulfilment\", text: $text}' \\\n  | amcp tools call slack_post_message --args - --yes\n```\n\n### Code mode: one program, many tool calls\n\n<p align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/HelpCode-ai/anythingmcp/main/packages/cli/assets/code-mode.png\" alt=\"A code-mode program that pages through every paid Shopify order since October, keeps the five biggest customers and looks each one up in HubSpot, run from the terminal with a single amcp tools call code_execute.\" width=\"100%\" />\n</p>\n\nWhen an MCP server's `codeMode` is `inline`, it offers a `code_execute` tool. You send it a short JavaScript program, and a sandbox next to your tools runs it with three helpers: `amcp.search(query)`, `amcp.describe(tool)` and `amcp.run(tool, args)`.\n\nThe question here: *who are our five biggest Shopify customers since October, and where is each one in HubSpot?*\n\n```js\n// top-customers.js — runs inside the AnythingMCP sandbox: read-only, your own permissions\nconst byEmail = new Map();\nlet after = null, pages = 0;\n\n// 1. Page through every paid Shopify order since October\ndo {\n  const r = await amcp.run(\"shopify_search_orders\", {\n    query: \"financial_status:paid created_at:>=2026-10-01\",\n    first: 250, after,\n  });\n  for (const o of r.orders.nodes) {\n    if (!o.email) continue;\n    const c = byEmail.get(o.email)\n      ?? { name: o.customer?.displayName, orders: 0, revenue: 0 };\n    c.orders += 1;\n    c.revenue += Number(o.currentTotalPriceSet.shopMoney.amount);\n    byEmail.set(o.email, c);\n  }\n  const { hasNextPage, endCursor } = r.orders.pageInfo;\n  after = hasNextPage ? endCursor : null;\n  pages++;\n} while (after);\n\n// 2. Keep the five biggest customers\nconst top = [...byEmail]\n  .sort((a, b) => b[1].revenue - a[1].revenue)\n  .slice(0, 5);\n\n// 3. Join each one with its HubSpot contact\nconst result = [];\nfor (const [email, c] of top) {\n  const h = await amcp.run(\"hubspot_search_objects\", {\n    object_type: \"contacts\",\n    filter_groups: [{ filters: [\n      { propertyName: \"email\", operator: \"EQ\", value: email },\n    ] }],\n    properties: [\"lifecyclestage\"],\n    limit: 1,\n  });\n  const stage = h.results[0]?.properties.lifecyclestage ?? \"not in CRM\";\n  result.push({ email, ...c, revenue: c.revenue.toFixed(2), stage });\n}\nreturn { pagesScanned: pages, top: result };\n```\n\n```console\n$ amcp api PUT /api/mcp-servers/$SRV --yes --data '{\"codeMode\":\"inline\"}'   # once, admin key\n$ jq -Rs '{code: .}' top-customers.js | amcp tools call code_execute --args -\n{\n  \"pagesScanned\": 3,\n  \"top\": [\n    {\n      \"email\": \"einkauf@kellerhaus.de\",\n      \"name\": \"Kellerhaus GmbH\",\n      \"orders\": 14,\n      \"revenue\": \"4820.50\",\n      \"stage\": \"customer\"\n    },\n    …\n  ]\n}\n```\n\nThat's **8 tool calls** (3 pages of orders and 5 CRM lookups) for **one** call from your terminal. You get back five customers instead of 750 raw orders, which also matters when the caller is an AI agent: it reads one short answer, so it spends fewer tokens and makes fewer mistakes.\n\nThe guardrails:\n\n- Programs can only call **read-only** tools, with the permissions of the calling key.\n- They run in an **isolated sandbox**: no filesystem, network or environment access, a deadline, and a cap on tool calls per run.\n- Every inner call is **audited**.\n- Inline code needs the server's `codeMode` set to `inline` *and* a role with the inline-code capability. It's available on the Team plan and above.\n\nWhen a program is worth keeping, `code_propose_tool` records it as a proposal for an admin. Once approved, it becomes a named tool for every AI client on the server:\n\n```console\n$ jq -Rs '{\n    name: \"top_customers_with_crm_stage\",\n    description: \"Top 5 Shopify customers since October, with their HubSpot lifecycle stage\",\n    rationale: \"Sales asks for this every Monday\",\n    code: .\n  }' top-customers.js | amcp tools call code_propose_tool --args -\n{\"ok\":true,\"proposalId\":\"cmh4k2…\",\"message\":\"Proposal recorded for admin review. It will not run or become a tool until an admin approves it.\"}\n```\n\n### Stand up a workspace in one script\n\nInstall a catalogue connector with its token, give the sales team its own MCP server, attach the connector, turn on code mode and test the connection:\n\n```bash\n#!/usr/bin/env bash\n# bootstrap.sh — needs: amcp login --browser --scope admin\nset -euo pipefail\n\nCONN=$(jq -n --arg t \"$HUBSPOT_TOKEN\" '{credentials: {HUBSPOT_ACCESS_TOKEN: $t}}' \\\n  | amcp api POST /api/adapters/hubspot/import --data - --yes | jq -r .connectorId)\n\nSRV=$(amcp api POST /api/mcp-servers --yes \\\n  --data '{\"name\":\"Sales\",\"description\":\"CRM tools for the sales team\"}' | jq -r .id)\n\namcp api PUT /api/mcp-servers/$SRV/connectors --yes --data \"{\\\"connectorIds\\\":[\\\"$CONN\\\"]}\"\namcp api PUT /api/mcp-servers/$SRV --yes --data '{\"codeMode\":\"inline\"}'\namcp api POST /api/connectors/$CONN/test --yes\n# → { \"ok\": true, \"kind\": \"ok\", \"message\": \"Connection successful\" }\n```\n\nThe token travels through `jq --arg` and stdin, so it never shows up in `ps` or your shell history. Every non-GET call in a script needs an explicit `--yes`.\n\n### Turn your own API into MCP tools\n\nCreate a REST connector, then import its OpenAPI spec. WSDL, GraphQL, Postman, cURL and HAR work the same way, through `source`:\n\n```bash\nID=$(amcp api POST /api/connectors --yes --data '{\n  \"name\": \"Acme Billing\", \"type\": \"REST\",\n  \"baseUrl\": \"https://api.acme.example/v1\",\n  \"authType\": \"BEARER_TOKEN\", \"authConfig\": { \"token\": \"'\"$ACME_TOKEN\"'\" }\n}' | jq -r .id)\n\namcp api POST /api/connectors/$ID/import --yes \\\n  --data '{\"source\":\"openapi\",\"url\":\"https://api.acme.example/v1/openapi.json\"}'\n```\n\n### See what your agents did\n\nEvery tool call, from people or agents, is audited:\n\n```console\n$ amcp api GET \"/api/audit/invocations?status=ERROR&limit=3\" \\\n  | jq -r '.[] | [.createdAt[11:16], .tool.name, .user.email, .error[:40]] | @tsv'\n08:41   hubspot_search_objects   lea@acme.io         HTTP 429: retry after 1s\n07:02   shopify_get_order        ops-agent@acme.io   Order not found\n06:55   zendesk_get_ticket       marco@acme.io       HTTP 404: RecordNotFound\n```\n\n`GET /api/audit/breakdowns?days=30` returns usage and cost by connector, MCP server and user.\n\n### Check what a plan change would pause (Cloud)\n\nOn AnythingMCP Cloud, each plan includes a number of active connectors, MCP servers and users, plus File Search and code-mode limits. Before moving to a smaller plan, ask what fits. A read-only management key is enough:\n\n```console\n$ amcp api GET \"/api/license/plan-fit?plan=starter\" \\\n  | jq -r '.plans.starter | \"fits: \\(.fits)\", (.connectors.pause[] | \"pause: \\(.name) (\\(.calls30d) calls in 30 days)\")'\nfits: false\npause: Etsy (3 calls in 30 days)\npause: Airtable (0 calls in 30 days)\n```\n\nTo choose yourself which connectors stay active, pause one and switch on another. At the plan's limit, switching one on without pausing another first answers `403` with `\"code\": \"PLAN_LIMIT\"`:\n\n```bash\namcp api PUT /api/connectors/$OLD --yes --data '{\"isActive\":false}'\namcp api PUT /api/connectors/$NEW --yes --data '{\"isActive\":true}'\n```\n\nWithout `?plan=`, it answers for Starter and Team. The connectors and MCP servers used most in the last 30 days stay active. Paused ones are never deleted. The answer also covers users, File Search (folders, files, storage) and code mode (saved code tools, inline code, runs this month). Self-hosted instances have none of these limits and answer 404.\n\n### Limit how often a role may call a tool\n\nA role grants tools to its members. Each grant can also carry a limit per minute and per hour. The limit counts per user and tool, across all of that user's API keys and sessions. Workspace admins are never limited. Setting limits needs an admin management key:\n\n```bash\nROLE=$(amcp api GET /api/roles | jq -r '.[] | select(.name==\"Sales\") | .id')\nTOOL=$(amcp api GET /api/roles/$ROLE/tools | jq -r '.[] | select(.tool.name==\"erp_query\") | .tool.id')\n\n# 10 calls per minute and 200 per hour for each member of the role\namcp api PUT /api/roles/$ROLE/tools/$TOOL/rate-limit --yes \\\n  --data '{\"callsPerMinute\":10,\"callsPerHour\":200}'\n\n# Remove the per-minute limit and keep the hourly one (null means unlimited)\namcp api PUT /api/roles/$ROLE/tools/$TOOL/rate-limit --yes --data '{\"callsPerMinute\":null}'\n```\n\nThe AI client gets a tool error with the limit and the seconds to wait. Refused calls are logged with an error starting `Rate limit reached`:\n\n```bash\namcp api GET \"/api/audit/invocations?status=ERROR&limit=50\" \\\n  | jq -r '.[] | select(.error | startswith(\"Rate limit reached\")) | [.createdAt[0:16], .tool.name, .user.email] | @tsv'\n```\n\nThe same limits can be set in the dashboard under Settings → Roles → Manage tools.\n\n## Command reference\n\n| Command | What it does |\n|---|---|\n| `amcp login --url URL --server ID` | Save an MCP key for one server's tools (prompted, never echoed) |\n| `amcp login --browser [--scope admin] --url URL` | Mint a management key through the dashboard |\n| `amcp login --management --url URL --key-stdin` | Save an existing management key |\n| `amcp whoami` / `amcp logout` | Show / remove the current profile |\n| `amcp tools ls [--filter TEXT]` | List tools with their read-only/destructive hint |\n| `amcp tools describe TOOL` | Full description and input JSON schema |\n| `amcp tools call TOOL [--args JSON\\|@file\\|-] [--yes] [--timeout S]` | Call a tool |\n| `amcp api METHOD PATH [--data JSON\\|@file\\|-] [--yes]` | Call the management API |\n| `amcp api --list [RESOURCE]` | List management operations offline |\n| `amcp completion bash\\|zsh\\|fish` | Print a shell completion script |\n| `amcp --version` | Print the CLI version |\n\nEvery command accepts `--profile NAME` and `--json`.\n\n### Logging in with an MCP key\n\n`login` prompts for an MCP API key without displaying it. For scripts, use `--key-stdin` or the `AMCP_API_KEY` environment variable. Never put the key in a command argument. The CLI checks the key by requesting `tools/list` before saving it.\n\nIt always connects to `/mcp/<serverId>`, including on Cloud, because the bare `/mcp` endpoint exposes a different tool set there. Pass the instance base URL to `--url`, without `/mcp/<serverId>`. HTTPS is required except for `localhost`, `127.0.0.0/8` and `::1` during local development. Redirects are refused, so the API key can't follow a request to another origin.\n\n```bash\nprintf '%s\\n' \"$AMCP_API_KEY\" | amcp login --url https://cloud.anythingmcp.com \\\n  --server YOUR_SERVER_ID --key-stdin --profile cloud\namcp tools ls --profile cloud --filter customer\namcp whoami --profile cloud\namcp logout --profile cloud\n```\n\n### Profiles and environment\n\nFor CI, `AMCP_URL`, `AMCP_SERVER` and `AMCP_API_KEY` provide the connection without saving a profile. `--url` and `--server` take precedence over their matching environment variables. If a URL comes from `--url` or `AMCP_URL`, supply `AMCP_API_KEY` too: a saved profile key is used only with its saved origin.\n\nProfiles live in `$XDG_CONFIG_HOME/amcp/config.json` or `~/.config/amcp/config.json`, with file mode `0600` on Unix. Relative `XDG_CONFIG_HOME` values are ignored. `whoami` shows only a key prefix.\n\nOne profile can hold both an MCP key (for `tools`) and a management key (for `api`). Logging in with one keeps the other when both point at the same instance.\n\n### Tool calls\n\n`tools ls` shows each tool's name, its read-only/destructive hint and the first line of its description. `tools describe` shows the full description and input JSON schema.\n\n- Without `--args`, the CLI sends an empty object. Arguments must be a JSON object.\n- Calls time out after 300 seconds by default. Set `--timeout <seconds>` for a different positive timeout (fractional seconds are allowed). A timeout exits with code 4 and reports `Tool call timed out after <seconds>s`.\n- A tool annotated as destructive asks for confirmation in an interactive terminal. In a non-interactive script, pass `--yes` explicitly.\n- Tool text goes to stdout. Non-text content is available with `--json`.\n\n### JSON output and exit codes\n\n`--json` works with every command. It writes one JSON object to stdout:\n\n| Command | JSON output |\n|---|---|\n| `login` / `logout` | the profile |\n| `whoami` | the instance URL, MCP `endpoint` and masked key |\n| `tools ls` | `{ \"tools\": [...] }` |\n| `tools describe` | `{ \"tool\": {...} }` |\n| `tools call` | `{ \"tool\": \"name\", \"result\": {...} }` |\n| `api` | `{ \"status\": 200, \"data\": ... }` |\n\nCLI usage and connection errors go to stderr, also as JSON when `--json` is set, with the shape `{ \"error\": \"message\", \"exitCode\": 4 }`. A tool's `isError` result goes to stdout in JSON mode and to stderr in text mode.\n\n| Exit code | Meaning |\n|---|---|\n| `0` | success |\n| `1` | the tool returned `isError`, or the API answered 4xx |\n| `2` | invalid usage or JSON arguments |\n| `3` | authentication failed (401/403) |\n| `4` | connection failure, server error (5xx) or timeout |\n\n## Management API (`amcp api`)\n\n`amcp api` calls the instance's management API (`/api/*`) with a **management-scoped** key. That covers connectors, MCP servers, roles, users, SSO, settings, memory, skills, the knowledge graph and more. It works like `gh api`, but for AnythingMCP.\n\nA management key is an ordinary MCP API key minted with a management scope: `MANAGEMENT_READ` or `MANAGEMENT_ADMIN`. You can mint one from the dashboard or with `POST /api/mcp-keys`. The key carries its owner's identity and role, and it never grants privilege, so admin-only routes still need an admin owner. `MANAGEMENT_READ` keys can only call safe methods (GET/HEAD), and connector exports made with them never include secrets, even for an admin owner.\n\n### Getting a management key\n\nMint one from the dashboard (Settings → Management API keys), choosing read-only or admin, or let the CLI do it through the browser:\n\n```bash\namcp login --browser --url https://cloud.anythingmcp.com            # read-only\namcp login --browser --scope admin --url https://cloud.anythingmcp.com\n```\n\n`--browser` opens the instance's authorization page, where you approve the request under your existing dashboard session (SSO included). The CLI prints a short verification code; check that it matches the page before you approve.\n\nThe dashboard mints the key and returns it to the CLI over a one-shot `127.0.0.1` loopback, so it never appears in a URL, log or shell history. It's an ordinary management key that you can see and revoke in Settings. On a headless machine, set `AMCP_NO_BROWSER=1` and open the printed URL yourself. The admin scope is available only to workspace admins.\n\n### Using a management key\n\nLog in with a management key (no server needed), then call any endpoint:\n\n```bash\nprintf '%s\\n' \"$AMCP_API_KEY\" | amcp login --management --url https://cloud.anythingmcp.com --key-stdin\namcp api GET /api/connectors\namcp api GET /api/mcp-servers\namcp api POST /api/mcp-servers --data '{\"name\":\"ops\",\"description\":\"Ops server\"}'\namcp api PUT  /api/mcp-servers/SERVER_ID --data '{\"codeMode\":\"inline\"}'\n```\n\nFor CI, skip the profile and pass the key in the environment:\n\n```bash\nAMCP_URL=https://cloud.anythingmcp.com AMCP_API_KEY=mcp_… amcp api GET /api/users --json\n```\n\nThe key comes from `AMCP_API_KEY`, `--key-stdin` or a saved management profile, never from a command argument.\n\n- A non-safe method asks for confirmation in a terminal. Pass `--yes` in scripts.\n- `--data` accepts inline JSON, `@file.json` or `-` (stdin).\n- Output is the parsed JSON body. `--json` wraps it with the status.\n- Exit codes match the rest of the CLI: `1` for a 4xx result, `3` for 401/403, `4` for 5xx or a connection failure.\n- The management API applies a per-key rate limit, so a runaway client gets HTTP 429 instead of overloading the instance.\n\n### Discovering operations\n\nThe catalogue of management operations ships with the CLI, so listing it needs no key and no network:\n\n```console\n$ amcp api --list mcp-servers\nmcp-servers\n  GET    /api/mcp-servers  — List MCP servers for current organization\n  POST   /api/mcp-servers [body]  — Create a new MCP server\n  DELETE /api/mcp-servers/:id  — Delete MCP server\n  GET    /api/mcp-servers/:id  — Get MCP server detail\n  PUT    /api/mcp-servers/:id [body]  — Update MCP server\n  …\n$ amcp api --list --json   # { \"operations\": [ { method, path, summary, admin, … } ] }\n```\n\nEach line shows the method, the path, an `[admin]` tag when the route needs an admin owner, a `[body]` tag when it takes a request body, and the summary. The catalogue is generated from the backend controllers, and CI fails if a management route is added without regenerating it, so `amcp api --list` always matches the instance's API. The interactive reference with request examples is in the instance's Swagger UI at `/api/docs`.\n\n## Shell completion\n\n`amcp completion <bash|zsh|fish>` prints a completion script for commands, `tools` subcommands and each command's flags. Install it once for your shell:\n\n```bash\namcp completion bash > ~/.local/share/bash-completion/completions/amcp\namcp completion zsh > \"${fpath[1]}/_amcp\"\namcp completion fish > ~/.config/fish/completions/amcp.fish\n```\n\n- **Bash** needs the `bash-completion` package for the directory above. Without it, add `source <(amcp completion bash)` to `~/.bashrc`.\n- **Zsh** needs `compinit` enabled. To load the script without writing a file, add `source <(amcp completion zsh)` to `~/.zshrc` after `compinit`.\n\nOpen a new shell afterwards. The scripts are static: they don't read the config file or contact a server, so profile and tool names aren't completed. `completion` always prints the script as plain text, even with `--json`. Any shell other than `bash`, `zsh` or `fish` exits with code `2`.\n\n## Security\n\n- The API key is never accepted as a command argument and never printed in status output.\n- Keys are stored with file mode `0600`.\n- HTTPS is required except on loopback.\n- Redirects are refused, so a key can't follow a request to another origin.\n- Writes in scripts need an explicit `--yes`.\n- Management keys are capped by their scope and by their owner's role, rate-limited per key, and audited.\n\n## About AnythingMCP\n\n[AnythingMCP](https://anythingmcp.com) is an open-source, enterprise **agent harness and MCP gateway**. It turns any API, SaaS or data source into [Model Context Protocol](https://modelcontextprotocol.io) tools your AI agents can use: Claude, ChatGPT, Copilot, Cursor, Gemini and others.\n\nYou can connect hundreds of catalogue services (Odoo, SAP, Shopify, HubSpot, Etsy and more), SQL and NoSQL databases, and SFTP/FTP or SMB file shares. You can also import your own OpenAPI, WSDL, GraphQL or Postman definitions. Then you decide which people and which agents may reach each tool, with roles, SSO and a full audit log.\n\nRun it on [AnythingMCP Cloud](https://cloud.anythingmcp.com) or self-host it. Source and docs: [github.com/HelpCode-ai/anythingmcp](https://github.com/HelpCode-ai/anythingmcp).\n\n### Developing the CLI\n\nFrom the repository root:\n\n```bash\nnpm install\nnpm run build -w packages/cli\nnode packages/cli/dist/index.js --help\nnpm test -w packages/cli\n```\n\n## License\n\n[AGPL-3.0-only](https://github.com/HelpCode-ai/anythingmcp/blob/main/LICENSE)\n","readmeFilename":"README.md"}