@apitap/core 1.0.3 → 1.0.5

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 CHANGED
@@ -118,11 +118,11 @@ ApiTap includes a text-mode browsing pipeline — `peek` and `read` — that let
118
118
 
119
119
  | Site | Decoder | Typical Tokens | vs Raw HTML |
120
120
  |------|---------|----------------|-------------|
121
- | Reddit | `reddit` | ~500 | 95% smaller |
121
+ | Reddit | `reddit` | ~627 | 93% smaller |
122
122
  | YouTube | `youtube` | ~36 | 99% smaller |
123
123
  | Wikipedia | `wikipedia` | ~127 | 97% smaller |
124
124
  | Hacker News | `hackernews` | ~200 | 90% smaller |
125
- | Grokipedia | `grokipedia` | ~150 | 90% smaller |
125
+ | Grokipedia | `grokipedia` | ~150–5000+ | varies by article length |
126
126
  | Twitter/X | `twitter` | ~80 | 95% smaller |
127
127
  | Any other site | `generic` | varies | ~74% avg |
128
128
 
@@ -135,7 +135,7 @@ apitap peek https://reddit.com/r/programming
135
135
 
136
136
  # Extract content — no browser needed
137
137
  apitap read https://reddit.com/r/programming
138
- ✓ Reddit decoder: 12 posts, ~500 tokens
138
+ ✓ Reddit decoder: 12 posts, ~627 tokens
139
139
 
140
140
  # Works for any URL — falls back to generic HTML extraction
141
141
  apitap read https://example.com/blog/post
