callman-mcp 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (244) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/LICENSE +21 -0
  3. package/README.md +203 -0
  4. package/dist/client/api.d.ts +109 -0
  5. package/dist/client/api.d.ts.map +1 -0
  6. package/dist/client/api.js +180 -0
  7. package/dist/client/api.js.map +1 -0
  8. package/dist/client/errors.d.ts +27 -0
  9. package/dist/client/errors.d.ts.map +1 -0
  10. package/dist/client/errors.js +98 -0
  11. package/dist/client/errors.js.map +1 -0
  12. package/dist/client/http.d.ts +34 -0
  13. package/dist/client/http.d.ts.map +1 -0
  14. package/dist/client/http.js +121 -0
  15. package/dist/client/http.js.map +1 -0
  16. package/dist/client/types.d.ts +327 -0
  17. package/dist/client/types.d.ts.map +1 -0
  18. package/dist/client/types.js +5 -0
  19. package/dist/client/types.js.map +1 -0
  20. package/dist/config.d.ts +20 -0
  21. package/dist/config.d.ts.map +1 -0
  22. package/dist/config.js +69 -0
  23. package/dist/config.js.map +1 -0
  24. package/dist/context.d.ts +35 -0
  25. package/dist/context.d.ts.map +1 -0
  26. package/dist/context.js +91 -0
  27. package/dist/context.js.map +1 -0
  28. package/dist/domain/diagram/build.d.ts +260 -0
  29. package/dist/domain/diagram/build.d.ts.map +1 -0
  30. package/dist/domain/diagram/build.js +160 -0
  31. package/dist/domain/diagram/build.js.map +1 -0
  32. package/dist/domain/diagram/layout.d.ts +17 -0
  33. package/dist/domain/diagram/layout.d.ts.map +1 -0
  34. package/dist/domain/diagram/layout.js +61 -0
  35. package/dist/domain/diagram/layout.js.map +1 -0
  36. package/dist/domain/diagram/patch.d.ts +330 -0
  37. package/dist/domain/diagram/patch.d.ts.map +1 -0
  38. package/dist/domain/diagram/patch.js +176 -0
  39. package/dist/domain/diagram/patch.js.map +1 -0
  40. package/dist/domain/diagram/summarize.d.ts +41 -0
  41. package/dist/domain/diagram/summarize.d.ts.map +1 -0
  42. package/dist/domain/diagram/summarize.js +47 -0
  43. package/dist/domain/diagram/summarize.js.map +1 -0
  44. package/dist/domain/importDetect.d.ts +6 -0
  45. package/dist/domain/importDetect.d.ts.map +1 -0
  46. package/dist/domain/importDetect.js +32 -0
  47. package/dist/domain/importDetect.js.map +1 -0
  48. package/dist/domain/requestShape.d.ts +796 -0
  49. package/dist/domain/requestShape.d.ts.map +1 -0
  50. package/dist/domain/requestShape.js +250 -0
  51. package/dist/domain/requestShape.js.map +1 -0
  52. package/dist/domain/resolve.d.ts +30 -0
  53. package/dist/domain/resolve.d.ts.map +1 -0
  54. package/dist/domain/resolve.js +56 -0
  55. package/dist/domain/resolve.js.map +1 -0
  56. package/dist/domain/scenario/build.d.ts +270 -0
  57. package/dist/domain/scenario/build.d.ts.map +1 -0
  58. package/dist/domain/scenario/build.js +135 -0
  59. package/dist/domain/scenario/build.js.map +1 -0
  60. package/dist/domain/scenario/summarize.d.ts +206 -0
  61. package/dist/domain/scenario/summarize.d.ts.map +1 -0
  62. package/dist/domain/scenario/summarize.js +138 -0
  63. package/dist/domain/scenario/summarize.js.map +1 -0
  64. package/dist/index.d.ts +3 -0
  65. package/dist/index.d.ts.map +1 -0
  66. package/dist/index.js +142 -0
  67. package/dist/index.js.map +1 -0
  68. package/dist/lib/cache.d.ts +12 -0
  69. package/dist/lib/cache.d.ts.map +1 -0
  70. package/dist/lib/cache.js +40 -0
  71. package/dist/lib/cache.js.map +1 -0
  72. package/dist/lib/ids.d.ts +5 -0
  73. package/dist/lib/ids.d.ts.map +1 -0
  74. package/dist/lib/ids.js +19 -0
  75. package/dist/lib/ids.js.map +1 -0
  76. package/dist/lib/log.d.ts +10 -0
  77. package/dist/lib/log.d.ts.map +1 -0
  78. package/dist/lib/log.js +25 -0
  79. package/dist/lib/log.js.map +1 -0
  80. package/dist/lib/mask.d.ts +24 -0
  81. package/dist/lib/mask.d.ts.map +1 -0
  82. package/dist/lib/mask.js +63 -0
  83. package/dist/lib/mask.js.map +1 -0
  84. package/dist/lib/pagination.d.ts +21 -0
  85. package/dist/lib/pagination.d.ts.map +1 -0
  86. package/dist/lib/pagination.js +40 -0
  87. package/dist/lib/pagination.js.map +1 -0
  88. package/dist/lib/truncate.d.ts +25 -0
  89. package/dist/lib/truncate.d.ts.map +1 -0
  90. package/dist/lib/truncate.js +45 -0
  91. package/dist/lib/truncate.js.map +1 -0
  92. package/dist/main.d.ts +9 -0
  93. package/dist/main.d.ts.map +1 -0
  94. package/dist/main.js +12 -0
  95. package/dist/main.js.map +1 -0
  96. package/dist/prompts/index.d.ts +4 -0
  97. package/dist/prompts/index.d.ts.map +1 -0
  98. package/dist/prompts/index.js +72 -0
  99. package/dist/prompts/index.js.map +1 -0
  100. package/dist/resources/docs/diagramSchema.d.ts +2 -0
  101. package/dist/resources/docs/diagramSchema.d.ts.map +1 -0
  102. package/dist/resources/docs/diagramSchema.js +65 -0
  103. package/dist/resources/docs/diagramSchema.js.map +1 -0
  104. package/dist/resources/docs/overview.d.ts +2 -0
  105. package/dist/resources/docs/overview.d.ts.map +1 -0
  106. package/dist/resources/docs/overview.js +46 -0
  107. package/dist/resources/docs/overview.js.map +1 -0
  108. package/dist/resources/docs/requestSchema.d.ts +2 -0
  109. package/dist/resources/docs/requestSchema.d.ts.map +1 -0
  110. package/dist/resources/docs/requestSchema.js +70 -0
  111. package/dist/resources/docs/requestSchema.js.map +1 -0
  112. package/dist/resources/generated/aiPacks.d.ts +3 -0
  113. package/dist/resources/generated/aiPacks.d.ts.map +1 -0
  114. package/dist/resources/generated/aiPacks.js +11 -0
  115. package/dist/resources/generated/aiPacks.js.map +1 -0
  116. package/dist/resources/index.d.ts +4 -0
  117. package/dist/resources/index.d.ts.map +1 -0
  118. package/dist/resources/index.js +114 -0
  119. package/dist/resources/index.js.map +1 -0
  120. package/dist/run/executeCollection.d.ts +19 -0
  121. package/dist/run/executeCollection.d.ts.map +1 -0
  122. package/dist/run/executeCollection.js +89 -0
  123. package/dist/run/executeCollection.js.map +1 -0
  124. package/dist/run/loadBundle.d.ts +9 -0
  125. package/dist/run/loadBundle.d.ts.map +1 -0
  126. package/dist/run/loadBundle.js +242 -0
  127. package/dist/run/loadBundle.js.map +1 -0
  128. package/dist/run/resolveTemplate.d.ts +2 -0
  129. package/dist/run/resolveTemplate.d.ts.map +1 -0
  130. package/dist/run/resolveTemplate.js +12 -0
  131. package/dist/run/resolveTemplate.js.map +1 -0
  132. package/dist/run/summarize.d.ts +73 -0
  133. package/dist/run/summarize.d.ts.map +1 -0
  134. package/dist/run/summarize.js +69 -0
  135. package/dist/run/summarize.js.map +1 -0
  136. package/dist/run/types.d.ts +46 -0
  137. package/dist/run/types.d.ts.map +1 -0
  138. package/dist/run/types.js +2 -0
  139. package/dist/run/types.js.map +1 -0
  140. package/dist/server.d.ts +23 -0
  141. package/dist/server.d.ts.map +1 -0
  142. package/dist/server.js +25 -0
  143. package/dist/server.js.map +1 -0
  144. package/dist/tools/catalog.d.ts +18 -0
  145. package/dist/tools/catalog.d.ts.map +1 -0
  146. package/dist/tools/catalog.js +66 -0
  147. package/dist/tools/catalog.js.map +1 -0
  148. package/dist/tools/collections.d.ts +4 -0
  149. package/dist/tools/collections.d.ts.map +1 -0
  150. package/dist/tools/collections.js +201 -0
  151. package/dist/tools/collections.js.map +1 -0
  152. package/dist/tools/diagrams.d.ts +4 -0
  153. package/dist/tools/diagrams.d.ts.map +1 -0
  154. package/dist/tools/diagrams.js +226 -0
  155. package/dist/tools/diagrams.js.map +1 -0
  156. package/dist/tools/environments.d.ts +4 -0
  157. package/dist/tools/environments.d.ts.map +1 -0
  158. package/dist/tools/environments.js +150 -0
  159. package/dist/tools/environments.js.map +1 -0
  160. package/dist/tools/import.d.ts +6 -0
  161. package/dist/tools/import.d.ts.map +1 -0
  162. package/dist/tools/import.js +144 -0
  163. package/dist/tools/import.js.map +1 -0
  164. package/dist/tools/index.d.ts +5 -0
  165. package/dist/tools/index.d.ts.map +1 -0
  166. package/dist/tools/index.js +26 -0
  167. package/dist/tools/index.js.map +1 -0
  168. package/dist/tools/lookups.d.ts +33 -0
  169. package/dist/tools/lookups.d.ts.map +1 -0
  170. package/dist/tools/lookups.js +132 -0
  171. package/dist/tools/lookups.js.map +1 -0
  172. package/dist/tools/meta.d.ts +4 -0
  173. package/dist/tools/meta.d.ts.map +1 -0
  174. package/dist/tools/meta.js +78 -0
  175. package/dist/tools/meta.js.map +1 -0
  176. package/dist/tools/requests.d.ts +4 -0
  177. package/dist/tools/requests.d.ts.map +1 -0
  178. package/dist/tools/requests.js +247 -0
  179. package/dist/tools/requests.js.map +1 -0
  180. package/dist/tools/run.d.ts +4 -0
  181. package/dist/tools/run.d.ts.map +1 -0
  182. package/dist/tools/run.js +167 -0
  183. package/dist/tools/run.js.map +1 -0
  184. package/dist/tools/scenarios.d.ts +4 -0
  185. package/dist/tools/scenarios.d.ts.map +1 -0
  186. package/dist/tools/scenarios.js +242 -0
  187. package/dist/tools/scenarios.js.map +1 -0
  188. package/dist/tools/shared.d.ts +20 -0
  189. package/dist/tools/shared.d.ts.map +1 -0
  190. package/dist/tools/shared.js +74 -0
  191. package/dist/tools/shared.js.map +1 -0
  192. package/dist/tools/workspaces.d.ts +4 -0
  193. package/dist/tools/workspaces.d.ts.map +1 -0
  194. package/dist/tools/workspaces.js +80 -0
  195. package/dist/tools/workspaces.js.map +1 -0
  196. package/dist-cjs/client/api.js +183 -0
  197. package/dist-cjs/client/errors.js +104 -0
  198. package/dist-cjs/client/http.js +124 -0
  199. package/dist-cjs/client/types.js +5 -0
  200. package/dist-cjs/config.js +73 -0
  201. package/dist-cjs/context.js +94 -0
  202. package/dist-cjs/domain/diagram/build.js +164 -0
  203. package/dist-cjs/domain/diagram/layout.js +98 -0
  204. package/dist-cjs/domain/diagram/patch.js +179 -0
  205. package/dist-cjs/domain/diagram/summarize.js +52 -0
  206. package/dist-cjs/domain/importDetect.js +40 -0
  207. package/dist-cjs/domain/requestShape.js +260 -0
  208. package/dist-cjs/domain/resolve.js +63 -0
  209. package/dist-cjs/domain/scenario/build.js +140 -0
  210. package/dist-cjs/domain/scenario/summarize.js +144 -0
  211. package/dist-cjs/lib/cache.js +43 -0
  212. package/dist-cjs/lib/ids.js +24 -0
  213. package/dist-cjs/lib/log.js +28 -0
  214. package/dist-cjs/lib/mask.js +72 -0
  215. package/dist-cjs/lib/pagination.js +48 -0
  216. package/dist-cjs/lib/truncate.js +52 -0
  217. package/dist-cjs/main.js +31 -0
  218. package/dist-cjs/package.json +3 -0
  219. package/dist-cjs/prompts/index.js +75 -0
  220. package/dist-cjs/resources/docs/diagramSchema.js +67 -0
  221. package/dist-cjs/resources/docs/overview.js +48 -0
  222. package/dist-cjs/resources/docs/requestSchema.js +72 -0
  223. package/dist-cjs/resources/generated/aiPacks.js +13 -0
  224. package/dist-cjs/resources/index.js +117 -0
  225. package/dist-cjs/run/executeCollection.js +93 -0
  226. package/dist-cjs/run/loadBundle.js +246 -0
  227. package/dist-cjs/run/resolveTemplate.js +15 -0
  228. package/dist-cjs/run/summarize.js +73 -0
  229. package/dist-cjs/run/types.js +2 -0
  230. package/dist-cjs/server.js +28 -0
  231. package/dist-cjs/tools/catalog.js +69 -0
  232. package/dist-cjs/tools/collections.js +204 -0
  233. package/dist-cjs/tools/diagrams.js +229 -0
  234. package/dist-cjs/tools/environments.js +153 -0
  235. package/dist-cjs/tools/import.js +147 -0
  236. package/dist-cjs/tools/index.js +31 -0
  237. package/dist-cjs/tools/lookups.js +149 -0
  238. package/dist-cjs/tools/meta.js +81 -0
  239. package/dist-cjs/tools/requests.js +250 -0
  240. package/dist-cjs/tools/run.js +203 -0
  241. package/dist-cjs/tools/scenarios.js +245 -0
  242. package/dist-cjs/tools/shared.js +81 -0
  243. package/dist-cjs/tools/workspaces.js +83 -0
  244. package/package.json +80 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,28 @@
