@nordsym/apiclaw 1.0.0 → 1.1.1

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 (161) hide show
  1. package/AGENTS.md +74 -0
  2. package/HEARTBEAT.md +4 -0
  3. package/IDENTITY.md +22 -0
  4. package/README.md +193 -202
  5. package/SOUL.md +36 -0
  6. package/STATUS.md +237 -0
  7. package/TOOLS.md +36 -0
  8. package/USER.md +17 -0
  9. package/{backend/convex → convex}/_generated/api.d.ts +12 -6
  10. package/convex/analytics.ts +90 -0
  11. package/convex/credits.ts +211 -0
  12. package/convex/http.ts +578 -0
  13. package/convex/providers.ts +516 -0
  14. package/convex/purchases.ts +183 -0
  15. package/convex/ratelimit.ts +104 -0
  16. package/convex/schema.ts +220 -0
  17. package/convex/telemetry.ts +81 -0
  18. package/convex.json +3 -0
  19. package/dist/credentials.d.ts +19 -0
  20. package/dist/credentials.d.ts.map +1 -0
  21. package/dist/credentials.js +158 -0
  22. package/dist/credentials.js.map +1 -0
  23. package/dist/credits.d.ts +14 -11
  24. package/dist/credits.d.ts.map +1 -1
  25. package/dist/credits.js +151 -99
  26. package/dist/credits.js.map +1 -1
  27. package/dist/discovery.d.ts +7 -16
  28. package/dist/discovery.d.ts.map +1 -1
  29. package/dist/discovery.js +33 -40
  30. package/dist/discovery.js.map +1 -1
  31. package/dist/execute.d.ts +19 -0
  32. package/dist/execute.d.ts.map +1 -0
  33. package/dist/execute.js +285 -0
  34. package/dist/execute.js.map +1 -0
  35. package/dist/index.js +175 -31
  36. package/dist/index.js.map +1 -1
  37. package/dist/proxy.d.ts +6 -0
  38. package/dist/proxy.d.ts.map +1 -0
  39. package/dist/proxy.js +19 -0
  40. package/dist/proxy.js.map +1 -0
  41. package/dist/registry/apis.json +95362 -202
  42. package/dist/registry/apis_expanded.json +100853 -0
  43. package/dist/stripe.d.ts +68 -0
  44. package/dist/stripe.d.ts.map +1 -0
  45. package/dist/stripe.js +196 -0
  46. package/dist/stripe.js.map +1 -0
  47. package/dist/telemetry.d.ts +28 -0
  48. package/dist/telemetry.d.ts.map +1 -0
  49. package/dist/telemetry.js +50 -0
  50. package/dist/telemetry.js.map +1 -0
  51. package/dist/test.d.ts +3 -2
  52. package/dist/test.d.ts.map +1 -1
  53. package/dist/test.js +105 -75
  54. package/dist/test.js.map +1 -1
  55. package/dist/types.d.ts +0 -28
  56. package/dist/types.d.ts.map +1 -1
  57. package/dist/webhook.d.ts +2 -0
  58. package/dist/webhook.d.ts.map +1 -0
  59. package/dist/webhook.js +90 -0
  60. package/dist/webhook.js.map +1 -0
  61. package/landing/DESIGN.md +343 -0
  62. package/landing/package-lock.json +1196 -7
  63. package/landing/package.json +5 -1
  64. package/landing/public/android-chrome-192x192.png +0 -0
  65. package/landing/public/android-chrome-512x512.png +0 -0
  66. package/landing/public/apple-touch-icon.png +0 -0
  67. package/landing/public/demo.gif +0 -0
  68. package/landing/public/demo.mp4 +0 -0
  69. package/landing/public/favicon-16x16.png +0 -0
  70. package/landing/public/favicon-32x32.png +0 -0
  71. package/landing/public/favicon.ico +0 -0
  72. package/landing/public/favicon.svg +3 -0
  73. package/landing/public/icon.svg +47 -0
  74. package/landing/public/logo-mono.svg +37 -0
  75. package/landing/public/logo-simple.svg +45 -0
  76. package/landing/public/logo.svg +84 -0
  77. package/landing/public/og-template.html +184 -0
  78. package/landing/public/site.webmanifest +31 -0
  79. package/landing/scripts/generate-assets.js +284 -0
  80. package/landing/scripts/generate-pngs.js +48 -0
  81. package/landing/scripts/generate-stats.js +42 -0
  82. package/landing/src/app/admin/page.tsx +348 -0
  83. package/landing/src/app/api/auth/magic-link/route.ts +73 -0
  84. package/landing/src/app/api/auth/session/route.ts +38 -0
  85. package/landing/src/app/api/auth/verify/route.ts +43 -0
  86. package/landing/src/app/api/og/route.tsx +84 -0
  87. package/landing/src/app/globals.css +439 -100
  88. package/landing/src/app/layout.tsx +37 -7
  89. package/landing/src/app/page.tsx +627 -552
  90. package/landing/src/app/providers/dashboard/login/page.tsx +176 -0
  91. package/landing/src/app/providers/dashboard/page.tsx +589 -0
  92. package/landing/src/app/providers/dashboard/verify/page.tsx +106 -0
  93. package/landing/src/app/providers/layout.tsx +14 -0
  94. package/landing/src/app/providers/page.tsx +402 -0
  95. package/landing/src/app/providers/register/page.tsx +670 -0
  96. package/landing/src/components/ProviderDashboard.tsx +794 -0
  97. package/landing/src/hooks/useDashboardData.ts +99 -0
  98. package/landing/src/lib/apis.json +116054 -0
  99. package/landing/src/lib/convex-client.ts +106 -0
  100. package/landing/src/lib/mock-data.ts +285 -0
  101. package/landing/src/lib/stats.json +6 -0
  102. package/landing/tailwind.config.ts +12 -11
  103. package/landing/tsconfig.tsbuildinfo +1 -0
  104. package/package.json +21 -20
  105. package/scripts/SYMBOT-FIX.md +238 -0
  106. package/scripts/demo-simulation.py +177 -0
  107. package/scripts/expand-more.py +502 -0
  108. package/scripts/expand-registry.py +434 -0
  109. package/scripts/history-sanitizer.ts +272 -0
  110. package/scripts/mass-scrape.py +1308 -0
  111. package/scripts/sync-and-deploy.sh +36 -0
  112. package/src/credentials.ts +177 -0
  113. package/src/credits.ts +190 -122
  114. package/src/discovery.ts +45 -58
  115. package/src/execute.ts +350 -0
  116. package/src/index.ts +184 -32
  117. package/src/proxy.ts +24 -0
  118. package/src/registry/apis.json +95362 -202
  119. package/src/registry/apis_expanded.json +100853 -0
  120. package/src/stripe.ts +243 -0
  121. package/src/telemetry.ts +71 -0
  122. package/src/test.ts +127 -89
  123. package/src/types.ts +0 -34
  124. package/src/webhook.ts +107 -0
  125. package/.github/ISSUE_TEMPLATE/add-api.yml +0 -123
  126. package/BRIEFING.md +0 -30
  127. package/backend/convex/apiKeys.ts +0 -75
  128. package/backend/convex/purchases.ts +0 -74
  129. package/backend/convex/schema.ts +0 -45
  130. package/backend/convex/transactions.ts +0 -57
  131. package/backend/convex/users.ts +0 -94
  132. package/backend/package-lock.json +0 -521
  133. package/backend/package.json +0 -15
  134. package/dist/registry/parse_apis.py +0 -146
  135. package/dist/revenuecat.d.ts +0 -61
  136. package/dist/revenuecat.d.ts.map +0 -1
  137. package/dist/revenuecat.js +0 -166
  138. package/dist/revenuecat.js.map +0 -1
  139. package/dist/webhooks/revenuecat.d.ts +0 -48
  140. package/dist/webhooks/revenuecat.d.ts.map +0 -1
  141. package/dist/webhooks/revenuecat.js +0 -119
  142. package/dist/webhooks/revenuecat.js.map +0 -1
  143. package/docs/revenuecat-setup.md +0 -89
  144. package/landing/src/app/api/keys/route.ts +0 -71
  145. package/landing/src/app/api/log/route.ts +0 -37
  146. package/landing/src/app/api/stats/route.ts +0 -37
  147. package/landing/src/app/page.tsx.bak +0 -567
  148. package/landing/src/components/AddKeyModal.tsx +0 -159
  149. package/newsletter-template.html +0 -71
  150. package/outreach/OUTREACH-SYSTEM.md +0 -211
  151. package/outreach/email-template.html +0 -179
  152. package/outreach/targets.md +0 -133
  153. package/src/registry/parse_apis.py +0 -146
  154. package/src/revenuecat.ts +0 -239
  155. package/src/webhooks/revenuecat.ts +0 -187
  156. /package/{backend/convex → convex}/README.md +0 -0
  157. /package/{backend/convex → convex}/_generated/api.js +0 -0
  158. /package/{backend/convex → convex}/_generated/dataModel.d.ts +0 -0
  159. /package/{backend/convex → convex}/_generated/server.d.ts +0 -0
  160. /package/{backend/convex → convex}/_generated/server.js +0 -0
  161. /package/{backend/convex → convex}/tsconfig.json +0 -0
