TypeScript SDK
Full API reference for @agentic-web-protocol/validator.
Installation
bash
npm install @agentic-web-protocol/validator
# types included — no @types/ package neededAWPValidator
Core class. Loads all 6 schemas at construction. Results optionally cached by key.
typescript
import { AWPValidator } from '@agentic-web-protocol/validator';
const validator = new AWPValidator({
cacheTtlMs: 60_000, // default: 60s
});
// Validate discovery manifest
const result = validator.validateDiscoveryManifest({
version: "1.0",
name: "My Site",
description: "AI-optimised knowledge base with structured content.",
capabilities: ["content", "search"],
endpoints: { manifest: "/awp/manifest.json" },
});
// result.valid → boolean
// result.errors → ValidationError[]
// result.schema → "discovery"Methods
| Method | Validates |
|---|---|
validateDiscoveryManifest(data, cacheKey?) | agentic-web-protocol.schema.json |
validateManifest(data, cacheKey?) | manifest.schema.json |
validateStructure(data, cacheKey?) | structure.schema.json |
validateFunctions(data, cacheKey?) | functions.schema.json |
validateMCP(data, cacheKey?) | mcp.schema.json |
validateUpdates(data, cacheKey?) | updates.schema.json |
validateBatch(items) | Multiple schemas at once |
validateFile(key, path) | JSON file from disk |
validateBatch
typescript
const results = validator.validateBatch({
discovery: discoveryData,
manifest: manifestData,
mcp: mcpData,
});
// results.discovery.valid → boolean
// results.manifest.valid → booleanvalidateFile
typescript
// Read + validate from disk
const result = validator.validateFile(
'discovery',
'.well-known/agentic-web-protocol.json'
);TokenCounter
Counts tokens using js-tiktoken. WASM initialises lazily on first use.
typescript
import { TokenCounter, TOKEN_BUDGETS } from '@agentic-web-protocol/validator';
const counter = new TokenCounter('gpt-4o');
await counter.init(); // loads WASM once
const count = counter.countTokens('Hello, agent world!');
const result = await counter.validateBudget(
markdownContent,
TOKEN_BUDGETS.INDIVIDUAL_PAGE // 1500 tokens
);
if (!result.valid) {
console.error(`Over budget by ${result.exceeded} tokens`);
}
counter.dispose();TOKEN_BUDGETS
| Key | Limit | File |
|---|---|---|
TOKEN_BUDGETS.SUMMARY | 500 | Site summary for agents |
TOKEN_BUDGETS.ABOUT | 2 000 | About/overview page |
TOKEN_BUDGETS.INSTRUCTIONS | 1 000 | Agent instructions file |
TOKEN_BUDGETS.INDIVIDUAL_PAGE | 1 500 | Per-page content |
TOKEN_BUDGETS.API_DOCS | 3 000 | API documentation pages |
Scorer
Grades your AWP implementation A–F using a weighted rubric.
typescript
import { Scorer } from '@agentic-web-protocol/validator';
const scorer = new Scorer();
const score = scorer.score(discoveryManifest);
console.log(score.letter); // "A"
console.log(score.numeric); // 94
score.breakdown.forEach(({ category, points, max }) => {
console.log(` ${category}: ${points}/${max}`);
});CLI Reference
bash
awp validate discovery .well-known/agentic-web-protocol.json
awp validate manifest awp/manifest.json
awp validate mcp awp/mcp/mcp.json
awp score .well-known/agentic-web-protocol.json
awp tokens ./awp/content/summary.md --model gpt-4o --budget 500