@nordsym/apiclaw 1.3.7 → 1.3.9
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.
- package/README.md +436 -200
- package/convex/_generated/api.d.ts +4 -0
- package/convex/agents.ts +403 -0
- package/convex/directCall.ts +80 -0
- package/convex/earnProgress.ts +753 -0
- package/convex/logs.ts +17 -0
- package/convex/providerKeys.ts +82 -2
- package/convex/schema.ts +71 -2
- package/convex/workspaces.ts +84 -2
- package/dist/adapters/base.d.ts +112 -0
- package/dist/adapters/base.d.ts.map +1 -0
- package/dist/adapters/base.js +247 -0
- package/dist/adapters/base.js.map +1 -0
- package/dist/adapters/claude-desktop.d.ts +12 -0
- package/dist/adapters/claude-desktop.d.ts.map +1 -0
- package/dist/adapters/claude-desktop.js +36 -0
- package/dist/adapters/claude-desktop.js.map +1 -0
- package/dist/adapters/cline.d.ts +20 -0
- package/dist/adapters/cline.d.ts.map +1 -0
- package/dist/adapters/cline.js +77 -0
- package/dist/adapters/cline.js.map +1 -0
- package/dist/adapters/continue.d.ts +26 -0
- package/dist/adapters/continue.d.ts.map +1 -0
- package/dist/adapters/continue.js +68 -0
- package/dist/adapters/continue.js.map +1 -0
- package/dist/adapters/cursor.d.ts +12 -0
- package/dist/adapters/cursor.d.ts.map +1 -0
- package/dist/adapters/cursor.js +38 -0
- package/dist/adapters/cursor.js.map +1 -0
- package/dist/adapters/custom.d.ts +47 -0
- package/dist/adapters/custom.d.ts.map +1 -0
- package/dist/adapters/custom.js +146 -0
- package/dist/adapters/custom.js.map +1 -0
- package/dist/adapters/detect.d.ts +69 -0
- package/dist/adapters/detect.d.ts.map +1 -0
- package/dist/adapters/detect.js +158 -0
- package/dist/adapters/detect.js.map +1 -0
- package/dist/adapters/index.d.ts +21 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +23 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/windsurf.d.ts +12 -0
- package/dist/adapters/windsurf.d.ts.map +1 -0
- package/dist/adapters/windsurf.js +39 -0
- package/dist/adapters/windsurf.js.map +1 -0
- package/dist/bin.d.ts +9 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +19 -0
- package/dist/bin.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +34 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +312 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/index.d.ts +9 -0
- package/dist/cli/commands/index.d.ts.map +1 -0
- package/dist/cli/commands/index.js +9 -0
- package/dist/cli/commands/index.js.map +1 -0
- package/dist/cli/commands/mcp-install.d.ts +14 -0
- package/dist/cli/commands/mcp-install.d.ts.map +1 -0
- package/dist/cli/commands/mcp-install.js +246 -0
- package/dist/cli/commands/mcp-install.js.map +1 -0
- package/dist/cli/commands/restore.d.ts +50 -0
- package/dist/cli/commands/restore.d.ts.map +1 -0
- package/dist/cli/commands/restore.js +260 -0
- package/dist/cli/commands/restore.js.map +1 -0
- package/dist/cli/commands/setup.d.ts +19 -0
- package/dist/cli/commands/setup.d.ts.map +1 -0
- package/dist/cli/commands/setup.js +206 -0
- package/dist/cli/commands/setup.js.map +1 -0
- package/dist/cli/commands/uninstall.d.ts +37 -0
- package/dist/cli/commands/uninstall.d.ts.map +1 -0
- package/dist/cli/commands/uninstall.js +189 -0
- package/dist/cli/commands/uninstall.js.map +1 -0
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +105 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/discovery.d.ts +6 -2
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +296 -2
- package/dist/discovery.js.map +1 -1
- package/dist/enterprise/env.d.ts +56 -0
- package/dist/enterprise/env.d.ts.map +1 -0
- package/dist/enterprise/env.js +124 -0
- package/dist/enterprise/env.js.map +1 -0
- package/dist/enterprise/index.d.ts +7 -0
- package/dist/enterprise/index.d.ts.map +1 -0
- package/dist/enterprise/index.js +7 -0
- package/dist/enterprise/index.js.map +1 -0
- package/dist/enterprise/script-generator.d.ts +32 -0
- package/dist/enterprise/script-generator.d.ts.map +1 -0
- package/dist/enterprise/script-generator.js +461 -0
- package/dist/enterprise/script-generator.js.map +1 -0
- package/dist/execute.d.ts +21 -0
- package/dist/execute.d.ts.map +1 -1
- package/dist/execute.js +231 -0
- package/dist/execute.js.map +1 -1
- package/dist/index.js +79 -7
- package/dist/index.js.map +1 -1
- package/dist/stripe.d.ts +1 -1
- package/dist/stripe.js +1 -1
- package/dist/stripe.js.map +1 -1
- package/dist/types.d.ts +29 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/ui/colors.d.ts +111 -0
- package/dist/ui/colors.d.ts.map +1 -0
- package/dist/ui/colors.js +185 -0
- package/dist/ui/colors.js.map +1 -0
- package/dist/ui/errors.d.ts +69 -0
- package/dist/ui/errors.d.ts.map +1 -0
- package/dist/ui/errors.js +334 -0
- package/dist/ui/errors.js.map +1 -0
- package/dist/ui/index.d.ts +10 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +14 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/prompts.d.ts +88 -0
- package/dist/ui/prompts.d.ts.map +1 -0
- package/dist/ui/prompts.js +295 -0
- package/dist/ui/prompts.js.map +1 -0
- package/dist/ui/spinner.d.ts +112 -0
- package/dist/ui/spinner.d.ts.map +1 -0
- package/dist/ui/spinner.js +229 -0
- package/dist/ui/spinner.js.map +1 -0
- package/dist/utils/backup.d.ts +48 -0
- package/dist/utils/backup.d.ts.map +1 -0
- package/dist/utils/backup.js +182 -0
- package/dist/utils/backup.js.map +1 -0
- package/dist/utils/config.d.ts +80 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +221 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/os.d.ts +45 -0
- package/dist/utils/os.d.ts.map +1 -0
- package/dist/utils/os.js +106 -0
- package/dist/utils/os.js.map +1 -0
- package/dist/utils/paths.d.ts +38 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +160 -0
- package/dist/utils/paths.js.map +1 -0
- package/docs/PRD-BILLING.md +226 -0
- package/docs/PRD-EARN-SYSTEM.md +261 -0
- package/docs/PRD-MCP-AUTO-SETUP.md +623 -0
- package/docs/enterprise-deployment.md +728 -0
- package/landing/next.config.mjs +14 -0
- package/landing/public/book/index.html +24 -5
- package/landing/public/demo-product.jpg +0 -0
- package/landing/public/stats.json +4 -2
- package/landing/scripts/generate-stats.js +13 -0
- package/landing/src/app/api/og/route.tsx +1 -3
- package/landing/src/app/api/workspace-auth/magic-link/route.ts +6 -3
- package/landing/src/app/auth/verify/page.tsx +11 -4
- package/landing/src/app/docs/page.tsx +1 -1
- package/landing/src/app/join/page.tsx +49 -0
- package/landing/src/app/layout.tsx +1 -1
- package/landing/src/app/login/page.tsx +7 -1
- package/landing/src/app/page.tsx +50 -38
- package/landing/src/app/providers/register/page.tsx +1 -1
- package/landing/src/app/workspace/page.tsx +484 -806
- package/landing/src/components/CheckoutButton.tsx +1 -1
- package/landing/src/components/EarnCreditsTab.tsx +842 -0
- package/landing/src/components/HeroTabs.tsx +2 -2
- package/landing/src/components/demo/PhoneDemo.tsx +423 -0
- package/landing/src/components/demo/index.ts +1 -0
- package/landing/src/lib/stats.json +3 -1
- package/landing/tailwind.config.ts +10 -0
- package/package.json +9 -2
- package/src/adapters/base.ts +363 -0
- package/src/adapters/claude-desktop.ts +41 -0
- package/src/adapters/cline.ts +88 -0
- package/src/adapters/continue.ts +91 -0
- package/src/adapters/cursor.ts +43 -0
- package/src/adapters/custom.ts +188 -0
- package/src/adapters/detect.ts +202 -0
- package/src/adapters/index.ts +47 -0
- package/src/adapters/windsurf.ts +44 -0
- package/src/bin.ts +19 -0
- package/src/cli/commands/doctor.ts +367 -0
- package/src/cli/commands/index.ts +9 -0
- package/src/cli/commands/mcp-install.ts +291 -0
- package/src/cli/commands/restore.ts +333 -0
- package/src/cli/commands/setup.ts +276 -0
- package/src/cli/commands/uninstall.ts +240 -0
- package/src/cli/index.ts +116 -0
- package/src/discovery.ts +328 -3
- package/src/enterprise/env.ts +156 -0
- package/src/enterprise/index.ts +7 -0
- package/src/enterprise/script-generator.ts +481 -0
- package/src/execute.ts +256 -0
- package/src/index.ts +85 -7
- package/src/stripe.ts +1 -1
- package/src/types.ts +32 -0
- package/src/ui/colors.ts +219 -0
- package/src/ui/errors.ts +394 -0
- package/src/ui/index.ts +17 -0
- package/src/ui/prompts.ts +390 -0
- package/src/ui/spinner.ts +325 -0
- package/src/utils/backup.ts +224 -0
- package/src/utils/config.ts +315 -0
- package/src/utils/os.ts +124 -0
- package/src/utils/paths.ts +203 -0
- package/STATUS.md +0 -160
- package/landing/tsconfig.tsbuildinfo +0 -1
package/README.md
CHANGED
|
@@ -1,273 +1,509 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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
|
+
[](https://www.npmjs.com/package/@nordsym/apiclaw)
|
|
6
|
+
[](LICENSE)
|
|
25
7
|
|
|
26
8
|
---
|
|
27
9
|
|
|
28
|
-
##
|
|
10
|
+
## Quick Start
|
|
29
11
|
|
|
30
|
-
|
|
12
|
+
```bash
|
|
13
|
+
# Install APIClaw into Claude Desktop or Claude Code
|
|
14
|
+
npx @nordsym/apiclaw mcp-install
|
|
31
15
|
|
|
32
|
-
|
|
16
|
+
# That's it! Restart your AI assistant and ask:
|
|
17
|
+
# "List available APIs" or "Send an SMS via 46elks"
|
|
18
|
+
```
|
|
33
19
|
|
|
34
|
-
|
|
35
|
-
- **Direct Call** — Execute without API keys (we handle auth)
|
|
36
|
-
- **One config** — Add APIClaw MCP, access everything
|
|
20
|
+
APIClaw automatically detects Claude Desktop and Claude Code — then configures itself as an MCP server in seconds.
|
|
37
21
|
|
|
38
22
|
---
|
|
39
23
|
|
|
40
|
-
##
|
|
24
|
+
## What is APIClaw?
|
|
41
25
|
|
|
42
|
-
|
|
26
|
+
APIClaw is an MCP (Model Context Protocol) server that gives AI coding assistants access to real-world APIs:
|
|
43
27
|
|
|
44
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
params: { url: "https://example.com" }
|
|
82
|
-
})
|
|
41
|
+
### Option 1: MCP Install (Recommended)
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
npx @nordsym/apiclaw mcp-install
|
|
83
45
|
```
|
|
84
46
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
47
|
+
This will:
|
|
48
|
+
1. 🔍 Detect Claude Desktop or Claude Code
|
|
49
|
+
2. 📝 Add APIClaw to the MCP config
|
|
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
|
-
##
|
|
65
|
+
## Commands
|
|
66
|
+
|
|
67
|
+
### `mcp-install`
|
|
68
|
+
|
|
69
|
+
Simple, focused installation for Claude Desktop and Claude Code.
|
|
104
70
|
|
|
105
71
|
```bash
|
|
106
|
-
|
|
72
|
+
# Auto-detect and install
|
|
73
|
+
npx @nordsym/apiclaw mcp-install
|
|
74
|
+
|
|
75
|
+
# Install to specific client
|
|
76
|
+
npx @nordsym/apiclaw mcp-install --client claude-desktop
|
|
77
|
+
npx @nordsym/apiclaw mcp-install --client claude-code
|
|
78
|
+
|
|
79
|
+
# Preview changes without applying
|
|
80
|
+
npx @nordsym/apiclaw mcp-install --dry-run
|
|
107
81
|
```
|
|
108
82
|
|
|
109
|
-
###
|
|
83
|
+
### `setup`
|
|
110
84
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
85
|
+
Full-featured setup with support for all MCP clients.
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
# Auto-detect and configure all clients
|
|
89
|
+
npx @nordsym/apiclaw setup
|
|
90
|
+
|
|
91
|
+
# Configure specific client
|
|
92
|
+
npx @nordsym/apiclaw setup --client claude-desktop
|
|
93
|
+
npx @nordsym/apiclaw setup --client cursor
|
|
94
|
+
npx @nordsym/apiclaw setup --client windsurf
|
|
95
|
+
npx @nordsym/apiclaw setup --client cline
|
|
96
|
+
npx @nordsym/apiclaw setup --client continue
|
|
97
|
+
|
|
98
|
+
# Custom config path
|
|
99
|
+
npx @nordsym/apiclaw setup --config /path/to/config.json
|
|
100
|
+
|
|
101
|
+
# Link a workspace
|
|
102
|
+
npx @nordsym/apiclaw setup --workspace ws_abc123
|
|
103
|
+
|
|
104
|
+
# Preview changes without applying
|
|
105
|
+
npx @nordsym/apiclaw setup --dry-run
|
|
106
|
+
|
|
107
|
+
# Force overwrite existing config
|
|
108
|
+
npx @nordsym/apiclaw setup --force
|
|
109
|
+
|
|
110
|
+
# Interactive mode
|
|
111
|
+
npx @nordsym/apiclaw setup --wizard
|
|
120
112
|
```
|
|
121
113
|
|
|
122
|
-
|
|
114
|
+
### `doctor`
|
|
123
115
|
|
|
124
|
-
|
|
116
|
+
Diagnose your APIClaw setup.
|
|
125
117
|
|
|
126
|
-
|
|
118
|
+
```bash
|
|
119
|
+
npx @nordsym/apiclaw doctor
|
|
120
|
+
```
|
|
127
121
|
|
|
128
|
-
|
|
122
|
+
Output:
|
|
123
|
+
```
|
|
124
|
+
🔍 APIClaw Health Check
|
|
125
|
+
========================
|
|
129
126
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
max_results: 5
|
|
135
|
-
})
|
|
127
|
+
System:
|
|
128
|
+
✓ Node.js v20.11.0
|
|
129
|
+
✓ npm 10.2.4
|
|
130
|
+
✓ npx available
|
|
136
131
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
132
|
+
MCP Clients:
|
|
133
|
+
✓ Claude Desktop - Configured ✓
|
|
134
|
+
✓ Cursor - Configured ✓
|
|
135
|
+
✗ Windsurf - Not installed
|
|
136
|
+
|
|
137
|
+
Connectivity:
|
|
138
|
+
✓ api.apiclaw.com reachable
|
|
139
|
+
|
|
140
|
+
Status: All systems operational ✓
|
|
142
141
|
```
|
|
143
142
|
|
|
144
|
-
###
|
|
143
|
+
### `restore`
|
|
144
|
+
|
|
145
|
+
Restore config from backup.
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
# Restore most recent backup
|
|
149
|
+
npx @nordsym/apiclaw restore
|
|
150
|
+
|
|
151
|
+
# List available backups
|
|
152
|
+
npx @nordsym/apiclaw restore --list
|
|
145
153
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
154
|
+
# Restore specific backup
|
|
155
|
+
npx @nordsym/apiclaw restore --backup config.backup.1709150400.json
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
### `uninstall`
|
|
159
|
+
|
|
160
|
+
Remove APIClaw from all configured clients.
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
npx @nordsym/apiclaw uninstall
|
|
164
|
+
|
|
165
|
+
# Remove from specific client
|
|
166
|
+
npx @nordsym/apiclaw uninstall --client cursor
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## Options
|
|
172
|
+
|
|
173
|
+
| Option | Description |
|
|
174
|
+
|--------|-------------|
|
|
175
|
+
| `--client <name>` | Target specific MCP client |
|
|
176
|
+
| `--config <path>` | Use custom config file path |
|
|
177
|
+
| `--workspace <id>` | Link an APIClaw workspace |
|
|
178
|
+
| `--dry-run` | Preview changes without applying |
|
|
179
|
+
| `--force` | Overwrite existing APIClaw config |
|
|
180
|
+
| `--wizard` | Interactive setup mode |
|
|
181
|
+
| `--no-backup` | Skip creating backup (not recommended) |
|
|
182
|
+
| `--verbose` | Show detailed output |
|
|
183
|
+
| `--version` | Show version number |
|
|
184
|
+
| `--help` | Show help |
|
|
155
185
|
|
|
156
186
|
---
|
|
157
187
|
|
|
158
|
-
##
|
|
188
|
+
## Supported MCP Clients
|
|
189
|
+
|
|
190
|
+
| Client | macOS | Windows | Linux |
|
|
191
|
+
|--------|:-----:|:-------:|:-----:|
|
|
192
|
+
| **Claude Desktop** | ✅ | ✅ | ✅ |
|
|
193
|
+
| **Cursor** | ✅ | ✅ | ✅ |
|
|
194
|
+
| **Windsurf** | ✅ | ✅ | ✅ |
|
|
195
|
+
| **Cline** (VS Code) | ✅ | ✅ | ✅ |
|
|
196
|
+
| **Continue** | ✅ | ✅ | ✅ |
|
|
197
|
+
| **Custom** | ✅ | ✅ | ✅ |
|
|
198
|
+
|
|
199
|
+
### Config Locations
|
|
200
|
+
|
|
201
|
+
<details>
|
|
202
|
+
<summary>Claude Desktop</summary>
|
|
203
|
+
|
|
204
|
+
| OS | Path |
|
|
205
|
+
|----|------|
|
|
206
|
+
| macOS | `~/Library/Application Support/Claude/claude_desktop_config.json` |
|
|
207
|
+
| Windows | `%APPDATA%\Claude\claude_desktop_config.json` |
|
|
208
|
+
| Linux | `~/.config/Claude/claude_desktop_config.json` |
|
|
209
|
+
|
|
210
|
+
</details>
|
|
211
|
+
|
|
212
|
+
<details>
|
|
213
|
+
<summary>Cursor</summary>
|
|
214
|
+
|
|
215
|
+
| OS | Path |
|
|
216
|
+
|----|------|
|
|
217
|
+
| macOS | `~/Library/Application Support/Cursor/User/globalStorage/cursor.mcp/config.json` |
|
|
218
|
+
| Windows | `%APPDATA%\Cursor\User\globalStorage\cursor.mcp\config.json` |
|
|
219
|
+
| Linux | `~/.config/Cursor/User/globalStorage/cursor.mcp/config.json` |
|
|
159
220
|
|
|
160
|
-
|
|
221
|
+
</details>
|
|
161
222
|
|
|
162
|
-
|
|
223
|
+
<details>
|
|
224
|
+
<summary>Windsurf</summary>
|
|
163
225
|
|
|
164
|
-
|
|
226
|
+
| OS | Path |
|
|
227
|
+
|----|------|
|
|
228
|
+
| macOS | `~/.codeium/windsurf/mcp_config.json` |
|
|
229
|
+
| Windows | `%USERPROFILE%\.codeium\windsurf\mcp_config.json` |
|
|
230
|
+
| Linux | `~/.codeium/windsurf/mcp_config.json` |
|
|
165
231
|
|
|
166
|
-
|
|
167
|
-
2. Add your API spec
|
|
168
|
-
3. Configure Direct Call (optional)
|
|
169
|
-
4. Go live
|
|
232
|
+
</details>
|
|
170
233
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
- You provide one service account key
|
|
174
|
-
- We handle auth routing
|
|
175
|
-
- You get usage analytics
|
|
234
|
+
<details>
|
|
235
|
+
<summary>Cline</summary>
|
|
176
236
|
|
|
177
|
-
|
|
237
|
+
| OS | Path |
|
|
238
|
+
|----|------|
|
|
239
|
+
| macOS | `~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json` |
|
|
240
|
+
| Windows | `%APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json` |
|
|
241
|
+
| Linux | `~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json` |
|
|
242
|
+
|
|
243
|
+
</details>
|
|
244
|
+
|
|
245
|
+
<details>
|
|
246
|
+
<summary>Continue</summary>
|
|
247
|
+
|
|
248
|
+
| OS | Path |
|
|
249
|
+
|----|------|
|
|
250
|
+
| macOS | `~/.continue/config.json` |
|
|
251
|
+
| Windows | `%USERPROFILE%\.continue\config.json` |
|
|
252
|
+
| Linux | `~/.continue/config.json` |
|
|
253
|
+
|
|
254
|
+
</details>
|
|
178
255
|
|
|
179
256
|
---
|
|
180
257
|
|
|
181
|
-
##
|
|
258
|
+
## Enterprise Deployment
|
|
259
|
+
|
|
260
|
+
Deploy APIClaw to your entire development team.
|
|
261
|
+
|
|
262
|
+
### Environment Variables
|
|
263
|
+
|
|
264
|
+
```bash
|
|
265
|
+
# Pre-configure workspace for all users
|
|
266
|
+
export APICLAW_WORKSPACE="ws_enterprise_123"
|
|
267
|
+
|
|
268
|
+
# Point to self-hosted instance
|
|
269
|
+
export APICLAW_API_URL="https://api.company.com/apiclaw"
|
|
270
|
+
|
|
271
|
+
# Disable telemetry
|
|
272
|
+
export APICLAW_DISABLE_TELEMETRY="true"
|
|
182
273
|
|
|
274
|
+
npx @nordsym/apiclaw mcp-install
|
|
183
275
|
```
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
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
|
-
└──────────┘ └──────────┘ └──────────┘
|
|
276
|
+
|
|
277
|
+
### Generate Deployment Script
|
|
278
|
+
|
|
279
|
+
```bash
|
|
280
|
+
# Generate cross-platform setup script
|
|
281
|
+
npx @nordsym/apiclaw setup --enterprise --output deploy.sh
|
|
206
282
|
```
|
|
207
283
|
|
|
284
|
+
The generated script handles:
|
|
285
|
+
- OS detection
|
|
286
|
+
- Client detection
|
|
287
|
+
- Config injection
|
|
288
|
+
- Verification
|
|
289
|
+
- Error reporting
|
|
290
|
+
|
|
291
|
+
### MDM/Group Policy
|
|
292
|
+
|
|
293
|
+
See [Enterprise Deployment Guide](docs/enterprise-deployment.md) for:
|
|
294
|
+
- Jamf/Kandji/Mosyle (macOS)
|
|
295
|
+
- Intune/Group Policy (Windows)
|
|
296
|
+
- Ansible/Chef/Puppet (Linux)
|
|
297
|
+
|
|
208
298
|
---
|
|
209
299
|
|
|
210
|
-
##
|
|
300
|
+
## Troubleshooting
|
|
301
|
+
|
|
302
|
+
### "Permission denied"
|
|
303
|
+
|
|
304
|
+
```bash
|
|
305
|
+
# Option 1: Run with sudo
|
|
306
|
+
sudo npx @nordsym/apiclaw mcp-install
|
|
307
|
+
|
|
308
|
+
# Option 2: Fix permissions
|
|
309
|
+
chmod 644 ~/Library/Application\ Support/Claude/claude_desktop_config.json
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
### "Config file not found"
|
|
313
|
+
|
|
314
|
+
The MCP client hasn't created its config yet:
|
|
315
|
+
1. Open the client (Claude Desktop or Claude Code)
|
|
316
|
+
2. Close it
|
|
317
|
+
3. Try mcp-install again
|
|
318
|
+
|
|
319
|
+
Or use the full setup command with a custom path:
|
|
320
|
+
```bash
|
|
321
|
+
npx @nordsym/apiclaw setup --config /path/to/config.json
|
|
322
|
+
```
|
|
211
323
|
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
324
|
+
### "Invalid JSON"
|
|
325
|
+
|
|
326
|
+
Your config file has syntax errors:
|
|
327
|
+
```bash
|
|
328
|
+
# Restore from backup
|
|
329
|
+
npx @nordsym/apiclaw restore --list
|
|
330
|
+
npx @nordsym/apiclaw restore
|
|
331
|
+
|
|
332
|
+
# Or manually fix the JSON
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
### "Already configured"
|
|
336
|
+
|
|
337
|
+
APIClaw is already set up. To update:
|
|
338
|
+
```bash
|
|
339
|
+
npx @nordsym/apiclaw setup --force
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
### Still having issues?
|
|
343
|
+
|
|
344
|
+
```bash
|
|
345
|
+
# Run diagnostics
|
|
346
|
+
npx @nordsym/apiclaw doctor --verbose
|
|
347
|
+
|
|
348
|
+
# Get help
|
|
349
|
+
https://docs.apiclaw.com/setup
|
|
350
|
+
https://github.com/nordsym/apiclaw/issues
|
|
351
|
+
```
|
|
219
352
|
|
|
220
353
|
---
|
|
221
354
|
|
|
222
|
-
##
|
|
355
|
+
## How It Works
|
|
223
356
|
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
357
|
+
APIClaw modifies your MCP client's config file to register itself as a server:
|
|
358
|
+
|
|
359
|
+
```json
|
|
360
|
+
{
|
|
361
|
+
"mcpServers": {
|
|
362
|
+
"apiclaw": {
|
|
363
|
+
"command": "npx",
|
|
364
|
+
"args": ["-y", "@nordsym/apiclaw"]
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
When your AI assistant starts, it launches APIClaw as an MCP server. APIClaw then:
|
|
371
|
+
1. Exposes available APIs as MCP tools
|
|
372
|
+
2. Handles authentication and rate limiting
|
|
373
|
+
3. Executes API calls on behalf of the AI
|
|
228
374
|
|
|
229
375
|
---
|
|
230
376
|
|
|
231
|
-
##
|
|
377
|
+
## Safety Features
|
|
232
378
|
|
|
233
|
-
|
|
379
|
+
### Automatic Backups
|
|
380
|
+
|
|
381
|
+
Before modifying any config, APIClaw creates a timestamped backup:
|
|
382
|
+
```
|
|
383
|
+
claude_desktop_config.backup.1709150400.json
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
### Non-Destructive
|
|
387
|
+
|
|
388
|
+
- Never overwrites existing configurations
|
|
389
|
+
- Deep merges APIClaw into `mcpServers`
|
|
390
|
+
- Preserves all other settings
|
|
391
|
+
|
|
392
|
+
### Validation
|
|
393
|
+
|
|
394
|
+
- Parses JSON before and after modifications
|
|
395
|
+
- Verifies required fields exist
|
|
396
|
+
- Rolls back on any error
|
|
397
|
+
|
|
398
|
+
---
|
|
399
|
+
|
|
400
|
+
## Dry-Run Mode
|
|
401
|
+
|
|
402
|
+
Test API calls without actually executing them. Perfect for debugging, development, and agent testing.
|
|
403
|
+
|
|
404
|
+
### Usage
|
|
405
|
+
|
|
406
|
+
```javascript
|
|
407
|
+
// In MCP tool call
|
|
408
|
+
call_api({
|
|
409
|
+
provider: "46elks",
|
|
410
|
+
action: "send_sms",
|
|
411
|
+
params: {
|
|
412
|
+
to: "+46701234567",
|
|
413
|
+
message: "Hello from dry-run!"
|
|
414
|
+
},
|
|
415
|
+
dry_run: true // ← No actual API call made
|
|
416
|
+
})
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
### Response
|
|
420
|
+
|
|
421
|
+
```json
|
|
422
|
+
{
|
|
423
|
+
"dry_run": true,
|
|
424
|
+
"provider": "46elks",
|
|
425
|
+
"action": "send_sms",
|
|
426
|
+
"would_send": {
|
|
427
|
+
"url": "https://api.46elks.com/a1/sms",
|
|
428
|
+
"method": "POST",
|
|
429
|
+
"headers": {
|
|
430
|
+
"Content-Type": "application/json",
|
|
431
|
+
"Authorization": "Basic [base64(username:password)]"
|
|
432
|
+
},
|
|
433
|
+
"body": {
|
|
434
|
+
"from": "APIClaw",
|
|
435
|
+
"to": "+46701234567",
|
|
436
|
+
"message": "Hello from dry-run!"
|
|
437
|
+
}
|
|
438
|
+
},
|
|
439
|
+
"mock_response": {
|
|
440
|
+
"success": true,
|
|
441
|
+
"data": {
|
|
442
|
+
"id": "mock_sms_123",
|
|
443
|
+
"status": "delivered"
|
|
444
|
+
},
|
|
445
|
+
"estimated_cost": "~0.35-0.52 SEK"
|
|
446
|
+
},
|
|
447
|
+
"notes": [
|
|
448
|
+
"⚠️ DRY-RUN MODE: No actual API call was made",
|
|
449
|
+
"This shows what WOULD be sent if you remove dry_run: true"
|
|
450
|
+
]
|
|
451
|
+
}
|
|
452
|
+
```
|
|
453
|
+
|
|
454
|
+
### Benefits
|
|
455
|
+
|
|
456
|
+
- **💰 No cost** — Test without burning API credits
|
|
457
|
+
- **🔍 Debug** — See exact request that would be sent
|
|
458
|
+
- **🧪 Test** — Validate agent workflows before going live
|
|
459
|
+
- **📋 Mock data** — Get realistic response shapes for development
|
|
460
|
+
|
|
461
|
+
### Supported Providers
|
|
462
|
+
|
|
463
|
+
All Direct Call providers support dry-run:
|
|
464
|
+
- 46elks, Twilio (SMS)
|
|
465
|
+
- Resend (Email)
|
|
466
|
+
- Brave Search
|
|
467
|
+
- OpenRouter (LLM)
|
|
468
|
+
- ElevenLabs (TTS)
|
|
469
|
+
- Replicate (AI models)
|
|
470
|
+
- Firecrawl (Web scraping)
|
|
471
|
+
- GitHub
|
|
472
|
+
- E2B (Code sandbox)
|
|
234
473
|
|
|
235
474
|
---
|
|
236
475
|
|
|
237
|
-
|
|
238
|
-
<strong>🦞 APIClaw</strong><br/>
|
|
239
|
-
<em>The API layer for the agentic era.</em>
|
|
240
|
-
</p>
|
|
476
|
+
## Development
|
|
241
477
|
|
|
242
|
-
|
|
478
|
+
```bash
|
|
479
|
+
# Clone the repo
|
|
480
|
+
git clone https://github.com/nordsym/apiclaw.git
|
|
481
|
+
cd apiclaw
|
|
243
482
|
|
|
244
|
-
|
|
483
|
+
# Install dependencies
|
|
484
|
+
npm install
|
|
245
485
|
|
|
246
|
-
|
|
247
|
-
|
|
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
|
|
486
|
+
# Build
|
|
487
|
+
npm run build
|
|
253
488
|
|
|
254
|
-
|
|
255
|
-
|
|
489
|
+
# Run locally
|
|
490
|
+
npm run dev
|
|
256
491
|
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
subscription_id: 'sub_xxx'
|
|
260
|
-
});
|
|
261
|
-
// Returns: { total_calls: 150, estimated_cost: "$0.30" }
|
|
492
|
+
# Test setup locally
|
|
493
|
+
npm run setup:test
|
|
262
494
|
```
|
|
263
495
|
|
|
264
|
-
|
|
265
|
-
| Calls/Month | Cost |
|
|
266
|
-
|-------------|------|
|
|
267
|
-
| 100 | $0.20 |
|
|
268
|
-
| 1,000 | $2.00 |
|
|
269
|
-
| 10,000 | $20.00 |
|
|
270
|
-
| 100,000 | $200.00 |
|
|
496
|
+
---
|
|
271
497
|
|
|
272
|
-
|
|
273
|
-
|
|
498
|
+
## License
|
|
499
|
+
|
|
500
|
+
MIT © [NordSym](https://nordsym.com)
|
|
501
|
+
|
|
502
|
+
---
|
|
503
|
+
|
|
504
|
+
## Links
|
|
505
|
+
|
|
506
|
+
- **Website:** [apiclaw.com](https://apiclaw.com)
|
|
507
|
+
- **Documentation:** [docs.apiclaw.com](https://docs.apiclaw.com)
|
|
508
|
+
- **GitHub:** [github.com/nordsym/apiclaw](https://github.com/nordsym/apiclaw)
|
|
509
|
+
- **npm:** [@nordsym/apiclaw](https://www.npmjs.com/package/@nordsym/apiclaw)
|