ax-audit 2.2.0 → 2.3.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 +5 -1
- package/dist/checks/agent-json.d.ts.map +1 -1
- package/dist/checks/agent-json.js +8 -1
- package/dist/checks/agent-json.js.map +1 -1
- package/dist/checks/http-headers.d.ts.map +1 -1
- package/dist/checks/http-headers.js +10 -2
- package/dist/checks/http-headers.js.map +1 -1
- package/dist/checks/llms-txt.d.ts.map +1 -1
- package/dist/checks/llms-txt.js +9 -1
- package/dist/checks/llms-txt.js.map +1 -1
- package/dist/checks/mcp.d.ts.map +1 -1
- package/dist/checks/mcp.js +13 -1
- package/dist/checks/mcp.js.map +1 -1
- package/dist/checks/meta-tags.d.ts.map +1 -1
- package/dist/checks/meta-tags.js +10 -6
- package/dist/checks/meta-tags.js.map +1 -1
- package/dist/checks/openapi.d.ts.map +1 -1
- package/dist/checks/openapi.js +10 -1
- package/dist/checks/openapi.js.map +1 -1
- package/dist/checks/robots-txt.d.ts.map +1 -1
- package/dist/checks/robots-txt.js +10 -2
- package/dist/checks/robots-txt.js.map +1 -1
- package/dist/checks/security-txt.d.ts.map +1 -1
- package/dist/checks/security-txt.js +6 -1
- package/dist/checks/security-txt.js.map +1 -1
- package/dist/checks/structured-data.d.ts.map +1 -1
- package/dist/checks/structured-data.js +10 -1
- package/dist/checks/structured-data.js.map +1 -1
- package/dist/checks/utils.d.ts +1 -0
- package/dist/checks/utils.d.ts.map +1 -1
- package/dist/checks/utils.js +4 -1
- package/dist/checks/utils.js.map +1 -1
- package/dist/cli.js +3 -3
- package/dist/cli.js.map +1 -1
- package/dist/fetcher.d.ts +0 -1
- package/dist/fetcher.d.ts.map +1 -1
- package/dist/fetcher.js +2 -2
- package/dist/fetcher.js.map +1 -1
- package/dist/guide-urls.d.ts +2 -0
- package/dist/guide-urls.d.ts.map +1 -0
- package/dist/guide-urls.js +5 -0
- package/dist/guide-urls.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/orchestrator.js +3 -3
- package/dist/orchestrator.js.map +1 -1
- package/dist/reporter/html.d.ts.map +1 -1
- package/dist/reporter/html.js +4 -6
- package/dist/reporter/html.js.map +1 -1
- package/dist/reporter/index.d.ts +3 -3
- package/dist/reporter/index.d.ts.map +1 -1
- package/dist/reporter/index.js +0 -2
- package/dist/reporter/index.js.map +1 -1
- package/dist/reporter/terminal.d.ts.map +1 -1
- package/dist/reporter/terminal.js +16 -10
- package/dist/reporter/terminal.js.map +1 -1
- package/dist/scorer.d.ts.map +1 -1
- package/dist/scorer.js +3 -3
- package/dist/scorer.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="ax-logo.svg" alt="ax-audit logo" width="120">
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<h1 align="center">ax-audit</h1>
|
|
2
6
|
|
|
3
7
|
[](https://github.com/lucioduran/ax-audit/actions/workflows/ci.yml)
|
|
4
8
|
[](https://www.npmjs.com/package/ax-audit)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-json.d.ts","sourceRoot":"","sources":["../../src/checks/agent-json.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"agent-json.d.ts","sourceRoot":"","sources":["../../src/checks/agent-json.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAW,MAAM,aAAa,CAAC;AAGjF,eAAO,MAAM,IAAI,EAAE,SAKlB,CAAC;AAEF,wBAA8B,KAAK,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CA+F3E"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { AGENT_JSON_REQUIRED_FIELDS } from '../constants.js';
|
|
2
|
+
import { guideUrl } from '../guide-urls.js';
|
|
2
3
|
import { buildResult } from './utils.js';
|
|
3
4
|
export const meta = {
|
|
4
5
|
id: 'agent-json',
|
|
@@ -17,6 +18,7 @@ export default async function check(ctx) {
|
|
|
17
18
|
message: '/.well-known/agent.json not found',
|
|
18
19
|
detail: `HTTP ${res.status || 'network error'}`,
|
|
19
20
|
hint: "Create a /.well-known/agent.json file following the A2A (Agent-to-Agent) protocol. It should include name, description, url, and skills fields describing your site's capabilities.",
|
|
21
|
+
learnMoreUrl: guideUrl(meta.id, 'not-found'),
|
|
20
22
|
});
|
|
21
23
|
return buildResult(meta, 0, findings, start);
|
|
22
24
|
}
|
|
@@ -30,6 +32,7 @@ export default async function check(ctx) {
|
|
|
30
32
|
status: 'fail',
|
|
31
33
|
message: 'Invalid JSON',
|
|
32
34
|
hint: 'Fix the JSON syntax in your agent.json file. Validate it with a JSON linter.',
|
|
35
|
+
learnMoreUrl: guideUrl(meta.id, 'invalid-json'),
|
|
33
36
|
});
|
|
34
37
|
return buildResult(meta, 10, findings, start);
|
|
35
38
|
}
|
|
@@ -43,6 +46,7 @@ export default async function check(ctx) {
|
|
|
43
46
|
status: 'fail',
|
|
44
47
|
message: `Required field "${field}" missing`,
|
|
45
48
|
hint: `Add the "${field}" field to your agent.json. This is required by the A2A protocol specification.`,
|
|
49
|
+
learnMoreUrl: guideUrl(meta.id, 'missing-field'),
|
|
46
50
|
});
|
|
47
51
|
score -= 15;
|
|
48
52
|
}
|
|
@@ -55,6 +59,7 @@ export default async function check(ctx) {
|
|
|
55
59
|
status: 'warn',
|
|
56
60
|
message: 'Skills array is empty',
|
|
57
61
|
hint: 'Add at least one skill to the skills array describing what your agent/site can do.',
|
|
62
|
+
learnMoreUrl: guideUrl(meta.id, 'empty-skills'),
|
|
58
63
|
});
|
|
59
64
|
score -= 10;
|
|
60
65
|
}
|
|
@@ -66,6 +71,7 @@ export default async function check(ctx) {
|
|
|
66
71
|
status: 'warn',
|
|
67
72
|
message: 'No protocolVersion field',
|
|
68
73
|
hint: 'Add "protocolVersion": "0.2.0" to your agent.json to declare A2A protocol compatibility.',
|
|
74
|
+
learnMoreUrl: guideUrl(meta.id, 'no-protocol-version'),
|
|
69
75
|
});
|
|
70
76
|
score -= 5;
|
|
71
77
|
}
|
|
@@ -88,9 +94,10 @@ export default async function check(ctx) {
|
|
|
88
94
|
status: 'warn',
|
|
89
95
|
message: 'No optional fields (capabilities, authentication, documentationUrl)',
|
|
90
96
|
hint: 'Consider adding capabilities (what protocols you support), authentication (auth requirements), and documentationUrl (link to API docs).',
|
|
97
|
+
learnMoreUrl: guideUrl(meta.id, 'missing-optional'),
|
|
91
98
|
});
|
|
92
99
|
score -= 5;
|
|
93
100
|
}
|
|
94
|
-
return buildResult(meta,
|
|
101
|
+
return buildResult(meta, score, findings, start);
|
|
95
102
|
}
|
|
96
103
|
//# sourceMappingURL=agent-json.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-json.js","sourceRoot":"","sources":["../../src/checks/agent-json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-json.js","sourceRoot":"","sources":["../../src/checks/agent-json.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-headers.d.ts","sourceRoot":"","sources":["../../src/checks/http-headers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"http-headers.d.ts","sourceRoot":"","sources":["../../src/checks/http-headers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAW,MAAM,aAAa,CAAC;AAGjF,UAAU,SAAS;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,6DAA6D;AAC7D,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,CA2B3D;AAoCD,eAAO,MAAM,IAAI,EAAE,SAKlB,CAAC;AAEF,wBAA8B,KAAK,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CA4G3E"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { SECURITY_HEADERS } from '../constants.js';
|
|
2
|
+
import { guideUrl } from '../guide-urls.js';
|
|
2
3
|
import { buildResult } from './utils.js';
|
|
3
4
|
/** Parse an RFC 5988 Link header into structured entries. */
|
|
4
5
|
export function parseLinkHeader(header) {
|
|
@@ -83,6 +84,7 @@ export default async function check(ctx) {
|
|
|
83
84
|
status: 'fail',
|
|
84
85
|
message: `Missing critical header: ${header.label}`,
|
|
85
86
|
hint: `Add the ${header.label} response header to your server configuration. This is a critical security header.`,
|
|
87
|
+
learnMoreUrl: guideUrl(meta.id, 'missing-critical-header'),
|
|
86
88
|
});
|
|
87
89
|
score -= 10;
|
|
88
90
|
}
|
|
@@ -98,10 +100,11 @@ export default async function check(ctx) {
|
|
|
98
100
|
status: 'warn',
|
|
99
101
|
message: `Only ${securityCount}/${SECURITY_HEADERS.length} security headers present`,
|
|
100
102
|
hint: 'Add security headers like Strict-Transport-Security, X-Content-Type-Options, X-Frame-Options, and Referrer-Policy to your server response.',
|
|
103
|
+
learnMoreUrl: guideUrl(meta.id, 'low-security-headers'),
|
|
101
104
|
});
|
|
102
105
|
score -= 5;
|
|
103
106
|
}
|
|
104
|
-
const linkHeader = headers['link']
|
|
107
|
+
const linkHeader = headers['link'] ?? '';
|
|
105
108
|
const links = parseLinkHeader(linkHeader);
|
|
106
109
|
const hasLlmsLink = links.some((l) => /llms\.txt/i.test(l.url));
|
|
107
110
|
const hasAgentLink = links.some((l) => /agent\.json/i.test(l.url));
|
|
@@ -114,6 +117,7 @@ export default async function check(ctx) {
|
|
|
114
117
|
status: 'warn',
|
|
115
118
|
message: 'Link header does not reference agent.json',
|
|
116
119
|
hint: 'Add agent.json to your Link header: Link: </.well-known/agent.json>; rel="alternate"; type="application/json"',
|
|
120
|
+
learnMoreUrl: guideUrl(meta.id, 'missing-agent-link'),
|
|
117
121
|
});
|
|
118
122
|
score -= 5;
|
|
119
123
|
}
|
|
@@ -123,6 +127,7 @@ export default async function check(ctx) {
|
|
|
123
127
|
status: 'warn',
|
|
124
128
|
message: 'Link header does not reference llms.txt',
|
|
125
129
|
hint: 'Add llms.txt to your Link header: Link: </llms.txt>; rel="alternate"; type="text/plain"',
|
|
130
|
+
learnMoreUrl: guideUrl(meta.id, 'missing-llms-link'),
|
|
126
131
|
});
|
|
127
132
|
score -= 5;
|
|
128
133
|
}
|
|
@@ -131,6 +136,7 @@ export default async function check(ctx) {
|
|
|
131
136
|
status: 'warn',
|
|
132
137
|
message: 'Link header present but does not reference AI discovery files',
|
|
133
138
|
hint: 'Add AI discovery entries to your Link header: Link: </llms.txt>; rel="alternate"; type="text/plain", </.well-known/agent.json>; rel="alternate"; type="application/json"',
|
|
139
|
+
learnMoreUrl: guideUrl(meta.id, 'no-ai-discovery'),
|
|
134
140
|
});
|
|
135
141
|
score -= 15;
|
|
136
142
|
}
|
|
@@ -139,6 +145,7 @@ export default async function check(ctx) {
|
|
|
139
145
|
status: 'warn',
|
|
140
146
|
message: 'No Link header for AI discovery (llms.txt, agent.json)',
|
|
141
147
|
hint: 'Add a Link response header pointing to your AI discovery files: Link: </llms.txt>; rel="alternate"; type="text/plain", </.well-known/agent.json>; rel="alternate"; type="application/json"',
|
|
148
|
+
learnMoreUrl: guideUrl(meta.id, 'no-link-header'),
|
|
142
149
|
});
|
|
143
150
|
score -= 15;
|
|
144
151
|
}
|
|
@@ -153,6 +160,7 @@ export default async function check(ctx) {
|
|
|
153
160
|
status: 'warn',
|
|
154
161
|
message: 'No CORS headers on .well-known resources',
|
|
155
162
|
hint: 'Add Access-Control-Allow-Origin: * to responses from /.well-known/* so AI agents from other domains can fetch your discovery files.',
|
|
163
|
+
learnMoreUrl: guideUrl(meta.id, 'no-cors'),
|
|
156
164
|
});
|
|
157
165
|
score -= 10;
|
|
158
166
|
}
|
|
@@ -164,6 +172,6 @@ export default async function check(ctx) {
|
|
|
164
172
|
message: 'X-Robots-Tag: noindex on /llms.txt (prevents search indexing of raw text)',
|
|
165
173
|
});
|
|
166
174
|
}
|
|
167
|
-
return buildResult(meta,
|
|
175
|
+
return buildResult(meta, score, findings, start);
|
|
168
176
|
}
|
|
169
177
|
//# sourceMappingURL=http-headers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-headers.js","sourceRoot":"","sources":["../../src/checks/http-headers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"http-headers.js","sourceRoot":"","sources":["../../src/checks/http-headers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llms-txt.d.ts","sourceRoot":"","sources":["../../src/checks/llms-txt.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"llms-txt.d.ts","sourceRoot":"","sources":["../../src/checks/llms-txt.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAW,MAAM,aAAa,CAAC;AAGjF,eAAO,MAAM,IAAI,EAAE,SAKlB,CAAC;AAEF,wBAA8B,KAAK,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAqG3E"}
|
package/dist/checks/llms-txt.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { guideUrl } from '../guide-urls.js';
|
|
1
2
|
import { buildResult } from './utils.js';
|
|
2
3
|
export const meta = {
|
|
3
4
|
id: 'llms-txt',
|
|
@@ -16,6 +17,7 @@ export default async function check(ctx) {
|
|
|
16
17
|
message: '/llms.txt not found',
|
|
17
18
|
detail: `HTTP ${res.status || 'network error'}`,
|
|
18
19
|
hint: 'Create a /llms.txt file at your site root following the llmstxt.org specification. It should be a Markdown file starting with "# Your Site Name" and include a description, sections, and links.',
|
|
20
|
+
learnMoreUrl: guideUrl(meta.id, 'not-found'),
|
|
19
21
|
});
|
|
20
22
|
return buildResult(meta, 0, findings, start);
|
|
21
23
|
}
|
|
@@ -30,6 +32,7 @@ export default async function check(ctx) {
|
|
|
30
32
|
status: 'warn',
|
|
31
33
|
message: 'Missing H1 heading (first line should start with "# ")',
|
|
32
34
|
hint: 'Add an H1 heading as the first line of your llms.txt file, e.g.: # Your Site Name',
|
|
35
|
+
learnMoreUrl: guideUrl(meta.id, 'missing-h1'),
|
|
33
36
|
});
|
|
34
37
|
score -= 15;
|
|
35
38
|
}
|
|
@@ -42,6 +45,7 @@ export default async function check(ctx) {
|
|
|
42
45
|
status: 'warn',
|
|
43
46
|
message: 'No blockquote description found ("> ...")',
|
|
44
47
|
hint: 'Add a blockquote description after the H1 heading, e.g.: > A brief summary of your site for AI agents.',
|
|
48
|
+
learnMoreUrl: guideUrl(meta.id, 'missing-blockquote'),
|
|
45
49
|
});
|
|
46
50
|
score -= 10;
|
|
47
51
|
}
|
|
@@ -54,6 +58,7 @@ export default async function check(ctx) {
|
|
|
54
58
|
status: 'warn',
|
|
55
59
|
message: 'No section headings found (## ...)',
|
|
56
60
|
hint: 'Organize your llms.txt content with ## section headings (e.g., ## About, ## API, ## Documentation).',
|
|
61
|
+
learnMoreUrl: guideUrl(meta.id, 'missing-sections'),
|
|
57
62
|
});
|
|
58
63
|
score -= 10;
|
|
59
64
|
}
|
|
@@ -67,6 +72,7 @@ export default async function check(ctx) {
|
|
|
67
72
|
status: 'warn',
|
|
68
73
|
message: 'No Markdown links found',
|
|
69
74
|
hint: 'Add Markdown links to relevant pages: [Page Title](https://example.com/page). This helps AI agents navigate your site.',
|
|
75
|
+
learnMoreUrl: guideUrl(meta.id, 'no-links'),
|
|
70
76
|
});
|
|
71
77
|
score -= 10;
|
|
72
78
|
}
|
|
@@ -78,6 +84,7 @@ export default async function check(ctx) {
|
|
|
78
84
|
status: 'warn',
|
|
79
85
|
message: 'Content appears minimal (< 100 characters)',
|
|
80
86
|
hint: 'Expand your llms.txt with more descriptive content about your site, its purpose, and available resources.',
|
|
87
|
+
learnMoreUrl: guideUrl(meta.id, 'minimal-content'),
|
|
81
88
|
});
|
|
82
89
|
score -= 10;
|
|
83
90
|
}
|
|
@@ -91,8 +98,9 @@ export default async function check(ctx) {
|
|
|
91
98
|
status: 'warn',
|
|
92
99
|
message: '/llms-full.txt not found (optional but recommended)',
|
|
93
100
|
hint: 'Create a /llms-full.txt with expanded content — full documentation, API details, and comprehensive site information for AI agents.',
|
|
101
|
+
learnMoreUrl: guideUrl(meta.id, 'missing-full'),
|
|
94
102
|
});
|
|
95
103
|
}
|
|
96
|
-
return buildResult(meta,
|
|
104
|
+
return buildResult(meta, score, findings, start);
|
|
97
105
|
}
|
|
98
106
|
//# sourceMappingURL=llms-txt.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llms-txt.js","sourceRoot":"","sources":["../../src/checks/llms-txt.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"llms-txt.js","sourceRoot":"","sources":["../../src/checks/llms-txt.ts"],"names":[],"mappings":"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"}
|
package/dist/checks/mcp.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/checks/mcp.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/checks/mcp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAW,MAAM,aAAa,CAAC;AAGjF,eAAO,MAAM,IAAI,EAAE,SAKlB,CAAC;AAEF,wBAA8B,KAAK,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAmJ3E"}
|
package/dist/checks/mcp.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { guideUrl } from '../guide-urls.js';
|
|
1
2
|
import { buildResult } from './utils.js';
|
|
2
3
|
export const meta = {
|
|
3
4
|
id: 'mcp',
|
|
@@ -16,6 +17,7 @@ export default async function check(ctx) {
|
|
|
16
17
|
message: '/.well-known/mcp.json not found',
|
|
17
18
|
detail: `HTTP ${res.status || 'network error'}`,
|
|
18
19
|
hint: 'Create a /.well-known/mcp.json file describing your MCP server configuration. Include name, description, tools, and version fields. See https://modelcontextprotocol.io for the spec.',
|
|
20
|
+
learnMoreUrl: guideUrl(meta.id, 'not-found'),
|
|
19
21
|
});
|
|
20
22
|
return buildResult(meta, 0, findings, start);
|
|
21
23
|
}
|
|
@@ -29,6 +31,7 @@ export default async function check(ctx) {
|
|
|
29
31
|
status: 'fail',
|
|
30
32
|
message: 'Invalid JSON',
|
|
31
33
|
hint: 'Fix the JSON syntax in your mcp.json file. Validate with a JSON linter.',
|
|
34
|
+
learnMoreUrl: guideUrl(meta.id, 'invalid-json'),
|
|
32
35
|
});
|
|
33
36
|
return buildResult(meta, 10, findings, start);
|
|
34
37
|
}
|
|
@@ -41,6 +44,7 @@ export default async function check(ctx) {
|
|
|
41
44
|
status: 'warn',
|
|
42
45
|
message: 'Missing server name',
|
|
43
46
|
hint: 'Add a "name" field to your mcp.json identifying your MCP server.',
|
|
47
|
+
learnMoreUrl: guideUrl(meta.id, 'missing-name'),
|
|
44
48
|
});
|
|
45
49
|
score -= 10;
|
|
46
50
|
}
|
|
@@ -52,6 +56,7 @@ export default async function check(ctx) {
|
|
|
52
56
|
status: 'warn',
|
|
53
57
|
message: 'Missing server description',
|
|
54
58
|
hint: 'Add a "description" field explaining what your MCP server does and what tools it provides.',
|
|
59
|
+
learnMoreUrl: guideUrl(meta.id, 'missing-description'),
|
|
55
60
|
});
|
|
56
61
|
score -= 5;
|
|
57
62
|
}
|
|
@@ -66,6 +71,7 @@ export default async function check(ctx) {
|
|
|
66
71
|
status: 'warn',
|
|
67
72
|
message: `${toolsWithDescriptions.length}/${data.tools.length} tools have descriptions`,
|
|
68
73
|
hint: 'Add a "description" field to each tool so AI agents understand what each tool does.',
|
|
74
|
+
learnMoreUrl: guideUrl(meta.id, 'missing-tool-descriptions'),
|
|
69
75
|
});
|
|
70
76
|
score -= 5;
|
|
71
77
|
}
|
|
@@ -74,6 +80,7 @@ export default async function check(ctx) {
|
|
|
74
80
|
status: 'warn',
|
|
75
81
|
message: 'No tools have descriptions',
|
|
76
82
|
hint: 'Add a "description" field to each tool in the tools array. Descriptions help AI agents decide which tool to use.',
|
|
83
|
+
learnMoreUrl: guideUrl(meta.id, 'no-tool-descriptions'),
|
|
77
84
|
});
|
|
78
85
|
score -= 10;
|
|
79
86
|
}
|
|
@@ -83,6 +90,7 @@ export default async function check(ctx) {
|
|
|
83
90
|
status: 'warn',
|
|
84
91
|
message: 'Tools array is empty',
|
|
85
92
|
hint: 'Add at least one tool to the tools array with name, description, and inputSchema fields.',
|
|
93
|
+
learnMoreUrl: guideUrl(meta.id, 'empty-tools'),
|
|
86
94
|
});
|
|
87
95
|
score -= 15;
|
|
88
96
|
}
|
|
@@ -91,6 +99,7 @@ export default async function check(ctx) {
|
|
|
91
99
|
status: 'warn',
|
|
92
100
|
message: 'No tools array defined',
|
|
93
101
|
hint: 'Add a "tools" array to your mcp.json. Each tool should have name, description, and inputSchema.',
|
|
102
|
+
learnMoreUrl: guideUrl(meta.id, 'no-tools'),
|
|
94
103
|
});
|
|
95
104
|
score -= 15;
|
|
96
105
|
}
|
|
@@ -102,6 +111,7 @@ export default async function check(ctx) {
|
|
|
102
111
|
status: 'warn',
|
|
103
112
|
message: 'No resources defined',
|
|
104
113
|
hint: 'Add a "resources" array listing the data resources your MCP server exposes to AI agents.',
|
|
114
|
+
learnMoreUrl: guideUrl(meta.id, 'no-resources'),
|
|
105
115
|
});
|
|
106
116
|
score -= 5;
|
|
107
117
|
}
|
|
@@ -119,6 +129,7 @@ export default async function check(ctx) {
|
|
|
119
129
|
status: 'warn',
|
|
120
130
|
message: 'No protocol version specified',
|
|
121
131
|
hint: 'Add a "protocolVersion" field (e.g., "2024-11-05") to declare MCP spec compatibility.',
|
|
132
|
+
learnMoreUrl: guideUrl(meta.id, 'no-version'),
|
|
122
133
|
});
|
|
123
134
|
score -= 5;
|
|
124
135
|
}
|
|
@@ -133,9 +144,10 @@ export default async function check(ctx) {
|
|
|
133
144
|
status: 'warn',
|
|
134
145
|
message: 'No CORS headers on MCP endpoint',
|
|
135
146
|
hint: 'Add Access-Control-Allow-Origin: * to the /.well-known/mcp.json response so browser-based AI agents can fetch it.',
|
|
147
|
+
learnMoreUrl: guideUrl(meta.id, 'no-cors'),
|
|
136
148
|
});
|
|
137
149
|
score -= 10;
|
|
138
150
|
}
|
|
139
|
-
return buildResult(meta,
|
|
151
|
+
return buildResult(meta, score, findings, start);
|
|
140
152
|
}
|
|
141
153
|
//# sourceMappingURL=mcp.js.map
|
package/dist/checks/mcp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/checks/mcp.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/checks/mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta-tags.d.ts","sourceRoot":"","sources":["../../src/checks/meta-tags.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"meta-tags.d.ts","sourceRoot":"","sources":["../../src/checks/meta-tags.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAW,MAAM,aAAa,CAAC;AAGjF,eAAO,MAAM,IAAI,EAAE,SAKlB,CAAC;AAIF,wBAA8B,KAAK,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAiG3E"}
|
package/dist/checks/meta-tags.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { guideUrl } from '../guide-urls.js';
|
|
1
2
|
import { buildResult } from './utils.js';
|
|
2
3
|
export const meta = {
|
|
3
4
|
id: 'meta-tags',
|
|
@@ -32,6 +33,7 @@ export default async function check(ctx) {
|
|
|
32
33
|
message: `${foundAiMeta.length}/${AI_META_NAMES.length} AI meta tags found`,
|
|
33
34
|
detail: foundAiMeta.join(', '),
|
|
34
35
|
hint: 'Add more AI meta tags to your <head>: <meta name="ai:summary" content="...">, <meta name="ai:content_type" content="...">, <meta name="ai:author" content="...">, etc.',
|
|
36
|
+
learnMoreUrl: guideUrl(meta.id, 'few-ai-meta'),
|
|
35
37
|
});
|
|
36
38
|
score -= 15;
|
|
37
39
|
}
|
|
@@ -40,6 +42,7 @@ export default async function check(ctx) {
|
|
|
40
42
|
status: 'warn',
|
|
41
43
|
message: 'No AI meta tags (ai:*) found',
|
|
42
44
|
hint: 'Add AI meta tags to your HTML <head>: <meta name="ai:summary" content="Brief description">, <meta name="ai:content_type" content="website">, <meta name="ai:author" content="Your Name">.',
|
|
45
|
+
learnMoreUrl: guideUrl(meta.id, 'no-ai-meta'),
|
|
43
46
|
});
|
|
44
47
|
score -= 25;
|
|
45
48
|
}
|
|
@@ -52,6 +55,7 @@ export default async function check(ctx) {
|
|
|
52
55
|
status: 'warn',
|
|
53
56
|
message: 'No rel="alternate" link to llms.txt in HTML',
|
|
54
57
|
hint: 'Add to your <head>: <link rel="alternate" type="text/plain" href="/llms.txt" title="LLM-optimized content">',
|
|
58
|
+
learnMoreUrl: guideUrl(meta.id, 'no-llms-alternate'),
|
|
55
59
|
});
|
|
56
60
|
score -= 15;
|
|
57
61
|
}
|
|
@@ -64,15 +68,13 @@ export default async function check(ctx) {
|
|
|
64
68
|
status: 'warn',
|
|
65
69
|
message: 'No rel="alternate" link to agent.json in HTML',
|
|
66
70
|
hint: 'Add to your <head>: <link rel="alternate" type="application/json" href="/.well-known/agent.json" title="Agent Card">',
|
|
71
|
+
learnMoreUrl: guideUrl(meta.id, 'no-agent-alternate'),
|
|
67
72
|
});
|
|
68
73
|
score -= 10;
|
|
69
74
|
}
|
|
70
75
|
const relMePattern = /rel=["']me["']/gi;
|
|
71
|
-
const relMeCount = (html.match(relMePattern)
|
|
72
|
-
if (relMeCount
|
|
73
|
-
findings.push({ status: 'pass', message: `${relMeCount} rel="me" identity link(s) found` });
|
|
74
|
-
}
|
|
75
|
-
else if (relMeCount > 0) {
|
|
76
|
+
const relMeCount = (html.match(relMePattern) ?? []).length;
|
|
77
|
+
if (relMeCount > 0) {
|
|
76
78
|
findings.push({ status: 'pass', message: `${relMeCount} rel="me" identity link(s) found` });
|
|
77
79
|
}
|
|
78
80
|
else {
|
|
@@ -80,6 +82,7 @@ export default async function check(ctx) {
|
|
|
80
82
|
status: 'warn',
|
|
81
83
|
message: 'No rel="me" identity links found',
|
|
82
84
|
hint: 'Add rel="me" links to verify your identity across platforms: <link rel="me" href="https://github.com/yourname">, <link rel="me" href="https://twitter.com/yourname">.',
|
|
85
|
+
learnMoreUrl: guideUrl(meta.id, 'no-rel-me'),
|
|
83
86
|
});
|
|
84
87
|
score -= 10;
|
|
85
88
|
}
|
|
@@ -92,10 +95,11 @@ export default async function check(ctx) {
|
|
|
92
95
|
status: 'warn',
|
|
93
96
|
message: 'No OpenGraph meta tags found',
|
|
94
97
|
hint: 'Add OpenGraph meta tags for better social and AI sharing: <meta property="og:title" content="...">, <meta property="og:description" content="...">, <meta property="og:url" content="...">.',
|
|
98
|
+
learnMoreUrl: guideUrl(meta.id, 'no-opengraph'),
|
|
95
99
|
});
|
|
96
100
|
score -= 10;
|
|
97
101
|
}
|
|
98
|
-
return buildResult(meta,
|
|
102
|
+
return buildResult(meta, score, findings, start);
|
|
99
103
|
}
|
|
100
104
|
function escapeRegex(str) {
|
|
101
105
|
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta-tags.js","sourceRoot":"","sources":["../../src/checks/meta-tags.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"meta-tags.js","sourceRoot":"","sources":["../../src/checks/meta-tags.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../../src/checks/openapi.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"openapi.d.ts","sourceRoot":"","sources":["../../src/checks/openapi.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAW,MAAM,aAAa,CAAC;AAGjF,eAAO,MAAM,IAAI,EAAE,SAKlB,CAAC;AAEF,wBAA8B,KAAK,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAyG3E"}
|
package/dist/checks/openapi.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { guideUrl } from '../guide-urls.js';
|
|
1
2
|
import { buildResult } from './utils.js';
|
|
2
3
|
export const meta = {
|
|
3
4
|
id: 'openapi',
|
|
@@ -16,6 +17,7 @@ export default async function check(ctx) {
|
|
|
16
17
|
message: '/.well-known/openapi.json not found',
|
|
17
18
|
detail: `HTTP ${res.status || 'network error'}`,
|
|
18
19
|
hint: 'Create a /.well-known/openapi.json file with your API specification following the OpenAPI 3.x standard. See https://swagger.io/specification/ for the spec.',
|
|
20
|
+
learnMoreUrl: guideUrl(meta.id, 'not-found'),
|
|
19
21
|
});
|
|
20
22
|
return buildResult(meta, 0, findings, start);
|
|
21
23
|
}
|
|
@@ -29,6 +31,7 @@ export default async function check(ctx) {
|
|
|
29
31
|
status: 'fail',
|
|
30
32
|
message: 'Invalid JSON',
|
|
31
33
|
hint: 'Fix the JSON syntax in your openapi.json file. Validate with a JSON linter.',
|
|
34
|
+
learnMoreUrl: guideUrl(meta.id, 'invalid-json'),
|
|
32
35
|
});
|
|
33
36
|
return buildResult(meta, 10, findings, start);
|
|
34
37
|
}
|
|
@@ -41,6 +44,7 @@ export default async function check(ctx) {
|
|
|
41
44
|
status: 'warn',
|
|
42
45
|
message: `Swagger version: ${data.swagger} (consider upgrading to OpenAPI 3.x)`,
|
|
43
46
|
hint: 'Upgrade from Swagger 2.x to OpenAPI 3.x for better AI agent compatibility. Use https://editor.swagger.io/ to convert.',
|
|
47
|
+
learnMoreUrl: guideUrl(meta.id, 'upgrade-swagger'),
|
|
44
48
|
});
|
|
45
49
|
score -= 10;
|
|
46
50
|
}
|
|
@@ -49,6 +53,7 @@ export default async function check(ctx) {
|
|
|
49
53
|
status: 'fail',
|
|
50
54
|
message: 'No openapi or swagger version field',
|
|
51
55
|
hint: 'Add "openapi": "3.1.0" to the root of your OpenAPI spec to declare the specification version.',
|
|
56
|
+
learnMoreUrl: guideUrl(meta.id, 'no-version'),
|
|
52
57
|
});
|
|
53
58
|
score -= 20;
|
|
54
59
|
}
|
|
@@ -61,6 +66,7 @@ export default async function check(ctx) {
|
|
|
61
66
|
status: 'warn',
|
|
62
67
|
message: 'Missing info.title',
|
|
63
68
|
hint: 'Add an "info" object with a "title" field: "info": { "title": "Your API Name", "version": "1.0.0" }',
|
|
69
|
+
learnMoreUrl: guideUrl(meta.id, 'missing-title'),
|
|
64
70
|
});
|
|
65
71
|
score -= 10;
|
|
66
72
|
}
|
|
@@ -72,6 +78,7 @@ export default async function check(ctx) {
|
|
|
72
78
|
status: 'warn',
|
|
73
79
|
message: 'Missing info.description',
|
|
74
80
|
hint: 'Add a "description" field inside "info" explaining what your API does and how AI agents can use it.',
|
|
81
|
+
learnMoreUrl: guideUrl(meta.id, 'missing-description'),
|
|
75
82
|
});
|
|
76
83
|
score -= 5;
|
|
77
84
|
}
|
|
@@ -84,6 +91,7 @@ export default async function check(ctx) {
|
|
|
84
91
|
status: 'warn',
|
|
85
92
|
message: 'No paths documented',
|
|
86
93
|
hint: 'Add a "paths" object documenting your API endpoints with their methods, parameters, and responses.',
|
|
94
|
+
learnMoreUrl: guideUrl(meta.id, 'no-paths'),
|
|
87
95
|
});
|
|
88
96
|
score -= 15;
|
|
89
97
|
}
|
|
@@ -95,9 +103,10 @@ export default async function check(ctx) {
|
|
|
95
103
|
status: 'warn',
|
|
96
104
|
message: 'No servers defined',
|
|
97
105
|
hint: 'Add a "servers" array with your API base URL: "servers": [{ "url": "https://api.example.com" }]',
|
|
106
|
+
learnMoreUrl: guideUrl(meta.id, 'no-servers'),
|
|
98
107
|
});
|
|
99
108
|
score -= 5;
|
|
100
109
|
}
|
|
101
|
-
return buildResult(meta,
|
|
110
|
+
return buildResult(meta, score, findings, start);
|
|
102
111
|
}
|
|
103
112
|
//# sourceMappingURL=openapi.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openapi.js","sourceRoot":"","sources":["../../src/checks/openapi.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"openapi.js","sourceRoot":"","sources":["../../src/checks/openapi.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"robots-txt.d.ts","sourceRoot":"","sources":["../../src/checks/robots-txt.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"robots-txt.d.ts","sourceRoot":"","sources":["../../src/checks/robots-txt.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAW,MAAM,aAAa,CAAC;AAGjF,eAAO,MAAM,IAAI,EAAE,SAKlB,CAAC;AASF,wBAA8B,KAAK,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CA4H3E"}
|