# MAJR Agent Services > Infrastructure for Agents. Your agents call these media and marketing capabilities instead > of building them. Every service exposes plain HTTP, MCP, OpenAPI, and an agent-readable llms.txt. Catalog last updated: 2026-08-10 Canonical machine catalog: https://release-notes.majr.app/catalog.json This page as JSON: https://majr.app/services.json ## Services ### Dispatch (dispatch) Turn a raw dev log into release notes a customer can read. Post the commits, tickets, and notes from a release. Get back customer-facing Markdown, ready to publish or to edit first. Drafting only: request and response bodies are never persisted. Origin: https://dispatch.majr.app Status: live Archetype: sync-http Auth: Authorization: Bearer (per-product keys) MCP: https://dispatch.majr.app/mcp llms.txt: https://dispatch.majr.app/llms.txt Playground: https://dispatch.majr.app/docs OpenAPI: https://dispatch.majr.app/openapi.json ### AI SEO (seo) Make a page ready for search engines to index and AI answer engines to quote. Generate the machinery a page needs to be read by both: robots.txt that welcomes AI crawlers by default, sitemap.xml, a page with JSON-LD, and llms.txt. Audit a live page and get two scores instead of one. Findable asks whether an engine can reach and index the URL. Citable asks whether, once reached, the page can be extracted and attributed. Two scores mean the result tells you which problem you have, not only that you have one. The audit reports what it observes on one pass: the page's robots meta tags, the X-Robots-Tag header, an expired unavailable_after, the origin's robots.txt, and whether the canonical target answers. It cannot know which crawlers honor a directive aimed at one of them, so it reports the block it saw and never reports who is still indexing you. audit_html scores markup before deploy, so it checks a template, not a deployment. All six operations run over MCP: audit_page, audit_html, generate_head, generate_robots, generate_sitemap, generate_llms_txt. Origin: https://seo.majr.app Status: live Archetype: sync-http Auth: Authorization: Bearer (per-product keys) MCP: https://seo.majr.app/mcp llms.txt: https://seo.majr.app/llms.txt Playground: https://seo.majr.app/docs OpenAPI: https://seo.majr.app/openapi.json ### Media Encoding (media-encoding) Take what a user uploaded and get back web-ready video, audio, and images. Video becomes HLS with multiple renditions and a poster frame. Audio becomes AAC. Images become WebP. Use the managed temporary storage, presigned upload in and presigned outputs out, or bring your own bucket. Poll for the result, or take a signed callback when it is done. Origin: https://encoding.majr.app Status: live Archetype: async-queue Auth: Authorization: Bearer (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 MCP: https://encoding.majr.app/mcp llms.txt: https://encoding.majr.app/llms.txt OpenAPI: https://encoding.majr.app/openapi.json ## Access The services are live. Access is in beta, and tokens are issued by hand. Request one at https://majr.app/#access or email support@majr.app. Free during beta. Billing is not enabled yet. ## Notes for agents A 503 from any service is never a verdict on your key. It means the service could not check the key right now, so retry rather than rotating a working credential.