@pipeworx/mcp-ca-debtwatch 0.1.3 → 0.1.4

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
@@ -6,7 +6,7 @@ Advisory Commission (CDIAC) since 1984, at issue level: principal, sale date, de
6
6
  ratings, interest cost, issuance fees and the underwriter, municipal advisor and bond counsel on
7
7
  the deal.
8
8
 
9
- Part of [Pipeworx](https://pipeworx.io) — an MCP gateway connecting AI agents to 1851+ live data sources. This is an independent, unofficial integration — not affiliated with, endorsed by, or published by the upstream provider.
9
+ Part of [Pipeworx](https://pipeworx.io) — an MCP gateway connecting AI agents to 1875+ live data sources. This is an independent, unofficial integration — not affiliated with, endorsed by, or published by the upstream provider.
10
10
 
11
11
  This is **primary-market issuance**, not the secondary trade tape. It carries no MSRB/EMMA content
12
12
  and no CUSIP dependency — CDIAC publishes it as California public data.
@@ -115,7 +115,7 @@ directly, instead of just this one's:
115
115
  }
116
116
  ```
117
117
 
118
- Both URLs reach the same gateway and the same 1851+ data sources. The
118
+ Both URLs reach the same gateway and the same 1875+ data sources. The
119
119
  only difference is which pack's tools are listed **directly**; `ask_pipeworx`
120
120
  reaches all of them from either one.
121
121
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pipeworx/mcp-ca-debtwatch",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "description": "ca-debtwatch — California municipal bond issuance (CDIAC / DebtWatch)",
5
5
  "type": "module",
6
6
  "main": "src/index.ts",
@@ -26,7 +26,7 @@
26
26
  "@cloudflare/workers-types": "^4.20260405.1"
27
27
  },
28
28
  "pipeworx": {
29
- "sourceHash": "v1-d91d322efa739525760413228cc37104d3d10037d90cfbb5a2df167442e29fb2",
30
- "sourceCommit": "5d8d3a58a457b8464c117515d81b8b6ecb53fdfb"
29
+ "sourceHash": "v1-0613817212011d981eb41f4722b6ab827439523050019f68b1ac76b6d3e7b774",
30
+ "sourceCommit": "70a4e816a9195016cd4af92dca2019485d4c3865"
31
31
  }
32
32
  }
package/server.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "name": "io.github.pipeworx-io/ca-debtwatch",
4
4
  "title": "Ca Debtwatch",
5
5
  "description": "ca-debtwatch — California municipal bond issuance (CDIAC / DebtWatch)",
6
- "version": "0.1.3",
6
+ "version": "0.1.4",
7
7
  "websiteUrl": "https://pipeworx.io/packs/ca-debtwatch",
8
8
  "repository": {
9
9
  "url": "https://github.com/pipeworx-io/mcp-ca-debtwatch",
package/src/index.ts CHANGED
@@ -295,12 +295,28 @@ async function httpErrorMessage(res: Response, name: string): Promise<string> {
295
295
  // internal-host-class.ts; no-op for every third-party upstream, which is why
296
296
  // this touches 481 packs' error text and changes none of it.
297
297
  return markInternalOrigin(
298
- `${name}: ${res.status}${detailSuffix(await readDetail(res))}`,
298
+ `${name}: ${res.status}${detailSuffix(await readDetail(res))}${responseHints(res)}`,
299
299
  res.url,
300
300
  res.status,
301
301
  );
302
302
  }
303
303
 
304
+ /**
305
+ * Facts about a FAILED response that live in its headers, not its body, appended
306
+ * so the gateway's classifier (which only ever sees this string) can tell a limit
307
+ * from a wall from a refusal (fleet #3477). Both are standard, both are absent on
308
+ * almost every response, and neither is invented: `Retry-After` is the server
309
+ * saying "come back later" (the one thing that makes a 403 a throttle), and
310
+ * Cloudflare marks a bot challenge with `cf-mitigated: challenge`.
311
+ */
312
+ function responseHints(res: Response): string {
313
+ const hints: string[] = [];
314
+ const retryAfter = res.headers.get('retry-after');
315
+ if (retryAfter) hints.push(`retry-after: ${retryAfter.slice(0, 40)}`);
316
+ if ((res.headers.get('cf-mitigated') ?? '').toLowerCase() === 'challenge') hints.push('Cloudflare bot challenge (cf-mitigated: challenge)');
317
+ return hints.length ? ` (${hints.join('; ')})` : '';
318
+ }
319
+
304
320
  /**
305
321
  * Just the upstream's own explanation — no name, no status.
306
322
  *
package/src/server.ts CHANGED
@@ -10,7 +10,7 @@ import pack from './index.js';
10
10
 
11
11
 
12
12
  const server = new Server(
13
- { name: '@pipeworx/mcp-ca-debtwatch', version: '0.1.3' },
13
+ { name: '@pipeworx/mcp-ca-debtwatch', version: '0.1.4' },
14
14
  { capabilities: { tools: {} } },
15
15
  );
16
16