Docs · MCP
MCP server
Connect Huginnova to Claude, ChatGPT, Cursor or any client that speaks the Model Context Protocol. Your assistant can then answer "why does ChatGPT recommend my competitor?" from your real data, and act on it: 32 tools, the same data as the app and the API.
Connect
The server URL is http://localhost:3000/api/mcp (Streamable HTTP). Apps that support signing in (ChatGPT, Claude) connect without a key; the rest use an API key.
ChatGPT, Claude (web, desktop and mobile) and other apps that sign in
Add a custom connector with the server URL. The app opens a page where you sign in, pick the workspace and choose read-only or read and changes. No key to copy.
- Claude: Customize → Connectors → + Add → Add custom connector, paste the URL and continue. On Team and Enterprise, an owner adds it in Organization settings → Connectors and everyone clicks Connect.
- ChatGPT: Settings → Apps & Connectors → Advanced settings → turn on Developer mode, then Create, paste the URL and choose OAuth.
- Disconnect it from the app, or for everyone in Integrations → API & automations → Connected apps.
With an API key (Claude Code, Cursor, VS Code, Claude Desktop): create one in Integrations → API & automations and use it in your client:
Claude Code
claude mcp add --transport http huginnova http://localhost:3000/api/mcp \ --header "Authorization: Bearer YOUR_API_KEY"
Cursor · .cursor/mcp.json
{
"mcpServers": {
"huginnova": {
"url": "http://localhost:3000/api/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}VS Code · .vscode/mcp.json
{
"servers": {
"huginnova": {
"type": "http",
"url": "http://localhost:3000/api/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}Claude Desktop · claude_desktop_config.json
{
"mcpServers": {
"huginnova": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"http://localhost:3000/api/mcp",
"--header",
"Authorization:${AUTH}"
],
"env": {
"AUTH": "Bearer YOUR_API_KEY"
}
}
}
}Authentication
Two ways, both as Authorization: Bearer …: an OAuth connection (apps that sign in) or an API key. Read-only connections and keys can use every read tool; full access also allows the change tools. The MCP server is included in every plan. Limit: 120 requests a minute per connection or key.
OAuth, for developers
OAuth 2.1 as the MCP authorization spec describes it. A request without a token gets a 401 whose WWW-Authenticate header points to the protected resource metadata; from there, the authorization server metadata at /.well-known/oauth-authorization-server. Apps identify themselves with a Client ID Metadata Document (an https client_id) or register with Dynamic Client Registration. Authorization code with PKCE (S256) only, and the resource must be the MCP server URL. Scopes: read and write (the person can grant less than asked). Access tokens last an hour; refresh tokens rotate on every use, and reusing an old one closes the connection.
Tools
Every tool takes a project_id from list_projects, except list_projects and list_alerts. * required.
Brands and competitors
list_projectsreadThe brands in the workspace, with their market and engines.
get_visibilityreadVisibility, share of voice, citations, position and sentiment vs competitors; change, per engine and trend.
project_id*daysenginelist_competitorsreadTracked competitors with their websites.
project_id*get_recommended_competitorsreadBrands AI recommends that you don't track.
project_id*dayslimitcursorget_brand_recognitionreadWhether ChatGPT and Gemini know you as a brand.
project_id*
Prompts and answers
list_promptsreadTracked prompts, where you lose most first.
project_id*dayslimitcursorget_prompt_suggestionsreadSuggested questions: real demand, gaps on your site, competitors, AI searches.
project_id*limitcursorsearch_answersreadAI answers as a filterable summary list.
project_id*engineprompt_idsinceuntilmentions_brandcompetitor_idlimitcursorget_answerreadOne AI answer in full, with every brand and source.
project_id*answer_id*
Sources
top_sourcesreadThe domains AI cites most, and whose they are.
project_id*daystop_pagesreadThe exact pages AI cites most.
project_id*dayslimitcursorget_source_gapsreadSites AI cites where you're missing.
project_id*dayslimitcursor
What to do
get_action_planreadPrioritized actions with why and how.
project_id*statuslimitcursorget_geo_opportunitiesreadQuestions an article would win.
project_id*limitcursorlist_articlesreadGEO Writer articles and whether they're published.
project_id*limitcursorget_articlereadOne article in full: analysis, markdown and JSON-LD.
project_id*article_id*get_outreachreadPrepared emails to get mentioned on cited sites.
project_id*limitcursor
Perception, site and traffic
get_reputationreadHow AI describes you: scores, strengths, weaknesses, wrong claims.
project_id*get_site_readinessreadWhether AI crawlers can read your site, and what to fix.
project_id*get_signalsreadAI searches behind your prompts, shopping, ads, local results, Reddit and YouTube.
project_id*daysget_ai_trafficreadVisits from AI assistants and AI crawler activity.
project_id*dayslist_alertsreadAlerts after each update.
project_idunread_onlylimitcursor
Changes (full access)
add_promptschangeTrack new questions.
project_id*prompts*tagsadd_suggested_promptchangeTrack a suggested question.
project_id*suggestion_id*dismiss_suggested_promptchangeStop suggesting a question.
project_id*suggestion_id*set_prompt_activechangePause or resume a prompt.
project_id*prompt_id*active*add_competitorchangeTrack a competitor.
project_id*name*websiteremove_competitorremovesStop tracking a competitor.
project_id*competitor_id*track_recommended_brandchangeTrack a brand AI recommends.
project_id*name*ignore_recommended_brandchangeIgnore a brand AI recommends.
project_id*name*set_action_statuschangeMark an action done (or another status).
project_id*action_id*status*mark_alerts_readchangeMark alerts read.
alert_idproject_id
Prompts
Ready-made questions your client shows in its menu ("/" in Claude), in your workspace's language. Brand and competitor names autocomplete as you type; the brand is optional if you track only one.
weekly_reportWeekly AI visibility report: where you stand, what changed and why, priorities.
what_to_do_this_weekWhat to do this week: the three changes most likely to get you into more AI answers.
why_competitor_winsWhy a competitor wins: the real answers and sources behind it, and what to change.
How results work
Pages. Lists return items, total and next_cursor. Pass next_cursor back as cursor for the next page; it's null on the last one. Newest-first lists (answers, alerts) use the row's date and id, so new rows arriving while you page never repeat or skip any.
Summaries and detail. search_answers returns a short summary per answer (engine, prompt, date, brands named and positions, domains cited, the passage about you). Read one in full with get_answer; articles work the same way with list_articles and get_article.
Rates. Visibility, citation and similar rates are shares of answers from 0 to 1, with a 95% confidence interval. Small samples are uncertain: changes are marked as significant or not.
Format. Each result is returned as JSON text and as structuredContent. Errors you can fix (a bad argument, a plan limit, something not found) come back as tool errors with the reason.
Example questions
- “How visible is my brand in AI answers this month, and against whom?”
- “Why does ChatGPT recommend my main competitor and not us? Show me the answers.”
- “Which sites should I get mentioned on first, and what do they say?”
- “What changed since last week, and what should I do about it?”
- “Add these five questions to the prompts I track.”
- “Mark the structured-data fix as done.”
Security
Connections and keys belong to one workspace and only see its data. The server never starts paid work (collections, articles, emails): those stay in the app. Disconnect an app or revoke a key in Integrations at any time; it stops working immediately, and a person who leaves the workspace loses the apps they connected.