@@ -0,0 +1,285 @@
1
+ /**
2
+ * APIClaw Instant Connect - Execute API calls through connected providers
3
+ */
4
+ import { getCredentials } from './credentials.js';
5
+ import { callProxy, PROXY_PROVIDERS } from './proxy.js';
6
+ // Helper to safely access properties
7
+ function safeGet(obj, ...keys) {
8
+ let current = obj;
9
+ for (const key of keys) {
10
+ if (current && typeof current === 'object' && key in current) {
11
+ current = current[key];
12
+ }
13
+ else {
14
+ return undefined;
15
+ }
16
+ }
17
+ return current;
18
+ }
19
+ // Provider action handlers
20
+ const handlers = {
21
+ // 46elks - Swedish SMS/Voice
22
+ '46elks': {
23
+ send_sms: async (params, creds) => {
24
+ const { to, message, from = 'APIClaw' } = params;
25
+ if (!to || !message) {
26
+ return { success: false, provider: '46elks', action: 'send_sms', error: 'Missing required params: to, message' };
27
+ }
28
+ const auth = Buffer.from(`${creds.username}:${creds.password}`).toString('base64');
29
+ const response = await fetch('https://api.46elks.com/a1/sms', {
30
+ method: 'POST',
31
+ headers: {
32
+ 'Authorization': `Basic ${auth}`,
33
+ 'Content-Type': 'application/x-www-form-urlencoded',
34
+ },
35
+ body: new URLSearchParams({ from, to, message }),
36
+ });
37
+ const data = await response.json();
38
+ if (!response.ok) {
39
+ return { success: false, provider: '46elks', action: 'send_sms', error: data.message || 'SMS failed' };
40
+ }
41
+ return {
42
+ success: true,
43
+ provider: '46elks',
44
+ action: 'send_sms',
45
+ data: { id: data.id, to: data.to, cost: data.cost },
46
+ cost: parseInt(String(data.cost)) / 10000000 // Convert microöre to SEK
47
+ };
48
+ },
49
+ },
50
+ // Twilio - Global SMS/Voice
51
+ twilio: {
52
+ send_sms: async (params, creds) => {
53
+ const { to, message, from } = params;
54
+ if (!to || !message) {
55
+ return { success: false, provider: 'twilio', action: 'send_sms', error: 'Missing required params: to, message' };
56
+ }
57
+ const auth = Buffer.from(`${creds.username}:${creds.password}`).toString('base64');
58
+ const fromNumber = from || creds.from_number || '+15017122661';
59
+ const response = await fetch(`https://api.twilio.com/2010-04-01/Accounts/${creds.username}/Messages.json`, {
60
+ method: 'POST',
61
+ headers: {
62
+ 'Authorization': `Basic ${auth}`,
63
+ 'Content-Type': 'application/x-www-form-urlencoded',
64
+ },
65
+ body: new URLSearchParams({ From: fromNumber, To: to, Body: message }),
66
+ });
67
+ const data = await response.json();
68
+ if (!response.ok) {
69
+ return { success: false, provider: 'twilio', action: 'send_sms', error: data.message || 'SMS failed' };
70
+ }
71
+ return {
72
+ success: true,
73
+ provider: 'twilio',
74
+ action: 'send_sms',
75
+ data: { sid: data.sid, to: data.to, status: data.status }
76
+ };
77
+ },
78
+ },
79
+ // Brave Search
80
+ brave_search: {
81
+ search: async (params, creds) => {
82
+ const { query, count = 5 } = params;
83
+ if (!query) {
84
+ return { success: false, provider: 'brave_search', action: 'search', error: 'Missing required param: query' };
85
+ }
86
+ const url = new URL('https://api.search.brave.com/res/v1/web/search');
87
+ url.searchParams.set('q', query);
88
+ url.searchParams.set('count', count.toString());
89
+ const response = await fetch(url.toString(), {
90
+ headers: { 'X-Subscription-Token': creds.api_key },
91
+ });
92
+ const data = await response.json();
93
+ if (!response.ok) {
94
+ return { success: false, provider: 'brave_search', action: 'search', error: data.message || 'Search failed' };
95
+ }
96
+ const webData = data.web;
97
+ const rawResults = webData?.results || [];
98
+ const results = rawResults.map((r) => ({
99
+ title: r.title,
100
+ url: r.url,
101
+ description: r.description,
102
+ }));
103
+ return {
104
+ success: true,
105
+ provider: 'brave_search',
106
+ action: 'search',
107
+ data: { query, results, total: results.length }
108
+ };
109
+ },
110
+ },
111
+ // Resend - Email
112
+ resend: {
113
+ send_email: async (params, creds) => {
114
+ const { to, subject, html, text, from = 'APIClaw <noreply@apiclaw.com>' } = params;
115
+ if (!to || !subject || (!html && !text)) {
116
+ return { success: false, provider: 'resend', action: 'send_email', error: 'Missing required params: to, subject, html or text' };
117
+ }
118
+ const response = await fetch('https://api.resend.com/emails', {
119
+ method: 'POST',
120
+ headers: {
121
+ 'Authorization': `Bearer ${creds.api_key}`,
122
+ 'Content-Type': 'application/json',
123
+ },
124
+ body: JSON.stringify({ from, to, subject, html, text }),
125
+ });
126
+ const data = await response.json();
127
+ if (!response.ok) {
128
+ return { success: false, provider: 'resend', action: 'send_email', error: data.message || 'Email failed' };
129
+ }
130
+ return {
131
+ success: true,
132
+ provider: 'resend',
133
+ action: 'send_email',
134
+ data: { id: data.id }
135
+ };
136
+ },
137
+ },
138
+ // OpenRouter - AI Models
139
+ openrouter: {
140
+ chat: async (params, creds) => {
141
+ const { messages, model = 'anthropic/claude-3-haiku', max_tokens = 1000 } = params;
142
+ if (!messages || !Array.isArray(messages)) {
143
+ return { success: false, provider: 'openrouter', action: 'chat', error: 'Missing required param: messages (array)' };
144
+ }
145
+ const response = await fetch('https://openrouter.ai/api/v1/chat/completions', {
146
+ method: 'POST',
147
+ headers: {
148
+ 'Authorization': `Bearer ${creds.api_key}`,
149
+ 'Content-Type': 'application/json',
150
+ 'HTTP-Referer': 'https://apiclaw.nordsym.com',
151
+ },
152
+ body: JSON.stringify({ model, messages, max_tokens }),
153
+ });
154
+ const data = await response.json();
155
+ if (!response.ok) {
156
+ const errorData = data.error;
157
+ return { success: false, provider: 'openrouter', action: 'chat', error: errorData?.message || 'Chat failed' };
158
+ }
159
+ const choices = data.choices;
160
+ const firstChoice = choices?.[0];
161
+ const message = firstChoice?.message;
162
+ return {
163
+ success: true,
164
+ provider: 'openrouter',
165
+ action: 'chat',
166
+ data: {
167
+ content: message?.content,
168
+ model: data.model,
169
+ usage: data.usage
170
+ }
171
+ };
172
+ },
173
+ },
174
+ // ElevenLabs - Text-to-Speech
175
+ elevenlabs: {
176
+ text_to_speech: async (params, creds) => {
177
+ const { text, voice_id = '21m00Tcm4TlvDq8ikWAM', model_id = 'eleven_monolingual_v1' } = params;
178
+ if (!text) {
179
+ return { success: false, provider: 'elevenlabs', action: 'text_to_speech', error: 'Missing required param: text' };
180
+ }
181
+ const response = await fetch(`https://api.elevenlabs.io/v1/text-to-speech/${voice_id}`, {
182
+ method: 'POST',
183
+ headers: {
184
+ 'xi-api-key': creds.api_key,
185
+ 'Content-Type': 'application/json',
186
+ },
187
+ body: JSON.stringify({ text, model_id }),
188
+ });
189
+ if (!response.ok) {
190
+ const error = await response.json().catch(() => ({}));
191
+ return { success: false, provider: 'elevenlabs', action: 'text_to_speech', error: error.detail || 'TTS failed' };
192
+ }
193
+ // Return audio as base64
194
+ const buffer = await response.arrayBuffer();
195
+ const base64 = Buffer.from(buffer).toString('base64');
196
+ return {
197
+ success: true,
198
+ provider: 'elevenlabs',
199
+ action: 'text_to_speech',
200
+ data: {
201
+ audio_base64: base64,
202
+ format: 'mp3',
203
+ text_length: text.length
204
+ }
205
+ };
206
+ },
207
+ },
208
+ };
209
+ // Get available actions for a provider
210
+ export function getProviderActions(providerId) {
211
+ return Object.keys(handlers[providerId] || {});
212
+ }
213
+ // Get all connected providers with their actions
214
+ export function getConnectedProviders() {
215
+ return Object.entries(handlers).map(([provider, actions]) => ({
216
+ provider,
217
+ actions: Object.keys(actions),
218
+ }));
219
+ }
220
+ // Execute an API call
221
+ export async function executeAPICall(providerId, action, params) {
222
+ // Check if provider exists
223
+ const providerHandlers = handlers[providerId];
224
+ if (!providerHandlers) {
225
+ return {
226
+ success: false,
227
+ provider: providerId,
228
+ action,
229
+ error: `Provider '${providerId}' not connected. Available: ${Object.keys(handlers).join(', ')}`,
230
+ };
231
+ }
232
+ // Check if action exists
233
+ const handler = providerHandlers[action];
234
+ if (!handler) {
235
+ return {
236
+ success: false,
237
+ provider: providerId,
238
+ action,
239
+ error: `Action '${action}' not available for ${providerId}. Available: ${Object.keys(providerHandlers).join(', ')}`,
240
+ };
241
+ }
242
+ // Get credentials - fallback to proxy if not available locally
243
+ const creds = getCredentials(providerId);
244
+ if (!creds) {
245
+ // Try proxy for supported providers
246
+ if (PROXY_PROVIDERS.includes(providerId)) {
247
+ try {
248
+ const proxyResult = await callProxy(providerId, { action, ...params });
249
+ return {
250
+ success: true,
251
+ provider: providerId,
252
+ action,
253
+ data: proxyResult,
254
+ };
255
+ }
256
+ catch (e) {
257
+ return {
258
+ success: false,
259
+ provider: providerId,
260
+ action,
261
+ error: e.message || 'Proxy call failed',
262
+ };
263
+ }
264
+ }
265
+ return {
266
+ success: false,
267
+ provider: providerId,
268
+ action,
269
+ error: `No credentials configured for ${providerId}. Set up ~/.secrets/${providerId}.env`,
270
+ };
271
+ }
272
+ // Execute
273
+ try {
274
+ return await handler(params, creds);
275
+ }
276
+ catch (error) {
277
+ return {
278
+ success: false,
279
+ provider: providerId,
280
+ action,
281
+ error: error.message || 'Unknown error',
282
+ };
283
+ }
284
+ }
285
+ //# sourceMappingURL=execute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execute.js","sourceRoot":"","sources":["../src/execute.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -12,30 +12,47 @@
12
12
  import { Server } from '@modelcontextprotocol/sdk/server/index.js';
