Examples
Real-world usage patterns for every AWP feature — copy, adapt, ship.
TypeScript examples
01 — Validate a discovery manifest
examples/typescript/01-validate.ts
import { AWPValidator } from '@agentic-web-protocol/validator';
const validator = new AWPValidator();
const manifest = {
version: "1.0",
name: "ML Research Hub",
description: "Comprehensive ML research and tutorials for AI agents.",
capabilities: ["content", "search", "api"],
endpoints: {
manifest: "/awp/manifest.json",
content: "/awp/content/",
},
authentication: {
required: true,
methods: ["api_key"],
registration: "/awp/auth/register",
},
rate_limits: { requests_per_minute: 60 },
};
const result = validator.validateDiscoveryManifest(manifest);
if (result.valid) {
console.log('✓ Manifest valid');
} else {
result.errors.forEach(e => console.error(`✕ [${e.path}] ${e.message}`));
process.exit(1);
}02 — Score your implementation
examples/typescript/02-score.ts
import { AWPValidator, Scorer } from '@agentic-web-protocol/validator';
const validator = new AWPValidator();
const scorer = new Scorer();
const validation = validator.validateDiscoveryManifest(manifest);
if (!validation.valid) process.exit(1);
const score = scorer.score(manifest);
console.log(`\nAWP Score: ${score.letter} (${score.numeric}/100)\n`);
score.breakdown.forEach(({ category, points, max }) => {
const bar = '█'.repeat(Math.round(points / max * 10)).padEnd(10, '░');
console.log(` ${bar} ${category}: ${points}/${max}`);
});03 — Batch validate all AWP files
examples/typescript/03-batch.ts
import { AWPValidator } from '@agentic-web-protocol/validator';
import * as fs from 'fs';
const validator = new AWPValidator();
const results = validator.validateBatch({
discovery: JSON.parse(fs.readFileSync('.well-known/agentic-web-protocol.json', 'utf-8')),
manifest: JSON.parse(fs.readFileSync('awp/manifest.json', 'utf-8')),
structure: JSON.parse(fs.readFileSync('awp/content/structure.json', 'utf-8')),
mcp: JSON.parse(fs.readFileSync('awp/mcp/mcp.json', 'utf-8')),
});
let totalErrors = 0;
for (const [schema, result] of Object.entries(results)) {
const status = result.valid ? '✓' : '✕';
console.log(`${status} ${schema.padEnd(12)} ${result.errors.length} errors`);
totalErrors += result.errors.length;
}
process.exit(totalErrors > 0 ? 1 : 0);04 — Validate MCP config
examples/typescript/04-mcp.ts
import { AWPValidator } from '@agentic-web-protocol/validator';
import type { MCPConfig } from '@agentic-web-protocol/types';
const validator = new AWPValidator();
const mcp: MCPConfig = {
url: "https://api.mlresearchhub.com/mcp",
transport: "http",
mcp_version: "2024-11-05",
authentication: {
type: "bearer",
header: "Authorization",
registration_url: "https://mlresearchhub.com/awp/auth/register",
},
};
const result = validator.validateMCP(mcp);
if (result.valid) {
console.log('✓ MCP config is valid');
console.log(` URL: ${mcp.url}`);
console.log(` Transport: ${mcp.transport}`);
console.log(` Auth: ${mcp.authentication?.type}`);
}Python examples
01 — Validate a discovery manifest
examples/python/01_validate.py
from agentic_web_protocol import AWPValidator
validator = AWPValidator()
manifest = {
"version": "1.0",
"name": "ML Research Hub",
"description": "Comprehensive ML research and tutorials for AI agents.",
"capabilities": ["content", "search", "api"],
"endpoints": {
"manifest": "/awp/manifest.json",
"content": "/awp/content/",
},
"authentication": {
"required": True,
"methods": ["api_key"],
"registration": "/awp/auth/register",
},
"rate_limits": {"requests_per_minute": 60},
}
result = validator.validate_discovery_manifest(manifest)
if result.valid:
print("✓ Manifest valid")
else:
for err in result.errors:
print(f"✕ [{err.path}] {err.message}")02 — Batch validate all AWP files
examples/python/02_batch.py
import json, sys
from pathlib import Path
from agentic_web_protocol import AWPValidator
validator = AWPValidator()
def load(path: str) -> dict:
return json.loads(Path(path).read_text())
results = validator.validate_batch({
"discovery": load(".well-known/agentic-web-protocol.json"),
"manifest": load("awp/manifest.json"),
"structure": load("awp/content/structure.json"),
"mcp": load("awp/mcp/mcp.json"),
})
total_errors = 0
for schema, result in results.items():
status = "✓" if result.valid else "✕"
print(f"{status} {schema:<14} {len(result.errors)} errors")
total_errors += len(result.errors)
sys.exit(1 if total_errors else 0)