1
+ # Changelog
2
+
3
+ ## 0.1.0 — First release
4
+
5
+ An MCP server (stdio) that lets Claude Code, Claude Desktop, Cursor, OpenAI Codex and
6
+ Gemini CLI operate a Callman account through the REST API, with a personal token.
7
+
8
+ - **44 tools** across workspaces & members, collections/folders, requests (incl. atomic
9
+ bulk create), imports (Postman, OpenAPI, Insomnia, Bruno, Callman export, cURL, .http,
10
+ scenario exports), environments, scenarios (create/update with version check, server-side
11
+ run with polling, compact reports) and system-design diagrams (typed components, edge
12
+ semantics, automatic ELK layout, incremental patch, sharing).
13
+ - **Local execution** — `run_request` / `run_collection` fetch the pipeline bundle and run
14
+ through callman-core's runner on the user's machine; output never contains variable
15
+ values, and sensitive headers are masked. Disabled with `CALLMAN_ALLOW_RUN=0`.
16
+ - **Reference rebinding** everywhere: id → unique name → unique substring → candidates.
17
+ - **Guard rails**: `dryRun` previews, `confirm: true` on deletes, size-bounded outputs,
18
+ masked secrets, actionable error hints per backend error code, per-tool availability in
19
+ `whoami` from the token's scopes.
20
+ - **Resources** (docs generated from callman-core, the diagram component catalog, live
21
+ workspace data by URI) and **prompts** (import endpoints from code, design a system
22
+ diagram, create a scenario from a flow, document a collection).
23
+ - `callman-mcp doctor` — one-command connection check.
24
+ - ESM + CommonJS library entry (`createCallmanMcpServer`) with injectable `fetch` and
25
+ logger, so the same tool layer can be hosted over another transport.
26
+
27
+ Requires a Callman backend with personal tokens (`/api/personal-tokens`) and
28
+ `callman-core` ≥ 1.28.0. Node.js ≥ 20.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Callman
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,203 @@
1
+ # callman-mcp
2
+
3
+ MCP server for [Callman](https://callman.io) — lets **Claude Code, Claude Desktop, Cursor,
4
+ OpenAI Codex and Gemini CLI** work inside your Callman account: build and organise
5
+ collections, import the endpoints found in your code, run requests, create and run test
6
+ scenarios, and draw system-design diagrams. Works with Callman cloud and on-prem.
7
+
8
+ ```
9
+ AI tool ──stdio──▶ callman-mcp (this package, on your machine) ──HTTPS──▶ your Callman server
10
+ ```
11
+
12
+ Everything the AI tool does goes through the same REST API the desktop app uses, as **you**,
13
+ limited to the permissions of the token you created and your role in each workspace.
14
+
15
+ ## Quick start
16
+
17
+ 1. **Create a token** — Callman desktop app → profile menu → **AI tools** → *New token*.
18
+ Pick a preset (*Read only*, *Build collections*, *Full, no delete*, *Full*) or choose
19
+ permissions one by one. The token is shown once, together with a ready-to-paste config
20
+ for your tool.
21
+ 2. **Add the server to your AI tool** (needs Node.js 20+):
22
+
23
+ **Claude Code**
24
+ ```bash
25
+ claude mcp add callman --scope user -e CALLMAN_API_URL=https://api.callman.io -e CALLMAN_TOKEN=<PASTE_YOUR_TOKEN> -- npx -y callman-mcp
26
+ ```
27
+
28
+ **Claude Desktop** (`claude_desktop_config.json`), **Cursor** (`~/.cursor/mcp.json`),
29
+ **Gemini CLI** (`~/.gemini/settings.json`)
30
+ ```json
31
+ {
32
+ "mcpServers": {
33
+ "callman": {
34
+ "command": "npx",
35
+ "args": ["-y", "callman-mcp"],
36
+ "env": {
37
+ "CALLMAN_API_URL": "https://api.callman.io",
38
+ "CALLMAN_TOKEN": "<PASTE_YOUR_TOKEN>"
39
+ }
40
+ }
41
+ }
42
+ }
43
+ ```
44
+
45
+ **OpenAI Codex** (`~/.codex/config.toml`)
46
+ ```toml
47
+ [mcp_servers.callman]
48
+ command = "npx"
49
+ args = ["-y", "callman-mcp"]
50
+
51
+ [mcp_servers.callman.env]
52
+ CALLMAN_API_URL = "https://api.callman.io"
53
+ CALLMAN_TOKEN = "<PASTE_YOUR_TOKEN>"
54
+ ```
55
+ 3. **Check it** — `CALLMAN_API_URL=… CALLMAN_TOKEN=… npx -y callman-mcp doctor` prints the
56
+ server, your user, token scopes, workspaces and which tools the token can use. Then ask
57
+ your AI tool: *"list my Callman workspaces"*.
58
+
59
+ Things to try: *"add the endpoints in src/routes/users.ts to a new collection Users API"*,
60
+ *"run GET /users with the Staging environment"*, *"create a scenario that logs in, creates
61
+ an order and checks it appears"*, *"draw the architecture of this repo and share it with
62
+ the Team workspace"*.
63
+
64
+ ### Run a local build (before it is published, or while developing it)
65
+
66
+ ```bash
67
+ git clone … callman-mcp && cd callman-mcp
68
+ npm install --legacy-peer-deps && npm run build # → dist/index.js
69
+ ```
70
+ Point the AI tool at the file instead of `npx -y callman-mcp`:
71
+
72
+ ```bash
73
+ claude mcp add callman --scope user -e CALLMAN_API_URL=http://localhost:8080 -e CALLMAN_TOKEN=<PASTE_YOUR_TOKEN> -- node /abs/path/to/callman-mcp/dist/index.js
74
+ ```
75
+ (JSON configs: `"command": "node", "args": ["/abs/path/to/callman-mcp/dist/index.js"]`.)
76
+ Rebuild after changing the source; AI tools start a fresh process per session.
77
+
78
+ ## Configuration
79
+
80
+ | Variable | Default | Meaning |
81
+ |---|---|---|
82
+ | `CALLMAN_API_URL` | `https://api.callman.io` | Server **origin**. On-prem: the address the desktop app uses (any path prefix is kept; a trailing `/api` is accepted). |
83
+ | `CALLMAN_TOKEN` | — | Personal token (`cm_pat_…`). Without it the server still starts; `whoami` explains how to set one. |
84
+ | `CALLMAN_TOKEN_FILE` | — | Read the token from a file instead (Docker/Kubernetes secrets). |
85
+ | `CALLMAN_WORKSPACE_ID` | — | Default workspace. Optional: with one workspace it is automatic; with several, tools take `workspace` (name or id). |
86
+ | `CALLMAN_ALLOW_RUN` | `1` | `0` removes `run_request` / `run_collection` (no local execution). |
87
+ | `CALLMAN_LOG_LEVEL` | `warn` | `silent`, `error`, `warn`, `info`, `debug` — to **stderr** (stdout is the protocol). |
88
+ | `CALLMAN_TIMEOUT_MS` | `30000` | Per API call. |
89
+ | `CALLMAN_RUN_TIMEOUT_MS` | `600000` | Budget for one local run. |
90
+ | `CALLMAN_MAX_BODY_BYTES` | `16384` | Response-body preview cap in run output (max 262144). |
91
+
92
+ ## Tools (44) and the permission each needs
93
+
94
+ | Area | Tools | Scope |
95
+ |---|---|---|
96
+ | Meta | `whoami` | — |
97
+ | Workspaces | `list_workspaces`, `list_workspace_members` | `workspaces:read` (always on) |
98
+ | | `add_workspace_member`, `remove_workspace_member` | `members:manage` (+ owner role) |
99
+ | Collections | `list_collections`, `get_collection_tree`, `export_collection` | `collections:read` |
100
+ | | `create_collection`, `update_collection`, `create_folder`, `update_folder` | `collections:write` |
101
+ | | `delete_collection`, `delete_folder` | `collections:delete` |
102
+ | Requests | `search_requests`, `get_request` | `requests:read` |
103
+ | | `create_request`, `update_request`, `move_requests` | `requests:write` |
104
+ | | `create_requests_bulk` | `requests:write` (existing collection) / `import:write` (new collection, atomic) |
105
+ | | `delete_requests` | `requests:delete` |
106
+ | | `run_request`, `run_collection` | `requests:run` |
107
+ | Import | `import_content` (Postman, OpenAPI, Insomnia, Bruno, Callman export, cURL, .http) | `import:write` (`requests:write` for cURL/.http into an existing collection) |
108
+ | | `import_scenario` | `import:write` |
109
+ | Environments | `list_environments`, `get_environment` | `environments:read` (+ `environments:reveal` for values) |
110
+ | | `create_environment`, `set_environment_variables` | `environments:write` |
111
+ | | `delete_environment` | `environments:delete` |
112
+ | Scenarios | `list_scenarios`, `get_scenario`, `get_scenario_report` | `scenarios:read` |
113
+ | | `create_scenario`, `update_scenario` | `scenarios:write` |
114
+ | | `run_scenario` | `scenarios:run` |
115
+ | | `delete_scenario` | `scenarios:delete` |
116
+ | Diagrams | `list_diagrams`, `get_diagram` | `diagrams:read` |
117
+ | | `create_diagram`, `update_diagram`, `patch_diagram` | `diagrams:write` |
118
+ | | `share_diagram` | `diagrams:share` |
119
+ | | `delete_diagram` | `diagrams:delete` |
120
+
121
+ Conventions: names work wherever an id does (ambiguous names return candidates); big writes
122
+ take `dryRun: true`; deletions require `confirm: true`; every write reports what it resolved
123
+ (`resolved: [{ input, matched, id }]`); outputs are size-bounded and say when they truncate.
124
+
125
+ **Resources** — `callman://docs/overview`, `…/docs/request-schema`, `…/docs/scenario-nodes`,
126
+ `…/docs/scripting/{pm-api,db-queries,templating,sandbox}`, `…/docs/diagram-schema`,
127
+ `callman://diagram/components[/{category}]` (the component catalog, generated from
128
+ callman-core), and live data: `callman://workspaces`, `callman://workspace/{workspace}/collections`,
129
+ `…/environments`, `callman://collection/{collection}/tree`, `callman://request/{request}`,
130
+ `callman://environment/{environment}`, `callman://scenario/{scenario}`, `callman://diagram/{diagram}`.
131
+
132
+ **Prompts** — `import_endpoints_from_code`, `design_system_diagram`,
133
+ `create_scenario_from_flow`, `document_collection`.
134
+
135
+ ## Security model
136
+
137
+ - **Your identity, narrowed.** A personal token acts as you in every workspace you belong
138
+ to, with your role there (a viewer's token cannot write), limited to its scopes. The
139
+ server enforces scopes on every route; areas outside the AI-tool surface (mocks,
140
+ connections, history, UI tests, admin) are refused.
141
+ - **Secrets stay masked.** Environment, global and scenario variable values come back as
142
+ `••••ab` unless the token holds `environments:reveal` **and** the call passes
143
+ `reveal: true`. Masked values can never be written back. Request auth secrets and
144
+ sensitive headers are masked by this server on the way to the model.
145
+ - **Local runs keep values local.** `run_request` / `run_collection` fetch the collection
146
+ bundle, resolve variables and send requests **on your machine** (the same engine as the
147
+ desktop app and `callme-cli`). The model receives status, timing, bounded bodies, test
148
+ results and the *names* of variables scripts changed — never values.
149
+ - **Deletes are opt-in twice**: a `*:delete` scope on the token and `confirm: true` on the call.
150
+ - Tokens always expire, are rate-limited per token, attributed in the audit trail, revocable
151
+ at any time in the desktop app, and the whole feature is behind the `mcp` feature flag an
152
+ administrator controls.
153
+
154
+ ## On-prem
155
+
156
+ Use the address the desktop app uses (`http(s)://<host>[:port][/prefix]`). The `/api` path
157
+ must be reachable from the machine running the AI tool. Corporate TLS: add
158
+ `NODE_EXTRA_CA_CERTS=/path/to/ca.pem` to the server's `env`. Air-gapped: `npm pack
159
+ callman-mcp` on a connected machine, `npm i -g ./callman-mcp-<version>.tgz` on the target,
160
+ and use `callman-mcp` as the command instead of `npx -y callman-mcp`. The administrator
161
+ enables AI tools in the admin panel (feature flag **AI tools (MCP)**).
162
+
163
+ ## Troubleshooting
164
+
165
+ | Symptom | Fix |
166
+ |---|---|
167
+ | `401` | Token missing, expired or revoked — create a new one and update the config. |
168
+ | `403 PAT_SCOPE_MISSING` | The message names the scope; create a token that has it. |
169
+ | `403 PAT_ROUTE_FORBIDDEN` | That area is not available to AI tools. |
170
+ | `403 FEATURE_DISABLED` | An administrator switched AI tools off. |
171
+ | `403` on a write | You are a viewer in that workspace. |
172
+ | "pass `workspace`" | Several workspaces and no default — name one, or set `CALLMAN_WORKSPACE_ID`. |
173
+ | Tool not listed in the client | Node 20+? Can `npx` reach the registry? Run `callman-mcp doctor`. |
174
+ | Changes not visible in the app | Switch back to the app (it refreshes on focus) or press Refresh in the diagram library. |
175
+
176
+ ## Embedding
177
+
178
+ ```ts
179
+ import { createCallmanMcpServer, resolveConfig } from "callman-mcp";
180
+
181
+ const { server } = createCallmanMcpServer({
182
+ config: resolveConfig({ env: { CALLMAN_API_URL: "…", CALLMAN_TOKEN: "…", CALLMAN_ALLOW_RUN: "0" } }),
183
+ fetch, // injectable
184
+ });
185
+ await server.connect(transport); // any MCP transport
186
+ ```
187
+ ESM and CommonJS builds are shipped. The tool layer never reads the environment, the file
188
+ system or stdout — only the bin (`dist/index.js`) does.
189
+
190
+ ## Development
191
+
192
+ ```bash
193
+ nvm use # Node 22
194
+ npm install --legacy-peer-deps # npm 10's arborist trips over a dev-only peer set
195
+ npm run lint && npm run build && npm test && npm run smoke
196
+ ```
197
+ `tests/fixtures/fake-backend.ts` is an in-memory Callman backend (envelope, scopes, masking,
198
+ pagination, CAS, runs); contract tests drive every tool through a real MCP client. `npm run
199
+ smoke` starts the built server over stdio. Shared logic (cURL/.http parsers, the diagram
200
+ document contract and component catalog, the request runner) comes from
201
+ [`callman-core`](https://www.npmjs.com/package/callman-core).
202
+
203
+ MIT
@@ -0,0 +1,109 @@
1
+ import type { CallmanHttpClient } from "./http.js";
2
+ import type { ApiRequest, Collection, Diagram, Environment, FeatureMap, Folder, FolderTree, GlobalVariable, ImportResult, Paginated, PersonalTokenMe, PipelineBundle, RequestTreeItem, Scenario, ScenarioFolder, ScenarioImportResult, ScenarioRunListItem, ScenarioRunReport, ScenarioRunTrigger, Workspace, WorkspaceMember } from "./types.js";
3
+ export declare class CallmanApi {
4
+ readonly http: CallmanHttpClient;
5
+ constructor(http: CallmanHttpClient);
6
+ me(): Promise<PersonalTokenMe>;
7
+ features(): Promise<FeatureMap>;
8
+ listWorkspaces(): Promise<Workspace[]>;
9
+ listMembers(workspaceId: string): Promise<{
10
+ items: WorkspaceMember[];
11
+ }>;
12
+ addMember(workspaceId: string, body: {
13
+ email: string;
14
+ role: "owner" | "editor" | "viewer";
15
+ }): Promise<WorkspaceMember>;
16
+ removeMember(workspaceId: string, memberId: string): Promise<void>;
17
+ listCollections(ws: string, page?: number, limit?: number): Promise<Paginated<Collection>>;
18
+ listAllCollections(ws: string): Promise<Collection[]>;
19
+ getCollection(ws: string, id: string): Promise<Collection>;
20
+ createCollection(ws: string, body: {
21
+ name: string;
22
+ runnerSettings?: Record<string, boolean>;
23
+ }): Promise<Collection>;
24
+ updateCollection(ws: string, id: string, body: {
25
+ name?: string;
26
+ runnerSettings?: Record<string, boolean>;
27
+ }): Promise<Collection>;
28
+ deleteCollection(ws: string, id: string): Promise<unknown>;
29
+ folderTree(ws: string, collectionId: string): Promise<FolderTree>;
30
+ createFolder(ws: string, body: {
31
+ name: string;
32
+ collectionId: string;
33
+ parentId?: string | null;
34
+ }): Promise<Folder>;
35
+ updateFolder(ws: string, id: string, body: {
36
+ name?: string;
37
+ parentId?: string | null;
38
+ collectionId?: string;
39
+ }): Promise<Folder>;
40
+ deleteFolder(ws: string, id: string): Promise<unknown>;
41
+ exportCollection(ws: string, id: string, type: "internal" | "postman"): Promise<unknown>;
42
+ requestTree(ws: string, collectionId: string): Promise<RequestTreeItem[]>;
43
+ getRequest(ws: string, id: string): Promise<ApiRequest>;
44
+ createRequest(ws: string, body: Record<string, unknown>): Promise<ApiRequest>;
45
+ updateRequest(ws: string, id: string, body: Record<string, unknown>): Promise<ApiRequest>;
46
+ deleteRequest(ws: string, id: string): Promise<unknown>;
47
+ importJson(ws: string, body: {
48
+ format: string;
49
+ payload: unknown;
50
+ fallbackCollectionName?: string;
51
+ targetEnvironmentId?: string | null;
52
+ }): Promise<ImportResult>;
53
+ importScenario(ws: string, body: {
54
+ envelope: unknown;
55
+ name?: string;
56
+ folderId?: string | null;
57
+ connectionMap?: Record<string, unknown>;
58
+ }): Promise<ScenarioImportResult>;
59
+ listEnvironments(ws: string, reveal?: boolean): Promise<Paginated<Environment>>;
60
+ getEnvironment(ws: string, id: string, reveal?: boolean): Promise<Environment>;
61
+ createEnvironment(ws: string, body: {
62
+ name: string;
63
+ variables: Array<{
64
+ key: string;
65
+ value: string;
66
+ enabled?: boolean;
67
+ }>;
68
+ }): Promise<Environment>;
69
+ deleteEnvironment(ws: string, id: string): Promise<unknown>;
70
+ addEnvironmentVariable(ws: string, id: string, body: {
71
+ key: string;
72
+ value: string;
73
+ }): Promise<Environment>;
74
+ updateEnvironmentVariable(ws: string, id: string, key: string, body: {
75
+ value: string;
76
+ }): Promise<Environment>;
77
+ deleteEnvironmentVariable(ws: string, id: string, key: string): Promise<Environment>;
78
+ listGlobalVariables(ws: string, reveal?: boolean): Promise<GlobalVariable[]>;
79
+ listScenarios(ws: string | null): Promise<Scenario[]>;
80
+ listScenarioFolders(ws: string | null): Promise<ScenarioFolder[] | {
81
+ items: ScenarioFolder[];
82
+ }>;
83
+ getScenario(ws: string | null, id: string, reveal?: boolean): Promise<Scenario>;
84
+ createScenario(ws: string, body: Record<string, unknown>): Promise<Scenario>;
85
+ patchScenario(ws: string | null, id: string, body: Record<string, unknown>): Promise<Scenario>;
86
+ deleteScenario(ws: string | null, id: string): Promise<unknown>;
87
+ runScenario(ws: string | null, id: string, body: {
88
+ environmentId?: string;
89
+ }): Promise<ScenarioRunTrigger>;
90
+ listScenarioReports(ws: string | null, id: string, limit?: number): Promise<Paginated<ScenarioRunListItem>>;
91
+ getScenarioReport(ws: string | null, id: string, reportId: string): Promise<ScenarioRunReport>;
92
+ listDiagrams(): Promise<Diagram[]>;
93
+ getDiagram(id: string): Promise<Diagram>;
94
+ createDiagram(body: {
95
+ name: string;
96
+ document: unknown;
97
+ }): Promise<Diagram>;
98
+ updateDiagram(id: string, body: {
99
+ name?: string;
100
+ document?: unknown;
101
+ }): Promise<Diagram>;
102
+ deleteDiagram(id: string): Promise<unknown>;
103
+ shareDiagram(id: string, body: {
104
+ workspaceIds: string[];
105
+ editorIds: string[];
106
+ }): Promise<Diagram>;
107
+ pipelineBundle(ws: string, collectionId: string, environmentId: string | null): Promise<PipelineBundle>;
108
+ }
109
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/client/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,180 @@
1
+ // Typed endpoint functions — one per backend route the tools use. Thin on
2
+ // purpose: no business rules here, only paths, headers and shapes. `ws` is
3
+ // the workspace id for workspace-scoped routes.
4
+ export class CallmanApi {
5
+ http;
6
+ constructor(http) {
7
+ this.http = http;
8
+ }
9
+ // ── identity ────────────────────────────────────────────────────────
10
+ me() {
11
+ return this.http.request("GET", "/personal-tokens/me");
12
+ }
13
+ features() {
14
+ return this.http.request("GET", "/features");
15
+ }
16
+ // ── workspaces ──────────────────────────────────────────────────────
17
+ listWorkspaces() {
18
+ return this.http.request("GET", "/workspaces");
19
+ }
20
+ listMembers(workspaceId) {
21
+ return this.http.request("GET", `/workspaces/${workspaceId}/members`);
22
+ }
23
+ addMember(workspaceId, body) {
24
+ return this.http.request("POST", `/workspaces/${workspaceId}/members`, { body });
25
+ }
26
+ removeMember(workspaceId, memberId) {
27
+ return this.http.request("DELETE", `/workspaces/${workspaceId}/members/${memberId}`);
28
+ }
29
+ // ── collections / folders ───────────────────────────────────────────
30
+ listCollections(ws, page = 1, limit = 100) {
31
+ return this.http.request("GET", "/collections", { workspaceId: ws, query: { page, limit } });
32
+ }
33
+ async listAllCollections(ws) {
34
+ const out = [];
35
+ let page = 1;
36
+ for (;;) {
37
+ const result = await this.listCollections(ws, page, 100);
38
+ out.push(...result.items);
39
+ if (page >= result.pagination.totalPages || result.items.length === 0)
40
+ break;
41
+ page += 1;
42
+ if (page > 50)
43
+ break; // 5 000 collections — more than any workspace has
44
+ }
45
+ return out;
46
+ }
47
+ getCollection(ws, id) {
48
+ return this.http.request("GET", `/collections/${id}`, { workspaceId: ws });
49
+ }
50
+ createCollection(ws, body) {
51
+ return this.http.request("POST", "/collections", { workspaceId: ws, body });
52
+ }
53
+ updateCollection(ws, id, body) {
54
+ return this.http.request("PATCH", `/collections/${id}`, { workspaceId: ws, body });
55
+ }
56
+ deleteCollection(ws, id) {
57
+ return this.http.request("DELETE", `/collections/${id}`, { workspaceId: ws });
58
+ }
59
+ folderTree(ws, collectionId) {
60
+ return this.http.request("GET", `/folders/tree/${collectionId}`, { workspaceId: ws });
61
+ }
62
+ createFolder(ws, body) {
63
+ return this.http.request("POST", "/folders", { workspaceId: ws, body });
64
+ }
65
+ updateFolder(ws, id, body) {
66
+ return this.http.request("PATCH", `/folders/${id}`, { workspaceId: ws, body });
67
+ }
68
+ deleteFolder(ws, id) {
69
+ return this.http.request("DELETE", `/folders/${id}`, { workspaceId: ws });
70
+ }
71
+ exportCollection(ws, id, type) {
72
+ return this.http.request("GET", `/export/${id}`, { workspaceId: ws, query: { type } });
73
+ }
74
+ // ── requests ────────────────────────────────────────────────────────
75
+ requestTree(ws, collectionId) {
76
+ return this.http.request("GET", "/requests/tree", { workspaceId: ws, query: { collectionId } });
77
+ }
78
+ getRequest(ws, id) {
79
+ return this.http.request("GET", `/requests/${id}`, { workspaceId: ws });
80
+ }
81
+ createRequest(ws, body) {
82
+ return this.http.request("POST", "/requests", { workspaceId: ws, body });
83
+ }
84
+ updateRequest(ws, id, body) {
85
+ return this.http.request("PATCH", `/requests/${id}`, { workspaceId: ws, body });
86
+ }
87
+ deleteRequest(ws, id) {
88
+ return this.http.request("DELETE", `/requests/${id}`, { workspaceId: ws });
89
+ }
90
+ // ── import ──────────────────────────────────────────────────────────
91
+ importJson(ws, body) {
92
+ return this.http.request("POST", "/import/json", { workspaceId: ws, body, timeoutMs: 120_000 });
93
+ }
94
+ importScenario(ws, body) {
95
+ return this.http.request("POST", "/import/scenario", { workspaceId: ws, body, timeoutMs: 120_000 });
96
+ }
97
+ // ── environments / globals ──────────────────────────────────────────
98
+ listEnvironments(ws, reveal = false) {
99
+ return this.http.request("GET", "/environments", {
100
+ workspaceId: ws,
101
+ query: { page: 1, limit: 100, ...(reveal ? { reveal: "true" } : {}) },
102
+ });
103
+ }
104
+ getEnvironment(ws, id, reveal = false) {
105
+ return this.http.request("GET", `/environments/${id}`, { workspaceId: ws, query: reveal ? { reveal: "true" } : {} });
106
+ }
107
+ createEnvironment(ws, body) {
108
+ return this.http.request("POST", "/environments", { workspaceId: ws, body });
109
+ }
110
+ deleteEnvironment(ws, id) {
111
+ return this.http.request("DELETE", `/environments/${id}`, { workspaceId: ws });
112
+ }
113
+ addEnvironmentVariable(ws, id, body) {
114
+ return this.http.request("POST", `/environments/${id}/variables`, { workspaceId: ws, body });
115
+ }
116
+ updateEnvironmentVariable(ws, id, key, body) {
117
+ return this.http.request("PATCH", `/environments/${id}/variables/${encodeURIComponent(key)}`, { workspaceId: ws, body });
118
+ }
119
+ deleteEnvironmentVariable(ws, id, key) {
120
+ return this.http.request("DELETE", `/environments/${id}/variables/${encodeURIComponent(key)}`, { workspaceId: ws });
121
+ }
122
+ listGlobalVariables(ws, reveal = false) {
123
+ return this.http.request("GET", "/variables/global", { workspaceId: ws, query: reveal ? { reveal: "true" } : {} });
124
+ }
125
+ // ── scenarios ───────────────────────────────────────────────────────
126
+ listScenarios(ws) {
127
+ return this.http.request("GET", "/scenarios", { workspaceId: ws });
128
+ }
129
+ listScenarioFolders(ws) {
130
+ return this.http.request("GET", "/scenario-folders", { workspaceId: ws });
131
+ }
132
+ getScenario(ws, id, reveal = false) {
133
+ return this.http.request("GET", `/scenarios/${id}`, { workspaceId: ws, query: reveal ? { reveal: "true" } : {} });
134
+ }
135
+ createScenario(ws, body) {
136
+ return this.http.request("POST", "/scenarios", { workspaceId: ws, body });
137
+ }
138
+ patchScenario(ws, id, body) {
139
+ return this.http.request("PATCH", `/scenarios/${id}`, { workspaceId: ws, body });
140
+ }
141
+ deleteScenario(ws, id) {
142
+ return this.http.request("DELETE", `/scenarios/${id}`, { workspaceId: ws });
143
+ }
144
+ runScenario(ws, id, body) {
145
+ return this.http.request("POST", `/scenarios/${id}/run-server`, { workspaceId: ws, body });
146
+ }
147
+ listScenarioReports(ws, id, limit = 20) {
148
+ return this.http.request("GET", `/scenarios/${id}/reports`, { workspaceId: ws, query: { page: 1, limit } });
149
+ }
150
+ getScenarioReport(ws, id, reportId) {
151
+ return this.http.request("GET", `/scenarios/${id}/reports/${reportId}`, { workspaceId: ws });
152
+ }
153
+ // ── diagrams (user-owned, not workspace-scoped) ─────────────────────
154
+ listDiagrams() {
155
+ return this.http.request("GET", "/diagrams");
156
+ }
157
+ getDiagram(id) {
158
+ return this.http.request("GET", `/diagrams/${id}`);
159
+ }
160
+ createDiagram(body) {
161
+ return this.http.request("POST", "/diagrams", { body });
162
+ }
163
+ updateDiagram(id, body) {
164
+ return this.http.request("PUT", `/diagrams/${id}`, { body });
165
+ }
166
+ deleteDiagram(id) {
167
+ return this.http.request("DELETE", `/diagrams/${id}`);
168
+ }
169
+ shareDiagram(id, body) {
170
+ return this.http.request("POST", `/diagrams/${id}/share`, { body });
171
+ }
172
+ // ── local run bundle ────────────────────────────────────────────────
173
+ pipelineBundle(ws, collectionId, environmentId) {
174
+ return this.http.request("GET", "/pipeline/bundle", {
175
+ workspaceId: ws,
176
+ query: { collectionId, ...(environmentId ? { environmentId } : {}) },
177
+ });
178
+ }
179
+ }
180
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/client/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ export declare class CallmanApiError extends Error {
2
+ readonly status: number;
3
+ readonly code: string;
4
+ readonly details: unknown;
5
+ readonly method: string;
6
+ readonly path: string;
7
+ constructor(input: {
8
+ status: number;
9
+ code: string;
10
+ message: string;
11
+ details?: unknown;
12
+ method: string;
13
+ path: string;
14
+ });
15
+ }
16
+ export declare class CallmanNetworkError extends Error {
17
+ readonly apiUrl: string;
18
+ readonly cause?: unknown;
19
+ constructor(apiUrl: string, message: string, cause?: unknown);
20
+ }
21
+ export declare class ToolInputError extends Error {
22
+ readonly code: string;
23
+ readonly data: Record<string, unknown> | undefined;
24
+ constructor(code: string, message: string, data?: Record<string, unknown>);
25
+ }
26
+ export declare const hintFor: (error: CallmanApiError) => string;
27
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/client/errors.ts"],"names":[],"mappings":"AAGA,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAEV,KAAK,EAAE;QACjB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;KACd;CASF;AAED,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;gBAEb,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAM7D;AAKD,qBAAa,cAAe,SAAQ,KAAK;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;gBAEvC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAM1E;AAKD,eAAO,MAAM,OAAO,GAAI,OAAO,eAAe,KAAG,MAsDhD,CAAC"}