Developers
Give your AI agent your brand voice, not a guess at it.
Mora runs a Model Context Protocol server. Point Claude, Cursor or any MCP client at it and the agent can read what your business actually sells and what has actually performed — before it writes a word.
Read-only
Five tools, one resource, three prompts — and not one of them can publish, schedule or change anything. An agent can look; it cannot act.
Grounded
Your offerings and prices come from your own site. An empty catalogue says so, instead of inviting a guess.
Streamable HTTP
Protocol revision 2026-07-28, one endpoint, bearer auth checked on every message.
Connect it
One endpoint and a token. Add this to your MCP client's configuration:
{
"mcpServers": {
"mora": {
"type": "http",
"url": "https://app.mora-marketer.com/api/mcp",
"headers": {
"Authorization": "Bearer YOUR_MORA_TOKEN"
}
}
}
}Works with Claude Desktop, Claude Code, Cursor, and any client that speaks Streamable HTTP.
The five tools
get_brand_profileYour business, audience, tone, content pillars, and your offerings — plans, services or features, with the prices your own site states.
The one an agent should call first. Without it, a model writing about your business invents the parts it does not know.
get_post_performanceYour best-performing published posts with real engagement numbers.
Grounds "what should I post" in what already worked for you, rather than in generic best practice.
list_postsYour posts, newest first, filterable by draft / scheduled / published / failed.
Stops an agent proposing something you already published last week.
list_productsYour connected Shopify catalogue.
So a product gets named correctly, or not at all. An empty catalogue returns a note saying so, not an empty list to guess from.
list_projectsYour content projects and their scheduled slots.
Shows what is already planned before an agent proposes more.
Brand voice, as attachable context
Tools are fetched when a model decides it needs something. A resource is attached by you, once, and stays in context for the whole conversation. For brand voice that difference is the point: an agent that might look up how your business sounds will sometimes not bother, and what it writes when it does not bother is exactly the confident, fluent, off-brand copy you were trying to avoid.
@mora:mora://brand/voice # Claude Code
Add Context > MCP Resources # VS CodeIt renders as prose, not JSON: how you sound, words to use and avoid, what never to write about, what you actually sell and for how much. If your brand kit is empty it says so and tells the agent not to invent one.
Prompts that carry the rules
Three named workflows, invoked as slash commands. They arrive carrying constraints an agent would not otherwise know — asking for upvotes is against Product Hunt's rules and can penalise your listing, and “Coming Soon” pages were retired in August 2025 while most launch guides still on the web recommend building one.
/mcp__mora__product_hunt_launch_week "Tuesday 12 August"
/mcp__mora__first_maker_comment
/mcp__mora__write_like_what_workedPrompts and resources are supported in Claude Code and VS Code today, and in Claude Desktop. ChatGPT's connectors are tools-only, which is why every capability here is also reachable as a tool — nothing is locked behind a primitive your client may not speak.
What it deliberately cannot do
This is a design decision, not a roadmap gap. An MCP client is an autonomous agent, and an agent operating on a real business's social presence without a person watching is not something we are willing to ship yet.
- Publish anything, anywhere.
- Schedule a post, or change one that is scheduled.
- Connect, disconnect or modify a social account.
- Change your billing or plan.
- Write to your brand kit or brand voice.
- Read the Discover article feed — that content is licensed from third parties and is not redistributed here.
Authentication
Send your Mora session token as Authorization: Bearer <token>. It is checked on every message, not once per session. A 401 carries a WWW-Authenticate header pointing at our Protected Resource Metadata (RFC 9728).
Being straight about a gap: Mora does not yet run an OAuth 2.1 authorization server, so the metadata document lists no authorization servers rather than pointing you at one that does not exist. Bring a token from the app. OAuth is the next thing we build here.
Limits and behaviour
- Every tool takes a
limit, capped at 50, defaulting to 10–20. - Results are scoped to your account. A team member sees their account's data, not their own empty slice.
- A very large result is truncated with a message telling the agent to narrow the query — never silently cut.
- The server is stateless: no session ids, no event stream.
GETandDELETEreturn 405.
Troubleshooting
- 401 Unauthorized
- Your token is missing or expired. Session tokens are short-lived — fetch a fresh one.
- 403 Origin not allowed
- A browser-based client sent an Origin we do not allow. Native clients send none and are unaffected.
- 405 on GET
- Expected. The server is POST-only; there is no event stream to open.
- A tool returns
hasBrand: false - No brand kit is set up on that account yet. Set one up in the app — the agent is telling you the truth rather than inventing a brand.
Be first in line.
Join the waitlist and you'll get first access when we open. One email, no spam.
