Full disclosure first: I’m Aniketh Shenoy Kota, the product manager for Contentstack Canoe at Contentstack. It’s a paid product, and the MCP server is on the Growth plan. There’s a free plan, but it doesn’t include MCP. Sharing because a lot of our own testing happened in Cursor, and I’d like feedback from people who live in it.
What it does. Contentstack Canoe asks ChatGPT, Gemini, Perplexity and Claude the questions your buyers ask, then scores how often your brand gets named, who wins instead and which sources the engines cite. The MCP server gives Cursor’s agent nine tools to read that data and, if you approve, start a new run.
Setup (about two minutes)
- Create a Read & write API key in Contentstack Canoe under Settings > API keys. (MCP requests are POSTs, so read-only keys get refused for now.)
- Put it in your environment, then launch Cursor from that environment. Cursor reads
${env:...}from where it was started.
export CONTENTSTACK_CANOE_API_KEY="sk_your_key_here"
- Add this to
~/.cursor/mcp.json(all projects) or.cursor/mcp.json(one repo):
{
"mcpServers": {
"contentstack-canoe": {
"url": "https://canoe.contentstack.com/api/mcp",
"headers": {
"Authorization": "Bearer ${env:CONTENTSTACK_CANOE_API_KEY}"
}
}
}
}
The key never lands in a file you commit. Cursor settings > MCP should show contentstack-canoe with nine tools.
The tools
list_projects,list_geo_tests: find the brand and its monitorsget_geo_latest_report: the whole latest report in one call (score, visibility, rank, sentiment, competitors, citations, site audit, recommendations, what changed since last run)get_geo_test_history: run by run, per engineget_geo_latest_prompt_details,get_geo_prompt_details: the engines’ full answers, for exact quotesget_geo_latest_citations,get_geo_citations: which sources the engines citetrigger_geo_test_run: starts a run. It’s the only tool that writes or spends prompts. Leave approval on for this one.
All the others are annotated read only, and reading never spends prompts.
A real prompt
List my Contentstack Canoe brands and their monitors. For the commuter e-bike monitor, tell me where we stand, who’s beating us and the first thing to fix. Check that the numbers come from a finished run.
The kind of answer you get
Illustrative values for Tarnwell Cycles, the fictional brand in our docs:
I called
list_projects,list_geo_testsandget_geo_latest_report. The latest run finished successfully, so these numbers are current.
- Overall score 67, up 6 since the last run. You climbed one place to 3rd of 10 on the leaderboard.
- You’re named in 62% of answers. Sentiment is positive (74).
- By buyer stage you’re weakest early: awareness 47, consideration 57, decision 81. People who already know you pick you. People still browsing hear about Aldren.
- Site audit: AI Readiness Score 80.
- Top recommendation: “Close the gap with Aldren.” Want me to pull the exact answers where Aldren was named and you weren’t, so we can see what the engines say about them?
From there the follow-ups get specific: “Show me those answers”, “Which third-party sites do the engines cite at the consideration stage?”, “Turn the questions we lose into content briefs.”
With your CMS in the same chat
If you also add the Contentstack MCP (npx -y @contentstack/mcp) to the same mcp.json, the agent can read a recommendation, find the matching entry and draft the change. A person approves every update. Contentstack Canoe itself never writes to your site.
What I’d like feedback on
- Is one big
get_geo_latest_reportcall easier for Cursor’s agent than several small ones? We went with one summary call plus separate drill-downs. - Anyone else hit the “read-only key vs POST” problem with MCP auth? How did you handle it?
- OAuth sign-in is next for us. Would you still use a header key in Cursor once that’s there?
Docs with every client config: MCP server | Contentstack Canoe
Next for us: OAuth sign-in, read-only keys for MCP, and Microsoft Copilot and Google AI Mode alongside the four engines.