vpndetection-mcp 4.0.0 → 4.2.0

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
@@ -52,6 +52,7 @@ A key unlocks the provider name, the classification databases and the proxy fami
52
52
  |---|---|
53
53
  | `lookup_ip` | Classify one address. |
54
54
  | `lookup_ips` | Classify up to 100 addresses in one call, keyed by address. |
55
+ | `my_account` | What this key is entitled to and what it has spent: plan, field tier, requests so far, allowance, and when it resets. |
55
56
  | `list_databases` | The databases your organization is licensed for. |
56
57
  | `database_metadata` | A database's columns, sample rows, row count, build date and file sizes. |
57
58
  | `database_checksum` | The published digests for one database file. |
@@ -59,6 +60,10 @@ A key unlocks the provider name, the classification databases and the proxy fami
59
60
 
60
61
  Every tool is read-only. There is deliberately no download tool: the databases run to several GB, which is not something an agent should pull into a conversation. Fetch them with the [client libraries](https://github.com/vpndetection-io) or the API instead.
61
62
 
63
+ **There is deliberately no `my_ip` tool, although every client library has one.** Over a hosted transport the address our edge observes belongs to whatever proxied the call - Claude's infrastructure, not the person asking - so the tool would answer confidently and wrongly for the only reading anyone would put on it. `my_account` has no such problem and is the same answer from any transport, because it describes the credential rather than the connection. A test pins the tool's absence so it cannot be added back by accident.
64
+
65
+ Usage counts against the anniversary of the subscription, not the calendar month and not the billing period. A null `hard_limit` means we never stop serving; it is not a limit of zero.
66
+
62
67
  ## Reading a result
63
68
 
64
69
  Each lookup comes back with a `coverage` block beside it:
@@ -1,6 +1,8 @@
1
1
  export declare const LOOKUP_MEMBERS: readonly string[];
2
2
  export declare const LOOKUP_GATED_MEMBERS: readonly string[];
3
3
  export declare const SPEC_VERSION = "2026.09.13";
4
+ /** The most history rows `list_downloads` may ask for. The API clamps to the same. */
5
+ export declare const DOWNLOADS_LIMIT = 200;
4
6
  export interface ObjectSchema {
5
7
  type: 'object';
6
8
  properties?: Record<string, object>;
@@ -36,6 +36,8 @@ export const LOOKUP_GATED_MEMBERS = [
36
36
  'mobproxy',
37
37
  ];
38
38
  export const SPEC_VERSION = '2026.09.13';
39
+ /** The most history rows `list_downloads` may ask for. The API clamps to the same. */
40
+ export const DOWNLOADS_LIMIT = 200;
39
41
  export const LOOKUP_RESULT_SCHEMA = {
40
42
  "type": "object",
41
43
  "description": "The union of every plan's answer. Only `ip` and `is_vpn` are guaranteed;\neach remaining field is present when your plan includes it, and absent\notherwise. A client that must work across plans should treat an absent\nflag as unknown rather than as `false`.\n",
@@ -369,8 +371,9 @@ export const DATABASE_SCHEMA = {
369
371
  },
370
372
  "bytes": {
371
373
  "type": "integer",
374
+ "format": "int64",
372
375
  "nullable": true,
373
- "description": "Size of the published file, or null when it has not been published yet"
376
+ "description": "Size of the published file, or null when it has not been published\nyet. int64 because it is not hypothetical: resproxy_ip_14d's MMDB is\n4.58 GB, so a 32-bit field cannot carry the catalogue and `list`\nthrows for every caller rather than for that one entry.\n"
374
377
  }
375
378
  },
376
379
  "required": [
@@ -470,14 +473,16 @@ export const DATABASE_METADATA_SCHEMA = {
470
473
  "size": {
471
474
  "type": "object",
472
475
  "additionalProperties": {
473
- "type": "integer"
476
+ "type": "integer",
477
+ "format": "int64"
474
478
  },
475
479
  "description": "Bytes per format"
476
480
  },
477
481
  "sample_size": {
478
482
  "type": "object",
479
483
  "additionalProperties": {
480
- "type": "integer"
484
+ "type": "integer",
485
+ "format": "int64"
481
486
  },
482
487
  "description": "Bytes per format of the evaluation sample, where one is published"
483
488
  },
@@ -1 +1 @@
1
- {"version":3,"file":"schema.gen.js","sourceRoot":"","sources":["../src/schema.gen.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAEhF,MAAM,CAAC,MAAM,cAAc,GAAsB;IAC7C,IAAI;IACJ,QAAQ;IACR,YAAY;IACZ,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,aAAa;IACb,YAAY;IACZ,aAAa;IACb,KAAK;IACL,SAAS;IACT,OAAO;IACP,KAAK;IACL,KAAK;IACL,UAAU;IACV,SAAS;IACT,UAAU;CACb,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAsB;IACnD,YAAY;IACZ,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,aAAa;IACb,YAAY;IACZ,aAAa;IACb,KAAK;IACL,SAAS;IACT,OAAO;IACP,KAAK;IACL,KAAK;IACL,UAAU;IACV,SAAS;IACT,UAAU;CACb,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,YAAY,CAAC;AAWzC,MAAM,CAAC,MAAM,oBAAoB,GAAiB;IAC9C,MAAM,EAAE,QAAQ;IAChB,aAAa,EAAE,qQAAqQ;IACpR,UAAU,EAAE;QACR,IAAI;QACJ,QAAQ;KACX;IACD,YAAY,EAAE;QACV,IAAI,EAAE;YACF,MAAM,EAAE,QAAQ;YAChB,aAAa,EAAE,6CAA6C;SAC/D;QACD,QAAQ,EAAE;YACN,MAAM,EAAE,SAAS;YACjB,aAAa,EAAE,iJAAiJ;SACnK;QACD,YAAY,EAAE;YACV,MAAM,EAAE,SAAS;YACjB,aAAa,EAAE,gFAAgF;SAClG;QACD,UAAU,EAAE;YACR,MAAM,EAAE,SAAS;YACjB,aAAa,EAAE,mEAAmE;SACrF;QACD,QAAQ,EAAE;YACN,MAAM,EAAE,SAAS;YACjB,aAAa,EAAE,uDAAuD;SACzE;QACD,QAAQ,EAAE;YACN,MAAM,EAAE,SAAS;YACjB,aAAa,EAAE,0DAA0D;SAC5E;QACD,aAAa,EAAE;YACX,MAAM,EAAE,SAAS;YACjB,aAAa,EAAE,4EAA4E;SAC9F;QACD,YAAY,EAAE;YACV,MAAM,EAAE,SAAS;YACjB,aAAa,EAAE,2EAA2E;SAC7F;QACD,aAAa,EAAE;YACX,MAAM,EAAE,SAAS;YACjB,aAAa,EAAE,uEAAuE;SACzF;QACD,KAAK,EAAE;YACH,MAAM,EAAE,QAAQ;YAChB,aAAa,EAAE,yEAAyE;YACxF,YAAY,EAAE;gBACV,UAAU,EAAE;oBACR,MAAM,EAAE,QAAQ;oBAChB,aAAa,EAAE,iEAAiE;iBACnF;gBACD,WAAW,EAAE;oBACT,MAAM,EAAE,QAAQ;oBAChB,QAAQ,EAAE,MAAM;oBAChB,aAAa,EAAE,uEAAuE;iBACzF;gBACD,YAAY,EAAE;oBACV,MAAM,EAAE,QAAQ;oBAChB,aAAa,EAAE,sDAAsD;iBACxE;gBACD,QAAQ,EAAE;oBACN,MAAM,EAAE,QAAQ;oBAChB,aAAa,EAAE,wbAAwb;iBAC1c;aACJ;SACJ;QACD,SAAS,EAAE;YACP,MAAM,EAAE,QAAQ;YAChB,aAAa,EAAE,6DAA6D;YAC5E,YAAY,EAAE;gBACV,UAAU,EAAE;oBACR,MAAM,EAAE,QAAQ;oBAChB,aAAa,EAAE,8DAA8D;iBAChF;gBACD,YAAY,EAAE;oBACV,MAAM,EAAE,QAAQ;oBAChB,aAAa,EAAE,+CAA+C;iBACjE;gBACD,WAAW,EAAE;oBACT,MAAM,EAAE,QAAQ;oBAChB,QAAQ,EAAE,MAAM;oBAChB,aAAa,EAAE,iEAAiE;iBACnF;aACJ;SACJ;QACD,OAAO,EAAE;YACL,MAAM,EAAE,QAAQ;YAChB,aAAa,EAAE,2DAA2D;YAC1E,YAAY,EAAE;gBACV,UAAU,EAAE;oBACR,MAAM,EAAE,QAAQ;oBAChB,aAAa,EAAE,8DAA8D;iBAChF;gBACD,YAAY,EAAE;oBACV,MAAM,EAAE,QAAQ;oBAChB,aAAa,EAAE,+CAA+C;iBACjE;gBACD,WAAW,EAAE;oBACT,MAAM,EAAE,QAAQ;oBAChB,QAAQ,EAAE,MAAM;oBAChB,aAAa,EAAE,iEAAiE;iBACnF;aACJ;SACJ;QACD,KAAK,EAAE;YACH,MAAM,EAAE,QAAQ;YAChB,aAAa,EAAE,0IAA0I;YACzJ,YAAY,EAAE;gBACV,UAAU,EAAE;oBACR,MAAM,EAAE,QAAQ;oBAChB,aAAa,EAAE,8DAA8D;iBAChF;gBACD,YAAY,EAAE;oBACV,MAAM,EAAE,QAAQ;oBAChB,aAAa,EAAE,+CAA+C;iBACjE;gBACD,WAAW,EAAE;oBACT,MAAM,EAAE,QAAQ;oBAChB,QAAQ,EAAE,MAAM;oBAChB,aAAa,EAAE,iEAAiE;iBACnF;aACJ;SACJ;QACD,KAAK,EAAE;YACH,MAAM,EAAE,QAAQ;YAChB,aAAa,EAAE,yDAAyD;YACxE,YAAY,EAAE;gBACV,UAAU,EAAE;oBACR,MAAM,EAAE,QAAQ;oBAChB,aAAa,EAAE,8DAA8D;iBAChF;gBACD,YAAY,EAAE;oBACV,MAAM,EAAE,QAAQ;oBAChB,aAAa,EAAE,+CAA+C;iBACjE;gBACD,WAAW,EAAE;oBACT,MAAM,EAAE,QAAQ;oBAChB,QAAQ,EAAE,MAAM;oBAChB,aAAa,EAAE,iEAAiE;iBACnF;aACJ;SACJ;QACD,UAAU,EAAE;YACR,MAAM,EAAE,QAAQ;YAChB,aAAa,EAAE,uDAAuD;YACtE,YAAY,EAAE;gBACV,UAAU,EAAE;oBACR,MAAM,EAAE,QAAQ;oBAChB,aAAa,EAAE,2DAA2D;iBAC7E;gBACD,YAAY,EAAE;oBACV,MAAM,EAAE,QAAQ;oBAChB,QAAQ,EAAE,MAAM;oBAChB,aAAa,EAAE,wEAAwE;iBAC1F;gBACD,WAAW,EAAE;oBACT,MAAM,EAAE,QAAQ;oBAChB,QAAQ,EAAE,MAAM;oBAChB,aAAa,EAAE,2EAA2E;iBAC7F;gBACD,MAAM,EAAE;oBACJ,MAAM,EAAE,SAAS;oBACjB,aAAa,EAAE,wEAAwE;iBAC1F;gBACD,eAAe,EAAE;oBACb,MAAM,EAAE,SAAS;oBACjB,aAAa,EAAE,6JAA6J;iBAC/K;gBACD,eAAe,EAAE;oBACb,MAAM,EAAE,SAAS;oBACjB,aAAa,EAAE,4DAA4D;iBAC9E;aACJ;SACJ;QACD,SAAS,EAAE;YACP,MAAM,EAAE,QAAQ;YAChB,aAAa,EAAE,sDAAsD;YACrE,YAAY,EAAE;gBACV,UAAU,EAAE;oBACR,MAAM,EAAE,QAAQ;oBAChB,aAAa,EAAE,2DAA2D;iBAC7E;gBACD,YAAY,EAAE;oBACV,MAAM,EAAE,QAAQ;oBAChB,QAAQ,EAAE,MAAM;oBAChB,aAAa,EAAE,wEAAwE;iBAC1F;gBACD,WAAW,EAAE;oBACT,MAAM,EAAE,QAAQ;oBAChB,QAAQ,EAAE,MAAM;oBAChB,aAAa,EAAE,2EAA2E;iBAC7F;gBACD,MAAM,EAAE;oBACJ,MAAM,EAAE,SAAS;oBACjB,aAAa,EAAE,wEAAwE;iBAC1F;gBACD,eAAe,EAAE;oBACb,MAAM,EAAE,SAAS;oBACjB,aAAa,EAAE,6JAA6J;iBAC/K;gBACD,eAAe,EAAE;oBACb,MAAM,EAAE,SAAS;oBACjB,aAAa,EAAE,4DAA4D;iBAC9E;aACJ;SACJ;QACD,UAAU,EAAE;YACR,MAAM,EAAE,QAAQ;YAChB,aAAa,EAAE,uDAAuD;YACtE,YAAY,EAAE;gBACV,UAAU,EAAE;oBACR,MAAM,EAAE,QAAQ;oBAChB,aAAa,EAAE,2DAA2D;iBAC7E;gBACD,YAAY,EAAE;oBACV,MAAM,EAAE,QAAQ;oBAChB,QAAQ,EAAE,MAAM;oBAChB,aAAa,EAAE,wEAAwE;iBAC1F;gBACD,WAAW,EAAE;oBACT,MAAM,EAAE,QAAQ;oBAChB,QAAQ,EAAE,MAAM;oBAChB,aAAa,EAAE,2EAA2E;iBAC7F;gBACD,MAAM,EAAE;oBACJ,MAAM,EAAE,SAAS;oBACjB,aAAa,EAAE,wEAAwE;iBAC1F;gBACD,eAAe,EAAE;oBACb,MAAM,EAAE,SAAS;oBACjB,aAAa,EAAE,6JAA6J;iBAC/K;gBACD,eAAe,EAAE;oBACb,MAAM,EAAE,SAAS;oBACjB,aAAa,EAAE,4DAA4D;iBAC9E;aACJ;SACJ;KACJ;CACJ,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAiB;IACzC,MAAM,EAAE,QAAQ;IAChB,aAAa,EAAE,qNAAqN;IACpO,YAAY,EAAE;QACV,MAAM,EAAE;YACJ,MAAM,EAAE,QAAQ;YAChB,aAAa,EAAE,uEAAuE;SACzF;QACD,MAAM,EAAE;YACJ,MAAM,EAAE,QAAQ;SACnB;QACD,SAAS,EAAE;YACP,MAAM,EAAE,QAAQ;SACnB;QACD,cAAc,EAAE;YACZ,MAAM,EAAE,QAAQ;YAChB,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE;gBACJ,YAAY;gBACZ,UAAU;gBACV,cAAc;gBACd,IAAI;aACP;YACD,aAAa,EAAE,+IAA+I;SACjK;QACD,QAAQ,EAAE;YACN,MAAM,EAAE,QAAQ;YAChB,QAAQ,EAAE,WAAW;YACrB,UAAU,EAAE,IAAI;SACnB;QACD,SAAS,EAAE;YACP,MAAM,EAAE,QAAQ;YAChB,QAAQ,EAAE,WAAW;YACrB,UAAU,EAAE,IAAI;YAChB,aAAa,EAAE,uMAAuM;SACzN;QACD,WAAW,EAAE;YACT,MAAM,EAAE,QAAQ;YAChB,QAAQ,EAAE,WAAW;YACrB,UAAU,EAAE,IAAI;YAChB,aAAa,EAAE,qJAAqJ;SACvK;QACD,eAAe,EAAE;YACb,MAAM,EAAE,QAAQ;YAChB,QAAQ,EAAE,WAAW;YACrB,UAAU,EAAE,IAAI;YAChB,aAAa,EAAE,gKAAgK;SAClL;QACD,SAAS,EAAE;YACP,MAAM,EAAE,SAAS;YACjB,aAAa,EAAE,2DAA2D;SAC7E;QACD,UAAU,EAAE;YACR,MAAM,EAAE,QAAQ;YAChB,aAAa,EAAE,oLAAoL;YACnM,MAAM,EAAE;gBACJ,SAAS;gBACT,UAAU;gBACV,YAAY;aACf;SACJ;QACD,UAAU,EAAE;YACR,MAAM,EAAE,OAAO;YACf,aAAa,EAAE,4GAA4G;YAC3H,OAAO,EAAE;gBACL,MAAM,EAAE,QAAQ;gBAChB,YAAY,EAAE;oBACV,IAAI,EAAE;wBACF,MAAM,EAAE,QAAQ;wBAChB,aAAa,EAAE,qEAAqE;qBACvF;oBACD,SAAS,EAAE;wBACP,MAAM,EAAE,SAAS;qBACpB;oBACD,SAAS,EAAE;wBACP,MAAM,EAAE,QAAQ;qBACnB;oBACD,SAAS,EAAE;wBACP,MAAM,EAAE,OAAO;wBACf,OAAO,EAAE;4BACL,MAAM,EAAE,QAAQ;4BAChB,YAAY,EAAE;gCACV,QAAQ,EAAE;oCACN,MAAM,EAAE,QAAQ;oCAChB,aAAa,EAAE,mDAAmD;oCAClE,MAAM,EAAE;wCACJ,OAAO;wCACP,MAAM;qCACT;iCACJ;gCACD,OAAO,EAAE;oCACL,MAAM,EAAE,SAAS;oCACjB,UAAU,EAAE,IAAI;oCAChB,aAAa,EAAE,wEAAwE;iCAC1F;6BACJ;4BACD,UAAU,EAAE;gCACR,QAAQ;gCACR,OAAO;6BACV;yBACJ;qBACJ;oBACD,gBAAgB,EAAE;wBACd,MAAM,EAAE,OAAO;wBACf,aAAa,EAAE,2DAA2D;wBAC1E,OAAO,EAAE;4BACL,MAAM,EAAE,QAAQ;4BAChB,aAAa,EAAE,mDAAmD;4BAClE,MAAM,EAAE;gCACJ,OAAO;gCACP,MAAM;6BACT;yBACJ;qBACJ;iBACJ;gBACD,UAAU,EAAE;oBACR,IAAI;oBACJ,SAAS;oBACT,SAAS;iBACZ;aACJ;SACJ;KACJ;IACD,UAAU,EAAE;QACR,MAAM;QACN,MAAM;QACN,SAAS;QACT,cAAc;QACd,QAAQ;QACR,SAAS;QACT,WAAW;QACX,eAAe;QACf,SAAS;QACT,UAAU;QACV,UAAU;KACb;CACJ,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAiB;IAClD,MAAM,EAAE,QAAQ;IAChB,YAAY,EAAE;QACV,IAAI,EAAE;YACF,MAAM,EAAE,QAAQ;SACnB;QACD,aAAa,EAAE;YACX,MAAM,EAAE,QAAQ;YAChB,aAAa,EAAE,oCAAoC;SACtD;QACD,SAAS,EAAE;YACP,MAAM,EAAE,QAAQ;YAChB,QAAQ,EAAE,MAAM;SACnB;QACD,SAAS,EAAE;YACP,MAAM,EAAE,SAAS;YACjB,aAAa,EAAE,gCAAgC;SAClD;QACD,QAAQ,EAAE;YACN,MAAM,EAAE,QAAQ;YAChB,sBAAsB,EAAE;gBACpB,MAAM,EAAE,OAAO;gBACf,OAAO,EAAE;oBACL,MAAM,EAAE,QAAQ;oBAChB,YAAY,EAAE;wBACV,MAAM,EAAE;4BACJ,MAAM,EAAE,QAAQ;yBACnB;wBACD,MAAM,EAAE;4BACJ,MAAM,EAAE,QAAQ;yBACnB;wBACD,aAAa,EAAE;4BACX,MAAM,EAAE,QAAQ;yBACnB;qBACJ;oBACD,UAAU,EAAE;wBACR,MAAM;wBACN,MAAM;qBACT;iBACJ;aACJ;YACD,aAAa,EAAE,0BAA0B;SAC5C;QACD,QAAQ,EAAE;YACN,MAAM,EAAE,QAAQ;YAChB,sBAAsB,EAAE;gBACpB,MAAM,EAAE,OAAO;gBACf,OAAO,EAAE;oBACL,MAAM,EAAE,QAAQ;iBACnB;aACJ;YACD,aAAa,EAAE,kCAAkC;SACpD;QACD,MAAM,EAAE;YACJ,MAAM,EAAE,QAAQ;YAChB,sBAAsB,EAAE;gBACpB,MAAM,EAAE,SAAS;aACpB;YACD,aAAa,EAAE,kBAAkB;SACpC;QACD,aAAa,EAAE;YACX,MAAM,EAAE,QAAQ;YAChB,sBAAsB,EAAE;gBACpB,MAAM,EAAE,SAAS;aACpB;YACD,aAAa,EAAE,mEAAmE;SACrF;QACD,gBAAgB,EAAE;YACd,MAAM,EAAE,SAAS;YACjB,aAAa,EAAE,oCAAoC;SACtD;KACJ;IACD,UAAU,EAAE;QACR,IAAI;QACJ,SAAS;QACT,SAAS;QACT,QAAQ;KACX;CACJ,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAiB;IAC7C,MAAM,EAAE,QAAQ;IAChB,aAAa,EAAE,8CAA8C;IAC7D,YAAY,EAAE;QACV,KAAK,EAAE;YACH,MAAM,EAAE,QAAQ;SACnB;QACD,MAAM,EAAE;YACJ,MAAM,EAAE,QAAQ;SACnB;QACD,QAAQ,EAAE;YACN,MAAM,EAAE,QAAQ;SACnB;QACD,QAAQ,EAAE;YACN,MAAM,EAAE,QAAQ;SACnB;KACJ;IACD,UAAU,EAAE;QACR,KAAK;QACL,MAAM;QACN,QAAQ;QACR,QAAQ;KACX;CACJ,CAAC"}
1
+ {"version":3,"file":"schema.gen.js","sourceRoot":"","sources":["../src/schema.gen.ts"],"names":[],"mappings":"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"}
package/dist/tools.d.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  import type { Server } from '@modelcontextprotocol/sdk/server/index.js';
2
2
  import type { CallToolResult, Tool } from '@modelcontextprotocol/sdk/types.js';
3
3
  import type { VPNDetection } from 'vpndetection';
4
+ import { DOWNLOADS_LIMIT } from './schema.gen.js';
4
5
  /** The most addresses one `lookup_ips` call may carry. */
5
6
  export declare const BATCH_LIMIT = 100;
6
- /** The most history rows one `list_downloads` call may ask for. The API clamps to the same. */
7
- export declare const DOWNLOADS_LIMIT = 200;
7
+ export { DOWNLOADS_LIMIT };
8
8
  export interface ToolContext {
9
9
  client: VPNDetection;
10
10
  /**
package/dist/tools.js CHANGED
@@ -1,11 +1,10 @@
1
1
  import { z } from 'zod';
2
2
  import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
3
3
  import { batchCoverage, COVERAGE_SCHEMA, coverageOf, wireBody } from './coverage.js';
4
- import { DATABASE_METADATA_SCHEMA, DATABASE_SCHEMA, DB_CHECKSUMS_SCHEMA, LOOKUP_RESULT_SCHEMA, } from './schema.gen.js';
4
+ import { DATABASE_METADATA_SCHEMA, DATABASE_SCHEMA, DB_CHECKSUMS_SCHEMA, DOWNLOADS_LIMIT, LOOKUP_RESULT_SCHEMA, } from './schema.gen.js';
5
5
  /** The most addresses one `lookup_ips` call may carry. */
6
6
  export const BATCH_LIMIT = 100;
7
- /** The most history rows one `list_downloads` call may ask for. The API clamps to the same. */
8
- export const DOWNLOADS_LIMIT = 200;
7
+ export { DOWNLOADS_LIMIT };
9
8
  // Both spellings of a database id, stated wherever one is taken. `list_databases`
10
9
  // answers a `base` id (what a licence names) and a `versions[].id`; everything
11
10
  // else accepts only the versioned one. A model that has just read
@@ -14,6 +13,29 @@ export const DOWNLOADS_LIMIT = 200;
14
13
  const VERSIONED_ID = 'A VERSIONED database id, from `versions[].id` in `list_databases` - '
15
14
  + '`cdn_ip_v1`, not `cdn_ip`. The unversioned base id is a licence reference and is '
16
15
  + 'not accepted here.';
16
+ const FORMATS = z.enum(['csvgz', 'mmdb']);
17
+ // Each tool's arguments, declared ONCE. `jsonSchema()` publishes the object and
18
+ // the handler parses with the same one, so the cap a client is shown is the cap
19
+ // it meets. Two lookalike declarations - a schema for the manifest and another
20
+ // in the handler - is how an advertised bound and an enforced bound drift.
21
+ const LOOKUP_INPUT = z.object({
22
+ ip: z.string().describe('The IPv4 or IPv6 address to classify.'),
23
+ });
24
+ const LOOKUP_BATCH_INPUT = z.object({
25
+ ips: z.array(z.string()).min(1).max(BATCH_LIMIT)
26
+ .describe(`The addresses to classify, at most ${BATCH_LIMIT}.`),
27
+ });
28
+ const METADATA_INPUT = z.object({
29
+ dataset_id: z.string().describe(VERSIONED_ID),
30
+ });
31
+ const CHECKSUM_INPUT = z.object({
32
+ dataset_id: z.string().describe(VERSIONED_ID),
33
+ format: FORMATS.describe('Which published file to digest.'),
34
+ });
35
+ const DOWNLOADS_INPUT = z.object({
36
+ limit: z.number().int().min(1).max(DOWNLOADS_LIMIT).optional().describe(`How many attempts to return, newest first. At most ${DOWNLOADS_LIMIT}; `
37
+ + 'the API defaults to 50.'),
38
+ });
17
39
  /**
18
40
  * The tool manifest, and the single place either transport gets it from.
19
41
  *
@@ -32,9 +54,7 @@ export function createTools(ctx) {
32
54
  + 'Private and reserved addresses are answered locally and cost nothing. '
33
55
  + 'Always read `coverage.note` before concluding anything from a field that is '
34
56
  + 'not in the result.',
35
- inputSchema: jsonSchema(z.object({
36
- ip: z.string().describe('The IPv4 or IPv6 address to classify.'),
37
- })),
57
+ inputSchema: jsonSchema(LOOKUP_INPUT),
38
58
  outputSchema: objectSchema({
39
59
  result: LOOKUP_RESULT_SCHEMA,
40
60
  coverage: COVERAGE_SCHEMA,
@@ -56,10 +76,7 @@ export function createTools(ctx) {
56
76
  + 'mattering. Prefer this over repeated `lookup_ip` calls when you already have '
57
77
  + 'the list, for example when triaging a log file. An address that fails '
58
78
  + 'carries its error in place of a result rather than failing the batch.',
59
- inputSchema: jsonSchema(z.object({
60
- ips: z.array(z.string()).min(1).max(BATCH_LIMIT)
61
- .describe(`The addresses to classify, at most ${BATCH_LIMIT}.`),
62
- })),
79
+ inputSchema: jsonSchema(LOOKUP_BATCH_INPUT),
63
80
  outputSchema: objectSchema({
64
81
  results: {
65
82
  type: 'object',
@@ -77,6 +94,7 @@ export function createTools(ctx) {
77
94
  handler: (args) => lookupIps(ctx, args),
78
95
  },
79
96
  ];
97
+ defs.push(accountTool(ctx));
80
98
  if (ctx.database !== false) {
81
99
  defs.push(...databaseTools(ctx));
82
100
  }
@@ -111,14 +129,12 @@ function guard(handler) {
111
129
  };
112
130
  }
113
131
  async function lookupIp(ctx, args) {
114
- const { ip } = z.object({ ip: z.string() }).parse(args);
132
+ const { ip } = LOOKUP_INPUT.parse(args);
115
133
  const body = wireBody(await ctx.client.lookup(ip));
116
134
  return ok({ result: body, coverage: coverageOf(body) });
117
135
  }
118
136
  async function lookupIps(ctx, args) {
119
- const { ips } = z.object({
120
- ips: z.array(z.string()).min(1).max(BATCH_LIMIT),
121
- }).parse(args);
137
+ const { ips } = LOOKUP_BATCH_INPUT.parse(args);
122
138
  const answers = await ctx.client.lookupBatch(ips);
123
139
  const results = {};
124
140
  const served = [];
@@ -134,8 +150,46 @@ async function lookupIps(ctx, args) {
134
150
  }
135
151
  return ok({ results: results, coverage: batchCoverage(served) });
136
152
  }
153
+ /**
154
+ * What the presented key is entitled to, and what it has spent.
155
+ *
156
+ * There is deliberately NO `my_ip` counterpart. The SDKs have one, but over a
157
+ * HOSTED transport the address our edge observes belongs to whatever proxied
158
+ * the call - Claude's infrastructure, not the person asking - so the tool would
159
+ * answer confidently and wrongly for the reading a model would put on it. The
160
+ * account is the same answer whoever forwards the request, because it describes
161
+ * the credential rather than the connection.
162
+ */
163
+ function accountTool(ctx) {
164
+ return {
165
+ tool: {
166
+ name: 'my_account',
167
+ title: 'Plan and usage for this key',
168
+ description: 'What this API key is entitled to and how much of it has been used: the '
169
+ + 'plan, the field tier that decides how much of a lookup answer comes back, the '
170
+ + 'requests counted so far, the allowance, and when it resets. Use it to explain '
171
+ + 'why a field is missing from a lookup, or before a large batch. Usage counts '
172
+ + 'against the anniversary of the subscription rather than the calendar month, '
173
+ + 'and can lag a few seconds behind. A null `hard_limit` means we never stop '
174
+ + 'serving - it is NOT a limit of zero.',
175
+ inputSchema: { type: 'object', additionalProperties: false },
176
+ outputSchema: objectSchema({
177
+ account: { type: 'object', additionalProperties: true },
178
+ }, ['account']),
179
+ annotations: {
180
+ readOnlyHint: true,
181
+ // Not idempotent: the number it reports moves with every other
182
+ // call, which is the whole point of asking.
183
+ idempotentHint: false,
184
+ openWorldHint: true,
185
+ },
186
+ },
187
+ handler: async () => {
188
+ return ok({ account: await ctx.client.myAccount() });
189
+ },
190
+ };
191
+ }
137
192
  function databaseTools(ctx) {
138
- const formats = z.enum(['csvgz', 'mmdb']);
139
193
  return [
140
194
  {
141
195
  tool: {
@@ -171,9 +225,7 @@ function databaseTools(ctx) {
171
225
  + 'build date and the file sizes. Use this to answer questions about what a '
172
226
  + 'database contains without downloading it - the files reach several GB - and '
173
227
  + 'to budget a transfer before starting one.',
174
- inputSchema: jsonSchema(z.object({
175
- dataset_id: z.string().describe(VERSIONED_ID),
176
- })),
228
+ inputSchema: jsonSchema(METADATA_INPUT),
177
229
  outputSchema: DATABASE_METADATA_SCHEMA,
178
230
  annotations: {
179
231
  readOnlyHint: true,
@@ -182,7 +234,7 @@ function databaseTools(ctx) {
182
234
  },
183
235
  },
184
236
  handler: async (args) => {
185
- const { dataset_id } = z.object({ dataset_id: z.string() }).parse(args);
237
+ const { dataset_id } = METADATA_INPUT.parse(args);
186
238
  return ok(await ctx.client.database.metadata(dataset_id));
187
239
  },
188
240
  },
@@ -193,10 +245,7 @@ function databaseTools(ctx) {
193
245
  description: 'The published digests for one database file, for verifying a copy '
194
246
  + 'you already hold or deciding whether a build has changed since you last '
195
247
  + 'fetched it.',
196
- inputSchema: jsonSchema(z.object({
197
- dataset_id: z.string().describe(VERSIONED_ID),
198
- format: formats.describe('Which published file to digest.'),
199
- })),
248
+ inputSchema: jsonSchema(CHECKSUM_INPUT),
200
249
  outputSchema: objectSchema({ checksums: DB_CHECKSUMS_SCHEMA }, ['checksums']),
201
250
  annotations: {
202
251
  readOnlyHint: true,
@@ -205,10 +254,7 @@ function databaseTools(ctx) {
205
254
  },
206
255
  },
207
256
  handler: async (args) => {
208
- const parsed = z.object({
209
- dataset_id: z.string(),
210
- format: formats,
211
- }).parse(args);
257
+ const parsed = CHECKSUM_INPUT.parse(args);
212
258
  const checksums = await ctx.client.database.checksums(parsed.dataset_id, parsed.format);
213
259
  return ok({ checksums: checksums });
214
260
  },
@@ -224,10 +270,7 @@ function databaseTools(ctx) {
224
270
  + 'was theirs. This is a bounded WINDOW of at most '
225
271
  + `${DOWNLOADS_LIMIT} rows, so a database missing from the answer means it is `
226
272
  + 'not in this window - never that it was never downloaded.',
227
- inputSchema: jsonSchema(z.object({
228
- limit: z.number().int().min(1).max(DOWNLOADS_LIMIT).optional().describe(`How many attempts to return, newest first. At most ${DOWNLOADS_LIMIT}; `
229
- + 'the API defaults to 50.'),
230
- })),
273
+ inputSchema: jsonSchema(DOWNLOADS_INPUT),
231
274
  outputSchema: objectSchema({
232
275
  downloads: { type: 'array', items: { type: 'object', additionalProperties: true } },
233
276
  }, ['downloads']),
@@ -238,9 +281,7 @@ function databaseTools(ctx) {
238
281
  },
239
282
  },
240
283
  handler: async (args) => {
241
- const { limit } = z.object({
242
- limit: z.number().int().min(1).max(DOWNLOADS_LIMIT).optional(),
243
- }).parse(args);
284
+ const { limit } = DOWNLOADS_INPUT.parse(args);
244
285
  const downloads = await ctx.client.database.downloads(limit === undefined ? {} : { limit: limit });
245
286
  return ok({ downloads: downloads });
246
287
  },
@@ -268,15 +309,31 @@ function ok(structured) {
268
309
  * act on. The text block is what it reads instead.
269
310
  */
270
311
  function toolError(err) {
271
- const known = asClientError(err);
272
- const detail = known !== undefined
273
- ? { kind: known.kind, message: known.message, retryable: known.retryable === true }
274
- : { kind: 'internal', message: err instanceof Error ? err.message : String(err) };
275
312
  return {
276
- content: [{ type: 'text', text: JSON.stringify({ error: detail }, null, 2) }],
313
+ content: [{ type: 'text', text: JSON.stringify({ error: errorDetail(err) }, null, 2) }],
277
314
  isError: true,
278
315
  };
279
316
  }
317
+ function errorDetail(err) {
318
+ const known = asClientError(err);
319
+ if (known !== undefined) {
320
+ return { kind: known.kind, message: known.message, retryable: known.retryable === true };
321
+ }
322
+ const rejected = asZodError(err);
323
+ if (rejected !== undefined) {
324
+ // The MODEL's own mistake, and the one failure it can fix unaided - so
325
+ // it must not arrive as `internal`, which reads as "the server broke"
326
+ // and invites an identical retry. zod's formatter names the field and
327
+ // what was expected; the raw `issues` array is JSON a model has to
328
+ // decode before it can act on.
329
+ return {
330
+ kind: 'invalid_argument',
331
+ message: z.prettifyError(rejected),
332
+ retryable: false,
333
+ };
334
+ }
335
+ return { kind: 'internal', message: err instanceof Error ? err.message : String(err) };
336
+ }
280
337
  /**
281
338
  * Recognises a `VPNDetectionError` by SHAPE, not by `instanceof`.
282
339
  *
@@ -297,6 +354,22 @@ function asClientError(err) {
297
354
  }
298
355
  return e;
299
356
  }
357
+ /**
358
+ * Recognises a `ZodError` by SHAPE, for the same reason `asClientError` does.
359
+ *
360
+ * zod resolves per package here, so `instanceof` would miss a copy thrown by a
361
+ * different one and fall back to exactly the `internal` this exists to replace.
362
+ */
363
+ function asZodError(err) {
364
+ if (err === null || typeof err !== 'object') {
365
+ return undefined;
366
+ }
367
+ const e = err;
368
+ if (e.name !== 'ZodError' || !Array.isArray(e.issues)) {
369
+ return undefined;
370
+ }
371
+ return err;
372
+ }
300
373
  // One zod declaration yields both the published schema and the runtime parse, so
301
374
  // a cap advertised to a client is the same cap the handler enforces.
302
375
  function jsonSchema(schema) {
package/dist/tools.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vpndetection-mcp",
3
- "version": "4.0.0",
3
+ "version": "4.2.0",
4
4
  "description": "Official MCP server for the VPNDetection API. Gives an LLM agent VPN, proxy, Tor, hosting and CDN detection for any IP address.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -50,7 +50,7 @@
50
50
  },
51
51
  "dependencies": {
52
52
  "@modelcontextprotocol/sdk": "^1.20.2",
53
- "vpndetection": "^4.0.0",
53
+ "vpndetection": "^4.1.0",
54
54
  "zod": "^4.1.12"
55
55
  },
56
56
  "devDependencies": {