@nordsym/apiclaw 1.3.6 → 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 (214) hide show
  1. package/README.md +422 -169
  2. package/convex/_generated/api.d.ts +16 -0
  3. package/convex/agents.ts +403 -0
  4. package/convex/billing.ts +651 -216
  5. package/convex/crons.ts +17 -0
  6. package/convex/directCall.ts +80 -0
  7. package/convex/earnProgress.ts +753 -0
  8. package/convex/email.ts +135 -82
  9. package/convex/feedback.ts +265 -0
  10. package/convex/http.ts +80 -4
  11. package/convex/logs.ts +304 -0
  12. package/convex/providerKeys.ts +289 -0
  13. package/convex/providers.ts +18 -0
  14. package/convex/schema.ts +185 -1
  15. package/convex/stripeActions.ts +512 -0
  16. package/convex/webhooks.ts +494 -0
  17. package/convex/workspaces.ts +158 -3
  18. package/dist/adapters/base.d.ts +112 -0
  19. package/dist/adapters/base.d.ts.map +1 -0
  20. package/dist/adapters/base.js +247 -0
  21. package/dist/adapters/base.js.map +1 -0
  22. package/dist/adapters/claude-desktop.d.ts +12 -0
  23. package/dist/adapters/claude-desktop.d.ts.map +1 -0
  24. package/dist/adapters/claude-desktop.js +36 -0
  25. package/dist/adapters/claude-desktop.js.map +1 -0
  26. package/dist/adapters/cline.d.ts +20 -0
  27. package/dist/adapters/cline.d.ts.map +1 -0
  28. package/dist/adapters/cline.js +77 -0
  29. package/dist/adapters/cline.js.map +1 -0
  30. package/dist/adapters/continue.d.ts +26 -0
  31. package/dist/adapters/continue.d.ts.map +1 -0
  32. package/dist/adapters/continue.js +68 -0
  33. package/dist/adapters/continue.js.map +1 -0
  34. package/dist/adapters/cursor.d.ts +12 -0
  35. package/dist/adapters/cursor.d.ts.map +1 -0
  36. package/dist/adapters/cursor.js +38 -0
  37. package/dist/adapters/cursor.js.map +1 -0
  38. package/dist/adapters/custom.d.ts +47 -0
  39. package/dist/adapters/custom.d.ts.map +1 -0
  40. package/dist/adapters/custom.js +146 -0
  41. package/dist/adapters/custom.js.map +1 -0
  42. package/dist/adapters/detect.d.ts +69 -0
  43. package/dist/adapters/detect.d.ts.map +1 -0
  44. package/dist/adapters/detect.js +158 -0
  45. package/dist/adapters/detect.js.map +1 -0
  46. package/dist/adapters/index.d.ts +21 -0
  47. package/dist/adapters/index.d.ts.map +1 -0
  48. package/dist/adapters/index.js +23 -0
  49. package/dist/adapters/index.js.map +1 -0
  50. package/dist/adapters/windsurf.d.ts +12 -0
  51. package/dist/adapters/windsurf.d.ts.map +1 -0
  52. package/dist/adapters/windsurf.js +39 -0
  53. package/dist/adapters/windsurf.js.map +1 -0
  54. package/dist/bin.d.ts +9 -0
  55. package/dist/bin.d.ts.map +1 -0
  56. package/dist/bin.js +19 -0
  57. package/dist/bin.js.map +1 -0
  58. package/dist/cli/commands/doctor.d.ts +34 -0
  59. package/dist/cli/commands/doctor.d.ts.map +1 -0
  60. package/dist/cli/commands/doctor.js +312 -0
  61. package/dist/cli/commands/doctor.js.map +1 -0
  62. package/dist/cli/commands/index.d.ts +9 -0
  63. package/dist/cli/commands/index.d.ts.map +1 -0
  64. package/dist/cli/commands/index.js +9 -0
  65. package/dist/cli/commands/index.js.map +1 -0
  66. package/dist/cli/commands/restore.d.ts +50 -0
  67. package/dist/cli/commands/restore.d.ts.map +1 -0
  68. package/dist/cli/commands/restore.js +260 -0
  69. package/dist/cli/commands/restore.js.map +1 -0
  70. package/dist/cli/commands/setup.d.ts +19 -0
  71. package/dist/cli/commands/setup.d.ts.map +1 -0
  72. package/dist/cli/commands/setup.js +206 -0
  73. package/dist/cli/commands/setup.js.map +1 -0
  74. package/dist/cli/commands/uninstall.d.ts +37 -0
  75. package/dist/cli/commands/uninstall.d.ts.map +1 -0
  76. package/dist/cli/commands/uninstall.js +189 -0
  77. package/dist/cli/commands/uninstall.js.map +1 -0
  78. package/dist/cli/index.d.ts +7 -0
  79. package/dist/cli/index.d.ts.map +1 -0
  80. package/dist/cli/index.js +97 -0
  81. package/dist/cli/index.js.map +1 -0
  82. package/dist/discovery.d.ts +6 -2
  83. package/dist/discovery.d.ts.map +1 -1
  84. package/dist/discovery.js +296 -2
  85. package/dist/discovery.js.map +1 -1
  86. package/dist/enterprise/env.d.ts +56 -0
  87. package/dist/enterprise/env.d.ts.map +1 -0
  88. package/dist/enterprise/env.js +124 -0
  89. package/dist/enterprise/env.js.map +1 -0
  90. package/dist/enterprise/index.d.ts +7 -0
  91. package/dist/enterprise/index.d.ts.map +1 -0
  92. package/dist/enterprise/index.js +7 -0
  93. package/dist/enterprise/index.js.map +1 -0
  94. package/dist/enterprise/script-generator.d.ts +32 -0
  95. package/dist/enterprise/script-generator.d.ts.map +1 -0
  96. package/dist/enterprise/script-generator.js +461 -0
  97. package/dist/enterprise/script-generator.js.map +1 -0
  98. package/dist/execute.d.ts +21 -0
  99. package/dist/execute.d.ts.map +1 -1
  100. package/dist/execute.js +231 -0
  101. package/dist/execute.js.map +1 -1
  102. package/dist/index.js +257 -7
  103. package/dist/index.js.map +1 -1
  104. package/dist/metered.d.ts +62 -0
  105. package/dist/metered.d.ts.map +1 -0
  106. package/dist/metered.js +81 -0
  107. package/dist/metered.js.map +1 -0
  108. package/dist/stripe.d.ts +62 -0
  109. package/dist/stripe.d.ts.map +1 -1
  110. package/dist/stripe.js +212 -0
  111. package/dist/stripe.js.map +1 -1
  112. package/dist/types.d.ts +29 -0
  113. package/dist/types.d.ts.map +1 -1
  114. package/dist/ui/colors.d.ts +111 -0
  115. package/dist/ui/colors.d.ts.map +1 -0
  116. package/dist/ui/colors.js +185 -0
  117. package/dist/ui/colors.js.map +1 -0
  118. package/dist/ui/errors.d.ts +69 -0
  119. package/dist/ui/errors.d.ts.map +1 -0
  120. package/dist/ui/errors.js +334 -0
  121. package/dist/ui/errors.js.map +1 -0
  122. package/dist/ui/index.d.ts +10 -0
  123. package/dist/ui/index.d.ts.map +1 -0
  124. package/dist/ui/index.js +14 -0
  125. package/dist/ui/index.js.map +1 -0
  126. package/dist/ui/prompts.d.ts +88 -0
  127. package/dist/ui/prompts.d.ts.map +1 -0
  128. package/dist/ui/prompts.js +295 -0
  129. package/dist/ui/prompts.js.map +1 -0
  130. package/dist/ui/spinner.d.ts +112 -0
  131. package/dist/ui/spinner.d.ts.map +1 -0
  132. package/dist/ui/spinner.js +229 -0
  133. package/dist/ui/spinner.js.map +1 -0
  134. package/dist/utils/backup.d.ts +48 -0
  135. package/dist/utils/backup.d.ts.map +1 -0
  136. package/dist/utils/backup.js +182 -0
  137. package/dist/utils/backup.js.map +1 -0
  138. package/dist/utils/config.d.ts +80 -0
  139. package/dist/utils/config.d.ts.map +1 -0
  140. package/dist/utils/config.js +221 -0
  141. package/dist/utils/config.js.map +1 -0
  142. package/dist/utils/os.d.ts +45 -0
  143. package/dist/utils/os.d.ts.map +1 -0
  144. package/dist/utils/os.js +106 -0
  145. package/dist/utils/os.js.map +1 -0
  146. package/dist/utils/paths.d.ts +38 -0
  147. package/dist/utils/paths.d.ts.map +1 -0
  148. package/dist/utils/paths.js +160 -0
  149. package/dist/utils/paths.js.map +1 -0
  150. package/docs/PRD-BILLING.md +226 -0
  151. package/docs/PRD-EARN-SYSTEM.md +261 -0
  152. package/docs/PRD-MCP-AUTO-SETUP.md +623 -0
  153. package/docs/PRD-final-polish.md +117 -0
  154. package/docs/PRD-mobile-responsive.md +56 -0
  155. package/docs/PRD-navigation-expansion.md +295 -0
  156. package/docs/PRD-stripe-billing.md +312 -0
  157. package/docs/PRD-workspace-cleanup.md +200 -0
  158. package/docs/enterprise-deployment.md +728 -0
  159. package/landing/next.config.mjs +14 -0
  160. package/landing/public/stats.json +4 -2
  161. package/landing/scripts/generate-stats.js +12 -0
  162. package/landing/src/app/api/billing/checkout/route.ts +109 -0
  163. package/landing/src/app/api/billing/payment-method/route.ts +118 -0
  164. package/landing/src/app/api/billing/portal/route.ts +64 -0
  165. package/landing/src/app/api/workspace-auth/magic-link/route.ts +6 -3
  166. package/landing/src/app/auth/verify/page.tsx +31 -9
  167. package/landing/src/app/docs/page.tsx +1 -1
  168. package/landing/src/app/earn/page.tsx +6 -6
  169. package/landing/src/app/join/page.tsx +49 -0
  170. package/landing/src/app/login/page.tsx +8 -2
  171. package/landing/src/app/page.tsx +81 -96
  172. package/landing/src/app/providers/dashboard/page.tsx +1 -1
  173. package/landing/src/app/providers/register/page.tsx +1 -1
  174. package/landing/src/app/workspace/page.tsx +3269 -534
  175. package/landing/src/components/CheckoutButton.tsx +188 -0
  176. package/landing/src/components/EarnCreditsTab.tsx +842 -0
  177. package/landing/src/components/Toast.tsx +84 -0
  178. package/landing/src/lib/stats.json +3 -1
  179. package/package.json +9 -2
  180. package/src/adapters/base.ts +363 -0
  181. package/src/adapters/claude-desktop.ts +41 -0
  182. package/src/adapters/cline.ts +88 -0
  183. package/src/adapters/continue.ts +91 -0
  184. package/src/adapters/cursor.ts +43 -0
  185. package/src/adapters/custom.ts +188 -0
  186. package/src/adapters/detect.ts +202 -0
  187. package/src/adapters/index.ts +47 -0
  188. package/src/adapters/windsurf.ts +44 -0
  189. package/src/bin.ts +19 -0
  190. package/src/cli/commands/doctor.ts +367 -0
  191. package/src/cli/commands/index.ts +9 -0
  192. package/src/cli/commands/restore.ts +333 -0
  193. package/src/cli/commands/setup.ts +276 -0
  194. package/src/cli/commands/uninstall.ts +240 -0
  195. package/src/cli/index.ts +107 -0
  196. package/src/discovery.ts +328 -3
  197. package/src/enterprise/env.ts +156 -0
  198. package/src/enterprise/index.ts +7 -0
  199. package/src/enterprise/script-generator.ts +481 -0
  200. package/src/execute.ts +256 -0
  201. package/src/index.ts +290 -7
  202. package/src/metered.ts +149 -0
  203. package/src/stripe.ts +253 -0
  204. package/src/types.ts +32 -0
  205. package/src/ui/colors.ts +219 -0
  206. package/src/ui/errors.ts +394 -0
  207. package/src/ui/index.ts +17 -0
  208. package/src/ui/prompts.ts +390 -0
  209. package/src/ui/spinner.ts +325 -0
  210. package/src/utils/backup.ts +224 -0
  211. package/src/utils/config.ts +315 -0
  212. package/src/utils/os.ts +124 -0
  213. package/src/utils/paths.ts +203 -0
  214. package/landing/tsconfig.tsbuildinfo +0 -1
