vpndetection-mcp 1.0.0 → 2.0.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 +7 -6
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/tools.d.ts +3 -1
- package/dist/tools.js +78 -18
- package/dist/tools.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
The official [Model Context Protocol](https://modelcontextprotocol.io) server for the [VPNDetection](https://vpndetection.io) API.
|
|
7
7
|
|
|
8
|
-
It gives an AI agent
|
|
8
|
+
It gives an AI agent six read-only tools for anonymity detection: whether an address belongs to a VPN, a residential, datacenter or mobile proxy, a Tor node, a public relay, a hosting provider or a CDN, plus the catalogue of databases your organization is licensed to download.
|
|
9
9
|
|
|
10
10
|
## Getting Started
|
|
11
11
|
|
|
@@ -30,7 +30,7 @@ Requires Node.js 22 or newer.
|
|
|
30
30
|
|
|
31
31
|
### With an API key
|
|
32
32
|
|
|
33
|
-
A key unlocks the provider name, the classification
|
|
33
|
+
A key unlocks the provider name, the classification databases and the proxy families. Put it in the environment:
|
|
34
34
|
|
|
35
35
|
```json
|
|
36
36
|
{
|
|
@@ -52,11 +52,12 @@ A key unlocks the provider name, the classification datasets and the proxy famil
|
|
|
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
|
-
| `list_databases` | The
|
|
56
|
-
| `database_metadata` | A
|
|
57
|
-
| `database_checksum` | The published digests for one
|
|
55
|
+
| `list_databases` | The databases your organization is licensed for. |
|
|
56
|
+
| `database_metadata` | A database's columns, sample rows, row count, build date and file sizes. |
|
|
57
|
+
| `database_checksum` | The published digests for one database file. |
|
|
58
|
+
| `list_downloads` | Your organization's recent download attempts, refusals included. |
|
|
58
59
|
|
|
59
|
-
Every tool is read-only. There is deliberately no download tool: the
|
|
60
|
+
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.
|
|
60
61
|
|
|
61
62
|
## Reading a result
|
|
62
63
|
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { createTools, registerTools, BATCH_LIMIT } from './tools.js';
|
|
1
|
+
export { createTools, registerTools, BATCH_LIMIT, DOWNLOADS_LIMIT } from './tools.js';
|
|
2
2
|
export type { ToolContext, ToolDef } from './tools.js';
|
|
3
3
|
export { coverageOf, batchCoverage, COVERAGE_SCHEMA } from './coverage.js';
|
|
4
4
|
export type { Coverage } from './coverage.js';
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { createTools, registerTools, BATCH_LIMIT } from './tools.js';
|
|
1
|
+
export { createTools, registerTools, BATCH_LIMIT, DOWNLOADS_LIMIT } from './tools.js';
|
|
2
2
|
export { coverageOf, batchCoverage, COVERAGE_SCHEMA } from './coverage.js';
|
|
3
3
|
export { LOOKUP_MEMBERS, LOOKUP_GATED_MEMBERS, SPEC_VERSION } from './schema.gen.js';
|
|
4
4
|
//# 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":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEtF,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAE3E,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/tools.d.ts
CHANGED
|
@@ -3,10 +3,12 @@ import type { CallToolResult, Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
|
3
3
|
import type { VPNDetection } from 'vpndetection';
|
|
4
4
|
/** The most addresses one `lookup_ips` call may carry. */
|
|
5
5
|
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;
|
|
6
8
|
export interface ToolContext {
|
|
7
9
|
client: VPNDetection;
|
|
8
10
|
/**
|
|
9
|
-
* Whether to offer the
|
|
11
|
+
* Whether to offer the database tools. On by default: a key without the
|
|
10
12
|
* `db.download` scope gets a plain refusal from the API, which reads better
|
|
11
13
|
* than a tool that silently does not exist, and deciding otherwise would
|
|
12
14
|
* mean re-validating the key here against a policy `db_dl_api` owns.
|
package/dist/tools.js
CHANGED
|
@@ -4,6 +4,16 @@ import { batchCoverage, COVERAGE_SCHEMA, coverageOf, wireBody } from './coverage
|
|
|
4
4
|
import { DATASET_METADATA_SCHEMA, LICENSED_DATASET_SCHEMA, 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;
|
|
9
|
+
// Both spellings of a database id, stated wherever one is taken. `list_databases`
|
|
10
|
+
// answers a `base` id (what a licence names) and a `versions[].id`; everything
|
|
11
|
+
// else accepts only the versioned one. A model that has just read
|
|
12
|
+
// `base: "cdn_ip"` will otherwise pass it and get a refusal that reads like a
|
|
13
|
+
// bad database rather than a wrong spelling.
|
|
14
|
+
const VERSIONED_ID = 'A VERSIONED database id, from `versions[].id` in `list_databases` - '
|
|
15
|
+
+ '`cdn_ip_v1`, not `cdn_ip`. The unversioned base id is a licence reference and is '
|
|
16
|
+
+ 'not accepted here.';
|
|
7
17
|
/**
|
|
8
18
|
* The tool manifest, and the single place either transport gets it from.
|
|
9
19
|
*
|
|
@@ -130,33 +140,46 @@ function databaseTools(ctx) {
|
|
|
130
140
|
{
|
|
131
141
|
tool: {
|
|
132
142
|
name: 'list_databases',
|
|
133
|
-
title: 'List
|
|
134
|
-
description: 'The
|
|
135
|
-
+ 'with the licence type and term. A
|
|
136
|
-
+ '
|
|
143
|
+
title: 'List databases',
|
|
144
|
+
description: 'The database catalog as this API key\'s organization may see it, '
|
|
145
|
+
+ 'one entry per database FAMILY, with the licence type and term. A database '
|
|
146
|
+
+ 'absent from this list is one the organization does not hold. Each entry has '
|
|
147
|
+
+ 'a `base` id, which is what the licence names, and a `versions` array whose '
|
|
148
|
+
+ '`id` is what the other database tools take - pass `versions[].id` '
|
|
149
|
+
+ '(`cdn_ip_v1`), never the `base` (`cdn_ip`). Ask again rather than holding '
|
|
150
|
+
+ 'on to this: it is answered per key and is not the same for everyone.',
|
|
137
151
|
inputSchema: { type: 'object', additionalProperties: false },
|
|
138
152
|
outputSchema: objectSchema({
|
|
139
|
-
|
|
140
|
-
}, ['
|
|
141
|
-
annotations: {
|
|
153
|
+
databases: { type: 'array', items: LICENSED_DATASET_SCHEMA },
|
|
154
|
+
}, ['databases']),
|
|
155
|
+
annotations: {
|
|
156
|
+
readOnlyHint: true,
|
|
157
|
+
idempotentHint: true,
|
|
158
|
+
openWorldHint: true,
|
|
159
|
+
},
|
|
142
160
|
},
|
|
143
161
|
handler: async () => {
|
|
144
|
-
return ok({
|
|
162
|
+
return ok({ databases: await ctx.client.database.list() });
|
|
145
163
|
},
|
|
146
164
|
},
|
|
147
165
|
{
|
|
148
166
|
tool: {
|
|
149
167
|
name: 'database_metadata',
|
|
150
|
-
title: 'Describe a
|
|
151
|
-
description: '
|
|
168
|
+
title: 'Describe a database',
|
|
169
|
+
description: 'What is inside one database before you fetch it: the columns in each '
|
|
152
170
|
+ 'published format with their types, a few sample rows, the row count, the '
|
|
153
171
|
+ 'build date and the file sizes. Use this to answer questions about what a '
|
|
154
|
-
+ '
|
|
172
|
+
+ 'database contains without downloading it - the files reach several GB - and '
|
|
173
|
+
+ 'to budget a transfer before starting one.',
|
|
155
174
|
inputSchema: jsonSchema(z.object({
|
|
156
|
-
dataset_id: z.string().describe(
|
|
175
|
+
dataset_id: z.string().describe(VERSIONED_ID),
|
|
157
176
|
})),
|
|
158
177
|
outputSchema: DATASET_METADATA_SCHEMA,
|
|
159
|
-
annotations: {
|
|
178
|
+
annotations: {
|
|
179
|
+
readOnlyHint: true,
|
|
180
|
+
idempotentHint: true,
|
|
181
|
+
openWorldHint: true,
|
|
182
|
+
},
|
|
160
183
|
},
|
|
161
184
|
handler: async (args) => {
|
|
162
185
|
const { dataset_id } = z.object({ dataset_id: z.string() }).parse(args);
|
|
@@ -166,11 +189,12 @@ function databaseTools(ctx) {
|
|
|
166
189
|
{
|
|
167
190
|
tool: {
|
|
168
191
|
name: 'database_checksum',
|
|
169
|
-
title: 'Get a
|
|
170
|
-
description: 'The published digests for one
|
|
171
|
-
+ 'already hold or deciding whether a build has changed since you last
|
|
192
|
+
title: 'Get a database\'s checksums',
|
|
193
|
+
description: 'The published digests for one database file, for verifying a copy '
|
|
194
|
+
+ 'you already hold or deciding whether a build has changed since you last '
|
|
195
|
+
+ 'fetched it.',
|
|
172
196
|
inputSchema: jsonSchema(z.object({
|
|
173
|
-
dataset_id: z.string().describe(
|
|
197
|
+
dataset_id: z.string().describe(VERSIONED_ID),
|
|
174
198
|
format: formats.describe('Which published file to digest.'),
|
|
175
199
|
})),
|
|
176
200
|
outputSchema: {
|
|
@@ -178,7 +202,11 @@ function databaseTools(ctx) {
|
|
|
178
202
|
properties: { checksums: { type: 'object', additionalProperties: true } },
|
|
179
203
|
required: ['checksums'],
|
|
180
204
|
},
|
|
181
|
-
annotations: {
|
|
205
|
+
annotations: {
|
|
206
|
+
readOnlyHint: true,
|
|
207
|
+
idempotentHint: true,
|
|
208
|
+
openWorldHint: true,
|
|
209
|
+
},
|
|
182
210
|
},
|
|
183
211
|
handler: async (args) => {
|
|
184
212
|
const parsed = z.object({
|
|
@@ -189,6 +217,38 @@ function databaseTools(ctx) {
|
|
|
189
217
|
return ok({ checksums: checksums });
|
|
190
218
|
},
|
|
191
219
|
},
|
|
220
|
+
{
|
|
221
|
+
tool: {
|
|
222
|
+
name: 'list_downloads',
|
|
223
|
+
title: 'List recent download attempts',
|
|
224
|
+
description: 'This organization\'s own recent download attempts, newest first, '
|
|
225
|
+
+ 'REFUSALS INCLUDED - a denial carries the `outcome` and `http_status` that '
|
|
226
|
+
+ 'answer "it stopped working", which nothing else here can. Use it to explain '
|
|
227
|
+
+ 'a failing fetch, to confirm a transfer ran, or to check whether a request '
|
|
228
|
+
+ 'was theirs. This is a bounded WINDOW of at most '
|
|
229
|
+
+ `${DOWNLOADS_LIMIT} rows, so a database missing from the answer means it is `
|
|
230
|
+
+ 'not in this window - never that it was never downloaded.',
|
|
231
|
+
inputSchema: jsonSchema(z.object({
|
|
232
|
+
limit: z.number().int().min(1).max(DOWNLOADS_LIMIT).optional().describe(`How many attempts to return, newest first. At most ${DOWNLOADS_LIMIT}; `
|
|
233
|
+
+ 'the API defaults to 50.'),
|
|
234
|
+
})),
|
|
235
|
+
outputSchema: objectSchema({
|
|
236
|
+
downloads: { type: 'array', items: { type: 'object', additionalProperties: true } },
|
|
237
|
+
}, ['downloads']),
|
|
238
|
+
annotations: {
|
|
239
|
+
readOnlyHint: true,
|
|
240
|
+
idempotentHint: false,
|
|
241
|
+
openWorldHint: true,
|
|
242
|
+
},
|
|
243
|
+
},
|
|
244
|
+
handler: async (args) => {
|
|
245
|
+
const { limit } = z.object({
|
|
246
|
+
limit: z.number().int().min(1).max(DOWNLOADS_LIMIT).optional(),
|
|
247
|
+
}).parse(args);
|
|
248
|
+
const downloads = await ctx.client.database.downloads(limit === undefined ? {} : { limit: limit });
|
|
249
|
+
return ok({ downloads: downloads });
|
|
250
|
+
},
|
|
251
|
+
},
|
|
192
252
|
];
|
|
193
253
|
}
|
|
194
254
|
/**
|
package/dist/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,OAAO,EACH,qBAAqB,EAAE,sBAAsB,GAChD,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACrF,OAAO,EACH,uBAAuB,EAAE,uBAAuB,EAAE,oBAAoB,GACzE,MAAM,iBAAiB,CAAC;AAEzB,0DAA0D;AAC1D,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,OAAO,EACH,qBAAqB,EAAE,sBAAsB,GAChD,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACrF,OAAO,EACH,uBAAuB,EAAE,uBAAuB,EAAE,oBAAoB,GACzE,MAAM,iBAAiB,CAAC;AAEzB,0DAA0D;AAC1D,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,CAAC;AAE/B,+FAA+F;AAC/F,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,CAAC;AAEnC,kFAAkF;AAClF,+EAA+E;AAC/E,kEAAkE;AAClE,8EAA8E;AAC9E,6CAA6C;AAC7C,MAAM,YAAY,GAAG,sEAAsE;MACrF,mFAAmF;MACnF,oBAAoB,CAAC;AAkB3B;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,GAAgB;IACxC,MAAM,IAAI,GAAc;QACpB;YACI,IAAI,EAAE;gBACF,IAAI,EAAE,WAAW;gBACjB,KAAK,EAAE,uBAAuB;gBAC9B,WAAW,EAAE,uEAAuE;sBAC9E,2EAA2E;sBAC3E,uEAAuE;sBACvE,wEAAwE;sBACxE,8EAA8E;sBAC9E,oBAAoB;gBAC1B,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;oBAC7B,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;iBACnE,CAAC,CAAC;gBACH,YAAY,EAAE,YAAY,CAAC;oBACvB,MAAM,EAAE,oBAAoB;oBAC5B,QAAQ,EAAE,eAAe;iBAC5B,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;gBAC1B,WAAW,EAAE;oBACT,YAAY,EAAE,IAAI;oBAClB,cAAc,EAAE,IAAI;oBACpB,aAAa,EAAE,IAAI;iBACtB;aACJ;YACD,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC;SACzC;QACD;YACI,IAAI,EAAE;gBACF,IAAI,EAAE,YAAY;gBAClB,KAAK,EAAE,8BAA8B;gBACrC,WAAW,EAAE,kBAAkB,WAAW,0CAA0C;sBAC9E,8EAA8E;sBAC9E,+EAA+E;sBAC/E,wEAAwE;sBACxE,uEAAuE;gBAC7E,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;oBAC7B,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC;yBAC3C,QAAQ,CAAC,sCAAsC,WAAW,GAAG,CAAC;iBACtE,CAAC,CAAC;gBACH,YAAY,EAAE,YAAY,CAAC;oBACvB,OAAO,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,2DAA2D;wBACxE,oBAAoB,EAAE,IAAI;qBAC7B;oBACD,QAAQ,EAAE,eAAe;iBAC5B,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;gBAC3B,WAAW,EAAE;oBACT,YAAY,EAAE,IAAI;oBAClB,cAAc,EAAE,IAAI;oBACpB,aAAa,EAAE,IAAI;iBACtB;aACJ;YACD,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC;SAC1C;KACJ,CAAC;IAEF,IAAI,GAAG,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,6EAA6E;IAC7E,8EAA8E;IAC9E,2EAA2E;IAC3E,wEAAwE;IACxE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,aAAa,CAAC,MAAc,EAAE,IAAe;IACzD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAE1D,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QACxD,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QAC1D,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,iBAAiB,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,MAAM,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,KAAK,CAAC,OAA2B;IACtC,OAAO,KAAK,EAAE,IAAI,EAAE,EAAE;QAClB,IAAI,CAAC;YACD,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;IACL,CAAC,CAAC;AACN,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,GAAgB,EAAE,IAA6B;IACnE,MAAM,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IACnD,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5D,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,GAAgB,EAAE,IAA6B;IACpE,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC;QACrB,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC;KACnD,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEf,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAClD,MAAM,OAAO,GAA4B,EAAE,CAAC;IAC5C,MAAM,MAAM,GAA8B,EAAE,CAAC;IAC7C,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QACrC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC;YAC1E,SAAS;QACb,CAAC;QACD,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAgB,CAAC,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,aAAa,CAAC,GAAgB;IACnC,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1C,OAAO;QACH;YACI,IAAI,EAAE;gBACF,IAAI,EAAE,gBAAgB;gBACtB,KAAK,EAAE,gBAAgB;gBACvB,WAAW,EAAE,mEAAmE;sBAC1E,4EAA4E;sBAC5E,8EAA8E;sBAC9E,6EAA6E;sBAC7E,oEAAoE;sBACpE,4EAA4E;sBAC5E,sEAAsE;gBAC5E,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,oBAAoB,EAAE,KAAK,EAAE;gBAC5D,YAAY,EAAE,YAAY,CAAC;oBACvB,SAAS,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,uBAAuB,EAAE;iBAC/D,EAAE,CAAC,WAAW,CAAC,CAAC;gBACjB,WAAW,EAAE;oBACT,YAAY,EAAE,IAAI;oBAClB,cAAc,EAAE,IAAI;oBACpB,aAAa,EAAE,IAAI;iBACtB;aACJ;YACD,OAAO,EAAE,KAAK,IAAI,EAAE;gBAChB,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC/D,CAAC;SACJ;QACD;YACI,IAAI,EAAE;gBACF,IAAI,EAAE,mBAAmB;gBACzB,KAAK,EAAE,qBAAqB;gBAC5B,WAAW,EAAE,uEAAuE;sBAC9E,2EAA2E;sBAC3E,2EAA2E;sBAC3E,8EAA8E;sBAC9E,2CAA2C;gBACjD,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;oBAC7B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;iBAChD,CAAC,CAAC;gBACH,YAAY,EAAE,uBAAuB;gBACrC,WAAW,EAAE;oBACT,YAAY,EAAE,IAAI;oBAClB,cAAc,EAAE,IAAI;oBACpB,aAAa,EAAE,IAAI;iBACtB;aACJ;YACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACpB,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACxE,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;YAC9D,CAAC;SACJ;QACD;YACI,IAAI,EAAE;gBACF,IAAI,EAAE,mBAAmB;gBACzB,KAAK,EAAE,6BAA6B;gBACpC,WAAW,EAAE,oEAAoE;sBAC3E,0EAA0E;sBAC1E,aAAa;gBACnB,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;oBAC7B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;oBAC7C,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,iCAAiC,CAAC;iBAC9D,CAAC,CAAC;gBACH,YAAY,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,oBAAoB,EAAE,IAAI,EAAE,EAAE;oBACzE,QAAQ,EAAE,CAAC,WAAW,CAAC;iBAC1B;gBACD,WAAW,EAAE;oBACT,YAAY,EAAE,IAAI;oBAClB,cAAc,EAAE,IAAI;oBACpB,aAAa,EAAE,IAAI;iBACtB;aACJ;YACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACpB,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;oBACpB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;oBACtB,MAAM,EAAE,OAAO;iBAClB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACf,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CACjD,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,MAAuB,CAAC,CAAC;gBACvD,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;YACxC,CAAC;SACJ;QACD;YACI,IAAI,EAAE;gBACF,IAAI,EAAE,gBAAgB;gBACtB,KAAK,EAAE,+BAA+B;gBACtC,WAAW,EAAE,mEAAmE;sBAC1E,4EAA4E;sBAC5E,8EAA8E;sBAC9E,4EAA4E;sBAC5E,kDAAkD;sBAClD,GAAG,eAAe,2DAA2D;sBAC7E,0DAA0D;gBAChE,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;oBAC7B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACnE,sDAAsD,eAAe,IAAI;0BACvE,yBAAyB,CAAC;iBACnC,CAAC,CAAC;gBACH,YAAY,EAAE,YAAY,CAAC;oBACvB,SAAS,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,oBAAoB,EAAE,IAAI,EAAE,EAAE;iBACtF,EAAE,CAAC,WAAW,CAAC,CAAC;gBACjB,WAAW,EAAE;oBACT,YAAY,EAAE,IAAI;oBAClB,cAAc,EAAE,KAAK;oBACrB,aAAa,EAAE,IAAI;iBACtB;aACJ;YACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBACpB,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC;oBACvB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,QAAQ,EAAE;iBACjE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACf,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CACjD,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;gBACjD,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;YACxC,CAAC;SACJ;KACJ,CAAC;AACN,CAAC;AAED;;;;;GAKG;AACH,SAAS,EAAE,CAAC,UAAmC;IAC3C,OAAO;QACH,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QACtE,iBAAiB,EAAE,UAAU;KAChC,CAAC;AACN,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,SAAS,CAAC,GAAY;IAC3B,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,KAAK,KAAK,SAAS;QAC9B,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,KAAK,IAAI,EAAE;QACnF,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IACtF,OAAO;QACH,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QAC7E,OAAO,EAAE,IAAI;KAChB,CAAC;AACN,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,aAAa,CAAC,GAAY;IAC/B,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC1C,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,MAAM,CAAC,GAAG,GAAgD,CAAC;IAC3D,IAAI,CAAC,CAAC,IAAI,KAAK,mBAAmB,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC/D,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,OAAO,CAAgB,CAAC;AAC5B,CAAC;AAQD,iFAAiF;AACjF,qEAAqE;AACrE,SAAS,UAAU,CAAC,MAAiB;IACjC,MAAM,GAAG,GAAG,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,CAA4B,CAAC;IAC/E,OAAO,GAAG,CAAC,SAAS,CAAC,CAAC;IACtB,OAAO,EAAE,GAAG,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAyB,CAAC;AAC7D,CAAC;AAED,SAAS,YAAY,CAAC,UAAmC,EAAE,QAAkB;IACzE,OAAO;QACH,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,UAAU;QACtB,QAAQ,EAAE,QAAQ;KACG,CAAC;AAC9B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vpndetection-mcp",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.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": "^1.
|
|
53
|
+
"vpndetection": "^1.9.0",
|
|
54
54
|
"zod": "^4.1.12"
|
|
55
55
|
},
|
|
56
56
|
"devDependencies": {
|