@@ -11,6 +11,9 @@ const IPV4_RE = /\b(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\b/g;
11
11
  const CARD_RE = /\b\d{4}[- ]?\d{4}[- ]?\d{4}[- ]?\d{4}\b/g;
12
12
  // US SSN: 123-45-6789
13
13
  const SSN_RE = /\b\d{3}-\d{2}-\d{4}\b/g;
14
+ // Auth tokens
15
+ const BEARER_TOKEN_RE = /\bBearer\s+[A-Za-z0-9._~+/-]+=*\b/g;
16
+ const JWT_RE = /\beyJ[a-zA-Z0-9_-]+\.[a-zA-Z0-9_-]+\.[a-zA-Z0-9_-]+\b/g;
14
17
  /**
15
18
  * Scrub PII from a string. Returns the string with PII replaced by placeholders.
16
19
  * Order matters: SSN before phone (SSN is more specific).
@@ -33,6 +36,9 @@ export function scrubPII(input) {
33
36
  // Phone (international, then US)
34
37
  result = result.replace(PHONE_INTL_RE, '[phone]');
35
38
  result = result.replace(PHONE_US_RE, '[phone]');
39
+ // Auth tokens
40
+ result = result.replace(BEARER_TOKEN_RE, '[token]');
41
+ result = result.replace(JWT_RE, '[token]');
36
42
  return result;
37
43
  }
38
44
  //# sourceMappingURL=scrubber.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scrubber.js","sourceRoot":"","sources":["../../src/capture/scrubber.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAE1B,0BAA0B;AAC1B,MAAM,QAAQ,GAAG,iDAAiD,CAAC;AAEnE,2CAA2C;AAC3C,MAAM,aAAa,GAAG,kBAAkB,CAAC;AAEzC,mFAAmF;AACnF,MAAM,WAAW,GAAG,8DAA8D,CAAC;AAEnF,4DAA4D;AAC5D,MAAM,OAAO,GAAG,iDAAiD,CAAC;AAElE,gEAAgE;AAChE,MAAM,OAAO,GAAG,0CAA0C,CAAC;AAE3D,sBAAsB;AACtB,MAAM,MAAM,GAAG,wBAAwB,CAAC;AAExC;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAa;IACpC,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,yCAAyC;IACzC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAE7C,+DAA+D;IAC/D,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEzC,eAAe;IACf,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAE3C,6BAA6B;IAC7B,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;QAC1D,MAAM,MAAM,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC;YAAE,OAAO,MAAM,CAAC;QAC/C,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,iCAAiC;IACjC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IAClD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAEhD,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"scrubber.js","sourceRoot":"","sources":["../../src/capture/scrubber.ts"],"names":[],"mappings":"AAAA,0BAA0B;AAE1B,0BAA0B;AAC1B,MAAM,QAAQ,GAAG,iDAAiD,CAAC;AAEnE,2CAA2C;AAC3C,MAAM,aAAa,GAAG,kBAAkB,CAAC;AAEzC,mFAAmF;AACnF,MAAM,WAAW,GAAG,8DAA8D,CAAC;AAEnF,4DAA4D;AAC5D,MAAM,OAAO,GAAG,iDAAiD,CAAC;AAElE,gEAAgE;AAChE,MAAM,OAAO,GAAG,0CAA0C,CAAC;AAE3D,sBAAsB;AACtB,MAAM,MAAM,GAAG,wBAAwB,CAAC;AAExC,cAAc;AACd,MAAM,eAAe,GAAG,oCAAoC,CAAC;AAC7D,MAAM,MAAM,GAAG,wDAAwD,CAAC;AAExE;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAa;IACpC,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,yCAAyC;IACzC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAE7C,+DAA+D;IAC/D,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEzC,eAAe;IACf,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAE3C,6BAA6B;IAC7B,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;QAC1D,MAAM,MAAM,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC;YAAE,OAAO,MAAM,CAAC;QAC/C,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,iCAAiC;IACjC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IAClD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAEhD,cAAc;IACd,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;IACpD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAE3C,OAAO,MAAM,CAAC;AAChB,CAAC"}
package/dist/mcp.js CHANGED
@@ -13,9 +13,13 @@ import { discover } from './discovery/index.js';
13
13
  import { SessionCache } from './orchestration/cache.js';
14
14
  import { peek } from './read/peek.js';
15
15
  import { read } from './read/index.js';
16
+ import { resolveAndValidateUrl } from './skill/ssrf.js';
17
+ import { createRequire } from 'node:module';
16
18
  import { homedir } from 'node:os';
17
19
  import { join } from 'node:path';
18
20
  const APITAP_DIR = join(homedir(), '.apitap');
21
+ const require = createRequire(import.meta.url);
22
+ const { version: PACKAGE_VERSION } = require('../package.json');
19
23
  /**
20
24
  * Wrap response data with external content metadata.
21
25
  * MCP clients that respect this can apply security wrappers (e.g., SECURITY NOTICE).
@@ -44,18 +48,12 @@ export function createMcpServer(options = {}) {
44
48
  const sessionCache = new SessionCache();
45
49
  const server = new McpServer({
46
50
  name: 'apitap',
47
- version: '0.5.0',
51
+ version: PACKAGE_VERSION,
48
52
  });
49
53
  // --- apitap_search ---
50
54
  server.registerTool('apitap_search', {
51
- description: 'Search available API skill files for a domain or endpoint. ' +
52
- 'Use this FIRST to check if ApiTap has captured a site\'s API before trying to replay. ' +
53
- 'Returns matching endpoints with replayability tiers: ' +
54
- 'green = public, no auth needed — safe to replay directly; ' +
55
- 'yellow = needs auth credentials but no signing/anti-bot; ' +
56
- 'orange = CSRF/session-bound, fragile replay; ' +
57
- 'red = anti-bot protection, needs browser. ' +
58
- 'If not found, use apitap_capture to capture the site first.',
55
+ description: 'Find captured API endpoints by domain or keyword. ' +
56
+ 'Returns endpoints with replayability tier (green/yellow/orange/red) and endpoint IDs for replay.',
59
57
  inputSchema: z.object({
60
58
  query: z.string().describe('Search query — domain name, endpoint path, or keyword (e.g. "polymarket", "events", "get-markets")'),
61
59
  }),
@@ -71,13 +69,9 @@ export function createMcpServer(options = {}) {
71
69
  });
72
70
  // --- apitap_discover ---
73
71
  server.registerTool('apitap_discover', {
74
- description: 'Discover a site\'s APIs without launching a browser. ' +
75
- 'Detects frameworks (WordPress, Shopify, Next.js, GraphQL), ' +
76
- 'finds OpenAPI/Swagger specs, and probes common API paths. ' +
77
- 'Use this BEFORE apitap_capture to check if expensive browser-based capture is needed. ' +
78
- 'Returns { confidence, skillFile?, hints, frameworks?, specs?, probes? }. ' +
79
- 'If confidence is "high" or "medium", a skeleton skill file is generated — ' +
80
- 'try replaying its endpoints before resorting to capture.',
72
+ description: 'Probe a site\'s APIs without a browser: detects frameworks, finds OpenAPI specs, ' +
73
+ 'probes common paths. Returns { confidence, skillFile?, frameworks?, hints }. ' +
74
+ 'High/medium confidence generates a skeleton skill file ready to replay.',
81
75
  inputSchema: z.object({
82
76
  url: z.string().describe('URL to discover (e.g. "https://example.com")'),
83
77
  }),
@@ -109,12 +103,9 @@ export function createMcpServer(options = {}) {
109
103
  });
110
104
  // --- apitap_replay ---
111
105
  server.registerTool('apitap_replay', {
112
- description: 'Replay a captured API endpoint to get live data without a browser. ' +
113
- 'Check the endpoint tier first with apitap_search: ' +
114
- 'green = will work, yellow = needs auth, orange/red = may fail. ' +
115
- 'For POST endpoints with request bodies, params can include body variable paths ' +
116
- '(e.g. "variables.limit": "25" for GraphQL). ' +
117
- 'Returns { status, data } with the API response.',
106
+ description: 'Call a captured API endpoint and return live data. ' +
107
+ 'Requires domain and endpointId from apitap_search. ' +
108
+ 'Pass params for path variables, query params, or body variables (e.g. "variables.limit": "25" for GraphQL).',
118
109
  inputSchema: z.object({
119
110
  domain: z.string().describe('Domain of the API (e.g. "gamma-api.polymarket.com")'),
120
111
  endpointId: z.string().describe('Endpoint ID from search results (e.g. "get-events", "post-graphql-GetPosts")'),
@@ -189,10 +180,8 @@ export function createMcpServer(options = {}) {
189
180
  });
190
181
  // --- apitap_replay_batch ---
191
182
  server.registerTool('apitap_replay_batch', {
192
- description: 'Replay multiple API endpoints in parallel across different domains. ' +
193
- 'Use this when you need data from several sites at once (e.g. comparing prices across stores). ' +
194
- 'Each request gets its own result — one site failing does not affect others. ' +
195
- 'Returns an array of { domain, endpointId, status, data, error?, tier?, capturedAt? }.',
183
+ description: 'Replay multiple captured endpoints in parallel across domains. ' +
184
+ 'Returns array of { domain, endpointId, status, data, error? } failures are isolated per request.',
196
185
  inputSchema: z.object({
197
186
  requests: z.array(z.object({
198
187
  domain: z.string().describe('Domain of the API'),
@@ -217,13 +206,8 @@ export function createMcpServer(options = {}) {
217
206
  });
218
207
  // --- apitap_browse ---
219
208
  server.registerTool('apitap_browse', {
220
- description: 'High-level "just get me the data" tool. ' +
221
- 'Checks if a skill file exists for the site, runs discovery if needed, ' +
222
- 'and replays the best matching endpoint — all in one call. ' +
223
- 'Use this when you want data from a URL without manually chaining search → discover → replay. ' +
224
- 'Returns { success: true, data, domain, endpointId, tier } on success, ' +
225
- 'or { success: false, suggestion: "capture_needed" } if the site needs browser-based capture first. ' +
226
- 'For precise control over which endpoint to replay, use apitap_search + apitap_replay instead.',
209
+ description: 'Get data from a URL in one call: checks skill files, runs discovery, replays best endpoint. ' +
210
+ 'Returns { success, data, domain, endpointId, tier } or { success: false, suggestion } if capture needed.',
227
211
  inputSchema: z.object({
228
212
  url: z.string().describe('URL to browse (e.g. "https://zillow.com/rentals/portland")'),
229
213
  task: z.string().optional().describe('Optional task description (e.g. "find apartments under $1500") — passed through in response for correlation'),
@@ -252,9 +236,8 @@ export function createMcpServer(options = {}) {
252
236
  });
253
237
  // --- apitap_peek ---
254
238
  server.registerTool('apitap_peek', {
255
- description: 'Zero-cost triage of a URL. HTTP HEAD only -- checks accessibility, ' +
256
- 'bot protection, framework detection. Use before apitap_read to avoid wasting ' +
257
- 'tokens on blocked sites. Returns { accessible, recommendation, botProtection, framework, signals }.',
239
+ description: 'HTTP HEAD triage of a URL checks accessibility, bot protection, framework. ' +
240
+ 'Returns { accessible, recommendation, botProtection, framework }.',
258
241
  inputSchema: z.object({
259
242
  url: z.string().describe('URL to peek at (e.g. "https://example.com")'),
260
243
  }),
@@ -277,10 +260,8 @@ export function createMcpServer(options = {}) {
277
260
  });
278
261
  // --- apitap_read ---
279
262
  server.registerTool('apitap_read', {
280
- description: 'Extract content from a URL without a browser. Uses side-channel APIs ' +
281
- 'for known sites (Reddit, YouTube, Wikipedia, HN) and HTML content extraction for ' +
282
- 'everything else. Returns structured JSON with clean markdown content. 0-10K tokens ' +
283
- 'vs 50-200K for browser automation.',
263
+ description: 'Extract content from a URL without a browser. Uses native APIs for Reddit/YouTube/Wikipedia/HN, ' +
264
+ 'HTML extraction elsewhere. Returns clean markdown. ~10K tokens vs 200K for browser.',
284
265
  inputSchema: z.object({
285
266
  url: z.string().describe('URL to read (e.g. "https://en.wikipedia.org/wiki/TypeScript")'),
286
267
  maxBytes: z.number().optional().describe('Maximum content size in bytes. Content is truncated to fit.'),
@@ -291,6 +272,10 @@ export function createMcpServer(options = {}) {
291
272
  },
292
273
  }, async ({ url, maxBytes }) => {
293
274
  try {
275
+ const validation = await resolveAndValidateUrl(url);
276
+ if (!validation.safe) {
277
+ throw new Error(validation.reason ?? 'URL validation failed');
278
+ }
294
279
  const result = await read(url, { maxBytes: maxBytes ?? undefined });
295
280
  if (!result) {
296
281
  return {
@@ -309,11 +294,8 @@ export function createMcpServer(options = {}) {
309
294
  });
310
295
  // --- apitap_capture ---
311
296
  server.registerTool('apitap_capture', {
312
- description: 'Capture a website\'s API traffic by launching an instrumented browser. ' +
313
- 'Use this when apitap_search returns no results for a site. ' +
314
- 'Navigates to the URL, captures API calls for the specified duration, ' +
315
- 'and generates skill files for future replay. ' +
316
- 'Returns { domains, totalRequests, filtered, skillFiles } summary.',
297
+ description: 'Launch a browser to capture a site\'s API traffic and save skill files for replay. ' +
298
+ 'Returns { domains, totalRequests, skillFiles }.',
317
299
  inputSchema: z.object({
318
300
  url: z.string().describe('URL to capture (e.g. "https://polymarket.com")'),
319
301
  duration: z.number().optional().describe('Capture duration in seconds (default: 30)'),
@@ -330,7 +312,8 @@ export function createMcpServer(options = {}) {
330
312
  const { promisify } = await import('node:util');
331
313
  const execFileAsync = promisify(execFile);
332
314
  // Use compiled dist/cli.js, not src/cli.ts (tsx is dev-only)
333
- const cliPath = new URL('../cli.js', import.meta.url).pathname;
315
+ // Both mcp.js and cli.js compile to dist/ so path is ./cli.js not ../cli.js
316
+ const cliPath = new URL('./cli.js', import.meta.url).pathname;
334
317
  const cliArgs = [cliPath, 'capture', url, '--duration', String(dur), '--json', '--no-verify'];
335
318
  if (port)
336
319
  cliArgs.push('--port', String(port));
@@ -352,10 +335,8 @@ export function createMcpServer(options = {}) {
352
335
  });
353
336
  // --- apitap_capture_start ---
354
337
  server.registerTool('apitap_capture_start', {
355
- description: 'Start an interactive browser capture session. ' +
356
- 'Launches a browser, navigates to the URL, and begins passively capturing API traffic. ' +
357
- 'Returns a sessionId and a page snapshot with interactive elements (buttons, links, inputs). ' +
358
- 'Use apitap_capture_interact to drive the browser and apitap_capture_finish to save skill files.',
338
+ description: 'Start an interactive capture session. Launches browser, begins capturing API traffic. ' +
339
+ 'Returns sessionId and page snapshot. Drive with apitap_capture_interact, save with apitap_capture_finish.',
359
340
  inputSchema: z.object({
360
341
  url: z.string().describe('URL to navigate to (e.g. "https://polymarket.com")'),
361
342
  headless: z.boolean().optional().describe('Run browser in headless mode (default: true)'),
@@ -394,11 +375,9 @@ export function createMcpServer(options = {}) {
394
375
  });
395
376
  // --- apitap_capture_interact ---
396
377
  server.registerTool('apitap_capture_interact', {
397
- description: 'Interact with a live capture session browser. ' +
398
- 'Actions: snapshot (get current state), click (ref), type (ref + text), select (ref + value), ' +
399
- 'navigate (url), scroll (direction), wait (seconds, max 10). ' +
400
- 'Every action returns a fresh page snapshot with updated elements and capture stats. ' +
401
- 'Use element refs (e.g. "e0", "e3") from the snapshot to target clicks and typing.',
378
+ description: 'Drive a live capture session browser. ' +
379
+ 'Actions: snapshot, click (ref), type (ref+text), select, navigate, scroll, wait. ' +
380
+ 'Returns updated page snapshot after each action. Use element refs (e.g. "e0") from snapshots.',
402
381
  inputSchema: z.object({
403
382
  sessionId: z.string().describe('Session ID from apitap_capture_start'),
404
383
  action: z.enum(['snapshot', 'click', 'type', 'select', 'navigate', 'scroll', 'wait']).describe('Action to perform'),
@@ -445,10 +424,8 @@ export function createMcpServer(options = {}) {
445
424
  });
446
425
  // --- apitap_capture_finish ---
447
426
  server.registerTool('apitap_capture_finish', {
448
- description: 'Finish or abort a capture session. ' +
449
- 'Without abort: closes browser, verifies endpoints, signs and writes skill files. ' +
450
- 'With abort: closes browser without saving. ' +
451
- 'Returns { aborted, domains: [{ domain, endpointCount, tiers, skillFile }] }.',
427
+ description: 'Finish a capture session: verifies endpoints and writes skill files. ' +
428
+ 'Pass abort:true to close without saving. Returns { aborted, domains }.',
452
429
  inputSchema: z.object({
453
430
  sessionId: z.string().describe('Session ID from apitap_capture_start'),
454
431
  abort: z.boolean().optional().describe('Abort without saving (default: false)'),
@@ -493,12 +470,8 @@ export function createMcpServer(options = {}) {
493
470
  });
494
471
  // --- apitap_auth_request ---
495
472
  server.registerTool('apitap_auth_request', {
496
- description: 'Request human authentication for a site that requires login. ' +
497
- 'Opens a VISIBLE browser window where the human can log in, handle 2FA, solve CAPTCHAs. ' +
498
- 'Captures session cookies and auth tokens after login, stores them encrypted. ' +
499
- 'Default timeout is 5 minutes. ' +
500
- 'After success, use apitap_replay or apitap_capture with the domain — auth will be injected automatically. ' +
501
- 'Use this when: replay returns 401/403, discovery detects authRequired, or you know a site needs login.',
473
+ description: 'Open a visible browser for human login (handles 2FA, CAPTCHAs). ' +
474
+ 'Stores session tokens encrypted auto-injected on future replay/capture calls.',
502
475
  inputSchema: z.object({
503
476
  domain: z.string().describe('Domain to authenticate (e.g. "github.com")'),
504
477
  loginUrl: z.string().optional().describe('Login page URL (defaults to https://<domain>)'),
package/dist/mcp.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
package/dist/serve.js CHANGED
@@ -130,10 +130,11 @@ export async function createServeServer(domain, options = {}) {
130
130
  };
131
131
  }
132
132
  catch (err) {
133
+ console.error('Replay failed:', err);
133
134
  return {
134
135
  content: [{
135
136
  type: 'text',
136
- text: `Replay failed: ${err.message}`,
137
+ text: 'Authentication failed',
137
138
  }],
138
139
  isError: true,
139
140
  };
package/dist/serve.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"serve.js","sourceRoot":"","sources":["../src/serve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serve.js","sourceRoot":"","sources":["../src/serve.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@apitap/core",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "description": "Intercept web API traffic during browsing. Generate portable skill files so AI agents can call APIs directly instead of scraping.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -18,6 +18,10 @@ const CARD_RE = /\b\d{4}[- ]?\d{4}[- ]?\d{4}[- ]?\d{4}\b/g;
18
18
  // US SSN: 123-45-6789
19
19
  const SSN_RE = /\b\d{3}-\d{2}-\d{4}\b/g;
20
20
 
21
+ // Auth tokens
22
+ const BEARER_TOKEN_RE = /\bBearer\s+[A-Za-z0-9._~+/-]+=*\b/g;
23
+ const JWT_RE = /\beyJ[a-zA-Z0-9_-]+\.[a-zA-Z0-9_-]+\.[a-zA-Z0-9_-]+\b/g;
24
+
21
25
  /**
22
26
  * Scrub PII from a string. Returns the string with PII replaced by placeholders.
23
27
  * Order matters: SSN before phone (SSN is more specific).
@@ -45,5 +49,9 @@ export function scrubPII(input: string): string {
45
49
  result = result.replace(PHONE_INTL_RE, '[phone]');
46
50
  result = result.replace(PHONE_US_RE, '[phone]');
47
51
 
52
+ // Auth tokens
53
+ result = result.replace(BEARER_TOKEN_RE, '[token]');
54
+ result = result.replace(JWT_RE, '[token]');
55
+
48
56
  return result;
49
57
  }
package/src/mcp.ts CHANGED
@@ -13,10 +13,14 @@ import { discover } from './discovery/index.js';
13
13
  import { SessionCache } from './orchestration/cache.js';
14
14
  import { peek } from './read/peek.js';
15
15
  import { read } from './read/index.js';
16
+ import { resolveAndValidateUrl } from './skill/ssrf.js';
17
+ import { createRequire } from 'node:module';
16
18
  import { homedir } from 'node:os';
17
19
  import { join } from 'node:path';
18
20
 
19
21
  const APITAP_DIR = join(homedir(), '.apitap');
22
+ const require = createRequire(import.meta.url);
23
+ const { version: PACKAGE_VERSION } = require('../package.json') as { version: string };
20
24
 
21
25
  /**
22
26
  * Wrap response data with external content metadata.
@@ -55,7 +59,7 @@ export function createMcpServer(options: McpServerOptions = {}): McpServer {
55
59
 
56
60
  const server = new McpServer({
57
61
  name: 'apitap',
58
- version: '0.5.0',
62
+ version: PACKAGE_VERSION,
59
63
  });
60
64
 
61
65
  // --- apitap_search ---
@@ -63,14 +67,8 @@ export function createMcpServer(options: McpServerOptions = {}): McpServer {
63
67
  'apitap_search',
64
68
  {
65
69
  description:
66
- 'Search available API skill files for a domain or endpoint. ' +
67
- 'Use this FIRST to check if ApiTap has captured a site\'s API before trying to replay. ' +
68
- 'Returns matching endpoints with replayability tiers: ' +
69
- 'green = public, no auth needed — safe to replay directly; ' +
70
- 'yellow = needs auth credentials but no signing/anti-bot; ' +
71
- 'orange = CSRF/session-bound, fragile replay; ' +
72
- 'red = anti-bot protection, needs browser. ' +
73
- 'If not found, use apitap_capture to capture the site first.',
70
+ 'Find captured API endpoints by domain or keyword. ' +
71
+ 'Returns endpoints with replayability tier (green/yellow/orange/red) and endpoint IDs for replay.',
74
72
  inputSchema: z.object({
75
73
  query: z.string().describe('Search query — domain name, endpoint path, or keyword (e.g. "polymarket", "events", "get-markets")'),
76
74
  }),
@@ -92,13 +90,9 @@ export function createMcpServer(options: McpServerOptions = {}): McpServer {
92
90
  'apitap_discover',
93
91
  {
94
92
  description:
95
- 'Discover a site\'s APIs without launching a browser. ' +
96
- 'Detects frameworks (WordPress, Shopify, Next.js, GraphQL), ' +
97
- 'finds OpenAPI/Swagger specs, and probes common API paths. ' +
98
- 'Use this BEFORE apitap_capture to check if expensive browser-based capture is needed. ' +
99
- 'Returns { confidence, skillFile?, hints, frameworks?, specs?, probes? }. ' +
100
- 'If confidence is "high" or "medium", a skeleton skill file is generated — ' +
101
- 'try replaying its endpoints before resorting to capture.',
93
+ 'Probe a site\'s APIs without a browser: detects frameworks, finds OpenAPI specs, ' +
94
+ 'probes common paths. Returns { confidence, skillFile?, frameworks?, hints }. ' +
95
+ 'High/medium confidence generates a skeleton skill file ready to replay.',
102
96
  inputSchema: z.object({
103
97
  url: z.string().describe('URL to discover (e.g. "https://example.com")'),
104
98
  }),
@@ -137,12 +131,9 @@ export function createMcpServer(options: McpServerOptions = {}): McpServer {
137
131
  'apitap_replay',
138
132
  {
139
133
  description:
140
- 'Replay a captured API endpoint to get live data without a browser. ' +
141
- 'Check the endpoint tier first with apitap_search: ' +
142
- 'green = will work, yellow = needs auth, orange/red = may fail. ' +
143
- 'For POST endpoints with request bodies, params can include body variable paths ' +
144
- '(e.g. "variables.limit": "25" for GraphQL). ' +
145
- 'Returns { status, data } with the API response.',
134
+ 'Call a captured API endpoint and return live data. ' +
135
+ 'Requires domain and endpointId from apitap_search. ' +
136
+ 'Pass params for path variables, query params, or body variables (e.g. "variables.limit": "25" for GraphQL).',
146
137
  inputSchema: z.object({
147
138
  domain: z.string().describe('Domain of the API (e.g. "gamma-api.polymarket.com")'),
148
139
  endpointId: z.string().describe('Endpoint ID from search results (e.g. "get-events", "post-graphql-GetPosts")'),
@@ -226,10 +217,8 @@ export function createMcpServer(options: McpServerOptions = {}): McpServer {
226
217
  'apitap_replay_batch',
227
218
  {
228
219
  description:
229
- 'Replay multiple API endpoints in parallel across different domains. ' +
230
- 'Use this when you need data from several sites at once (e.g. comparing prices across stores). ' +
231
- 'Each request gets its own result — one site failing does not affect others. ' +
232
- 'Returns an array of { domain, endpointId, status, data, error?, tier?, capturedAt? }.',
220
+ 'Replay multiple captured endpoints in parallel across domains. ' +
221
+ 'Returns array of { domain, endpointId, status, data, error? } failures are isolated per request.',
233
222
  inputSchema: z.object({
234
223
  requests: z.array(z.object({
235
224
  domain: z.string().describe('Domain of the API'),
@@ -260,13 +249,8 @@ export function createMcpServer(options: McpServerOptions = {}): McpServer {
260
249
  'apitap_browse',
261
250
  {
262
251
  description:
263
- 'High-level "just get me the data" tool. ' +
264
- 'Checks if a skill file exists for the site, runs discovery if needed, ' +
265
- 'and replays the best matching endpoint — all in one call. ' +
266
- 'Use this when you want data from a URL without manually chaining search → discover → replay. ' +
267
- 'Returns { success: true, data, domain, endpointId, tier } on success, ' +
268
- 'or { success: false, suggestion: "capture_needed" } if the site needs browser-based capture first. ' +
269
- 'For precise control over which endpoint to replay, use apitap_search + apitap_replay instead.',
252
+ 'Get data from a URL in one call: checks skill files, runs discovery, replays best endpoint. ' +
253
+ 'Returns { success, data, domain, endpointId, tier } or { success: false, suggestion } if capture needed.',
270
254
  inputSchema: z.object({
271
255
  url: z.string().describe('URL to browse (e.g. "https://zillow.com/rentals/portland")'),
272
256
  task: z.string().optional().describe('Optional task description (e.g. "find apartments under $1500") — passed through in response for correlation'),
@@ -301,9 +285,8 @@ export function createMcpServer(options: McpServerOptions = {}): McpServer {
301
285
  'apitap_peek',
302
286
  {
303
287
  description:
304
- 'Zero-cost triage of a URL. HTTP HEAD only -- checks accessibility, ' +
305
- 'bot protection, framework detection. Use before apitap_read to avoid wasting ' +
306
- 'tokens on blocked sites. Returns { accessible, recommendation, botProtection, framework, signals }.',
288
+ 'HTTP HEAD triage of a URL checks accessibility, bot protection, framework. ' +
289
+ 'Returns { accessible, recommendation, botProtection, framework }.',
307
290
  inputSchema: z.object({
308
291
  url: z.string().describe('URL to peek at (e.g. "https://example.com")'),
309
292
  }),
@@ -331,10 +314,8 @@ export function createMcpServer(options: McpServerOptions = {}): McpServer {
331
314
  'apitap_read',
332
315
  {
333
316
  description:
334
- 'Extract content from a URL without a browser. Uses side-channel APIs ' +
335
- 'for known sites (Reddit, YouTube, Wikipedia, HN) and HTML content extraction for ' +
336
- 'everything else. Returns structured JSON with clean markdown content. 0-10K tokens ' +
337
- 'vs 50-200K for browser automation.',
317
+ 'Extract content from a URL without a browser. Uses native APIs for Reddit/YouTube/Wikipedia/HN, ' +
318
+ 'HTML extraction elsewhere. Returns clean markdown. ~10K tokens vs 200K for browser.',
338
319
  inputSchema: z.object({
339
320
  url: z.string().describe('URL to read (e.g. "https://en.wikipedia.org/wiki/TypeScript")'),
340
321
  maxBytes: z.number().optional().describe('Maximum content size in bytes. Content is truncated to fit.'),
@@ -346,6 +327,10 @@ export function createMcpServer(options: McpServerOptions = {}): McpServer {
346
327
  },
347
328
  async ({ url, maxBytes }) => {
348
329
  try {
330
+ const validation = await resolveAndValidateUrl(url);
331
+ if (!validation.safe) {
332
+ throw new Error(validation.reason ?? 'URL validation failed');
333
+ }
349
334
  const result = await read(url, { maxBytes: maxBytes ?? undefined });
350
335
  if (!result) {
351
336
  return {
@@ -368,11 +353,8 @@ export function createMcpServer(options: McpServerOptions = {}): McpServer {
368
353
  'apitap_capture',
369
354
  {
370
355
  description:
371
- 'Capture a website\'s API traffic by launching an instrumented browser. ' +
372
- 'Use this when apitap_search returns no results for a site. ' +
373
- 'Navigates to the URL, captures API calls for the specified duration, ' +
374
- 'and generates skill files for future replay. ' +
375
- 'Returns { domains, totalRequests, filtered, skillFiles } summary.',
356
+ 'Launch a browser to capture a site\'s API traffic and save skill files for replay. ' +
357
+ 'Returns { domains, totalRequests, skillFiles }.',
376
358
  inputSchema: z.object({
377
359
  url: z.string().describe('URL to capture (e.g. "https://polymarket.com")'),
378
360
  duration: z.number().optional().describe('Capture duration in seconds (default: 30)'),
@@ -392,7 +374,8 @@ export function createMcpServer(options: McpServerOptions = {}): McpServer {
392
374
  const execFileAsync = promisify(execFile);
393
375
 
394
376
  // Use compiled dist/cli.js, not src/cli.ts (tsx is dev-only)
395
- const cliPath = new URL('../cli.js', import.meta.url).pathname;
377
+ // Both mcp.js and cli.js compile to dist/ so path is ./cli.js not ../cli.js
378
+ const cliPath = new URL('./cli.js', import.meta.url).pathname;
396
379
  const cliArgs = [cliPath, 'capture', url, '--duration', String(dur), '--json', '--no-verify'];
397
380
  if (port) cliArgs.push('--port', String(port));
398
381
 
@@ -418,10 +401,8 @@ export function createMcpServer(options: McpServerOptions = {}): McpServer {
418
401
  'apitap_capture_start',
419
402
  {
420
403
  description:
421
- 'Start an interactive browser capture session. ' +
422
- 'Launches a browser, navigates to the URL, and begins passively capturing API traffic. ' +
423
- 'Returns a sessionId and a page snapshot with interactive elements (buttons, links, inputs). ' +
424
- 'Use apitap_capture_interact to drive the browser and apitap_capture_finish to save skill files.',
404
+ 'Start an interactive capture session. Launches browser, begins capturing API traffic. ' +
405
+ 'Returns sessionId and page snapshot. Drive with apitap_capture_interact, save with apitap_capture_finish.',
425
406
  inputSchema: z.object({
426
407
  url: z.string().describe('URL to navigate to (e.g. "https://polymarket.com")'),
427
408
  headless: z.boolean().optional().describe('Run browser in headless mode (default: true)'),
@@ -466,11 +447,9 @@ export function createMcpServer(options: McpServerOptions = {}): McpServer {
466
447
  'apitap_capture_interact',
467
448
  {
468
449
  description:
469
- 'Interact with a live capture session browser. ' +
470
- 'Actions: snapshot (get current state), click (ref), type (ref + text), select (ref + value), ' +
471
- 'navigate (url), scroll (direction), wait (seconds, max 10). ' +
472
- 'Every action returns a fresh page snapshot with updated elements and capture stats. ' +
473
- 'Use element refs (e.g. "e0", "e3") from the snapshot to target clicks and typing.',
450
+ 'Drive a live capture session browser. ' +
451
+ 'Actions: snapshot, click (ref), type (ref+text), select, navigate, scroll, wait. ' +
452
+ 'Returns updated page snapshot after each action. Use element refs (e.g. "e0") from snapshots.',
474
453
  inputSchema: z.object({
475
454
  sessionId: z.string().describe('Session ID from apitap_capture_start'),
476
455
  action: z.enum(['snapshot', 'click', 'type', 'select', 'navigate', 'scroll', 'wait']).describe('Action to perform'),
@@ -524,10 +503,8 @@ export function createMcpServer(options: McpServerOptions = {}): McpServer {
524
503
  'apitap_capture_finish',
525
504
  {
526
505
  description:
527
- 'Finish or abort a capture session. ' +
528
- 'Without abort: closes browser, verifies endpoints, signs and writes skill files. ' +
529
- 'With abort: closes browser without saving. ' +
530
- 'Returns { aborted, domains: [{ domain, endpointCount, tiers, skillFile }] }.',
506
+ 'Finish a capture session: verifies endpoints and writes skill files. ' +
507
+ 'Pass abort:true to close without saving. Returns { aborted, domains }.',
531
508
  inputSchema: z.object({
532
509
  sessionId: z.string().describe('Session ID from apitap_capture_start'),
533
510
  abort: z.boolean().optional().describe('Abort without saving (default: false)'),
@@ -579,12 +556,8 @@ export function createMcpServer(options: McpServerOptions = {}): McpServer {
579
556
  'apitap_auth_request',
580
557
  {
581
558
  description:
582
- 'Request human authentication for a site that requires login. ' +
583
- 'Opens a VISIBLE browser window where the human can log in, handle 2FA, solve CAPTCHAs. ' +
584
- 'Captures session cookies and auth tokens after login, stores them encrypted. ' +
585
- 'Default timeout is 5 minutes. ' +
586
- 'After success, use apitap_replay or apitap_capture with the domain — auth will be injected automatically. ' +
587
- 'Use this when: replay returns 401/403, discovery detects authRequired, or you know a site needs login.',
559
+ 'Open a visible browser for human login (handles 2FA, CAPTCHAs). ' +
560
+ 'Stores session tokens encrypted auto-injected on future replay/capture calls.',
588
561
  inputSchema: z.object({
589
562
  domain: z.string().describe('Domain to authenticate (e.g. "github.com")'),
590
563
  loginUrl: z.string().optional().describe('Login page URL (defaults to https://<domain>)'),
package/src/serve.ts CHANGED
@@ -170,10 +170,11 @@ export async function createServeServer(
170
170
  }],
171
171
  };
172
172
  } catch (err: any) {
173
+ console.error('Replay failed:', err);
173
174
  return {
174
175
  content: [{
175
176
  type: 'text' as const,
176
- text: `Replay failed: ${err.message}`,
177
+ text: 'Authentication failed',
177
178
  }],
178
179
  isError: true,
179
180
  };