{
  "platform": "MAJR Agent Services",
  "description": "Shared, product-neutral SOA capabilities: independent services, versioned HTTP contracts, one bearer-auth convention, RFC 7807 problem+json errors.",
  "updated": "2026-07-17",
  "source": "https://release-notes.majr.app/catalog.json",
  "services": [
    {
      "name": "dispatch",
      "display_name": "Dispatch",
      "visibility": "public",
      "description": "Dev log in -> customer-facing release-notes Markdown out. Drafting only; request/response bodies are never persisted.",
      "base_url": "https://dispatch.majr.app",
      "status": "live",
      "archetype": "sync-http",
      "auth": "Authorization: Bearer <api key> (per-product keys)",
      "links": {
        "card": "https://dispatch.majr.app/",
        "openapi": "https://dispatch.majr.app/openapi.json",
        "mcp": "https://dispatch.majr.app/mcp",
        "llms_txt": "https://dispatch.majr.app/llms.txt",
        "playground": "https://dispatch.majr.app/docs"
      }
    },
    {
      "name": "seo",
      "display_name": "SEO / GEO / AEO",
      "visibility": "public",
      "description": "Generates SEO/GEO/AEO machinery: robots.txt (AI crawlers welcomed by default), sitemap.xml, page <head> + JSON-LD, llms.txt. Audits one page's technical SEO plus two AI-readiness signals (JSON-LD, server-rendered text). MCP tools mirror the full v1 surface: audit_page, audit_html, generate_head, generate_robots, generate_sitemap, generate_llms_txt.",
      "base_url": "https://seo.majr.app",
      "status": "live",
      "archetype": "sync-http",
      "auth": "Authorization: Bearer <api key> (per-product keys)",
      "links": {
        "card": "https://seo.majr.app/",
        "openapi": "https://seo.majr.app/openapi.json",
        "mcp": "https://seo.majr.app/mcp",
        "llms_txt": "https://seo.majr.app/llms.txt",
        "playground": "https://seo.majr.app/docs"
      }
    },
    {
      "name": "media-encoding",
      "display_name": "Media Encoding",
      "visibility": "public",
      "description": "User uploads -> streaming media: video -> HLS (multi-rendition + poster), audio -> AAC, image -> WebP. Managed temporary storage (presigned upload in, presigned outputs out) or bring-your-own bucket; poll or signed callback.",
      "base_url": "https://encoding.majr.app",
      "status": "live",
      "archetype": "async-queue",
      "auth": "Authorization: Bearer <api key> (per-product keys)",
      "contract": "POST /v1/uploads -> 201; POST /v1/encode -> 202 {jobId}; GET /v1/jobs/{id}; or the same operations over MCP at /mcp",
      "links": {
        "card": "https://encoding.majr.app/",
        "openapi": "https://encoding.majr.app/openapi.json",
        "mcp": "https://encoding.majr.app/mcp",
        "llms_txt": "https://encoding.majr.app/llms.txt"
      }
    }
  ]
}