/advisor ask inside an enabled session is a normal consult with resume
and state writes. Only a conversation where the mode is not on runs a
one-off, and that path no longer forwards another chat's transcript_path.
Co-authored-by: Eric Zakariasson <ericzakariasson@users.noreply.github.com>
Consults in a conversation that never ran /advisor no longer re-bind the
project silently; they stay off, or run as a one-off when the user asks.
Re-binding (in the skill and in the hook library on first bind) removes
the previous conversation's pending and last-response markers so the
end-of-turn nudge cannot fire for edits made elsewhere.
Co-authored-by: Eric Zakariasson <ericzakariasson@users.noreply.github.com>
The skill cannot see its own conversation_id, so a bare /advisor in a
second chat used to report 'already enabled' and leave that chat unbound:
hooks stayed silent there and a consult could resume the other chat's
advisor. /advisor now always rewrites state.json (keeping model and
nudge), and consults never resume an advisor id this chat did not save.
/advisor status is the read-only path.
Co-authored-by: Eric Zakariasson <ericzakariasson@users.noreply.github.com>
Hardcoded slugs drift between Cursor surfaces, so /advisor <model> now
resolves against the subagent model slugs the agent already has in
context: exact slug as is, family name to its latest model at the
highest reasoning tier. The only stated default is the latest Grok at
xhigh effort. Examples use Cursor models only.
Co-authored-by: Eric Zakariasson <ericzakariasson@users.noreply.github.com>
Pin advisor-subagent to grok-4.6[effort=xhigh] and make `grok`
(cursor-grok-4.6-xhigh) the default alias; every alias now resolves to
its family's highest reasoning tier. Opus and the other families remain
available via /advisor <model>.
Co-authored-by: Eric Zakariasson <ericzakariasson@users.noreply.github.com>
Cursor counterpart of Claude Code's /advisor. The main model consults a
stronger (or different) model before major decisions, when stuck on an
error, and before declaring a task done; the advisor gets a full briefing
plus the transcript path and returns a verdict with guidance.
- skill `advisor`: /advisor [model|off|status|ask ...|nudge on|off],
checkpoint protocol, briefing template, usable as a Custom Mode
- agent `advisor-subagent`: read-only, pinned to claude-opus-5[effort=xhigh]
by default, overridable per session via the Task model parameter
- hooks: track edits since the last consult, log consults to
.cursor/advisor/log.md, nudge a pre-completion consult once per batch
of edits (quiet when the agent ended on a question for the user)
- register in marketplace.json and the root README
Co-authored-by: Eric Zakariasson <ericzakariasson@users.noreply.github.com>
* feat(pstack): reference plugin logo and bump to 0.14.7
Add "logo": "assets/logo.png" to the pstack manifest, matching the
relative-path style used by google-calendar and thermos, and bump the
patch version 0.14.6 -> 0.14.7.
The pstack/assets/logo.png file itself is added in a follow-up commit;
the image attachment did not reach the agent VM in this run.
Co-authored-by: lauren <poteto@users.noreply.github.com>
* feat(pstack): add plugin logo.png
---------
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
New plugin, separate from the existing X plugin, pointing at X's hosted
ads MCP server (https://ads-api.x.com/mcp). Auth is per protected
resource: ads-api.x.com advertises its own OAuth metadata and scopes
(ads.read, ads.write), so it cannot share the X plugin's authorization
even though it reuses the same OAuth client ID.
Co-authored-by: Cursor <cursoragent@cursor.com>
Congrats only on just-connected, $0 remaining wins over leftover free_balance, and a missing get_usage_credits tool is an outage not account-not-ready.
Co-authored-by: Cursor <cursoragent@cursor.com>
On connect, fetch credits, congratulate without a gift amount, and always state remaining balance. Treat connected-but-no-tools as account-not-ready, 503s as an X outage, and never sign in via browser or Bearer tokens.
Co-authored-by: Cursor <cursoragent@cursor.com>
Both take a user-supplied server URL rather than a fixed endpoint, since
neither vendor publishes a shared one. Deferring them so the rest of the batch
can land on its own; the research and README copy are easy to restore when we
pick them back up.
Co-authored-by: Roshan Sadanani <roshansada@users.noreply.github.com>
Brevo runs a second MCP at developers.brevo.com/_mcp/server for documentation
search, which is easy to mistake for the product server. Craft binds a
connection to a single space, so multi-space users need one entry per space.
Co-authored-by: Roshan Sadanani <roshansada@users.noreply.github.com>
Workable's help centre says its MCP OAuth "uses a pre-approved list of redirect
URIs" and that unlisted clients fail with a redirect URI mismatch, naming
ChatGPT Enterprise and LM Studio as examples. Cursor is named as a supported
client in Workable's own prerequisites and is not among the examples that fail,
so this is not a blocker — but Cursor's callbacks are fixed, so list both in the
README to make the support request a single step if a user does hit it.
Co-authored-by: Roshan Sadanani <roshansada@users.noreply.github.com>
Coda became Superhuman Docs on 2026-07-08 and the MCP server moved with it.
Superhuman's July changelog is explicit that "the old coda.io/apis/mcp address
keeps working for existing customers for a few more months, but new customers
should use the new one" — and a marketplace listing produces new customers by
definition, so shipping coda.io would hand every installer a URL on a clock.
Co-authored-by: Roshan Sadanani <roshansada@users.noreply.github.com>
The Ahrefs homepage pointed at docs.ahrefs.com/mcp/docs/introduction, a path
I could not confirm resolves — Ahrefs' own archived repo and third-party
indexes cite three different intro URLs. Point at ahrefs.com/mcp and the help
centre article instead, both of which are live, and spell out the MCP-key
header as an alternative to OAuth. Add Similarweb's Cursor integration guide.
Co-authored-by: Roshan Sadanani <roshansada@users.noreply.github.com>
Xero publishes no hosted MCP endpoint; its official server is the `@xeroapi/xero-mcp-server` npm package running locally over stdio with Custom Connection credentials, and Xero's FAQ records Cursor as one of the two clients it tested against.
Co-authored-by: Roshan Sadanani <roshansada@users.noreply.github.com>
ActiveCampaign generates a Remote MCP URL per account rather than publishing a shared endpoint, so the plugin takes the URL as a variable the way the Salesforce plugin does.
Co-authored-by: Roshan Sadanani <roshansada@users.noreply.github.com>
Zoho MCP has no shared endpoint — each customer builds a server in the Zoho MCP console and gets a region-specific URL with an embedded API key, so the plugin takes the URL as a variable the way the Salesforce plugin does.
Co-authored-by: Roshan Sadanani <roshansada@users.noreply.github.com>
Similarweb's hosted MCP server speaks Streamable HTTP but authenticates with a user-supplied token rather than OAuth, so the plugin declares a variable and forwards it as an HTTP header.
Co-authored-by: Roshan Sadanani <roshansada@users.noreply.github.com>
Readwise ships an official remote MCP server over Streamable HTTP with per-user OAuth, so the plugin is a URL-only mcp.json with no variables block.
Co-authored-by: Roshan Sadanani <roshansada@users.noreply.github.com>
Mem ships an official remote MCP server over Streamable HTTP with per-user OAuth, so the plugin is a URL-only mcp.json with no variables block.
Co-authored-by: Roshan Sadanani <roshansada@users.noreply.github.com>
Craft ships an official remote MCP server over Streamable HTTP with per-user OAuth, so the plugin is a URL-only mcp.json with no variables block.
Co-authored-by: Roshan Sadanani <roshansada@users.noreply.github.com>
Fathom ships an official remote MCP server over Streamable HTTP with per-user OAuth, so the plugin is a URL-only mcp.json with no variables block.
Co-authored-by: Roshan Sadanani <roshansada@users.noreply.github.com>
Otter.ai ships an official remote MCP server over Streamable HTTP with per-user OAuth, so the plugin is a URL-only mcp.json with no variables block.
Co-authored-by: Roshan Sadanani <roshansada@users.noreply.github.com>
Fireflies ships an official remote MCP server over Streamable HTTP with per-user OAuth, so the plugin is a URL-only mcp.json with no variables block.
Co-authored-by: Roshan Sadanani <roshansada@users.noreply.github.com>
Guru ships an official remote MCP server over Streamable HTTP with per-user OAuth, so the plugin is a URL-only mcp.json with no variables block.
Co-authored-by: Roshan Sadanani <roshansada@users.noreply.github.com>
Coda ships an official remote MCP server over Streamable HTTP with per-user OAuth, so the plugin is a URL-only mcp.json with no variables block.
Co-authored-by: Roshan Sadanani <roshansada@users.noreply.github.com>
Wrike's hosted MCP server speaks Streamable HTTP but authenticates with a user-supplied token rather than OAuth, so the plugin declares a variable and forwards it as an HTTP header.
Co-authored-by: Roshan Sadanani <roshansada@users.noreply.github.com>
Smartsheet's hosted MCP server speaks Streamable HTTP but authenticates with a user-supplied token rather than OAuth, so the plugin declares a variable and forwards it as an HTTP header.
Co-authored-by: Roshan Sadanani <roshansada@users.noreply.github.com>
Calendly ships an official remote MCP server over Streamable HTTP with per-user OAuth, so the plugin is a URL-only mcp.json with no variables block.
Co-authored-by: Roshan Sadanani <roshansada@users.noreply.github.com>
Todoist ships an official remote MCP server over Streamable HTTP with per-user OAuth, so the plugin is a URL-only mcp.json with no variables block.
Co-authored-by: Roshan Sadanani <roshansada@users.noreply.github.com>