package/README.md CHANGED
@@ -1,230 +1,481 @@
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
45
+ ```
46
+
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
83
57
  ```
84
58
 
85
- ### Available Direct Call Providers
59
+ ### Option 3: Use npx (No Install)
86
60
 
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` |
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.
70
+
71
+ ```bash
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
96
+ ```
97
+
98
+ ### `doctor`
99
+
100
+ Diagnose your APIClaw setup.
101
+
102
+ ```bash
103
+ npx @nordsym/apiclaw doctor
104
+ ```
105
+
106
+ Output:
107
+ ```
108
+ 🔍 APIClaw Health Check
109
+ ========================
110
+
111
+ System:
112
+ ✓ Node.js v20.11.0
113
+ ✓ npm 10.2.4
114
+ ✓ npx available
115
+
116
+ MCP Clients:
117
+ ✓ Claude Desktop - Configured ✓
118
+ ✓ Cursor - Configured ✓
119
+ ✗ Windsurf - Not installed
120
+
121
+ Connectivity:
122
+ ✓ api.apiclaw.com reachable
123
+
124
+ Status: All systems operational ✓
125
+ ```
126
+
127
+ ### `restore`
128
+
129
+ Restore config from backup.
104
130
 
105
131
  ```bash
106
- npx @nordsym/apiclaw
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
107
151
  ```
108
152
 
109
- ### Add to Claude Desktop
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` |
237
+
238
+ </details>
239
+
240
+ ---
241
+
242
+ ## Enterprise Deployment
243
+
244
+ Deploy APIClaw to your entire development team.
245
+
246
+ ### Environment Variables
247
+
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"
257
+
258
+ npx @nordsym/apiclaw setup
259
+ ```
260
+
261
+ ### Generate Deployment Script
262
+
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)
281
+
282
+ ---
283
+
284
+ ## Troubleshooting
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
306
+ ```
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
335
+ ```
336
+
337
+ ---
338
+
339
+ ## How It Works
340
+
341
+ APIClaw modifies your MCP client's config file to register itself as a server:
110
342
 
111
343
  ```json
