{
    "@context": "https://agenticresourcediscovery.org/context/v1",
    "specVersion": "1.0",
    "host": {
        "identifier": "urn:air:publica.la",
        "displayName": "publica.la",
        "name": "publica.la",
        "url": "https://publica.la",
        "description": "All-in-one platform for digital publishing and ecommerce: branded storefronts, DRM, white-label reading apps and a marketplace for publishers, bookshops, libraries, magazines and newspapers, university presses and individual authors.",
        "documentation": "https://publica.la/en/ai-agents",
        "contact": "hello@publica.la"
    },
    "entries": [
        {
            "identifier": "urn:air:publica.la:mcp:website",
            "displayName": "publica.la MCP server",
            "type": "application/mcp-server-card+json",
            "url": "https://publica.la/.well-known/mcp/server-card.json",
            "description": "Read-only MCP server for the publica.la website. Answers what the platform is and when to use it, its plans and prices, its blog posts and its changelog. Streamable HTTP at https://publica.la/mcp, no authentication, 60 requests per minute per IP.",
            "representativeQueries": [
                "What is publica.la and who is it for?",
                "How much does publica.la cost per month?",
                "Can a library lend ebooks and audiobooks with publica.la?",
                "What has publica.la shipped recently?"
            ],
            "capabilities": [
                "search_site_content",
                "get_blog_post",
                "list_changelog_entries",
                "get_pricing_plans",
                "get_platform_overview"
            ],
            "version": "1.0.0",
            "updatedAt": "2026-11-03T00:00:00Z",
            "trustManifest": {
                "identity": {
                    "type": "domain",
                    "domain": "publica.la",
                    "name": "publica.la",
                    "url": "https://publica.la",
                    "verificationMethod": "https-domain-control"
                },
                "attestations": [
                    {
                        "type": "usage-policy",
                        "statement": "Everything listed here is public and may be read, cited, indexed and used as AI input by agents and crawlers without a credential, as robots.txt grants with Allow: / and Content-Signal: ai-train=yes, search=yes, ai-input=yes. Two crawlers are refused there by name; the grant is to every other client.",
                        "evidence": "https://publica.la/robots.txt"
                    },
                    {
                        "type": "access-policy",
                        "statement": "Every resource listed here is read-only, so a retry is always safe. The application allows 300 requests per minute per IP on the site API and 60 on the MCP server, and the edge in front of it refuses one IP past 100 a minute across the whole site; a 429 carries Retry-After. No prices for individual books are published anywhere on this site.",
                        "evidence": "https://publica.la/agents.md"
                    }
                ]
            }
        },
        {
            "identifier": "urn:air:publica.la:api:website-v1",
            "displayName": "publica.la website API",
            "type": "application/json",
            "url": "https://publica.la/openapi.json",
            "description": "OpenAPI 3.1 description of the publica.la website's open JSON endpoints: five anonymous GET operations under /api/v1/site — posts, one post, changelog, pricing, overview — that describe the website, never a store. No credential. Errors carry RFC 9457 members. A store's own API is a different API, on the store's own domain, documented at https://docs.publica.la/api-overview/.",
            "representativeQueries": [
                "List the latest publica.la blog posts as JSON.",
                "What are publica.la's pricing plans over HTTP?",
                "Which publica.la API endpoints need no credentials?"
            ],
            "capabilities": [
                "listSitePosts",
                "getSitePost",
                "listSiteChangelog",
                "getSitePricing",
                "getSiteOverview"
            ],
            "version": "v1",
            "updatedAt": "2026-11-03T00:00:00Z",
            "trustManifest": {
                "identity": {
                    "type": "domain",
                    "domain": "publica.la",
                    "name": "publica.la",
                    "url": "https://publica.la",
                    "verificationMethod": "https-domain-control"
                },
                "attestations": [
                    {
                        "type": "usage-policy",
                        "statement": "Everything listed here is public and may be read, cited, indexed and used as AI input by agents and crawlers without a credential, as robots.txt grants with Allow: / and Content-Signal: ai-train=yes, search=yes, ai-input=yes. Two crawlers are refused there by name; the grant is to every other client.",
                        "evidence": "https://publica.la/robots.txt"
                    },
                    {
                        "type": "access-policy",
                        "statement": "Every resource listed here is read-only, so a retry is always safe. The application allows 300 requests per minute per IP on the site API and 60 on the MCP server, and the edge in front of it refuses one IP past 100 a minute across the whole site; a 429 carries Retry-After. No prices for individual books are published anywhere on this site.",
                        "evidence": "https://publica.la/agents.md"
                    }
                ]
            }
        },
        {
            "identifier": "urn:air:publica.la:a2a:website",
            "displayName": "publica.la A2A agent",
            "type": "application/json",
            "url": "https://publica.la/.well-known/agent-card.json",
            "description": "Agent2Agent card for publica.la. It designates a JSON-RPC 2.0 agent at https://publica.la/api/a2a with one skill: name the publica.la document that answers a question — pricing, authentication, the MCP server, either API, or the operating guide. Anonymous, no credential, one message in and one message out; it keeps no tasks and does not stream.",
            "representativeQueries": [
                "What is publica.la, and where are its machine-readable entry points?",
                "How do I authenticate against the publica.la API?",
                "Does publica.la have an MCP server?"
            ],
            "capabilities": [
                "site-guide"
            ],
            "version": "1.0.0",
            "updatedAt": "2026-11-03T00:00:00Z",
            "trustManifest": {
                "identity": {
                    "type": "domain",
                    "domain": "publica.la",
                    "name": "publica.la",
                    "url": "https://publica.la",
                    "verificationMethod": "https-domain-control"
                },
                "attestations": [
                    {
                        "type": "usage-policy",
                        "statement": "Everything listed here is public and may be read, cited, indexed and used as AI input by agents and crawlers without a credential, as robots.txt grants with Allow: / and Content-Signal: ai-train=yes, search=yes, ai-input=yes. Two crawlers are refused there by name; the grant is to every other client.",
                        "evidence": "https://publica.la/robots.txt"
                    },
                    {
                        "type": "access-policy",
                        "statement": "Every resource listed here is read-only, so a retry is always safe. The application allows 300 requests per minute per IP on the site API and 60 on the MCP server, and the edge in front of it refuses one IP past 100 a minute across the whole site; a 429 carries Retry-After. No prices for individual books are published anywhere on this site.",
                        "evidence": "https://publica.la/agents.md"
                    }
                ]
            }
        },
        {
            "identifier": "urn:air:publica.la:skill:publicala",
            "displayName": "publica.la agent skill",
            "type": "text/markdown",
            "url": "https://publica.la/skills/publicala/SKILL.md",
            "description": "Agent Skills document for publica.la: what the platform is, the order to call its MCP tools and anonymous API in, and the constraints an agent must respect — no per-book prices, no checkout, lowercase name.",
            "representativeQueries": [
                "Load the publica.la skill.",
                "How should an agent answer questions about publica.la?"
            ],
            "capabilities": [
                "search_site_content",
                "get_blog_post",
                "list_changelog_entries",
                "get_pricing_plans",
                "get_platform_overview"
            ],
            "version": "1.0.0",
            "updatedAt": "2026-11-03T00:00:00Z",
            "trustManifest": {
                "identity": {
                    "type": "domain",
                    "domain": "publica.la",
                    "name": "publica.la",
                    "url": "https://publica.la",
                    "verificationMethod": "https-domain-control"
                },
                "attestations": [
                    {
                        "type": "usage-policy",
                        "statement": "Everything listed here is public and may be read, cited, indexed and used as AI input by agents and crawlers without a credential, as robots.txt grants with Allow: / and Content-Signal: ai-train=yes, search=yes, ai-input=yes. Two crawlers are refused there by name; the grant is to every other client.",
                        "evidence": "https://publica.la/robots.txt"
                    },
                    {
                        "type": "access-policy",
                        "statement": "Every resource listed here is read-only, so a retry is always safe. The application allows 300 requests per minute per IP on the site API and 60 on the MCP server, and the edge in front of it refuses one IP past 100 a minute across the whole site; a 429 carries Retry-After. No prices for individual books are published anywhere on this site.",
                        "evidence": "https://publica.la/agents.md"
                    }
                ]
            }
        },
        {
            "identifier": "urn:air:publica.la:docs:guide",
            "displayName": "publica.la operating guide",
            "type": "text/markdown",
            "url": "https://publica.la/guide.md",
            "description": "How to call publica.la as a program: the MCP server first, then the anonymous JSON API under /api/v1/site, then the A2A signpost — with request examples, limits and the error envelope, and where a store's own API is documented instead.",
            "representativeQueries": [
                "How do I call the publica.la MCP server?",
                "Which publica.la endpoints work without an API key?",
                "What are the publica.la rate limits?"
            ],
            "capabilities": [],
            "version": "1.0.0",
            "updatedAt": "2026-11-03T00:00:00Z",
            "trustManifest": {
                "identity": {
                    "type": "domain",
                    "domain": "publica.la",
                    "name": "publica.la",
                    "url": "https://publica.la",
                    "verificationMethod": "https-domain-control"
                },
                "attestations": [
                    {
                        "type": "usage-policy",
                        "statement": "Everything listed here is public and may be read, cited, indexed and used as AI input by agents and crawlers without a credential, as robots.txt grants with Allow: / and Content-Signal: ai-train=yes, search=yes, ai-input=yes. Two crawlers are refused there by name; the grant is to every other client.",
                        "evidence": "https://publica.la/robots.txt"
                    },
                    {
                        "type": "access-policy",
                        "statement": "Every resource listed here is read-only, so a retry is always safe. The application allows 300 requests per minute per IP on the site API and 60 on the MCP server, and the edge in front of it refuses one IP past 100 a minute across the whole site; a 429 carries Retry-After. No prices for individual books are published anywhere on this site.",
                        "evidence": "https://publica.la/agents.md"
                    }
                ]
            }
        },
        {
            "identifier": "urn:air:publica.la:docs:platform-api",
            "displayName": "publica.la store API documentation (Markdown)",
            "type": "text/plain",
            "url": "https://docs.publica.la/llms.txt",
            "description": "The llms.txt of the publica.la documentation site (docs.publica.la), not of this website: an index of every page as Markdown, for the API every publica.la store answers on its own domain — content, orders, auth tokens, webhooks and ONIX 3.0 intake; its overview is https://docs.publica.la/api-overview/. Use it for a publisher's own catalogue and readers; use the website MCP server for questions about publica.la itself. The documentation site does not run an MCP server and executes no API operations.",
            "representativeQueries": [
                "How do I upload a book through the publica.la Content API v3?",
                "Which webhooks does a publica.la store send on a purchase?",
                "How do I sign a reader into a publica.la store from my own system?"
            ],
            "capabilities": [],
            "version": "1.0.0",
            "updatedAt": "2026-11-03T00:00:00Z",
            "trustManifest": {
                "identity": {
                    "type": "domain",
                    "domain": "publica.la",
                    "name": "publica.la",
                    "url": "https://publica.la",
                    "verificationMethod": "https-domain-control"
                },
                "attestations": [
                    {
                        "type": "usage-policy",
                        "statement": "Everything listed here is public and may be read, cited, indexed and used as AI input by agents and crawlers without a credential, as robots.txt grants with Allow: / and Content-Signal: ai-train=yes, search=yes, ai-input=yes. Two crawlers are refused there by name; the grant is to every other client.",
                        "evidence": "https://publica.la/robots.txt"
                    },
                    {
                        "type": "access-policy",
                        "statement": "Every resource listed here is read-only, so a retry is always safe. The application allows 300 requests per minute per IP on the site API and 60 on the MCP server, and the edge in front of it refuses one IP past 100 a minute across the whole site; a 429 carries Retry-After. No prices for individual books are published anywhere on this site.",
                        "evidence": "https://publica.la/agents.md"
                    }
                ]
            }
        }
    ]
}