AI Manifest (Community Draft v0.1)

Validate AI Manifest

/.well-known/ai.json + OpenAPI/JSON Schema + JOSE/JWKS

Why (Optional Reference)

Mapping v0.1 (ai.json ↔ MCP / agents.json)

ai.jsonMeaningMCPagents.jsonNotes
manifest_versionFile versionserver.version (~)schema_versionsemver e.g. "0.1"
provider.name/descriptionProviderserver.name/descriptionagents[*].org/nameIdentification
spec.openapi_urlOpenAPIagents[*].openapi_urlMCP is not REST
spec.schemas[]JSON Schematools[].input_schemaagents[*].capabilities[*].schemaInput shape
servers[{type,url}]Endpointstransport/endpointagents[*].endpoints[]type: rest/mcp/ws/sse
capabilities[]Callable capabilitiestools[]agents[*].capabilities[]Names align
resources[]Read-only dataresources[]agents[*].resources[]Optional
prompts[]Preset promptsprompts[]agents[*].prompts[]Optional
auth.jwks_uriJWKS URLsecurity.jwks_uriSign/rotate
receipts.signature[]Signature algsreceipts.signatureInference receipts
contact.*Contact/policycontact.*Compliance

Refs: MCP Tools · MCP Resources · MCP Prompts

Best Practices

PR Two-liners

AI Manifest — optional reference for /.well‑known/ai.json + OpenAPI/JSON Schema discovery (with MCP/agents.json mapping). https://ai-manifest.org
WellKnownAI — registry/spec examples and public snapshots (no PII, mirroring allowed). https://wellknownai.org

5-minute Getting Started (Provider)

  1. Create /.well-known/ai.json (minimal example):
    {
      "manifest_version": "0.1",
      "provider": { "name": "Your Inc.", "homepage": "https://your-domain" },
      "spec": { "schemas": ["https://your-domain/schemas/YourSchema.json"] },
      "servers": [{ "type": "rest", "url": "https://api.your-domain" }],
      "capabilities": ["schemas.list", "urn:agent:skill:your-domain:example.v1"],
      "auth": { "jwks_uri": "https://your-domain/.well-known/jwks.json", "schemes": ["bearer"] }
    }
  2. Publish JWKS at /.well-known/jwks.json (placeholder for demo; use a real public key in production):
    {
      "keys": [{
        "kty": "RSA",
        "kid": "2025-01-01-rsa",
        "use": "sig",
        "alg": "RS256",
        "n": "base64url...",
        "e": "AQAB"
      }]
    }
  3. (Optional) Publish CRL at /.well-known/ai-crl.json to revoke keys or mark compliance status.
  4. Validate locally using the CLI provided in this repo:
    node ai-manifest-kit/scripts/validate-ai.mjs --file .well-known/ai.json --out _reports/ai_local.json\nnode ai-manifest-kit/scripts/validate-jwks.mjs --file .well-known/jwks.json --out _reports/jwks_local.json\nnode ai-manifest-kit/scripts/validate-crl.mjs  --file .well-known/ai-crl.json --out _reports/crl_local.json
  5. Wire CI: This repo already ships .github/workflows/validate-ai.yml. You can copy it to your service repo.
  6. (Optional) To be listed, open a PR to add your domain to wellknownai.org's registry.json (see Registry Viewer on the site).

Notes: Use HTTPS and absolute URLs. Send ETag and Last-Modified and a Cache-Control (e.g., max-age=600+). Rotate JWKS by kid with an overlap window (≥ 7 days): add new key first, then remove the old one.