13
13
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
14
14
  import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
15
- import { discoverAPIs, getAPIDetails, getCategories, getAllAPIs, getAPICount } from './discovery.js';
15
+ import { discoverAPIs, getAPIDetails, getCategories, getAllAPIs } from './discovery.js';
16
+ import { trackStartup, trackSearch } from './telemetry.js';
16
17
  import { addCredits, purchaseAPIAccess, getBalanceSummary } from './credits.js';
18
+ import { hasRealCredentials } from './credentials.js';
19
+ import { executeAPICall, getConnectedProviders } from './execute.js';
17
20
  // Default agent ID for MVP (in production, this would come from auth)
18
21
  const DEFAULT_AGENT_ID = 'agent_default';
19
22
  // Tool definitions
20
23
  const tools = [
24
+ {
25
+ name: 'apiclaw_help',
26
+ description: 'Get help and see available commands. Start here if you are new to APIClaw.',
27
+ inputSchema: {
28
+ type: 'object',
29
+ properties: {},
30
+ required: []
31
+ }
32
+ },
21
33
  {
22
34
  name: 'discover_apis',
23
- description: 'Search 1400+ APIs based on what you need to do. Describe your use case naturally.',
35
+ description: 'Search for APIs based on what you need to do. Describe your use case naturally.',
24
36
  inputSchema: {
25
37
  type: 'object',
26
38
  properties: {
27
39
  query: {
28
40
  type: 'string',
29
- description: 'Natural language query describing what you need (e.g., "send SMS", "weather data", "payment processing", "text to speech")'
41
+ description: 'Natural language query describing what you need (e.g., "send SMS to Sweden", "search the web", "generate speech from text")'
30
42
  },
31
43
  category: {
32
44
  type: 'string',
33
- description: 'Filter by category (use list_categories to see all)'
45
+ description: 'Filter by category: communication, search, ai',
46
+ enum: ['communication', 'search', 'ai']
34
47
  },
35
48
  max_results: {
36
49
  type: 'number',
37
- description: 'Maximum number of results to return (default: 10)',
38
- default: 10
50
+ description: 'Maximum number of results to return (default: 5)',
51
+ default: 5
52
+ },
53
+ region: {
54
+ type: 'string',
55
+ description: 'Filter by region (e.g., "SE", "EU", "global")'
39
56
  }
40
57
  },
41
58
  required: ['query']
@@ -115,6 +132,36 @@ const tools = [
115
132
  type: 'object',
116
133
  properties: {}
117
134
  }
135
+ },
136
+ {
137
+ name: 'call_api',
138
+ description: 'Execute an API call through APIClaw Instant Connect. No API keys needed - we handle authentication.',
139
+ inputSchema: {
140
+ type: 'object',
141
+ properties: {
142
+ provider: {
143
+ type: 'string',
144
+ description: 'Provider ID (e.g., "46elks", "brave_search", "resend", "openrouter", "elevenlabs", "twilio")'
145
+ },
146
+ action: {
147
+ type: 'string',
148
+ description: 'Action to perform (e.g., "send_sms", "search", "send_email", "chat", "text_to_speech")'
149
+ },
150
+ params: {
151
+ type: 'object',
152
+ description: 'Parameters for the action. Varies by provider/action.'
153
+ }
154
+ },
155
+ required: ['provider', 'action', 'params']
156
+ }
157
+ },
158
+ {
159
+ name: 'list_connected',
160
+ description: 'List all APIs available for Instant Connect (no API key needed).',
161
+ inputSchema: {
162
+ type: 'object',
163
+ properties: {}
164
+ }
118
165
  }
119
166
  ];
120
167
  // Create server
@@ -135,11 +182,49 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
135
182
  const { name, arguments: args } = request.params;
136
183
  try {
137
184
  switch (name) {
185
+ case 'apiclaw_help': {
186
+ const helpText = `
187
+ 🦞 APIClaw — The API Layer for AI Agents
188
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
189
+
190
+ DISCOVER APIs:
191
+ discover_apis({ query: "send SMS to Sweden" })
192
+ discover_apis({ query: "search the web", max_results: 10 })
193
+ discover_apis({ query: "text to speech", category: "ai" })
194
+
195
+ GET DETAILS:
196
+ get_api_details({ api_id: "46elks" })
197
+
198
+ INSTANT CONNECT (6 APIs, no key needed):
199
+ get_connected_providers()
200
+ call_api({ provider: "brave_search", endpoint: "search", params: { q: "AI agents" } })
201
+
202
+ Available instant-connect providers:
203
+ • brave_search — Web search
204
+ • 46elks — SMS (Sweden)
205
+ • twilio — SMS (Global)
206
+ • resend — Email
207
+ • openrouter — LLM routing
208
+ • elevenlabs — Text-to-speech
209
+
210
+ BROWSE:
211
+ list_categories()
212
+ list_all_apis({ category: "communication", limit: 20 })
213
+
214
+ Docs: https://apiclaw.nordsym.com
215
+ `;
216
+ return {
217
+ content: [{ type: 'text', text: helpText }]
218
+ };
219
+ }
138
220
  case 'discover_apis': {
139
221
  const query = args?.query;
140
222
  const category = args?.category;
141
- const maxResults = args?.max_results || 10;
142
- const results = discoverAPIs(query, { category, maxResults });
223
+ const maxResults = args?.max_results || 5;
224
+ const region = args?.region;
225
+ const startTime = Date.now();
226
+ const results = discoverAPIs(query, { category, maxResults, region });
227
+ trackSearch(query, results.length, Date.now() - startTime);
143
228
  if (results.length === 0) {
144
229
  return {
145
230
  content: [
@@ -148,8 +233,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
148
233
  text: JSON.stringify({
149
234
  status: 'no_results',
150
235
  message: `No APIs found matching "${query}". Try broader terms or check available categories with list_categories.`,
151
- total_apis: getAPICount(),
152
- available_categories: getCategories().slice(0, 20)
236
+ available_categories: getCategories()
153
237
  }, null, 2)
154
238
  }
155
239
  ]
@@ -163,17 +247,15 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
163
247
  status: 'success',
164
248
  query,
165
249
  results_count: results.length,
166
- total_apis: getAPICount(),
167
250
  results: results.map(r => ({
168
- id: r.api.id,
169
- name: r.api.name,
170
- description: r.api.description,
171
- category: r.api.category,
172
- auth: r.api.auth,
173
- https: r.api.https,
174
- link: r.api.link,
175
- pricing: r.api.pricing,
176
- keywords: r.api.keywords,
251
+ id: r.provider.id,
252
+ name: r.provider.name,
253
+ description: r.provider.description,
254
+ category: r.provider.category,
255
+ capabilities: r.provider.capabilities,
256
+ pricing_model: r.provider.pricing.model,
257
+ has_free_tier: r.provider.pricing.free_tier,
258
+ agent_success_rate: r.provider.agent_success_rate,
177
259
  relevance_score: r.relevance_score,
178
260
  match_reasons: r.match_reasons
179
261
  }))
@@ -242,12 +324,14 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
242
324
  provider: apiId,
243
325
  amount_paid_usd: amountUsd,
244
326
  credits_received: result.purchase.credits_purchased,
245
- status: result.purchase.status
327
+ status: result.purchase.status,
328
+ real_credentials: hasRealCredentials(apiId)
246
329
  },
247
330
  credentials: result.purchase.credentials,
248
331
  access: {
249
- link: api?.link,
250
- auth: api?.auth
332
+ base_url: api?.base_url,
333
+ docs_url: api?.docs_url,
334
+ auth_type: api?.auth_type
251
335
  }
252
336
  }, null, 2)
253
337
  }
@@ -267,11 +351,13 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
267
351
  balance_usd: summary.credits.balance_usd,
268
352
  currency: summary.credits.currency,
269
353
  total_spent_usd: summary.total_spent_usd,
354
+ real_credential_providers: summary.real_credentials_available,
270
355
  active_purchases: summary.active_purchases.map(p => ({
271
356
  id: p.id,
272
357
  provider: p.provider_id,
273
- credits_remaining: p.credits_purchased, // Would track actual usage in production
274
- status: p.status
358
+ credits_remaining: p.credits_purchased,
359
+ status: p.status,
360
+ real_credentials: hasRealCredentials(p.provider_id)
275
361
  }))
276
362
  }, null, 2)
