{
  "$schema": "https://github.com/modelcontextprotocol/modelcontextprotocol/blob/main/schema/mcp-server-card.schema.json",
  "serverInfo": {
    "name": "mora",
    "version": "1.0.0",
    "title": "Mora",
    "description": "Read-only MCP server over a Mora account: its posts and their performance, its brand profile and offerings, its Shopify catalogue, and its content projects. Intended to ground an agent's marketing decisions in what a business actually sells and what has actually worked."
  },
  "status": "available",
  "transport": {
    "type": "http",
    "url": "https://app.mora-marketer.com/api/mcp",
    "_note": "Streamable HTTP. POST JSON-RPC 2.0. Every request must carry Authorization: Bearer <Mora session token>; the token is checked on every message, not once per session."
  },
  "authentication": {
    "type": "bearer",
    "_note": "Mora is an OAuth Resource Server in posture but does not yet run an authorization server, so there is no Protected Resource Metadata document or Dynamic Client Registration. Supply a session token you already hold. This is a known gap, stated rather than implied."
  },
  "capabilities": {
    "tools": [
      {
        "name": "list_posts",
        "description": "List this account's social posts, newest first, optionally filtered by status."
      },
      {
        "name": "get_post_performance",
        "description": "This account's best-performing published posts with engagement metrics."
      },
      {
        "name": "get_brand_profile",
        "description": "What this business is: name, what it sells, who it sells to, voice, and its offerings."
      },
      {
        "name": "list_products",
        "description": "This account's Shopify catalogue."
      },
      {
        "name": "list_projects",
        "description": "This account's content projects and their scheduled slots."
      }
    ],
    "resources": [
      {
        "uri": "mora://brand/voice",
        "name": "brand_voice",
        "mimeType": "text/markdown",
        "description": "How this business sounds, what it sells and who it sells to, as prose. Attach it so every message is written on-brand."
      }
    ],
    "prompts": [
      {
        "name": "product_hunt_launch_week",
        "description": "A full week of launch content, compliant with Product Hunt rules on vote solicitation."
      },
      {
        "name": "first_maker_comment",
        "description": "The single highest-leverage Product Hunt asset."
      },
      {
        "name": "write_like_what_worked",
        "description": "Writes from this account's own best-performing posts."
      }
    ]
  },
  "_scope": {
    "readOnly": true,
    "_note": "No tool publishes, schedules, connects an account, changes billing or writes a brand kit. This is a position, not a milestone \u2014 see server/api/_shared/mcp/tools.ts.",
    "excludes": [
      "Discover article corpus \u2014 licensed third-party news content, deliberately not redistributed"
    ]
  },
  "links": [
    {
      "rel": "service-desc",
      "href": "https://app.mora-marketer.com/openapi.json",
      "type": "application/vnd.oai.openapi+json;version=3.1",
      "title": "Underlying HTTP API (OpenAPI 3.1)"
    },
    {
      "rel": "describedby",
      "href": "https://app.mora-marketer.com/llms.txt",
      "type": "text/markdown",
      "title": "LLM-friendly description of the public surface"
    },
    {
      "rel": "https://www.iana.org/assignments/relation/contact",
      "href": "mailto:hello@mora-marketer.com"
    }
  ],
  "_meta": {
    "protocolVersion": "2026-07-28",
    "last_reviewed": "2026-08-02"
  }
}
