@nordsym/apiclaw 1.3.7 → 1.3.8

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 (189) hide show
  1. package/README.md +420 -200
  2. package/convex/_generated/api.d.ts +4 -0
  3. package/convex/agents.ts +403 -0
  4. package/convex/directCall.ts +80 -0
  5. package/convex/earnProgress.ts +753 -0
  6. package/convex/logs.ts +17 -0
  7. package/convex/providerKeys.ts +82 -2
  8. package/convex/schema.ts +71 -2
  9. package/convex/workspaces.ts +84 -2
  10. package/dist/adapters/base.d.ts +112 -0
  11. package/dist/adapters/base.d.ts.map +1 -0
  12. package/dist/adapters/base.js +247 -0
  13. package/dist/adapters/base.js.map +1 -0
  14. package/dist/adapters/claude-desktop.d.ts +12 -0
  15. package/dist/adapters/claude-desktop.d.ts.map +1 -0
  16. package/dist/adapters/claude-desktop.js +36 -0
  17. package/dist/adapters/claude-desktop.js.map +1 -0
  18. package/dist/adapters/cline.d.ts +20 -0
  19. package/dist/adapters/cline.d.ts.map +1 -0
  20. package/dist/adapters/cline.js +77 -0
  21. package/dist/adapters/cline.js.map +1 -0
  22. package/dist/adapters/continue.d.ts +26 -0
  23. package/dist/adapters/continue.d.ts.map +1 -0
  24. package/dist/adapters/continue.js +68 -0
  25. package/dist/adapters/continue.js.map +1 -0
  26. package/dist/adapters/cursor.d.ts +12 -0
  27. package/dist/adapters/cursor.d.ts.map +1 -0
  28. package/dist/adapters/cursor.js +38 -0
  29. package/dist/adapters/cursor.js.map +1 -0
  30. package/dist/adapters/custom.d.ts +47 -0
  31. package/dist/adapters/custom.d.ts.map +1 -0
  32. package/dist/adapters/custom.js +146 -0
  33. package/dist/adapters/custom.js.map +1 -0
  34. package/dist/adapters/detect.d.ts +69 -0
  35. package/dist/adapters/detect.d.ts.map +1 -0
  36. package/dist/adapters/detect.js +158 -0
  37. package/dist/adapters/detect.js.map +1 -0
  38. package/dist/adapters/index.d.ts +21 -0
  39. package/dist/adapters/index.d.ts.map +1 -0
  40. package/dist/adapters/index.js +23 -0
  41. package/dist/adapters/index.js.map +1 -0
  42. package/dist/adapters/windsurf.d.ts +12 -0
  43. package/dist/adapters/windsurf.d.ts.map +1 -0
  44. package/dist/adapters/windsurf.js +39 -0
  45. package/dist/adapters/windsurf.js.map +1 -0
  46. package/dist/bin.d.ts +9 -0
  47. package/dist/bin.d.ts.map +1 -0
  48. package/dist/bin.js +19 -0
  49. package/dist/bin.js.map +1 -0
  50. package/dist/cli/commands/doctor.d.ts +34 -0
  51. package/dist/cli/commands/doctor.d.ts.map +1 -0
  52. package/dist/cli/commands/doctor.js +312 -0
  53. package/dist/cli/commands/doctor.js.map +1 -0
  54. package/dist/cli/commands/index.d.ts +9 -0
  55. package/dist/cli/commands/index.d.ts.map +1 -0
  56. package/dist/cli/commands/index.js +9 -0
  57. package/dist/cli/commands/index.js.map +1 -0
  58. package/dist/cli/commands/restore.d.ts +50 -0
  59. package/dist/cli/commands/restore.d.ts.map +1 -0
  60. package/dist/cli/commands/restore.js +260 -0
  61. package/dist/cli/commands/restore.js.map +1 -0
  62. package/dist/cli/commands/setup.d.ts +19 -0
  63. package/dist/cli/commands/setup.d.ts.map +1 -0
  64. package/dist/cli/commands/setup.js +206 -0
  65. package/dist/cli/commands/setup.js.map +1 -0
  66. package/dist/cli/commands/uninstall.d.ts +37 -0
  67. package/dist/cli/commands/uninstall.d.ts.map +1 -0
  68. package/dist/cli/commands/uninstall.js +189 -0
  69. package/dist/cli/commands/uninstall.js.map +1 -0
  70. package/dist/cli/index.d.ts +7 -0
  71. package/dist/cli/index.d.ts.map +1 -0
  72. package/dist/cli/index.js +97 -0
  73. package/dist/cli/index.js.map +1 -0
  74. package/dist/discovery.d.ts +6 -2
  75. package/dist/discovery.d.ts.map +1 -1
  76. package/dist/discovery.js +296 -2
  77. package/dist/discovery.js.map +1 -1
  78. package/dist/enterprise/env.d.ts +56 -0
  79. package/dist/enterprise/env.d.ts.map +1 -0
  80. package/dist/enterprise/env.js +124 -0
  81. package/dist/enterprise/env.js.map +1 -0
  82. package/dist/enterprise/index.d.ts +7 -0
  83. package/dist/enterprise/index.d.ts.map +1 -0
  84. package/dist/enterprise/index.js +7 -0
  85. package/dist/enterprise/index.js.map +1 -0
  86. package/dist/enterprise/script-generator.d.ts +32 -0
  87. package/dist/enterprise/script-generator.d.ts.map +1 -0
  88. package/dist/enterprise/script-generator.js +461 -0
  89. package/dist/enterprise/script-generator.js.map +1 -0
  90. package/dist/execute.d.ts +21 -0
  91. package/dist/execute.d.ts.map +1 -1
  92. package/dist/execute.js +231 -0
  93. package/dist/execute.js.map +1 -1
  94. package/dist/index.js +79 -7
  95. package/dist/index.js.map +1 -1
  96. package/dist/stripe.d.ts +1 -1
  97. package/dist/stripe.js +1 -1
  98. package/dist/stripe.js.map +1 -1
  99. package/dist/types.d.ts +29 -0
  100. package/dist/types.d.ts.map +1 -1
  101. package/dist/ui/colors.d.ts +111 -0
  102. package/dist/ui/colors.d.ts.map +1 -0
  103. package/dist/ui/colors.js +185 -0
  104. package/dist/ui/colors.js.map +1 -0
  105. package/dist/ui/errors.d.ts +69 -0
  106. package/dist/ui/errors.d.ts.map +1 -0
  107. package/dist/ui/errors.js +334 -0
  108. package/dist/ui/errors.js.map +1 -0
  109. package/dist/ui/index.d.ts +10 -0
  110. package/dist/ui/index.d.ts.map +1 -0
  111. package/dist/ui/index.js +14 -0
  112. package/dist/ui/index.js.map +1 -0
  113. package/dist/ui/prompts.d.ts +88 -0
  114. package/dist/ui/prompts.d.ts.map +1 -0
  115. package/dist/ui/prompts.js +295 -0
  116. package/dist/ui/prompts.js.map +1 -0
  117. package/dist/ui/spinner.d.ts +112 -0
  118. package/dist/ui/spinner.d.ts.map +1 -0
  119. package/dist/ui/spinner.js +229 -0
  120. package/dist/ui/spinner.js.map +1 -0
  121. package/dist/utils/backup.d.ts +48 -0
  122. package/dist/utils/backup.d.ts.map +1 -0
  123. package/dist/utils/backup.js +182 -0
  124. package/dist/utils/backup.js.map +1 -0
  125. package/dist/utils/config.d.ts +80 -0
  126. package/dist/utils/config.d.ts.map +1 -0
  127. package/dist/utils/config.js +221 -0
  128. package/dist/utils/config.js.map +1 -0
  129. package/dist/utils/os.d.ts +45 -0
  130. package/dist/utils/os.d.ts.map +1 -0
  131. package/dist/utils/os.js +106 -0
  132. package/dist/utils/os.js.map +1 -0
  133. package/dist/utils/paths.d.ts +38 -0
  134. package/dist/utils/paths.d.ts.map +1 -0
  135. package/dist/utils/paths.js +160 -0
  136. package/dist/utils/paths.js.map +1 -0
  137. package/docs/PRD-BILLING.md +226 -0
  138. package/docs/PRD-EARN-SYSTEM.md +261 -0
  139. package/docs/PRD-MCP-AUTO-SETUP.md +623 -0
  140. package/docs/enterprise-deployment.md +728 -0
  141. package/landing/next.config.mjs +14 -0
  142. package/landing/public/stats.json +4 -2
  143. package/landing/scripts/generate-stats.js +12 -0
  144. package/landing/src/app/api/workspace-auth/magic-link/route.ts +6 -3
  145. package/landing/src/app/auth/verify/page.tsx +11 -4
  146. package/landing/src/app/docs/page.tsx +1 -1
  147. package/landing/src/app/join/page.tsx +49 -0
  148. package/landing/src/app/login/page.tsx +7 -1
  149. package/landing/src/app/page.tsx +13 -28
  150. package/landing/src/app/providers/register/page.tsx +1 -1
  151. package/landing/src/app/workspace/page.tsx +483 -710
  152. package/landing/src/components/CheckoutButton.tsx +1 -1
  153. package/landing/src/components/EarnCreditsTab.tsx +842 -0
  154. package/landing/src/lib/stats.json +3 -1
  155. package/package.json +9 -2
  156. package/src/adapters/base.ts +363 -0
  157. package/src/adapters/claude-desktop.ts +41 -0
  158. package/src/adapters/cline.ts +88 -0
  159. package/src/adapters/continue.ts +91 -0
  160. package/src/adapters/cursor.ts +43 -0
  161. package/src/adapters/custom.ts +188 -0
  162. package/src/adapters/detect.ts +202 -0
  163. package/src/adapters/index.ts +47 -0
  164. package/src/adapters/windsurf.ts +44 -0
  165. package/src/bin.ts +19 -0
  166. package/src/cli/commands/doctor.ts +367 -0
  167. package/src/cli/commands/index.ts +9 -0
  168. package/src/cli/commands/restore.ts +333 -0
  169. package/src/cli/commands/setup.ts +276 -0
  170. package/src/cli/commands/uninstall.ts +240 -0
  171. package/src/cli/index.ts +107 -0
  172. package/src/discovery.ts +328 -3
  173. package/src/enterprise/env.ts +156 -0
  174. package/src/enterprise/index.ts +7 -0
  175. package/src/enterprise/script-generator.ts +481 -0
  176. package/src/execute.ts +256 -0
  177. package/src/index.ts +85 -7
  178. package/src/stripe.ts +1 -1
  179. package/src/types.ts +32 -0
  180. package/src/ui/colors.ts +219 -0
  181. package/src/ui/errors.ts +394 -0
  182. package/src/ui/index.ts +17 -0
  183. package/src/ui/prompts.ts +390 -0
  184. package/src/ui/spinner.ts +325 -0
  185. package/src/utils/backup.ts +224 -0
  186. package/src/utils/config.ts +315 -0
  187. package/src/utils/os.ts +124 -0
  188. package/src/utils/paths.ts +203 -0
  189. package/landing/tsconfig.tsbuildinfo +0 -1