277
363
  }
@@ -297,9 +383,11 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
297
383
  }
298
384
  case 'list_categories': {
299
385
  const categories = getCategories();
300
- const categoryCounts = {};
386
+ const apisByCategory = {};
301
387
  for (const cat of categories) {
302
- categoryCounts[cat] = getAllAPIs().filter(a => a.category === cat).length;
388
+ apisByCategory[cat] = getAllAPIs()
389
+ .filter(a => a.category === cat)
390
+ .map(a => a.id);
303
391
  }
304
392
  return {
305
393
  content: [
@@ -307,9 +395,44 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
307
395
  type: 'text',
308
396
  text: JSON.stringify({
309
397
  status: 'success',
310
- total_apis: getAPICount(),
311
- category_count: categories.length,
312
- categories: categoryCounts
398
+ categories: apisByCategory
399
+ }, null, 2)
400
+ }
401
+ ]
402
+ };
403
+ }
404
+ case 'call_api': {
405
+ const provider = args?.provider;
406
+ const action = args?.action;
407
+ const params = args?.params || {};
408
+ const result = await executeAPICall(provider, action, params);
409
+ return {
410
+ content: [
411
+ {
412
+ type: 'text',
413
+ text: JSON.stringify({
414
+ status: result.success ? 'success' : 'error',
415
+ provider: result.provider,
416
+ action: result.action,
417
+ ...(result.success ? { data: result.data } : { error: result.error }),
418
+ ...(result.cost !== undefined ? { cost_sek: result.cost } : {})
419
+ }, null, 2)
420
+ }
421
+ ],
422
+ isError: !result.success
423
+ };
424
+ }
425
+ case 'list_connected': {
426
+ const connected = getConnectedProviders();
427
+ return {
428
+ content: [
429
+ {
430
+ type: 'text',
431
+ text: JSON.stringify({
432
+ status: 'success',
433
+ message: 'These APIs are available for Instant Connect - no API key needed!',
434
+ connected_providers: connected,
435
+ usage: 'Use call_api with provider, action, and params to execute calls.'
313
436
  }, null, 2)
314
437
  }
315
438
  ]
@@ -349,7 +472,28 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
349
472
  async function main() {
350
473
  const transport = new StdioServerTransport();
351
474
  await server.connect(transport);
352
- console.error('APIvault MCP server running on stdio');
475
+ trackStartup();
476
+ // Welcome message with onboarding
477
+ console.error(`
478
+ 🦞 APIClaw v1.1.1 — The API Layer for AI Agents
479
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
480
+
481
+ ✓ 10,001 APIs indexed
482
+ ✓ 446 categories
483
+ ✓ 6 instant-connect providers ready
484
+
485
+ Quick Start:
486
+ discover_apis("send SMS to Sweden")
487
+ discover_apis("search the web")
488
+ discover_apis("generate speech from text")
489
+
490
+ Instant Connect (no API key needed):
491
+ get_connected_providers()
492
+ call_api({ provider: "brave_search", ... })
493
+
494
+ Docs: https://apiclaw.nordsym.com
495
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
496
+ `);
353
497
  }
354
498
  main().catch(console.error);
355
499
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * APIClaw Proxy - Fallback to hosted API when no local credentials
3
+ */
4
+ export declare function callProxy(provider: string, params: any): Promise<any>;
5
+ export declare const PROXY_PROVIDERS: string[];
6
+ //# sourceMappingURL=proxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAe3E;AAED,eAAO,MAAM,eAAe,UAA6E,CAAC"}