← ElloraCONTENT HISTORY

Update to Ellora

Snapshot Oct 31, 2026 · 12:11 UTC · version 1.4.2

Collection source: downloaded plugin package.

WHAT CHANGED

First saved snapshot

No earlier snapshot is available to establish a change.

Save Ellora and check future changes in Following.

Up to 10 plugins free · no card required.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "description": "Connect to Ellora, the hosted brand-voice QA, desloping, and writing-brief reviewer (a remote MCP server), and keep it running on everything the team writes. Use this before writing, editing, or presenting prose meant to go out in the team's voice: blog posts, landing pages, launch announcements, customer emails, docs, social posts, newsletters, release notes. Trigger it the moment the user says any of: Ellora, deslop, desloping, de-slop, AI slop, slop, sounds like AI, humanize this, brand voice, brand voice QA, voice QA, voice check, tone check, style guide, writing brief, voice profile, or asks you to review, polish, or rewrite a draft. Even when Ellora is not named, check whether the ellora_* tools are available before you draft. It handles three states: no Ellora account yet, Ellora added but not connected, and Ellora connected. Once connected, run the review loop before you show the user a draft; do not wait to be asked.",
  "included_files": [],
  "name": "ellora",
  "skill_md_contents": "---\nname: ellora\ndescription: >-\n  Connect to Ellora, the hosted brand-voice QA, desloping, and writing-brief\n  reviewer (a remote MCP server), and keep it running on everything the team\n  writes. Use this before writing, editing, or presenting prose meant to go\n  out in the team's voice: blog posts, landing pages, launch announcements,\n  customer emails, docs, social posts, newsletters, release notes. Trigger it\n  the moment the user says any of: Ellora, deslop, desloping, de-slop, AI\n  slop, slop, sounds like AI, humanize this, brand voice, brand voice QA,\n  voice QA, voice check, tone check, style guide, writing brief, voice\n  profile, or asks you to review, polish, or rewrite a draft. Even when\n  Ellora is not named, check whether the ellora_* tools are available before\n  you draft. It handles three states: no Ellora account yet, Ellora added but\n  not connected, and Ellora connected. Once connected, run the review loop\n  before you show the user a draft; do not wait to be asked.\nmetadata:\n  author: Ellora\n  version: \"1.4\"\n---\n\n# Ellora\n\nEllora checks writing before it ships. It reviews a draft against the team's\nsaved brand-voice profile (**VoiceDNA**), strips flat/generic AI phrasing (**AI\nEditor**), and enforces the rules in a writing brief (**Editorial**). It runs\nas a hosted MCP server, so writers keep writing in whatever LLM app they\nalready use.\n\n| | |\n|---|---|\n| MCP server | `https://api.getellora.com/v1/external/mcp` |\n| Transport | Remote HTTP (Streamable HTTP) |\n| Auth | **OAuth only** — there is no API key to paste |\n| Surface | 12 tools + 1 prompt, all prefixed `ellora_` |\n| App (team admin) | https://app.getellora.com — voice profiles, briefs, tokens |\n| Website / demo | https://getellora.com |\n| Skill repo | https://github.com/getellora/agent-skills (the same file is served at https://getellora.com/SKILL.md) |\n\nStart a free **Solo** account (the website's **Free** plan) at\nhttps://app.getellora.com/register. Verify your email with the code or magic\nlink to create your account. Solo includes one voice profile and does not\ninclude team members. Accounts created before Solo launched keep their\nTeam plan.\n\nFor more voice profiles and team members, schedule a call from the dashboard\nPricing page or https://cal.com/getellorademo/client-demo. Team plans (the\nwebsite's **Enterprise** plan) are offered on half-yearly (six-month) and yearly\ncontracts only, starting at $1,999 for six months depending on requirements. Ellora can upgrade your existing account after the call.\n\n## First: work out which state you are in\n\nDo this once, at the start, before anything else. Everything below branches\noff the answer.\n\n1. **Are the `ellora_*` tools available in this session?** Call\n   `ellora_profiles_fetch_active` to find out.\n   - The call returns successfully — an object with a `voice_profiles` array,\n     possibly empty → **State 3**, connected.\n   - The call returns `401` / `403`, or the client reports the server needs\n     authentication → **State 2**, go authenticate.\n   - The tools do not exist, or the server is not configured → **State 2**,\n     go install.\n2. **State 2 could become State 1.** If the user cannot complete the OAuth\n   sign-in because they do not have an Ellora account, stop and go to\n   **State 1**. Never fake the connection, and never stub out review results.\n\nTell the user which state you found, in one sentence, and what you are doing\nabout it. Then do it.\n\n## State 1 — The user has no Ellora account\n\nDirect them to https://app.getellora.com/register to create a Solo account.\nThey enter their email, tick the box to accept the Terms\n(https://getellora.com/terms) and Privacy Policy (https://getellora.com/privacy),\nand verify the code or magic link sent to their inbox. The user must read and\naccept the terms themselves: never tick the box, accept, or sign up on their\nbehalf. Do not ask them to share the code in chat or claim the account exists\nbefore verification succeeds. If they already have an account, this signs them in\nwithout changing their plan or creating another workspace.\n\nOnce signed in, continue with State 2 to connect their LLM app through OAuth.\nSolo supports one voice profile and no additional team members. If a profile\nalready exists, use it; do not create another profile or workspace to bypass\nthe limit.\n\nFor team access, book a 30-minute call on their own content:\nhttps://cal.com/getellorademo/client-demo.\nThe dashboard Pricing page provides the same schedule-call path. Team plans\nare available on half-yearly (six-month) and yearly contracts only, starting\nat $1,999 for six months depending on requirements. Questions: hello@getellora.com.\n\nIf signup or authentication fails, report the actual error and offer to\ncontinue without Ellora's review. Never present unreviewed output as reviewed.\n\n## State 2 — Ellora is not connected yet\n\n### 1. Add the MCP server\n\nAdd a remote **HTTP** server named `ellora` pointing at\n`https://api.getellora.com/v1/external/mcp`. Pick the row that matches the\nclient you are running in.\n\n**CLI clients**\n\n| Client | Command |\n|---|---|\n| Command Code | `cmd mcp add --transport http ellora https://api.getellora.com/v1/external/mcp` |\n| Claude Code | `claude mcp add --transport http ellora https://api.getellora.com/v1/external/mcp` |\n\n**Config-file clients** (Cursor, Windsurf, Cline, and most others): add this\nentry to the client's MCP settings, then restart it.\n\n```json\n{\n  \"mcpServers\": {\n    \"ellora\": {\n      \"type\": \"http\",\n      \"url\": \"https://api.getellora.com/v1/external/mcp\"\n    }\n  }\n}\n```\n\nVS Code uses the same entry but under a `servers` key instead of `mcpServers`.\n\nClaude Code can instead install the Ellora plugin, which adds this server and\nthis skill together: `claude plugin marketplace add getellora/agent-skills`,\nthen `claude plugin install ellora@getellora`. A server added that way is\nlisted as `plugin:ellora:ellora`.\n\n**Hosted chat clients** (ChatGPT, Claude Desktop, claude.ai, Perplexity, and\nsimilar): open the client's connector/MCP settings, choose to add a **custom\nremote connector**, and give it the URL above. No headers, no keys.\n\n**Any other agent**: the two facts you need are the URL and the shape — it is a\nremote HTTP MCP server that authenticates with OAuth. Configure it however that\nclient configures remote MCP servers; don't guess at a token.\n\n### 2. Authenticate\n\nOAuth is the only auth path, so the client has to run the flow — you cannot\ncurl it into place.\n\n- Command Code: `cmd mcp auth ellora`, or run `/mcp` and authenticate.\n- Claude Code: run `/mcp` and authenticate `ellora`. A server you added with\n  `claude mcp add` also accepts `claude mcp login ellora`; one installed\n  through the Ellora plugin is listed as `plugin:ellora:ellora`, so use `/mcp`.\n- Other clients: trigger a connect/authenticate action and follow the browser\n  prompt.\n\nA browser opens on `app.getellora.com`. The user signs in and approves the\nconnection; tokens are then stored and refreshed by the client. If no browser\nopens, print the URL and have them open it manually, then paste the callback\nURL back. Verify afterwards (re-run the check from \"First\", or\n`cmd mcp list` / `/mcp`) that the server shows **connected**, not\n*needs authentication*.\n\n**If the user has no account**, go to State 1 to register. If an existing\naccount cannot sign in, report the error and direct them to\nhello@getellora.com; registration does not bypass a suspended account.\n\n## State 3 — Connected: write with Ellora on\n\nThis is the standing default from here on: **whenever you are drafting or\nsubstantially rewriting prose of the covered kinds, run the review loop before\nyou present the draft to the user.** Not only when they say \"Ellora\" — the\npoint is that it is always on, so the first version they see is already\non-voice and deslopped.\n\nCovered: blog posts and articles · landing-page and website copy · launch and\nrelease announcements · customer-facing emails · docs for an external audience\n· social posts · newsletters · decks and outreach.\n\nSkip: code, config, commit messages, internal scratch notes, quick chat\nreplies, and anything the user calls a rough throwaway. When it is genuinely\nborderline, ask once: \"Want me to run this through the Ellora voice check?\"\n\nWhen the connection is new, confirm it in one line and put it to work — say\nwhat you'll do (run every draft through the voice check) and get on with the\nuser's actual writing task.\n\n## The review loop\n\nFuller version: the `ellora-review` skill, if it is installed. Same sequence\nalso lives on the server as the `ellora_review_loop` MCP prompt.\n\n1. **Pick a voice profile** — `ellora_profiles_fetch_active`. One → use it.\n   Several → ask which (teams commonly keep one per writer, or per author they\n   want to sound like). None → a team admin can create one with\n   `ellora_profile_create` from 2–20 samples of the team's own writing, then\n   use the returned `voice_profile_id`. Don't send them elsewhere to build one,\n   and never review without one — an id has to resolve to a saved, active\n   profile. If the user isn't an admin and none exists, stop and say a profile\n   has to be created first; that's a real blocker, not something to work around.\n2. **Pick a writing brief** — `ellora_briefs_fetch_active`. Same pattern. If\n   there is none, build an inline `writing_brief_json` for this session only\n   (never saved). **A brief is mandatory** — `ellora_session_start` fails\n   without either a `writing_brief_id` or a `writing_brief_json`. Pass the JSON\n   as an **object**, not a string. Required fields: `version` (`\"1\"`),\n   `audience`, `intent`, `format`. `format` is one of `general`, `social`,\n   `deck`, `outreach`, `blog`, `audit`, `website`.\n3. **Start the session** — `ellora_session_start` with those two. They are\n   locked for the whole session. Keep the returned `content_session_id` and\n   pass it to every later call for this one piece of content. While you're\n   there, self-report the optional `model_name` / `model_class` /\n   `model_version` / `thinking_effort` and `mcp_client_name` /\n   `mcp_client_version` — analytics-only, never affects the review.\n4. **Optionally pull positioning** — `ellora_positioning_recommendations`,\n   before drafting. Advisory only.\n5. **Review** — `ellora_review` with the `content_session_id` and the current\n   draft as `content`. It takes no profile or brief argument of its own — both\n   are already locked into the session. `content` is capped at 100,000\n   characters, so split anything longer into successive pieces.\n6. **Do what `next_action` says.**\n   - `keep_rewriting` → rewrite using the response's own `rewrite_guidance`,\n     then go back to step 5 with the same `content_session_id`. **Do not show\n     the draft to the user yet** — you are mid-loop.\n   - `ready_to_verify` → no mandatory finding remains. Check *this same\n     response*: it already carries a `verification` block comparing the\n     content against the session's first-reviewed content — **unless this was\n     the session's very first call**, in which case there is nothing yet to\n     compare against (treat it like `keep_rewriting` if findings remain, or\n     deliver as-is if there are none). Don't run another pass just to get\n     verified. Deliver once `verification.passed: true`.\n   - `diminishing_returns` → the rewrites stopped helping, or you hit\n     `max_iterations`. Stop looping, tell the user exactly what is still\n     flagged, and ask how to proceed.\n\n   **Blue findings never gate.** Severity `blue` (counted separately in\n   `current_finding_counts.blue`) are optional AI-Editor suggestions: they\n   never make `next_action` `keep_rewriting` and are never a reason to run\n   another pass. Apply or ignore them as you see fit.\n7. **Verification and learning are automatic.** A passing call that isn't the\n   session's first already carries the `verification` block, and on success\n   against a saved profile a `learning_event`. There is no separate verify call\n   to make.\n8. **Teach the profile only on explicit approval.** If the user accepts the\n   delivered rewrite *and* approves the rules you extracted from it, call\n   `ellora_learn_from_accepted_rewrite` with `user_approved: true`. Never on\n   your own inference.\n\nKeep going around 5 → 6 → 7 until step 6 sends you out of the loop. Don't stop\nearly because the draft \"seems good enough\" — the `iteration` / `max_iterations`\nbudget exists so you can keep going with confidence.\n\nOne session = one piece of content. A different article, or a switch to another\nprofile or brief, means a new `ellora_session_start`.\n\nWhen the loop finishes, present the final draft plus a short summary: how many\npasses it took, what changed at a high level, and anything still flagged that\nyou chose to leave. Don't dump raw finding JSON unless asked.\n\n## Tools\n\n| Tool | Use it for |\n|---|---|\n| `ellora_session_start` | Open a session for one piece of writing; locks in profile + brief |\n| `ellora_review` | Review the draft; auto-inlines rewrite guidance, auto-verifies |\n| `ellora_learn_from_accepted_rewrite` | Save a human-approved rule (never on inference) |\n| `ellora_profile_create` | **Admin-only.** Create a voice profile from 2–20 samples |\n| `ellora_profiles_fetch_active` / `_by_id` | Find a usable voice profile id |\n| `ellora_briefs_fetch_active` / `_by_id` | Find a usable writing brief id |\n| `ellora_context_fetch_active` / `_by_id` | Read the team's company context docs |\n| `ellora_context_capture` | Save a context doc mid-session (admin activates it) |\n| `ellora_positioning_recommendations` | Advisory messaging/positioning guidance |\n\nPrompts: `ellora_review_loop`.\n\n## Rules\n\n1. **Never invent results.** If the tools aren't connected, say so and carry on\n   without Ellora. Do not describe a finding, a score, or a `passed` verdict you\n   did not get back from `ellora_review`.\n2. **Don't route around access or plan limits.** Signup requires accepting the\n   terms and verifying the email; connection requires OAuth. Solo permits one voice profile\n   and no team members. Use the Pricing page to discuss a Team upgrade.\n3. **Don't show unreviewed drafts as reviewed**, and don't claim a piece passed\n   when you stopped on `diminishing_returns`.\n4. **Follow `next_action`**, not your own judgment, about whether to keep\n   looping.\n5. **A brief is mandatory.** If the team has none, build the inline\n   `writing_brief_json` rather than skipping the review.\n6. **One piece of content, one session.**\n"
}

SHA-256 of public snapshot: eb9fc35a26c4e9863de77c5202fbf9cc621a7b65ef227d80dbf7c2b404f2de3b