112
344
  {
113
345
  "mcpServers": {
114
346
  "apiclaw": {
115
347
  "command": "npx",
116
- "args": ["@nordsym/apiclaw"]
348
+ "args": ["-y", "@nordsym/apiclaw"]
117
349
  }
118
350
  }
119
351
  }
120
352
  ```
121
353
 
122
- Works with Claude, GPT (via MCP bridge), Cursor, Cline, and any MCP-compatible client.
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
123
358
 
124
359
  ---
125
360
 
126
- ## Discovery
127
-
128
- 22,392 APIs indexed across 14 categories:
361
+ ## Safety Features
129
362
 
130
- ```javascript
131
- // Find APIs by capability
132
- mcp.call("discover_apis", {
133
- query: "image generation AI",
134
- max_results: 5
135
- })
363
+ ### Automatic Backups
136
364
 
137
- // Get full details
138
- mcp.call("get_api_details", {
139
- api_id: "replicate"
140
- })
141
- // → endpoints, auth, pricing, examples
365
+ Before modifying any config, APIClaw creates a timestamped backup:
142
366
  ```
367
+ claude_desktop_config.backup.1709150400.json
368
+ ```
369
+
370
+ ### Non-Destructive
143
371
 
144
- ### Categories
372
+ - Never overwrites existing configurations
373
+ - Deep merges APIClaw into `mcpServers`
374
+ - Preserves all other settings
145
375
 
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 |
376
+ ### Validation
377
+
378
+ - Parses JSON before and after modifications
379
+ - Verifies required fields exist
380
+ - Rolls back on any error
155
381
 
