Examples

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)