@trustlists/mcp 0.1.0 → 0.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/NOTICE +3 -3
- package/README.md +14 -7
- package/dist/api/client.d.ts +39 -18
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/client.js +156 -60
- package/dist/api/client.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -4
- package/dist/index.js.map +1 -1
- package/dist/tools/audit-dependencies.d.ts +4 -4
- package/dist/tools/audit-dependencies.d.ts.map +1 -1
- package/dist/tools/audit-dependencies.js +10 -7
- package/dist/tools/audit-dependencies.js.map +1 -1
- package/dist/tools/browse.d.ts +84 -0
- package/dist/tools/browse.d.ts.map +1 -0
- package/dist/tools/browse.js +102 -0
- package/dist/tools/browse.js.map +1 -0
- package/dist/tools/lookup.d.ts +11 -4
- package/dist/tools/lookup.d.ts.map +1 -1
- package/dist/tools/lookup.js +32 -17
- package/dist/tools/lookup.js.map +1 -1
- package/dist/tools/search.d.ts +12 -5
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +20 -13
- package/dist/tools/search.js.map +1 -1
- package/package.json +4 -4
package/NOTICE
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
Copyright 2026
|
|
1
|
+
trustlists_ Plugin
|
|
2
|
+
Copyright 2026 trustlists
|
|
3
3
|
|
|
4
|
-
This product includes software developed by
|
|
4
|
+
This product includes software developed by trustlists
|
|
5
5
|
(https://trustlists.org).
|
|
6
6
|
|
|
7
7
|
Licensed under the Apache License, Version 2.0. See LICENSE for details.
|
package/README.md
CHANGED
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
# @trustlists/mcp
|
|
2
2
|
|
|
3
|
-
> MCP server that gives AI assistants access to the
|
|
3
|
+
> MCP server that gives AI assistants access to the public trustlists directory.
|
|
4
4
|
|
|
5
|
-
This
|
|
5
|
+
This npm package powers the [trustlists_ plugin](https://github.com/trustlists/trustlists-plugin)
|
|
6
|
+
for Cursor, Claude Code, and other Model Context Protocol clients.
|
|
6
7
|
|
|
7
8
|
## Installation
|
|
8
9
|
|
|
9
|
-
You don't install this package directly
|
|
10
|
+
You don't install this package directly. It is spawned by your MCP-aware AI client.
|
|
10
11
|
|
|
11
12
|
### Cursor
|
|
12
13
|
|
|
13
|
-
The
|
|
14
|
+
The trustlists_ plugin handles installation. Or add it manually to
|
|
15
|
+
`~/.cursor/mcp.json`:
|
|
14
16
|
|
|
15
17
|
```json
|
|
16
18
|
{
|
|
@@ -42,12 +44,16 @@ Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS)
|
|
|
42
44
|
|
|
43
45
|
| Tool | Description |
|
|
44
46
|
|------|-------------|
|
|
45
|
-
| `trustlists_search` | Search
|
|
47
|
+
| `trustlists_search` | Search thousands of trust centers by name or domain |
|
|
46
48
|
| `trustlists_lookup` | Look up a single vendor by exact domain |
|
|
47
|
-
| `
|
|
49
|
+
| `trustlists_browse` | Filter by platform, listed framework, or CSA STAR level |
|
|
50
|
+
| `trustlists_audit_dependencies` | Map project manifests to public vendor trust centers |
|
|
48
51
|
|
|
49
52
|
All tools are free. No authentication required.
|
|
50
53
|
|
|
54
|
+
Directory labels show what a public record lists. They do not independently
|
|
55
|
+
prove certification scope, validity, legal compliance, or security quality.
|
|
56
|
+
|
|
51
57
|
## Supported manifest formats (audit tool)
|
|
52
58
|
|
|
53
59
|
- `package.json` (npm/yarn/pnpm)
|
|
@@ -63,5 +69,6 @@ Apache 2.0. See [LICENSE](LICENSE) and [NOTICE](NOTICE).
|
|
|
63
69
|
|
|
64
70
|
## Links
|
|
65
71
|
|
|
72
|
+
- [MCP overview and setup](https://trustlists.org/mcp/)
|
|
66
73
|
- [Plugin source](https://github.com/trustlists/trustlists-plugin)
|
|
67
|
-
- [
|
|
74
|
+
- [trustlists directory](https://trustlists.org)
|
package/dist/api/client.d.ts
CHANGED
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Public trustlists registry client.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* The MCP used to send lookup and search requests through app.trustlists.org.
|
|
5
|
+
* Both endpoints fetched the public directory again on the server. If Vercel's
|
|
6
|
+
* security checkpoint challenged that fetch, the app turned the 429 into a 500
|
|
7
|
+
* and both core MCP tools stopped working.
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
9
|
+
* The registry is small enough to fetch once and query locally. We prefer the
|
|
10
|
+
* public site and fail over to the open GitHub data mirror, which removes the
|
|
11
|
+
* app server from the free lookup path and keeps the MCP useful when either
|
|
12
|
+
* public host has a transient problem.
|
|
12
13
|
*/
|
|
13
14
|
export declare const TRUSTLISTS_REGISTRY_URL = "https://trustlists.org/api/trust-centers.json";
|
|
14
|
-
export declare const
|
|
15
|
-
export declare const
|
|
15
|
+
export declare const TRUSTLISTS_REGISTRY_FALLBACK_URL = "https://raw.githubusercontent.com/trustlists/trustlists-data/main/data/trust-centers.json";
|
|
16
|
+
export declare const TRUSTLISTS_DIRECTORY_URL = "https://trustlists.org";
|
|
16
17
|
export interface RegistryEntry {
|
|
17
18
|
name: string;
|
|
18
19
|
website: string;
|
|
@@ -34,35 +35,55 @@ export interface LookupResult {
|
|
|
34
35
|
name?: string;
|
|
35
36
|
trustCenter?: string;
|
|
36
37
|
website?: string;
|
|
38
|
+
entry?: RegistryEntry;
|
|
37
39
|
}
|
|
38
40
|
export interface SearchResult {
|
|
39
|
-
source: 'trustlists'
|
|
41
|
+
source: 'trustlists';
|
|
40
42
|
name: string;
|
|
41
43
|
domain: string | null;
|
|
42
44
|
website: string | null;
|
|
43
45
|
trustCenter?: string;
|
|
44
46
|
logo?: string | null;
|
|
45
47
|
certifications?: string[];
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
48
|
+
platform?: string;
|
|
49
|
+
csaStarLevel?: number;
|
|
50
|
+
lastVerified?: string;
|
|
51
|
+
directoryUrl?: string;
|
|
52
|
+
}
|
|
53
|
+
export interface RegistryInfo {
|
|
54
|
+
source: 'trustlists.org' | 'github';
|
|
55
|
+
sourceUrl: string;
|
|
56
|
+
total: number;
|
|
57
|
+
generated?: string;
|
|
58
|
+
version?: string;
|
|
59
|
+
fetchedAt: string;
|
|
60
|
+
}
|
|
61
|
+
interface RegistrySnapshot {
|
|
62
|
+
entries: RegistryEntry[];
|
|
63
|
+
info: RegistryInfo;
|
|
49
64
|
}
|
|
50
65
|
/**
|
|
51
|
-
* Fetch the full
|
|
66
|
+
* Fetch the full trustlists registry. Cached for 10 minutes per process.
|
|
67
|
+
* Concurrent cache misses share one refresh request.
|
|
52
68
|
*/
|
|
69
|
+
export declare function getRegistrySnapshot(): Promise<RegistrySnapshot>;
|
|
53
70
|
export declare function getRegistry(): Promise<RegistryEntry[]>;
|
|
54
71
|
/**
|
|
55
|
-
* Look up a single vendor by exact domain
|
|
56
|
-
* is cheaper than fetching the full registry.
|
|
72
|
+
* Look up a single vendor by exact domain against the local registry snapshot.
|
|
57
73
|
*/
|
|
58
74
|
export declare function lookupByDomain(domain: string): Promise<LookupResult>;
|
|
59
75
|
/**
|
|
60
|
-
*
|
|
76
|
+
* Search the public registry by company name or website domain.
|
|
61
77
|
*/
|
|
62
78
|
export declare function searchVendors(query: string): Promise<SearchResult[]>;
|
|
79
|
+
export declare function searchRegistry(registry: RegistryEntry[], query: string): SearchResult[];
|
|
80
|
+
export declare function formatSearchResult(entry: RegistryEntry, domain?: string): SearchResult;
|
|
81
|
+
export declare function companyDirectoryUrl(name: string): string;
|
|
82
|
+
export declare function resetRegistryCacheForTests(): void;
|
|
63
83
|
/**
|
|
64
84
|
* Normalize an arbitrary user input into a bare hostname like 'stripe.com'.
|
|
65
85
|
* Handles full URLs, www prefixes, trailing paths, and casing.
|
|
66
86
|
*/
|
|
67
87
|
export declare function normalizeDomain(input: string | undefined | null): string;
|
|
88
|
+
export {};
|
|
68
89
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/api/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAOH,eAAO,MAAM,uBAAuB,kDAAkD,CAAC;AACvF,eAAO,MAAM,gCAAgC,8FACgD,CAAC;AAC9F,eAAO,MAAM,wBAAwB,2BAA2B,CAAC;AAEjE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE;QACR,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QACvB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,YAAY,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,gBAAgB,GAAG,QAAQ,CAAC;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAWD,UAAU,gBAAgB;IACxB,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,IAAI,EAAE,YAAY,CAAC;CACpB;AAmFD;;;GAGG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAYrE;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAE5D;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAe1E;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAI1E;AAED,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,aAAa,EAAE,EACzB,KAAK,EAAE,MAAM,GACZ,YAAY,EAAE,CAkChB;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,aAAa,EACpB,MAAM,SAAiC,GACtC,YAAY,CAad;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQxD;AAED,wBAAgB,0BAA0B,IAAI,IAAI,CAGjD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,CAcxE"}
|
package/dist/api/client.js
CHANGED
|
@@ -1,97 +1,193 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Public trustlists registry client.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* The MCP used to send lookup and search requests through app.trustlists.org.
|
|
5
|
+
* Both endpoints fetched the public directory again on the server. If Vercel's
|
|
6
|
+
* security checkpoint challenged that fetch, the app turned the 429 into a 500
|
|
7
|
+
* and both core MCP tools stopped working.
|
|
8
8
|
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
9
|
+
* The registry is small enough to fetch once and query locally. We prefer the
|
|
10
|
+
* public site and fail over to the open GitHub data mirror, which removes the
|
|
11
|
+
* app server from the free lookup path and keeps the MCP useful when either
|
|
12
|
+
* public host has a transient problem.
|
|
12
13
|
*/
|
|
13
|
-
const PLUGIN_VERSION = '0.
|
|
14
|
-
const USER_AGENT = `
|
|
15
|
-
const SOURCE_HEADER_VALUE = '
|
|
14
|
+
const PLUGIN_VERSION = '0.2.0';
|
|
15
|
+
const USER_AGENT = `trustlists-mcp/${PLUGIN_VERSION}`;
|
|
16
|
+
const SOURCE_HEADER_VALUE = 'mcp';
|
|
17
|
+
const FETCH_TIMEOUT_MS = 15_000;
|
|
16
18
|
export const TRUSTLISTS_REGISTRY_URL = 'https://trustlists.org/api/trust-centers.json';
|
|
17
|
-
export const
|
|
18
|
-
export const
|
|
19
|
+
export const TRUSTLISTS_REGISTRY_FALLBACK_URL = 'https://raw.githubusercontent.com/trustlists/trustlists-data/main/data/trust-centers.json';
|
|
20
|
+
export const TRUSTLISTS_DIRECTORY_URL = 'https://trustlists.org';
|
|
19
21
|
const REGISTRY_CACHE_TTL_MS = 10 * 60 * 1000;
|
|
20
22
|
let registryCache = null;
|
|
21
|
-
|
|
22
|
-
const lookupCache = new Map();
|
|
23
|
-
const SEARCH_CACHE_TTL_MS = 5 * 60 * 1000;
|
|
24
|
-
const searchCache = new Map();
|
|
23
|
+
let registryRefresh = null;
|
|
25
24
|
function defaultHeaders() {
|
|
26
25
|
return {
|
|
27
26
|
'User-Agent': USER_AGENT,
|
|
28
|
-
'X-
|
|
29
|
-
'X-
|
|
27
|
+
'X-Trustlists-Source': SOURCE_HEADER_VALUE,
|
|
28
|
+
'X-Trustlists-Version': PLUGIN_VERSION,
|
|
30
29
|
Accept: 'application/json',
|
|
31
30
|
};
|
|
32
31
|
}
|
|
33
32
|
async function fetchJson(url, init) {
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
...
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
33
|
+
const controller = new AbortController();
|
|
34
|
+
const timeout = setTimeout(() => controller.abort(), FETCH_TIMEOUT_MS);
|
|
35
|
+
try {
|
|
36
|
+
const response = await fetch(url, {
|
|
37
|
+
...init,
|
|
38
|
+
signal: controller.signal,
|
|
39
|
+
headers: {
|
|
40
|
+
...defaultHeaders(),
|
|
41
|
+
...(init?.headers || {}),
|
|
42
|
+
},
|
|
43
|
+
});
|
|
44
|
+
if (!response.ok) {
|
|
45
|
+
const mitigated = response.headers.get('x-vercel-mitigated');
|
|
46
|
+
const detail = mitigated ? ` (${mitigated})` : '';
|
|
47
|
+
throw new Error(`trustlists data request returned ${response.status}${detail}`);
|
|
48
|
+
}
|
|
49
|
+
return (await response.json());
|
|
50
|
+
}
|
|
51
|
+
finally {
|
|
52
|
+
clearTimeout(timeout);
|
|
43
53
|
}
|
|
44
|
-
|
|
54
|
+
}
|
|
55
|
+
async function refreshRegistrySnapshot() {
|
|
56
|
+
const sources = [
|
|
57
|
+
{ source: 'trustlists.org', url: TRUSTLISTS_REGISTRY_URL },
|
|
58
|
+
{ source: 'github', url: TRUSTLISTS_REGISTRY_FALLBACK_URL },
|
|
59
|
+
];
|
|
60
|
+
const failures = [];
|
|
61
|
+
for (const candidate of sources) {
|
|
62
|
+
try {
|
|
63
|
+
const json = await fetchJson(candidate.url);
|
|
64
|
+
const entries = Array.isArray(json?.data) ? json.data : [];
|
|
65
|
+
if (entries.length === 0) {
|
|
66
|
+
throw new Error('registry was empty');
|
|
67
|
+
}
|
|
68
|
+
const snapshot = {
|
|
69
|
+
entries,
|
|
70
|
+
info: {
|
|
71
|
+
source: candidate.source,
|
|
72
|
+
sourceUrl: candidate.url,
|
|
73
|
+
total: Number(json?.meta?.total) || entries.length,
|
|
74
|
+
generated: json?.meta?.generated,
|
|
75
|
+
version: json?.meta?.version,
|
|
76
|
+
fetchedAt: new Date().toISOString(),
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
registryCache = {
|
|
80
|
+
value: snapshot,
|
|
81
|
+
expiresAt: Date.now() + REGISTRY_CACHE_TTL_MS,
|
|
82
|
+
};
|
|
83
|
+
return snapshot;
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
failures.push(`${candidate.source}: ${error instanceof Error ? error.message : String(error)}`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
throw new Error(`Could not load the public trustlists registry. ${failures.join('; ')}`);
|
|
45
90
|
}
|
|
46
91
|
/**
|
|
47
|
-
* Fetch the full
|
|
92
|
+
* Fetch the full trustlists registry. Cached for 10 minutes per process.
|
|
93
|
+
* Concurrent cache misses share one refresh request.
|
|
48
94
|
*/
|
|
49
|
-
export async function
|
|
50
|
-
|
|
51
|
-
if (registryCache && registryCache.expiresAt > now) {
|
|
95
|
+
export async function getRegistrySnapshot() {
|
|
96
|
+
if (registryCache && registryCache.expiresAt > Date.now()) {
|
|
52
97
|
return registryCache.value;
|
|
53
98
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
99
|
+
if (!registryRefresh) {
|
|
100
|
+
registryRefresh = refreshRegistrySnapshot().finally(() => {
|
|
101
|
+
registryRefresh = null;
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
return registryRefresh;
|
|
105
|
+
}
|
|
106
|
+
export async function getRegistry() {
|
|
107
|
+
return (await getRegistrySnapshot()).entries;
|
|
58
108
|
}
|
|
59
109
|
/**
|
|
60
|
-
* Look up a single vendor by exact domain
|
|
61
|
-
* is cheaper than fetching the full registry.
|
|
110
|
+
* Look up a single vendor by exact domain against the local registry snapshot.
|
|
62
111
|
*/
|
|
63
112
|
export async function lookupByDomain(domain) {
|
|
64
113
|
const normalized = normalizeDomain(domain);
|
|
65
114
|
if (!normalized)
|
|
66
115
|
return { found: false };
|
|
67
|
-
const
|
|
68
|
-
const
|
|
69
|
-
if (
|
|
70
|
-
return
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
116
|
+
const registry = await getRegistry();
|
|
117
|
+
const entry = registry.find((candidate) => normalizeDomain(candidate.website) === normalized);
|
|
118
|
+
if (!entry)
|
|
119
|
+
return { found: false };
|
|
120
|
+
return {
|
|
121
|
+
found: true,
|
|
122
|
+
name: entry.name,
|
|
123
|
+
trustCenter: entry.trustCenter,
|
|
124
|
+
website: entry.website,
|
|
125
|
+
entry,
|
|
126
|
+
};
|
|
76
127
|
}
|
|
77
128
|
/**
|
|
78
|
-
*
|
|
129
|
+
* Search the public registry by company name or website domain.
|
|
79
130
|
*/
|
|
80
131
|
export async function searchVendors(query) {
|
|
81
132
|
const trimmed = (query || '').trim();
|
|
82
133
|
if (trimmed.length < 2)
|
|
83
134
|
return [];
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
135
|
+
return searchRegistry(await getRegistry(), trimmed);
|
|
136
|
+
}
|
|
137
|
+
export function searchRegistry(registry, query) {
|
|
138
|
+
const normalizedQuery = query.toLowerCase().trim();
|
|
139
|
+
if (normalizedQuery.length < 2)
|
|
140
|
+
return [];
|
|
141
|
+
return registry
|
|
142
|
+
.map((entry) => {
|
|
143
|
+
const name = String(entry.name || '').toLowerCase();
|
|
144
|
+
const domain = normalizeDomain(entry.website);
|
|
145
|
+
if (!name.includes(normalizedQuery) && !domain.includes(normalizedQuery)) {
|
|
146
|
+
return null;
|
|
147
|
+
}
|
|
148
|
+
let score = 10;
|
|
149
|
+
if (name === normalizedQuery || domain === normalizedQuery)
|
|
150
|
+
score = 200;
|
|
151
|
+
else if (name.startsWith(normalizedQuery) || domain.startsWith(normalizedQuery)) {
|
|
152
|
+
score = 100;
|
|
153
|
+
}
|
|
154
|
+
else if (name.includes(` ${normalizedQuery}`)
|
|
155
|
+
|| name.split(/[\s-]/).includes(normalizedQuery)) {
|
|
156
|
+
score = 50;
|
|
157
|
+
}
|
|
158
|
+
score -= Math.abs(name.length - normalizedQuery.length) * 0.5;
|
|
159
|
+
return { entry, domain, score };
|
|
160
|
+
})
|
|
161
|
+
.filter((candidate) => candidate !== null)
|
|
162
|
+
.sort((a, b) => b.score - a.score || a.entry.name.localeCompare(b.entry.name))
|
|
163
|
+
.map(({ entry, domain }) => formatSearchResult(entry, domain));
|
|
164
|
+
}
|
|
165
|
+
export function formatSearchResult(entry, domain = normalizeDomain(entry.website)) {
|
|
166
|
+
return {
|
|
167
|
+
source: 'trustlists',
|
|
168
|
+
name: entry.name,
|
|
169
|
+
domain: domain || null,
|
|
170
|
+
website: entry.website || null,
|
|
171
|
+
trustCenter: entry.trustCenter,
|
|
172
|
+
certifications: entry.certifications || [],
|
|
173
|
+
platform: entry.platform,
|
|
174
|
+
csaStarLevel: entry.csaStar?.level,
|
|
175
|
+
lastVerified: entry.lastVerified,
|
|
176
|
+
directoryUrl: companyDirectoryUrl(entry.name),
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
export function companyDirectoryUrl(name) {
|
|
180
|
+
const slug = String(name || '')
|
|
181
|
+
.toLowerCase()
|
|
182
|
+
.replace(/[^a-z0-9\s-]/g, '')
|
|
183
|
+
.replace(/\s+/g, '-')
|
|
184
|
+
.replace(/-+/g, '-')
|
|
185
|
+
.replace(/^-|-$/g, '');
|
|
186
|
+
return `${TRUSTLISTS_DIRECTORY_URL}/company/${slug}/`;
|
|
187
|
+
}
|
|
188
|
+
export function resetRegistryCacheForTests() {
|
|
189
|
+
registryCache = null;
|
|
190
|
+
registryRefresh = null;
|
|
95
191
|
}
|
|
96
192
|
/**
|
|
97
193
|
* Normalize an arbitrary user input into a bare hostname like 'stripe.com'.
|
package/dist/api/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* trustlists MCP server entry point.
|
|
4
4
|
*
|
|
5
5
|
* Spawned by Cursor / Claude Code via `npx -y @trustlists/mcp`.
|
|
6
6
|
* Speaks JSON-RPC over stdio per the Model Context Protocol spec.
|
|
7
7
|
*
|
|
8
|
-
* v0.
|
|
8
|
+
* v0.2.0 ships four free tools:
|
|
9
9
|
* - trustlists_search
|
|
10
10
|
* - trustlists_lookup
|
|
11
|
+
* - trustlists_browse
|
|
11
12
|
* - trustlists_audit_dependencies
|
|
12
13
|
*
|
|
13
14
|
* No auth required for any of these. Future paid endpoints (ai-lookup,
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;GAeG"}
|
package/dist/index.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* trustlists MCP server entry point.
|
|
4
4
|
*
|
|
5
5
|
* Spawned by Cursor / Claude Code via `npx -y @trustlists/mcp`.
|
|
6
6
|
* Speaks JSON-RPC over stdio per the Model Context Protocol spec.
|
|
7
7
|
*
|
|
8
|
-
* v0.
|
|
8
|
+
* v0.2.0 ships four free tools:
|
|
9
9
|
* - trustlists_search
|
|
10
10
|
* - trustlists_lookup
|
|
11
|
+
* - trustlists_browse
|
|
11
12
|
* - trustlists_audit_dependencies
|
|
12
13
|
*
|
|
13
14
|
* No auth required for any of these. Future paid endpoints (ai-lookup,
|
|
@@ -19,9 +20,10 @@ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'
|
|
|
19
20
|
import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
20
21
|
import { runSearch, searchInputSchema, searchToolDefinition } from './tools/search.js';
|
|
21
22
|
import { runLookup, lookupInputSchema, lookupToolDefinition } from './tools/lookup.js';
|
|
23
|
+
import { runBrowse, browseInputSchema, browseToolDefinition } from './tools/browse.js';
|
|
22
24
|
import { runAudit, auditInputSchema, auditToolDefinition, } from './tools/audit-dependencies.js';
|
|
23
25
|
const SERVER_NAME = 'trustlists';
|
|
24
|
-
const SERVER_VERSION = '0.
|
|
26
|
+
const SERVER_VERSION = '0.2.0';
|
|
25
27
|
const server = new Server({
|
|
26
28
|
name: SERVER_NAME,
|
|
27
29
|
version: SERVER_VERSION,
|
|
@@ -31,7 +33,12 @@ const server = new Server({
|
|
|
31
33
|
},
|
|
32
34
|
});
|
|
33
35
|
server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
34
|
-
tools: [
|
|
36
|
+
tools: [
|
|
37
|
+
searchToolDefinition,
|
|
38
|
+
lookupToolDefinition,
|
|
39
|
+
browseToolDefinition,
|
|
40
|
+
auditToolDefinition,
|
|
41
|
+
],
|
|
35
42
|
}));
|
|
36
43
|
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
37
44
|
const { name, arguments: args } = request.params;
|
|
@@ -51,6 +58,13 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
51
58
|
content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
|
|
52
59
|
};
|
|
53
60
|
}
|
|
61
|
+
case 'trustlists_browse': {
|
|
62
|
+
const input = browseInputSchema.parse(args ?? {});
|
|
63
|
+
const result = await runBrowse(input);
|
|
64
|
+
return {
|
|
65
|
+
content: [{ type: 'text', text: JSON.stringify(result, null, 2) }],
|
|
66
|
+
};
|
|
67
|
+
}
|
|
54
68
|
case 'trustlists_audit_dependencies': {
|
|
55
69
|
const input = auditInputSchema.parse(args ?? {});
|
|
56
70
|
const result = await runAudit(input);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* trustlists_audit_dependencies
|
|
2
|
+
* trustlists_audit_dependencies: scan a project's dependency manifests and
|
|
3
3
|
* map each dependency to its vendor's trust center.
|
|
4
4
|
*
|
|
5
5
|
* Supports:
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
* - Gemfile (Ruby)
|
|
11
11
|
* - composer.json (PHP)
|
|
12
12
|
*
|
|
13
|
-
* Returns a structured
|
|
14
|
-
*
|
|
13
|
+
* Returns a structured inventory so the host AI (Cursor/Claude) can describe
|
|
14
|
+
* public security-documentation visibility without inventing a risk score.
|
|
15
15
|
*/
|
|
16
16
|
import { z } from 'zod';
|
|
17
17
|
export declare const auditInputSchema: z.ZodObject<{
|
|
@@ -52,7 +52,7 @@ export interface AuditToolResult {
|
|
|
52
52
|
export declare function runAudit(input: AuditInput): Promise<AuditToolResult>;
|
|
53
53
|
export declare const auditToolDefinition: {
|
|
54
54
|
readonly name: "trustlists_audit_dependencies";
|
|
55
|
-
readonly description: "Scan a project's dependency manifests (package.json, requirements.txt, go.mod, Cargo.toml, Gemfile, composer.json, pyproject.toml, Pipfile) and map
|
|
55
|
+
readonly description: "Scan a project's dependency manifests (package.json, requirements.txt, go.mod, Cargo.toml, Gemfile, composer.json, pyproject.toml, Pipfile) and map likely vendors to public trust center records. Returns documentation-visibility data, not a security score. Use when inventorying third-party services or preparing vendor review.";
|
|
56
56
|
readonly inputSchema: {
|
|
57
57
|
readonly type: "object";
|
|
58
58
|
readonly properties: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit-dependencies.d.ts","sourceRoot":"","sources":["../../src/tools/audit-dependencies.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,gBAAgB;;;;;;;;;EAG3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAS1D,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,SAAS,GAAG,KAAK,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC;CAC9C;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC,
|
|
1
|
+
{"version":3,"file":"audit-dependencies.d.ts","sourceRoot":"","sources":["../../src/tools/audit-dependencies.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,gBAAgB;;;;;;;;;EAG3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAS1D,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,SAAS,GAAG,KAAK,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC;CAC9C;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC,CAsE1E;AAyaD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;CAmBtB,CAAC"}
|