156
382
  ---
157
383
 
158
- ## For Providers
384
+ ## Dry-Run Mode
159
385
 
160
- **Get your API in front of AI agents.**
386
+ Test API calls without actually executing them. Perfect for debugging, development, and agent testing.
161
387
 
162
- Agents are the next wave of API consumers. They don't see your landing page—they query capabilities.
388
+ ### Usage
163
389
 
164
- ### Self-Service Dashboard
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
+ ```
165
402
 
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
403
+ ### Response
170
404
 
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
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
+ ```
176
437
 
177
- [apiclaw.com/providers](https://apiclaw.com/providers)
438
+ ### Benefits
178
439
 
179
- ---
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
180
444
 
181
- ## Architecture
182
-
183
- ```
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
- └──────────┘ └──────────┘ └──────────┘
206
- ```
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)
207
457
 
208
458
  ---
209
459
 
210
- ## MCP Tools
460
+ ## Development
211
461
 
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 |
462
+ ```bash
463
+ # Clone the repo
464
+ git clone https://github.com/nordsym/apiclaw.git
465
+ cd apiclaw
219
466
 
220
- ---
467
+ # Install dependencies
468
+ npm install
221
469
 
222
- ## Links
470
+ # Build
471
+ npm run build
223
472
 
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)
473
+ # Run locally
474
+ npm run dev
475
+
476
+ # Test setup locally
477
+ npm run setup:test
478
+ ```
228
479
 
229
480
  ---
230
481
 
@@ -234,7 +485,9 @@ MIT © [NordSym](https://nordsym.com)
234
485
 
235
486
  ---
236
487
 
237
- <p align="center">
238
- <strong>🦞 APIClaw</strong><br/>
239
- <em>The API layer for the agentic era.</em>
240
- </p>
488
+ ## Links
489
+
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)