{
    "specVersion": "1.0",
    "host": {
        "displayName": "Plainrouter",
        "documentationUrl": "https://plainrouter.com/llms.txt",
        "logoUrl": "https://plainrouter.com/brand/plainrouter-logo.png"
    },
    "entries": [
        {
            "identifier": "urn:air:plainrouter.com:mcp:advertising-control-plane",
            "displayName": "Plainrouter MCP Server",
            "type": "application/mcp-server-card+json",
            "url": "https://plainrouter.com/.well-known/mcp/server-card.json",
            "description": "Streamable HTTP MCP server for account context, signal health, governed action proposals, and Launch workflows.",
            "tags": [
                "advertising",
                "analytics",
                "mcp",
                "meta"
            ],
            "capabilities": [
                "account-context",
                "signal-health",
                "governed-actions",
                "launch"
            ],
            "representativeQueries": [
                "Inspect the performance and signal health of my approved Meta ad account.",
                "Prepare a policy-gated advertising action for human approval."
            ],
            "version": "0.4.0"
        },
        {
            "identifier": "urn:air:plainrouter.com:skill:get-ad-account-context",
            "displayName": "Plainrouter Ad Account Context Skill",
            "type": "text/markdown",
            "url": "https://plainrouter.com/.well-known/agent-skills/get-ad-account-context/SKILL.md",
            "description": "Instructions for retrieving the approved ad-account context through Plainrouter without exposing provider credentials.",
            "tags": [
                "advertising",
                "agent-skill",
                "account-context"
            ],
            "capabilities": [
                "account-context"
            ],
            "representativeQueries": [
                "Get the approved advertising account context for this Plainrouter workspace.",
                "Show which ad account the current Plainrouter agent authorization can inspect."
            ],
            "version": "1.0.0"
        },
        {
            "identifier": "urn:air:plainrouter.com:api:conversion",
            "displayName": "Plainrouter Conversion API",
            "type": "application/vnd.oai.openapi+json",
            "url": "https://plainrouter.com/openapi.json",
            "description": "OpenAPI contract for idempotent conversion ingestion, delivery traces, reporting, replay, and user-data deletion.",
            "tags": [
                "advertising",
                "conversion-api",
                "openapi"
            ],
            "capabilities": [
                "conversion-ingestion",
                "delivery-tracing",
                "reporting",
                "deletion"
            ],
            "representativeQueries": [
                "Send an idempotent server-side conversion event to Plainrouter.",
                "Look up delivery evidence for a Plainrouter conversion event."
            ],
            "version": "1.0.0"
        },
        {
            "identifier": "urn:air:plainrouter.com:api:zero-auth-sandbox",
            "displayName": "Plainrouter Zero-Auth API Sandbox",
            "type": "application/json",
            "url": "https://plainrouter.com/api/v1/sandbox",
            "description": "Zero-auth synthetic sandbox that returns a live Sandbox key. An agent can reach a first successful API call with no account, no contact-sales step, and no human in the loop.",
            "tags": [
                "advertising",
                "sandbox",
                "zero-auth",
                "self-serve"
            ],
            "capabilities": [
                "zero-auth-sandbox",
                "self-serve-api-key",
                "free-tier",
                "synthetic-event-validation"
            ],
            "representativeQueries": [
                "Make a successful Plainrouter API call without an account or API key.",
                "Get a short-lived Plainrouter Sandbox key without a human step."
            ],
            "version": "1.0.0"
        },
        {
            "identifier": "urn:air:plainrouter.com:nlweb:ask",
            "displayName": "Plainrouter NLWeb Ask",
            "type": "application/json",
            "url": "https://plainrouter.com/ask",
            "description": "NLWeb v0.55 conversational search over every published Plainrouter document and agent endpoint. Each answer states whether it ranked a match, returned orientation, or found nothing, so a caller can tell a hit from a miss.",
            "tags": [
                "advertising",
                "discovery",
                "nlweb",
                "search"
            ],
            "capabilities": [
                "natural-language-discovery",
                "conversational-search"
            ],
            "representativeQueries": [
                "What does Plainrouter do?",
                "How do I integrate the Plainrouter API?"
            ],
            "version": "0.55"
        },
        {
            "identifier": "urn:air:plainrouter.com:http-message-signatures:directory",
            "displayName": "Plainrouter HTTP Message Signatures Directory",
            "type": "application/http-message-signatures-directory+json",
            "url": "https://plainrouter.com/.well-known/http-message-signatures-directory",
            "description": "Ed25519 JSON Web Key Set for verifying Plainrouter RFC 9421 HTTP Message Signatures.",
            "tags": [
                "ed25519",
                "http-message-signatures",
                "jwks",
                "security"
            ],
            "capabilities": [
                "signing-key-discovery",
                "signature-verification"
            ],
            "representativeQueries": [
                "Find the Plainrouter key for verifying an HTTP Message Signature."
            ],
            "version": "draft-05"
        },
        {
            "identifier": "urn:air:plainrouter.com:skill:verify-signal-ingestion",
            "displayName": "Plainrouter Signal Ingestion Verification Skill",
            "type": "text/markdown",
            "url": "https://plainrouter.com/.well-known/agent-skills/verify-signal-ingestion/SKILL.md",
            "description": "Instructions for verifying end-to-end Signal ingestion with one idempotent identity-free event.",
            "tags": [
                "advertising",
                "agent-skill",
                "signals",
                "verification"
            ],
            "capabilities": [
                "signal-ingestion-verification"
            ],
            "representativeQueries": [
                "Verify that my Plainrouter Signal can receive a server-side event.",
                "Complete the Plainrouter Signal ingestion check for this workspace."
            ],
            "version": "1.0.0"
        },
        {
            "identifier": "urn:air:plainrouter.com:skill:propose-governed-ad-actions",
            "displayName": "Plainrouter Governed Ad Actions Skill",
            "type": "text/markdown",
            "url": "https://plainrouter.com/.well-known/agent-skills/propose-governed-ad-actions/SKILL.md",
            "description": "Instructions for preparing evidence-backed advertising proposals subject to workspace policy and human approval.",
            "tags": [
                "advertising",
                "agent-skill",
                "governance",
                "proposals"
            ],
            "capabilities": [
                "governed-action-proposals"
            ],
            "representativeQueries": [
                "Prepare this budget change as a Plainrouter proposal for human review.",
                "Propose pausing this human-supplied campaign through Plainrouter."
            ],
            "version": "1.0.0"
        }
    ]
}