package/README.md CHANGED
@@ -1,273 +1,493 @@
1
- <h1 align="center">🦞 APIClaw</h1>
2
-
3
- <p align="center">
4
- <strong>The API Layer for AI Agents</strong>
5
- </p>
6
-
7
- <p align="center">
8
- 22,000+ APIs. One MCP config. Direct Call = no keys needed.
9
- </p>
10
-
11
- <p align="center">
12
- <a href="https://apiclaw.com">Website</a> •
13
- <a href="#direct-call">Direct Call</a> •
14
- <a href="#quick-start">Quick Start</a> •
15
- <a href="#for-providers">For Providers</a>
16
- </p>
17
-
18
- <p align="center">
19
- <img src="https://img.shields.io/badge/APIs-22,392-ef4444" alt="APIs" />
20
- <img src="https://img.shields.io/badge/Categories-14-171717" alt="Categories" />
21
- <img src="https://img.shields.io/badge/Direct_Call-11_Providers-00d4ff" alt="Direct Call" />
22
- <img src="https://img.shields.io/badge/MCP-Compatible-00d4ff" alt="MCP Compatible" />
23
- <img src="https://img.shields.io/badge/License-MIT-green" alt="License" />
24
- </p>
1
+ # APIClaw
2
+
3
+ > **Universal API access for AI agents.** Connect any MCP client to thousands of APIs with zero configuration.
4
+
5
+ [![npm version](https://img.shields.io/npm/v/@nordsym/apiclaw.svg)](https://www.npmjs.com/package/@nordsym/apiclaw)
6
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)
25
7
 
26
8
  ---
27
9
 
28
- ## Why APIClaw?
10
+ ## Quick Start
29
11
 
30
- AI agents don't browse documentation. They query capabilities and execute.
12
+ ```bash
13
+ # Auto-detect and configure all MCP clients
14
+ npx @nordsym/apiclaw setup
31
15
 
32
- APIClaw is the missing layer between agents and the API economy:
16
+ # That's it! Restart your AI assistant and ask:
17
+ # "List available APIs" or "Send an SMS via 46elks"
18
+ ```
33
19
 
34
- - **Discovery** 22,000+ APIs, searchable by capability
35
- - **Direct Call** — Execute without API keys (we handle auth)
36
- - **One config** — Add APIClaw MCP, access everything
20
+ APIClaw automatically detects Claude Desktop, Cursor, Windsurf, Cline, and Continue — then configures itself as an MCP server in seconds.
37
21
 
38
22
  ---
39
23
 
40
- ## Direct Call
24
+ ## What is APIClaw?
41
25
 
42
- **No API keys. No setup. Just call.**
26
+ APIClaw is an MCP (Model Context Protocol) server that gives AI coding assistants access to real-world APIs:
43
27
 
44
- Your agent can execute these APIs directly through APIClaw:
28
+ - **📱 SMS & Voice** 46elks, Twilio
29
+ - **📧 Email** — Resend, SendGrid
30
+ - **💳 Payments** — Stripe
31
+ - **🔍 Search** — Brave Search
32
+ - **🤖 AI** — OpenRouter, ElevenLabs
33
+ - **...and 100+ more** — growing weekly
45
34
 
46
- ```javascript
47
- // Run any ML model
48
- mcp.call("call_api", {
49
- provider: "replicate",
50
- action: "run_model",
51
- params: {
52
- model: "stability-ai/sdxl",
53
- input: { prompt: "a cyber-lobster in neon lights" }
54
- }
55
- })
35
+ Instead of manually configuring API keys and reading documentation, just tell your AI: *"Send a confirmation SMS to +46701234567"* — and it works.
56
36
 
57
- // Access 100+ LLMs through one endpoint
58
- mcp.call("call_api", {
59
- provider: "openrouter",
60
- action: "chat",
61
- params: {
62
- model: "anthropic/claude-3-opus",
63
- messages: [{ role: "user", content: "Hello!" }]
64
- }
65
- })
37
+ ---
66
38
 
67
- // Execute code in secure sandbox
68
- mcp.call("call_api", {
69
- provider: "e2b",
70
- action: "run_code",
71
- params: {
72
- language: "python",
73
- code: "print('Hello from sandbox!')"
74
- }
75
- })
39
+ ## Installation
76
40
 
77
- // Scrape any website
78
- mcp.call("call_api", {
79
- provider: "firecrawl",
80
- action: "scrape",
81
- params: { url: "https://example.com" }
82
- })
41
+ ### Option 1: Auto-Setup (Recommended)
42
+
43
+ ```bash
44
+ npx @nordsym/apiclaw setup
83
45
  ```
84
46
 
85
- ### Available Direct Call Providers
86
-
87
- | Provider | What It Does | Actions |
88
- |----------|--------------|---------|
89
- | **OpenRouter** | 100+ AI models (Claude, GPT, Llama, etc.) | `chat` |
90
- | **Replicate** | Any ML model (Stable Diffusion, Whisper, etc.) | `run_model`, `get_prediction` |
91
- | **E2B** | Secure code sandbox for agents | `run_code`, `run_shell` |
92
- | **Firecrawl** | Web scraping & crawling | `scrape`, `crawl` |
93
- | **ElevenLabs** | Voice synthesis | `text_to_speech` |
94
- | **GitHub** | Repos, issues, code search | `search`, `repos`, `issues` |
95
- | **Brave Search** | Web search | `search` |
96
- | **Resend** | Transactional email | `send_email` |
97
- | **46elks** | SMS/Voice (Swedish/EU) | `send_sms` |
98
- | **Twilio** | SMS/Voice (Global) | `send_sms` |
99
- | **CoinGecko** | Crypto prices & data | `price`, `markets` |
47
+ This will:
48
+ 1. 🔍 Detect installed MCP clients
49
+ 2. 📝 Add APIClaw to their config files
50
+ 3. ✅ Verify the setup
51
+
52
+ ### Option 2: Manual Installation
53
+
54
+ ```bash
55
+ npm install -g @nordsym/apiclaw
56
+ apiclaw setup
57
+ ```
58
+
59
+ ### Option 3: Use npx (No Install)
60
+
61
+ Just use `npx @nordsym/apiclaw` anywhere it downloads on demand.
100
62
 
101
63
  ---
102
64
 
103
- ## Quick Start
65
+ ## Commands
66
+
67
+ ### `setup`
68
+
69
+ Configure APIClaw as an MCP server.
104
70
 
105
71
  ```bash
106
- npx @nordsym/apiclaw
72
+ # Auto-detect and configure all clients
73
+ npx @nordsym/apiclaw setup
74
+
75
+ # Configure specific client
76
+ npx @nordsym/apiclaw setup --client claude-desktop
77
+ npx @nordsym/apiclaw setup --client cursor
78
+ npx @nordsym/apiclaw setup --client windsurf
79
+ npx @nordsym/apiclaw setup --client cline
80
+ npx @nordsym/apiclaw setup --client continue
81
+
82
+ # Custom config path
83
+ npx @nordsym/apiclaw setup --config /path/to/config.json
84
+
85
+ # Link a workspace
86
+ npx @nordsym/apiclaw setup --workspace ws_abc123
87
+
88
+ # Preview changes without applying
89
+ npx @nordsym/apiclaw setup --dry-run
90
+
91
+ # Force overwrite existing config
92
+ npx @nordsym/apiclaw setup --force
93
+
94
+ # Interactive mode
95
+ npx @nordsym/apiclaw setup --wizard
107
96
  ```
108
97
 
109
- ### Add to Claude Desktop
98
+ ### `doctor`
110
99
 
111
- ```json
112
- {
113
- "mcpServers": {
114
- "apiclaw": {
115
- "command": "npx",
116
- "args": ["@nordsym/apiclaw"]
117
- }
118
- }
119
- }
100
+ Diagnose your APIClaw setup.
101
+
102
+ ```bash
103
+ npx @nordsym/apiclaw doctor
120
104
  ```
121
105
 
122
- Works with Claude, GPT (via MCP bridge), Cursor, Cline, and any MCP-compatible client.
106
+ Output:
107
+ ```
108
+ 🔍 APIClaw Health Check
109
+ ========================
123
110
 
124
- ---
111
+ System:
112
+ ✓ Node.js v20.11.0
113
+ ✓ npm 10.2.4
114
+ ✓ npx available
125
115
 
126
- ## Discovery
116
+ MCP Clients:
117
+ ✓ Claude Desktop - Configured ✓
118
+ ✓ Cursor - Configured ✓
119
+ ✗ Windsurf - Not installed
127
120
 
128
- 22,392 APIs indexed across 14 categories:
121
+ Connectivity:
122
+ ✓ api.apiclaw.com reachable
129
123
 
130
- ```javascript
131
- // Find APIs by capability
132
- mcp.call("discover_apis", {
133
- query: "image generation AI",
134
- max_results: 5
135
- })
124
+ Status: All systems operational ✓
125
+ ```
136
126
 
137
- // Get full details
138
- mcp.call("get_api_details", {
139
- api_id: "replicate"
140
- })
141
- // → endpoints, auth, pricing, examples
127
+ ### `restore`
128
+
129
+ Restore config from backup.
130
+
131
+ ```bash
132
+ # Restore most recent backup
133
+ npx @nordsym/apiclaw restore
134
+
135
+ # List available backups
136
+ npx @nordsym/apiclaw restore --list
137
+
138
+ # Restore specific backup
139
+ npx @nordsym/apiclaw restore --backup config.backup.1709150400.json
140
+ ```
141
+
142
+ ### `uninstall`
143
+
144
+ Remove APIClaw from all configured clients.
145
+
146
+ ```bash
147
+ npx @nordsym/apiclaw uninstall
148
+
149
+ # Remove from specific client
150
+ npx @nordsym/apiclaw uninstall --client cursor
142
151
  ```
143
152
 
144
- ### Categories
153
+ ---
154
+
155
+ ## Options
156
+
157
+ | Option | Description |
158
+ |--------|-------------|
159
+ | `--client <name>` | Target specific MCP client |
160
+ | `--config <path>` | Use custom config file path |
161
+ | `--workspace <id>` | Link an APIClaw workspace |
162
+ | `--dry-run` | Preview changes without applying |
163
+ | `--force` | Overwrite existing APIClaw config |
164
+ | `--wizard` | Interactive setup mode |
165
+ | `--no-backup` | Skip creating backup (not recommended) |
166
+ | `--verbose` | Show detailed output |
167
+ | `--version` | Show version number |
168
+ | `--help` | Show help |
169
+
170
+ ---
171
+
172
+ ## Supported MCP Clients
173
+
174
+ | Client | macOS | Windows | Linux |
175
+ |--------|:-----:|:-------:|:-----:|
176
+ | **Claude Desktop** | ✅ | ✅ | ✅ |
177
+ | **Cursor** | ✅ | ✅ | ✅ |
178
+ | **Windsurf** | ✅ | ✅ | ✅ |
179
+ | **Cline** (VS Code) | ✅ | ✅ | ✅ |
180
+ | **Continue** | ✅ | ✅ | ✅ |
181
+ | **Custom** | ✅ | ✅ | ✅ |
182
+
183
+ ### Config Locations
184
+
185
+ <details>
186
+ <summary>Claude Desktop</summary>
187
+
188
+ | OS | Path |
189
+ |----|------|
190
+ | macOS | `~/Library/Application Support/Claude/claude_desktop_config.json` |
191
+ | Windows | `%APPDATA%\Claude\claude_desktop_config.json` |
192
+ | Linux | `~/.config/Claude/claude_desktop_config.json` |
193
+
194
+ </details>
195
+
196
+ <details>
197
+ <summary>Cursor</summary>
198
+
199
+ | OS | Path |
200
+ |----|------|
201
+ | macOS | `~/Library/Application Support/Cursor/User/globalStorage/cursor.mcp/config.json` |
202
+ | Windows | `%APPDATA%\Cursor\User\globalStorage\cursor.mcp\config.json` |
203
+ | Linux | `~/.config/Cursor/User/globalStorage/cursor.mcp/config.json` |
204
+
205
+ </details>
206
+
207
+ <details>
208
+ <summary>Windsurf</summary>
209
+
210
+ | OS | Path |
211
+ |----|------|
212
+ | macOS | `~/.codeium/windsurf/mcp_config.json` |
213
+ | Windows | `%USERPROFILE%\.codeium\windsurf\mcp_config.json` |
214
+ | Linux | `~/.codeium/windsurf/mcp_config.json` |
215
+
216
+ </details>
217
+
218
+ <details>
219
+ <summary>Cline</summary>
220
+
221
+ | OS | Path |
222
+ |----|------|
223
+ | macOS | `~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json` |
224
+ | Windows | `%APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json` |
225
+ | Linux | `~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json` |
226
+
227
+ </details>
228
+
229
+ <details>
230
+ <summary>Continue</summary>
231
+
232
+ | OS | Path |
233
+ |----|------|
234
+ | macOS | `~/.continue/config.json` |
235
+ | Windows | `%USERPROFILE%\.continue\config.json` |
236
+ | Linux | `~/.continue/config.json` |
145
237
 
146
- | Category | APIs | Category | APIs |
147
- |----------|------|----------|------|
148
- | Utilities | 7,069 | Finance | 1,179 |
149
- | Analytics | 2,600 | Commerce | 1,151 |
150
- | Development | 2,278 | Location | 976 |
151
- | Cloud | 1,463 | Communication | 939 |
152
- | AI & ML | 1,259 | Business | 923 |
153
- | Entertainment | 1,212 | Health | 740 |
154
- | Security | 491 | Social | 112 |
238
+ </details>
155
239
 
156
240
  ---
157
241
 
158
- ## For Providers
242
+ ## Enterprise Deployment
159
243
 
160
- **Get your API in front of AI agents.**
244
+ Deploy APIClaw to your entire development team.
161
245
 
162
- Agents are the next wave of API consumers. They don't see your landing page—they query capabilities.
246
+ ### Environment Variables
163
247
 
164
- ### Self-Service Dashboard
248
+ ```bash
249
+ # Pre-configure workspace for all users
250
+ export APICLAW_WORKSPACE="ws_enterprise_123"
251
+
252
+ # Point to self-hosted instance
253
+ export APICLAW_API_URL="https://api.company.com/apiclaw"
254
+
255
+ # Disable telemetry
256
+ export APICLAW_DISABLE_TELEMETRY="true"
165
257
 
166
- 1. Sign up at [apiclaw.com/providers](https://apiclaw.com/providers)
167
- 2. Add your API spec
168
- 3. Configure Direct Call (optional)
169
- 4. Go live
258
+ npx @nordsym/apiclaw setup
259
+ ```
170
260
 
171
- **Direct Call benefits:**
172
- - Agents use your API without key setup
173
- - You provide one service account key
174
- - We handle auth routing
175
- - You get usage analytics
261
+ ### Generate Deployment Script
176
262
 
177
- → [apiclaw.com/providers](https://apiclaw.com/providers)
263
+ ```bash
264
+ # Generate cross-platform setup script
265
+ npx @nordsym/apiclaw setup --enterprise --output deploy.sh
266
+ ```
267
+
268
+ The generated script handles:
269
+ - OS detection
270
+ - Client detection
271
+ - Config injection
272
+ - Verification
273
+ - Error reporting
274
+
275
+ ### MDM/Group Policy
276
+
277
+ See [Enterprise Deployment Guide](docs/enterprise-deployment.md) for:
278
+ - Jamf/Kandji/Mosyle (macOS)
279
+ - Intune/Group Policy (Windows)
280
+ - Ansible/Chef/Puppet (Linux)
178
281
 
179
282
  ---
180
283
 
181
- ## Architecture
284
+ ## Troubleshooting
182
285
 
286
+ ### "Permission denied"
287
+
288
+ ```bash
289
+ # Option 1: Run with sudo
290
+ sudo npx @nordsym/apiclaw setup
291
+
292
+ # Option 2: Fix permissions
293
+ chmod 644 ~/Library/Application\ Support/Claude/claude_desktop_config.json
294
+ ```
295
+
296
+ ### "Config file not found"
297
+
298
+ The MCP client hasn't created its config yet:
299
+ 1. Open the client (Claude Desktop, Cursor, etc.)
300
+ 2. Close it
301
+ 3. Try setup again
302
+
303
+ Or specify a custom path:
304
+ ```bash
305
+ npx @nordsym/apiclaw setup --config /path/to/config.json
183
306
  ```
184
- ┌─────────────────────────────────────────────────────────────┐
185
- │ Your Agent │
186
- └─────────────────────────────┬───────────────────────────────┘
187
- MCP Protocol
188
-
189
- ┌─────────────────────────────────────────────────────────────┐
190
- │ 🦞 APIClaw │
191
- │ │
192
- │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
193
- │ │ Discovery │ │ Direct Call │ │ Provider │ │
194
- │ │ 22k APIs │ │ 11 Live │ │ Dashboard │ │
195
- │ └──────────────┘ └──────────────┘ └──────────────┘ │
196
- │ │
197
- └─────────────────────────────┬───────────────────────────────┘
198
-
199
- ┌─────────────────────┼─────────────────────┐
200
- ▼ ▼ ▼
201
- ┌──────────┐ ┌──────────┐ ┌──────────┐
202
- │ OpenRouter│ │ Replicate │ │ E2B │
203
- Firecrawl │ │ ElevenLabs│ │ GitHub │
204
- │ + 5 │ │ Brave │ │ + more │
205
- └──────────┘ └──────────┘ └──────────┘
307
+
308
+ ### "Invalid JSON"
309
+
310
+ Your config file has syntax errors:
311
+ ```bash
312
+ # Restore from backup
313
+ npx @nordsym/apiclaw restore --list
314
+ npx @nordsym/apiclaw restore
315
+
316
+ # Or manually fix the JSON
317
+ ```
318
+
319
+ ### "Already configured"
320
+
321
+ APIClaw is already set up. To update:
322
+ ```bash
323
+ npx @nordsym/apiclaw setup --force
324
+ ```
325
+
326
+ ### Still having issues?
327
+
328
+ ```bash
329
+ # Run diagnostics
330
+ npx @nordsym/apiclaw doctor --verbose
331
+
332
+ # Get help
333
+ https://docs.apiclaw.com/setup
334
+ https://github.com/nordsym/apiclaw/issues
206
335
  ```
207
336
 
208
337
  ---
209
338
 
210
- ## MCP Tools
339
+ ## How It Works
340
+
341
+ APIClaw modifies your MCP client's config file to register itself as a server:
342
+
343
+ ```json
344
+ {
345
+ "mcpServers": {
346
+ "apiclaw": {
347
+ "command": "npx",
348
+ "args": ["-y", "@nordsym/apiclaw"]
349
+ }
350
+ }
351
+ }
352
+ ```
211
353
 
212
- | Tool | Description |
213
- |------|-------------|
214
- | `discover_apis` | Search 22k APIs by capability |
215
- | `get_api_details` | Full spec, auth, endpoints |
216
- | `list_connected` | Show Direct Call providers |
217
- | `call_api` | Execute via Direct Call |
218
- | `list_categories` | Browse all 14 categories |
354
+ When your AI assistant starts, it launches APIClaw as an MCP server. APIClaw then:
355
+ 1. Exposes available APIs as MCP tools
356
+ 2. Handles authentication and rate limiting
357
+ 3. Executes API calls on behalf of the AI
219
358
 
220
359
  ---
221
360
 
222
- ## Links
361
+ ## Safety Features
223
362
 
224
- - **Website:** [apiclaw.com](https://apiclaw.com)
225
- - **Providers:** [apiclaw.com/providers](https://apiclaw.com/providers)
226
- - **npm:** [@nordsym/apiclaw](https://www.npmjs.com/package/@nordsym/apiclaw)
227
- - **Built by:** [NordSym](https://nordsym.com)
363
+ ### Automatic Backups
364
+
365
+ Before modifying any config, APIClaw creates a timestamped backup:
366
+ ```
367
+ claude_desktop_config.backup.1709150400.json
368
+ ```
369
+
370
+ ### Non-Destructive
371
+
372
+ - Never overwrites existing configurations
373
+ - Deep merges APIClaw into `mcpServers`
374
+ - Preserves all other settings
375
+
376
+ ### Validation
377
+
378
+ - Parses JSON before and after modifications
379
+ - Verifies required fields exist
380
+ - Rolls back on any error
228
381
 
229
382
  ---
230
383
 
231
- ## License
384
+ ## Dry-Run Mode
232
385
 
233
- MIT © [NordSym](https://nordsym.com)
386
+ Test API calls without actually executing them. Perfect for debugging, development, and agent testing.
387
+
388
+ ### Usage
389
+
390
+ ```javascript
391
+ // In MCP tool call
392
+ call_api({
393
+ provider: "46elks",
394
+ action: "send_sms",
395
+ params: {
396
+ to: "+46701234567",
397
+ message: "Hello from dry-run!"
398
+ },
399
+ dry_run: true // ← No actual API call made
400
+ })
401
+ ```
402
+
403
+ ### Response
404
+
405
+ ```json
406
+ {
407
+ "dry_run": true,
408
+ "provider": "46elks",
409
+ "action": "send_sms",
410
+ "would_send": {
411
+ "url": "https://api.46elks.com/a1/sms",
412
+ "method": "POST",
413
+ "headers": {
414
+ "Content-Type": "application/json",
415
+ "Authorization": "Basic [base64(username:password)]"
416
+ },
417
+ "body": {
418
+ "from": "APIClaw",
419
+ "to": "+46701234567",
420
+ "message": "Hello from dry-run!"
421
+ }
422
+ },
423
+ "mock_response": {
424
+ "success": true,
425
+ "data": {
426
+ "id": "mock_sms_123",
427
+ "status": "delivered"
428
+ },
429
+ "estimated_cost": "~0.35-0.52 SEK"
430
+ },
431
+ "notes": [
432
+ "⚠️ DRY-RUN MODE: No actual API call was made",
433
+ "This shows what WOULD be sent if you remove dry_run: true"
434
+ ]
435
+ }
436
+ ```
437
+
438
+ ### Benefits
439
+
440
+ - **💰 No cost** — Test without burning API credits
441
+ - **🔍 Debug** — See exact request that would be sent
442
+ - **🧪 Test** — Validate agent workflows before going live
443
+ - **📋 Mock data** — Get realistic response shapes for development
444
+
445
+ ### Supported Providers
446
+
447
+ All Direct Call providers support dry-run:
448
+ - 46elks, Twilio (SMS)
449
+ - Resend (Email)
450
+ - Brave Search
451
+ - OpenRouter (LLM)
452
+ - ElevenLabs (TTS)
453
+ - Replicate (AI models)
454
+ - Firecrawl (Web scraping)
455
+ - GitHub
456
+ - E2B (Code sandbox)
234
457
 
235
458
  ---
236
459
 
237
- <p align="center">
238
- <strong>🦞 APIClaw</strong><br/>
239
- <em>The API layer for the agentic era.</em>
240
- </p>
460
+ ## Development
241
461
 
242
- ## 💳 Metered Billing (Pay-per-Call)
462
+ ```bash
463
+ # Clone the repo
464
+ git clone https://github.com/nordsym/apiclaw.git
465
+ cd apiclaw
243
466
 
244
- APIClaw supports usage-based billing at **$0.002 per API call**.
467
+ # Install dependencies
468
+ npm install
245
469
 
246
- ### Setup
247
- ```typescript
248
- // 1. Customer signs up for metered billing
249
- const result = await mcp.call('setup_metered_billing', {
250
- email: 'customer@example.com'
251
- });
252
- // Returns checkout URL - customer completes payment setup
470
+ # Build
471
+ npm run build
253
472
 
254
- // 2. After checkout, API calls are tracked automatically
255
- // Usage is reported to Stripe meter after each successful call
473
+ # Run locally
474
+ npm run dev
256
475
 
257
- // 3. Check usage during billing period
258
- const usage = await mcp.call('get_usage_summary', {
259
- subscription_id: 'sub_xxx'
260
- });
261
- // Returns: { total_calls: 150, estimated_cost: "$0.30" }
476
+ # Test setup locally
477
+ npm run setup:test
262
478
  ```
263
479
 
264
- ### Pricing Examples
265
- | Calls/Month | Cost |
266
- |-------------|------|
267
- | 100 | $0.20 |
268
- | 1,000 | $2.00 |
269
- | 10,000 | $20.00 |
270
- | 100,000 | $200.00 |
480
+ ---
481
+
482
+ ## License
483
+
484
+ MIT © [NordSym](https://nordsym.com)
485
+
486
+ ---
487
+
488
+ ## Links
271
489
 
272
- ### Direct Call Mode
273
- If you have your own API keys, Direct Call bypasses metered billing - you pay providers directly.
490
+ - **Website:** [apiclaw.com](https://apiclaw.com)
491
+ - **Documentation:** [docs.apiclaw.com](https://docs.apiclaw.com)
492
+ - **GitHub:** [github.com/nordsym/apiclaw](https://github.com/nordsym/apiclaw)
493
+ - **npm:** [@nordsym/apiclaw](https://www.npmjs.com/package/@nordsym/apiclaw)