Howseen
REMOTE · APP.HOWSEEN.AI
How ChatGPT, Gemini, Perplexity and Google AI name your brand, cite sources and rank rivals.
Available components
Last scanned (22 hours ago)
Scores higher than 89% of remote servers
Reachable. Last reached 4 Nov 2026.
Category Marketing and SEO
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security89
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation is enforced on tool calls, but the challenge carries no valid RFC 9728 metadata, so a client cannot discover where to get a token. See how to fix → View diagnostics → Fail
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability79
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 7565 tokens (~171/item across 44 items; 44 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management47
- Stability observed for 14 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 4 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 45 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 3 Nov 26 +1
- The server rewrote its instructions, which are the text every model session reads security
- Tool “get_action_plan” rewrote its description, which is the text the model reads security
- Tool “get_content_plan” rewrote its description, which is the text the model reads security
- New tool “apply_inbound_link” functional
- New tool “get_pruning_review” functional
- 2 Nov 26 0
- The server rewrote its instructions, which are the text every model session reads security
- New tool “update_brand_instructions”, which the server declares destructive security
- Tool “draft_article” rewrote its description, which is the text the model reads security
- Tool “get_action_plan” rewrote its description, which is the text the model reads security
- Schema quality: 4760 → 6980 ▼ functional
- New prompt “fix_my_site” functional
- Server version: 1.2.0 → 1.3.0 functional
- New tool “get_ai_referrals” functional
- New tool “get_analytics” functional
- New tool “get_brand_settings” functional
- New tool “get_connections” functional
- New tool “get_content_plan” functional
- New tool “get_fanout_queries” functional
- New tool “get_next_action” functional
- New tool “get_search_console” functional
- New tool “get_sentiment” functional
- New tool “get_site_audit” functional
- New tool “list_site_pages” functional
- New tool “set_autopilot” functional
- “draft_article” added an optional parameter “article_id” cosmetic
- “draft_article” made “question” optional cosmetic
- 31 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 30 to 33. That category is still filling its 30-day observation window: 9 days of observed history at the previous scan, 10 at this one. The score rises as the window fills, whether or not the server changes.
- 29 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.
- 27 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.
- 25 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 10 to 13. That category is still filling its 30-day observation window: 3 days of observed history at the previous scan, 4 at this one. The score rises as the window fills, whether or not the server changes.
- 23 Oct 26 +1
- Tool “publish_article” rewrote its description, which is the text the model reads security
- 22 Oct 26 0
- Stability: unverified → 0.03 ▲ functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 4 Nov 2026 · Probed https://app.howseen.ai/api/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=app.howseen.ai | CN=YR2,O=Let's Encrypt,C=US | 10 Oct 2026 | 8 Jan 2027 | RSA 2048 | SHA256-RSA | 6c1017d49f852dc7620ad4cbe1d57d5f89f |
| SANs: app.howseen.ai | ||||||
| CN=YR2,O=Let's Encrypt,C=US (CA) | CN=Root YR,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | RSA 2048 | SHA256-RSA | 4ebd24947e24d394802d84a52fd5b319 |
| CN=Root YR,O=ISRG,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | RSA 4096 | SHA256-RSA | f24b6d17f9d9ad7cb1c9fea78782699f |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of app.howseen.ai. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| ai. | present | 1814, 3799 | 8, 8 | Verified |
| howseen.ai. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication Challenged, unverified
The endpoint asked for a token, but we could not retrieve and validate the RFC 9728 metadata that tells a client how to obtain one.
| Result | Challenged, unverified |
|---|---|
| Enforced | On tool calls |
| HTTP status | 200 |
WWW-Authenticate challenge Bearer realm="howseen"
Bearer realm="howseen" | Header | Value |
|---|---|
| strict-transport-security | max-age=63072000; includeSubDomains; preload |
| content-security-policy | frame-ancestors 'none' |
| x-content-type-options | nosniff |
| x-frame-options | DENY |
| referrer-policy | strict-origin-when-cross-origin |
| permissions-policy | camera=(), microphone=(), geolocation=() |
Protected resource metadata
| Retrieved | No |
|---|---|
| Problem | no_resource_metadata |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://app.howseen.ai/api/mcp | Verified | 200 | |
| http (plaintext) | http://app.howseen.ai/api/mcp | HTTPS enforced | 308 | https://app.howseen.ai/api/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
add_competitor Add a competitor ~128
Track a competitor from a name or a website URL (resolved to name + domain like in Settings), within the competitor quota. Preview first; confirm: true applies.
| Name | Type | Req | Description |
|---|---|---|---|
| brand | string | – | Brand id, name or domain (from list_brands). Optional when the account has a single brand. |
| competitor | string | yes | Competitor name or URL, e.g. "Notion" or "https://notion.so". |
| confirm | boolean | – | Leave out (or false) to get a preview: nothing changes. Set true ONLY after the user approved that exact preview. |
No output schema declared.
No examples provided.
add_prompts Add prompts to track ~144
Track new buyer questions (prompts) for the brand, checked against the plan's prompt quota (the whole list is refused if it would exceed it). An archived prompt added again is restored. Preview first; confirm: true applies.
| Name | Type | Req | Description |
|---|---|---|---|
| brand | string | – | Brand id, name or domain (from list_brands). Optional when the account has a single brand. |
| confirm | boolean | – | Leave out (or false) to get a preview: nothing changes. Set true ONLY after the user approved that exact preview. |
| prompts | array | yes | Buyer questions to track, 1 to 25. |
| topic | string | – | Optional topic to file them under. |
No output schema declared.
No examples provided.
apply_inbound_link Link a page of the site to a new article ~248
Add the ready sentence that links one existing page of the brand's site to a newly published article (the links of a get_action_plan item whose id starts with links:), on the connected WordPress only: one paragraph is inserted right after the chosen paragraph, nothing else on the page changes. Reported as applied only once the live page shows the link. mode revert removes the added sentence; mode verify re-reads the live page. Pages on other sites or editors are refused with the sentence to paste by hand. Preview first; confirm: true writes on the live site.
| Name | Type | Req | Description |
|---|---|---|---|
| article_id | string | yes | links.article_id of the get_action_plan item. |
| brand | string | – | Brand id, name or domain (from list_brands). Optional when the account has a single brand. |
| confirm | boolean | – | Leave out (or false) to get a preview: nothing changes. Set true ONLY after the user approved that exact preview. |
| mode | string | – | apply (default), revert (remove the added sentence) or verify (re-read the live page). |
| page_url | string | yes | links.pages[].page_url: the page to add the link on. |
No output schema declared.
No examples provided.
archive_prompts Archive prompts ~119
Archive prompts: they stop being scanned (frees prompt quota) but keep their history and stay listed as archived in the dashboard, restorable. Preview first; confirm: true applies.
| Name | Type | Req | Description |
|---|---|---|---|
| brand | string | – | Brand id, name or domain (from list_brands). Optional when the account has a single brand. |
| confirm | boolean | – | Leave out (or false) to get a preview: nothing changes. Set true ONLY after the user approved that exact preview. |
| prompts | array | yes | Exact prompt texts (from list_prompts). |
No output schema declared.
No examples provided.
create_share_report Create a share report ~177
Create a public, frozen report link (visibility, competitors, top prompts, recommendations) with the account's agency branding, like the dashboard Share button. Preview first; confirm: true creates the link.
| Name | Type | Req | Description |
|---|---|---|---|
| brand | string | – | Brand id, name or domain (from list_brands). Optional when the account has a single brand. |
| confirm | boolean | – | Leave out (or false) to get a preview: nothing changes. Set true ONLY after the user approved that exact preview. |
| engine | string | – | Optional engines, comma separated: chatgpt, gemini, perplexity, ai_overviews, ai_mode. |
| from | string | – | Start date YYYY-MM-DD. Default: all time. |
| lang | string | – | Report language (default en). |
| to | string | – | End date YYYY-MM-DD. |
No output schema declared.
No examples provided.
delete_article Delete an article ~175
Move an article (planned, draft or published) to the Trash, like the dashboard delete button: restorable with restore_article or in Howseen > Content > Trash, and its topic is not planned again. A post already live on the client's own CMS (WordPress, Shopify...) is NOT removed from the CMS: the preview says where it stays live. Always call WITHOUT confirm first and show the preview to the user; call again with confirm: true only after they approve.
| Name | Type | Req | Description |
|---|---|---|---|
| article_id | string | yes | Article id from list_articles. |
| brand | string | – | Brand id, name or domain (from list_brands). Optional when the account has a single brand. |
| confirm | boolean | – | Leave out (or false) to get a preview: nothing changes. Set true ONLY after the user approved that exact preview. |
No output schema declared.
No examples provided.
dismiss_action Dismiss an action ~123
Dismiss an action-plan item the user does not want to do (moves it to Archived in the dashboard, out of the next best actions). Reversible in the dashboard. Preview first; confirm: true applies.
| Name | Type | Req | Description |
|---|---|---|---|
| action_id | string | yes | Action id from get_action_plan. |
| brand | string | – | Brand id, name or domain (from list_brands). Optional when the account has a single brand. |
| confirm | boolean | – | Leave out (or false) to get a preview: nothing changes. Set true ONLY after the user approved that exact preview. |
No output schema declared.
No examples provided.
draft_article Draft an article ~224
Write a DRAFT article answering one buyer question, with the same quality pipeline as the app (brand context, the client's writing rules, sources AI cites, GEO checks). Never publishes. Give question (e.g. a prompt from get_prompt_gaps), or article_id of a planned topic of the content plan (get_content_plan next_to_write) to write that slot instead of creating a duplicate. Uses the plan's article allowance. Preview first; confirm: true writes it (up to about a minute).
| Name | Type | Req | Description |
|---|---|---|---|
| article_id | string | – | Or the id of a PLANNED article of the content plan (get_content_plan): writes that topic in place. |
| brand | string | – | Brand id, name or domain (from list_brands). Optional when the account has a single brand. |
| confirm | boolean | – | Leave out (or false) to get a preview: nothing changes. Set true ONLY after the user approved that exact preview. |
| question | string | – | The buyer question the article must answer, e.g. a prompt from get_prompt_gaps. |
No output schema declared.
No examples provided.
get_action_plan Get action plan ~235
Prioritized actions to raise the brand's AI visibility (off-page: get listed on the pages AI cites; content: answer uncovered buyer questions; technical: site fixes, incl. links:<article_id> = link a new article from 3 related pages, with copy-ready sentences in links.pages; setup: connections), ranked 20/80 like the dashboard Action plan with the same inputs, with steps and state. For just the single next step, use get_next_action.
| Name | Type | Req | Description |
|---|---|---|---|
| brand | string | – | Brand id, name or domain (from list_brands). Optional when the account has a single brand. |
| engine | string | – | Optional AI engine filter, comma separated: chatgpt, gemini, perplexity, ai_overviews, ai_mode. Default: all engines. |
| from | string | – | Start date YYYY-MM-DD. Default: all time. |
| lang | string | – | Language of the action texts (default en). |
| limit | integer | – | Max items to return (default 10, max 50). |
| to | string | – | End date YYYY-MM-DD. Default: now. |
No output schema declared.
No examples provided.
get_ai_referrals Get AI referral traffic ~140
Real visits AI assistants send to the brand: GA4 sessions and revenue per assistant (ChatGPT, Perplexity, Gemini, Claude, Copilot...) and the pages they land on, an estimate of hidden AI visits (shown apart, never added), and the AI assistants that read the brand's Howseen-hosted blog pages (last 30 days). Use it to prove that AI visibility turns into traffic.
| Name | Type | Req | Description |
|---|---|---|---|
| brand | string | – | Brand id, name or domain (from list_brands). Optional when the account has a single brand. |
| days | – | – | Period in days: 7, 28 (default) or 90. |
No output schema declared.
No examples provided.
get_analytics Get Google Analytics (GA4) data ~131
GA4 traffic of the account's connected property: sessions, users, page views, daily trend, top sources and pages, plus the sessions and revenue AI assistants (ChatGPT, Perplexity, Gemini, Claude, Copilot...) send. For the AI part only, prefer get_ai_referrals. Not available with a per-brand key (GA4 is account-wide).
| Name | Type | Req | Description |
|---|---|---|---|
| brand | string | – | Brand id, name or domain (from list_brands). Optional when the account has a single brand. |
| days | – | – | Period in days: 7, 28 (default) or 90. |
No output schema declared.
No examples provided.
get_article_performance Get article performance ~139
Articles written for the brand with status, GEO score, published URL and search-engine indexing status (Google URL Inspection, Bing), plus impressions and clicks when Search Console or Bing is connected.
| Name | Type | Req | Description |
|---|---|---|---|
| brand | string | – | Brand id, name or domain (from list_brands). Optional when the account has a single brand. |
| from | string | – | Start date YYYY-MM-DD. Default: all time. |
| limit | integer | – | Max items to return (default 20, max 100). |
| offset | integer | – | Items to skip, for pagination. |
| to | string | – | End date YYYY-MM-DD. Default: now. |
No output schema declared.
No examples provided.
get_brand_settings Get brand settings ~83
The brand profile (offer, category, language, markets, about, positioning, products), its competitors and its writing rules (the client's instructions, binding on every article), plus Autopilot. Read it before drafting or changing instructions.
| Name | Type | Req | Description |
|---|---|---|---|
| brand | string | – | Brand id, name or domain (from list_brands). Optional when the account has a single brand. |
No output schema declared.
No examples provided.
get_changes Get changes ~145
What changed between the last two completed scans (or since a date): prompts gained and lost, visibility delta per engine, tracked competitors newly named, and the likely causes (sources that started or stopped citing the brand).
| Name | Type | Req | Description |
|---|---|---|---|
| brand | string | – | Brand id, name or domain (from list_brands). Optional when the account has a single brand. |
| engine | string | – | Optional AI engine filter, comma separated: chatgpt, gemini, perplexity, ai_overviews, ai_mode. Default: all engines. |
| since | string | – | Optional YYYY-MM-DD: compare the latest scan with the last scan on or before this date. Default: the previous scan. |
No output schema declared.
No examples provided.
get_competitors Get competitors ~132
Compare the brand with its competitors in AI answers: visibility %, share of voice, average position and sentiment, overall and per engine.
| Name | Type | Req | Description |
|---|---|---|---|
| brand | string | – | Brand id, name or domain (from list_brands). Optional when the account has a single brand. |
| engine | string | – | Optional AI engine filter, comma separated: chatgpt, gemini, perplexity, ai_overviews, ai_mode. Default: all engines. |
| from | string | – | Start date YYYY-MM-DD. Default: all time. |
| to | string | – | End date YYYY-MM-DD. Default: now. |
No output schema declared.
No examples provided.
get_connections Get connection status ~145
The TRUE state of every connection of the brand, like Settings > Integrations: each publishing destination (CMS, own Next.js / API feed, hosted blog, webhook, copy-paste editor) with connected / needs_reconnect / copy_paste_only / waiting_for_site, whether articles can be published automatically, Autopilot, Google (Search Console property for this site, GA4) and Bing Webmaster. Use it before publishing or when something does not appear online. Connecting is done by the user in the app (no secrets through the assistant).
| Name | Type | Req | Description |
|---|---|---|---|
| brand | string | – | Brand id, name or domain (from list_brands). Optional when the account has a single brand. |
No output schema declared.
No examples provided.
get_content_plan Get the content plan ~206
The brand's content calendar with the real publication state of every article (planned, draft, scheduled, to publish by hand, failed, live on the brand's site), the Autopilot state, and the two answers to "what next?": next_to_write (a planned topic: write it with draft_article and its article_id) and next_to_publish (a written article that meets the quality bar: publish it with publish_article). Also stale_facts: statistics of live articles re-checked monthly on their source that need attention (newer figure found with the proposed sentence, figure gone from its source, source offline), each with its source and the date it was last verified.
| Name | Type | Req | Description |
|---|---|---|---|
| brand | string | – | Brand id, name or domain (from list_brands). Optional when the account has a single brand. |
| limit | integer | – | Max items to return (default 30, max 200). |
| offset | integer | – | Items to skip, for pagination. |
No output schema declared.
No examples provided.
get_easiest_wins Get easiest wins ~203
Third-party sites and pages cited in the answers the brand loses (competitor named, brand not), ranked by how many lost answers cite them, with the matching action-plan item. Getting listed there is the shortest path back into those answers.
| Name | Type | Req | Description |
|---|---|---|---|
| brand | string | – | Brand id, name or domain (from list_brands). Optional when the account has a single brand. |
| engine | string | – | Optional AI engine filter, comma separated: chatgpt, gemini, perplexity, ai_overviews, ai_mode. Default: all engines. |
| from | string | – | Start date YYYY-MM-DD. Default: all time. |
| lang | string | – | Language of the action texts (default en). |
| limit | integer | – | Max items to return (default 10, max 50). |
| offset | integer | – | Items to skip, for pagination. |
| to | string | – | End date YYYY-MM-DD. Default: now. |
No output schema declared.
No examples provided.
get_fanout_queries Get fan-out queries ~158
The web searches the AI engines ran behind each tracked question (latest scan): the queries to rank for so the AI finds the brand, overall and per question.
| Name | Type | Req | Description |
|---|---|---|---|
| brand | string | – | Brand id, name or domain (from list_brands). Optional when the account has a single brand. |
| engine | string | – | Optional AI engine filter, comma separated: chatgpt, gemini, perplexity, ai_overviews, ai_mode. Default: all engines. |
| from | string | – | Start date YYYY-MM-DD. Default: all time. |
| limit | integer | – | Max items to return (default 30, max 200). |
| to | string | – | End date YYYY-MM-DD. Default: now. |
No output schema declared.
No examples provided.
get_next_action Get the next action ~197
THE single most valuable next step for the brand, the same one the dashboard Overview shows (action engine, 20/80 ranking with the technical audit, Search Console and demand), with its steps, the questions it wins back and how to close it (which tool to call). Use it when the user asks "what should I do next?" or "what do I fix first?".
| Name | Type | Req | Description |
|---|---|---|---|
| brand | string | – | Brand id, name or domain (from list_brands). Optional when the account has a single brand. |
| engine | string | – | Optional AI engine filter, comma separated: chatgpt, gemini, perplexity, ai_overviews, ai_mode. Default: all engines. |
| from | string | – | Start date YYYY-MM-DD. Default: all time. |
| lang | string | – | Language of the texts (default en). |
| to | string | – | End date YYYY-MM-DD. Default: now. |
No output schema declared.
No examples provided.
get_prompt_gaps Get prompt gaps ~192
Tracked prompts where AI names at least one competitor but not the brand, per engine, with the competitors named and the domains cited. Sorted by search volume (when a cached figure exists) then by number of competitors named. Start here to see what to win back.
| Name | Type | Req | Description |
|---|---|---|---|
| brand | string | – | Brand id, name or domain (from list_brands). Optional when the account has a single brand. |
| engine | string | – | Optional AI engine filter, comma separated: chatgpt, gemini, perplexity, ai_overviews, ai_mode. Default: all engines. |
| from | string | – | Start date YYYY-MM-DD. Default: all time. |
| limit | integer | – | Max items to return (default 25, max 100). |
| offset | integer | – | Items to skip, for pagination. |
| to | string | – | End date YYYY-MM-DD. Default: now. |
No output schema declared.
No examples provided.
get_pruning_review Get the quarterly pruning review ~213
The quarterly content pruning review of the brand's website (the Action plan card "Quarterly pruning"): pages nobody finds in 90 days, pages that compete for the same Google queries (cannibalisation) and thin pages, each with ONE recommendation (improve with Content Refresh, merge into another page with a 301, or remove with 410 / noindex), the reason and the data behind it (Search Console clicks and impressions, shared queries, words, AI citations, visits from every channel). Pages the AI cites or that get visits (Google Analytics, any channel), noindex pages, legal pages, the home and pages the owner kept are never proposed for removal. Use it when the user asks which pages to delete, merge or improve. Howseen never deletes nor redirects a page itself.
| Name | Type | Req | Description |
|---|---|---|---|
| brand | string | – | Brand id, name or domain (from list_brands). Optional when the account has a single brand. |
| lang | string | – | Language of the texts (default en). |
No output schema declared.
No examples provided.
get_search_console Get Google Search Console data ~120
Google Search Console of the brand's own site: clicks, impressions, CTR, position, daily trend, top queries and pages, plus the opportunities Howseen derives (queries on page 2, low-CTR pages, queries Google shows an off-topic page for). Only the property covering this brand's site is read.
| Name | Type | Req | Description |
|---|---|---|---|
| brand | string | – | Brand id, name or domain (from list_brands). Optional when the account has a single brand. |
| days | – | – | Period in days: 7, 28 (default) or 90. |
No output schema declared.
No examples provided.
get_sentiment Get sentiment ~177
How AI answers speak about the brand: % of the answers naming it that are positive (null under 3 answers), the positive / neutral / negative split with a real negative excerpt, per engine, compared with competitors, and the questions where the tone is negative.
| Name | Type | Req | Description |
|---|---|---|---|
| brand | string | – | Brand id, name or domain (from list_brands). Optional when the account has a single brand. |
| engine | string | – | Optional AI engine filter, comma separated: chatgpt, gemini, perplexity, ai_overviews, ai_mode. Default: all engines. |
| from | string | – | Start date YYYY-MM-DD. Default: all time. |
| limit | integer | – | Max items to return (default 20, max 100). |
| to | string | – | End date YYYY-MM-DD. Default: now. |
No output schema declared.
No examples provided.
get_site_audit Get the technical site audit ~221
Technical GEO/SEO audit of the brand's website, as the dashboard Technical audit shows it: every check (indexable, robots.txt, sitemap.xml, llms.txt, server rendering, Bing, structured data, canonical, trust signals), every issue with its severity and score gain, the steps for the site's CMS and the exact text to paste (robots.txt, llms.txt, JSON-LD, meta tags...), plus the problems found on the pages that serve the tracked questions. Use it when the user asks "what should I fix on my site" or for code to add. The last audit (refreshed weekly) is returned; refresh: true re-crawls now (up to about a minute, a few per hour).
| Name | Type | Req | Description |
|---|---|---|---|
| brand | string | – | Brand id, name or domain (from list_brands). Optional when the account has a single brand. |
| lang | string | – | Language of the texts (default en). |
| refresh | boolean | – | true = crawl the site again now instead of reading the last audit. |
No output schema declared.
No examples provided.
get_top_sources Get top cited sources ~171
The domains and URLs AI engines cite most when answering the brand's buyer questions, overall and per engine. Use it to find where the brand should get listed or mentioned.
| Name | Type | Req | Description |
|---|---|---|---|
| brand | string | – | Brand id, name or domain (from list_brands). Optional when the account has a single brand. |
| engine | string | – | Optional AI engine filter, comma separated: chatgpt, gemini, perplexity, ai_overviews, ai_mode. Default: all engines. |
| from | string | – | Start date YYYY-MM-DD. Default: all time. |
| limit | integer | – | Max items to return (default 20, max 100). |
| offset | integer | – | Items to skip, for pagination. |
| to | string | – | End date YYYY-MM-DD. Default: now. |
No output schema declared.
No examples provided.
get_usage Get plan usage ~76
Plan, quotas used and left (prompts, competitors, articles, manual scans), next automatic scan estimate, what this API key may do, and the API rate limits. Call it before planning changes.
| Name | Type | Req | Description |
|---|---|---|---|
| brand | string | – | Brand id, name or domain (from list_brands). Optional when the account has a single brand. |
No output schema declared.
No examples provided.
get_visibility Get AI visibility ~146
Headline AI visibility of a brand: % of AI answers that name it, share of voice vs competitors, average position, sentiment, per engine, plus the trend over the period (one point per scan).
| Name | Type | Req | Description |
|---|---|---|---|
| brand | string | – | Brand id, name or domain (from list_brands). Optional when the account has a single brand. |
| engine | string | – | Optional AI engine filter, comma separated: chatgpt, gemini, perplexity, ai_overviews, ai_mode. Default: all engines. |
| from | string | – | Start date YYYY-MM-DD. Default: all time. |
| to | string | – | End date YYYY-MM-DD. Default: now. |
No output schema declared.
No examples provided.
list_articles List articles ~127
Articles Howseen wrote for the brand (drafts, scheduled and published), with status, target question, GEO score and published URL.
| Name | Type | Req | Description |
|---|---|---|---|
| brand | string | – | Brand id, name or domain (from list_brands). Optional when the account has a single brand. |
| from | string | – | Start date YYYY-MM-DD. Default: all time. |
| limit | integer | – | Max items to return (default 20, max 100). |
| offset | integer | – | Items to skip, for pagination. |
| to | string | – | End date YYYY-MM-DD. Default: now. |
No output schema declared.
No examples provided.
list_brands List brands ~42
List the brands (websites) tracked in this Howseen account, with their id, name and domain. Call this first when the account may have several brands.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_prompts List tracked prompts ~175
The buyer questions (prompts) tracked for a brand, with per-prompt visibility, share of voice, position, which engines name the brand, and which brands and domains are cited.
| Name | Type | Req | Description |
|---|---|---|---|
| brand | string | – | Brand id, name or domain (from list_brands). Optional when the account has a single brand. |
| engine | string | – | Optional AI engine filter, comma separated: chatgpt, gemini, perplexity, ai_overviews, ai_mode. Default: all engines. |
| from | string | – | Start date YYYY-MM-DD. Default: all time. |
| limit | integer | – | Max items to return (default 50, max 200). |
| offset | integer | – | Items to skip, for pagination. |
| to | string | – | End date YYYY-MM-DD. Default: now. |
No output schema declared.
No examples provided.
list_site_pages List the site's own pages ~101
The brand's own website pages Howseen read when it joined (URL, title, summary): the inventory used for internal links, llms.txt and content refresh.
| Name | Type | Req | Description |
|---|---|---|---|
| brand | string | – | Brand id, name or domain (from list_brands). Optional when the account has a single brand. |
| limit | integer | – | Max items to return (default 50, max 200). |
| offset | integer | – | Items to skip, for pagination. |
No output schema declared.
No examples provided.
mark_action_done Mark an action done ~130
Mark an action-plan item as done (same state as the dashboard Action plan). Use the action id from get_action_plan or get_easiest_wins. Preview first; confirm: true applies.
| Name | Type | Req | Description |
|---|---|---|---|
| action_id | string | yes | Action id, e.g. offpage:g2.com or content:<prompt>. |
| brand | string | – | Brand id, name or domain (from list_brands). Optional when the account has a single brand. |
| confirm | boolean | – | Leave out (or false) to get a preview: nothing changes. Set true ONLY after the user approved that exact preview. |
No output schema declared.
No examples provided.
publish_article Publish an article ~234
Publish a written article (e.g. a draft from draft_article) to the brand's connected CMS (WordPress, Shopify, Ghost, BigCommerce, GoHighLevel, Webflow, webhook) or hosted blog, now, or schedule it for a later date (needs Autopilot ON). Goes live publicly. Preview first; confirm: true publishes and returns the URL.
| Name | Type | Req | Description |
|---|---|---|---|
| article_id | string | yes | Article id from list_articles or get_article_performance. |
| brand | string | – | Brand id, name or domain (from list_brands). Optional when the account has a single brand. |
| confirm | boolean | – | Leave out (or false) to get a preview: nothing changes. Set true ONLY after the user approved that exact preview. |
| platform | string | – | Optional: wordpress, shopify, ghost, bigcommerce, webhook, nextjs (hosted blog / Next.js feed) or api. Default: the CMS Autopilot uses (most recently connected). |
| publish_at | string | – | Optional YYYY-MM-DD after today to schedule instead of publishing now (Autopilot must be ON). |
No output schema declared.
No examples provided.
refresh_article Update an article with the current profile ~213
Rewrite a WRITTEN article with the brand's current profile (offer, category, offerings, competitors) after it changed: same article id, slug, question and date, previous version kept (restorable in the app). A published article is never overwritten: the update lands in a refreshed draft. Free once per article after a profile change, otherwise uses the article allowance. Give article_id (list_articles) or the article's target question. Preview first (shows what changes and the quota impact); confirm: true rewrites it (up to about a minute).
| Name | Type | Req | Description |
|---|---|---|---|
| article_id | string | – | Article id from list_articles. |
| brand | string | – | Brand id, name or domain (from list_brands). Optional when the account has a single brand. |
| confirm | boolean | – | Leave out (or false) to get a preview: nothing changes. Set true ONLY after the user approved that exact preview. |
| question | string | – | Or the article's target question (the most recent written article for it). |
No output schema declared.
No examples provided.
remove_competitor Remove a competitor ~104
Stop tracking a competitor (by name or domain). Past results keep it. Preview first; confirm: true applies.
| Name | Type | Req | Description |
|---|---|---|---|
| brand | string | – | Brand id, name or domain (from list_brands). Optional when the account has a single brand. |
| competitor | string | yes | Tracked competitor name or domain. |
| confirm | boolean | – | Leave out (or false) to get a preview: nothing changes. Set true ONLY after the user approved that exact preview. |
No output schema declared.
No examples provided.
remove_prompts Remove prompts ~117
Stop tracking prompts and remove them from the prompt list (past scan results stay in history). Prefer archive_prompts to keep them listed. Preview first; confirm: true applies.
| Name | Type | Req | Description |
|---|---|---|---|
| brand | string | – | Brand id, name or domain (from list_brands). Optional when the account has a single brand. |
| confirm | boolean | – | Leave out (or false) to get a preview: nothing changes. Set true ONLY after the user approved that exact preview. |
| prompts | array | yes | Exact prompt texts (from list_prompts). |
No output schema declared.
No examples provided.
request_indexing Request search-engine indexing ~210
Submit a published article to the search engines connected for the brand: Google (sitemap re-submit through Search Console when connected with indexing), Bing (Webmaster key) or IndexNow for pages hosted by Howseen. If you publish on your own site from the API or feed, pass url (the live https address of the article on the brand's domain): Howseen records it and tracks indexing there. At most once per article every 24h. Preview first; confirm: true submits.
| Name | Type | Req | Description |
|---|---|---|---|
| article_id | string | yes | Id of a published article. |
| brand | string | – | Brand id, name or domain (from list_brands). Optional when the account has a single brand. |
| confirm | boolean | – | Leave out (or false) to get a preview: nothing changes. Set true ONLY after the user approved that exact preview. |
| url | string | – | Live https URL of the article on the brand's own site (needed when you publish it yourself from the API or feed). |
No output schema declared.
No examples provided.
restore_article Restore a deleted article ~110
Bring back an article from the Trash (e.g. one deleted with delete_article). Preview first; confirm: true restores.
| Name | Type | Req | Description |
|---|---|---|---|
| article_id | string | yes | Id of the deleted article (from delete_article's result). |
| brand | string | – | Brand id, name or domain (from list_brands). Optional when the account has a single brand. |
| confirm | boolean | – | Leave out (or false) to get a preview: nothing changes. Set true ONLY after the user approved that exact preview. |
No output schema declared.
No examples provided.
run_scan Run a visibility scan ~144
Scan the brand's prompts on the AI engines now, with the same limit as the dashboard Run now button (a fresh scan at most once per brand per plan cadence: every 72h, every 24h on Business; prompts added since the last scan can be scanned alone; an unfinished scan can be continued). Preview first; confirm: true runs about 45 seconds per call.
| Name | Type | Req | Description |
|---|---|---|---|
| brand | string | – | Brand id, name or domain (from list_brands). Optional when the account has a single brand. |
| confirm | boolean | – | Leave out (or false) to get a preview: nothing changes. Set true ONLY after the user approved that exact preview. |
No output schema declared.
No examples provided.
search_responses Search AI answers ~217
Read real AI answers collected for the brand: excerpts around the brand mention, whether the brand and which competitors were named, and the cited URLs. Filter by a word in the question or answer (query), by prompt text, and by engine.
| Name | Type | Req | Description |
|---|---|---|---|
| brand | string | – | Brand id, name or domain (from list_brands). Optional when the account has a single brand. |
| engine | string | – | Optional AI engine filter, comma separated: chatgpt, gemini, perplexity, ai_overviews, ai_mode. Default: all engines. |
| from | string | – | Start date YYYY-MM-DD. Default: all time. |
| limit | integer | – | Max items to return (default 10, max 50). |
| offset | integer | – | Items to skip, for pagination. |
| prompt | string | – | Optional text the tracked prompt must contain. |
| query | string | – | Optional text to search in the question or the answer. |
| to | string | – | End date YYYY-MM-DD. Default: now. |
No output schema declared.
No examples provided.
set_autopilot Turn Autopilot on or off ~148
Turn Autopilot on (articles of the content plan go live on the connected site on their date, once they meet the quality bar and the brand's rules) or off (nothing publishes automatically). Same switch as Howseen > Content. Preview first (says where it would publish); confirm: true applies.
| Name | Type | Req | Description |
|---|---|---|---|
| brand | string | – | Brand id, name or domain (from list_brands). Optional when the account has a single brand. |
| confirm | boolean | – | Leave out (or false) to get a preview: nothing changes. Set true ONLY after the user approved that exact preview. |
| on | boolean | yes | true = Autopilot ON, false = OFF. |
No output schema declared.
No examples provided.
suggest_prompts Suggest prompts to track ~106
Buyer questions worth tracking that the brand does not track yet: real questions from Hacker News discussions (ranked by engagement) plus AI suggestions for the category. Returns suggestions only; use add_prompts to track some. Limited to 20 calls per day.
| Name | Type | Req | Description |
|---|---|---|---|
| brand | string | – | Brand id, name or domain (from list_brands). Optional when the account has a single brand. |
| count | integer | – | How many AI suggestions (default 10, max 25). |
No output schema declared.
No examples provided.
update_brand_instructions Update the writing instructions ~204
Change the brand's writing instructions (Settings > Writing rules): the client's own rules every article must follow (tone, words to avoid, competitors never to name, facts to state...). Binding on every writing path from now on; an article breaking one is held, never published. mode "append" adds a rule, "replace" (default) sets the whole text (max 2000 characters, never cut). Read get_brand_settings first. Preview first; confirm: true saves.
| Name | Type | Req | Description |
|---|---|---|---|
| brand | string | – | Brand id, name or domain (from list_brands). Optional when the account has a single brand. |
| confirm | boolean | – | Leave out (or false) to get a preview: nothing changes. Set true ONLY after the user approved that exact preview. |
| instructions | string | yes | The instructions text (replace) or the rule to add (append). Empty with replace clears them. |
| mode | string | – | replace (default) or append. |
No output schema declared.
No examples provided.
How do I install the Howseen MCP server?
Howseen is a hosted endpoint at https://app.howseen.ai/api/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · app.howseen.ai
claude mcp add --transport http ai-howseen-howseen-mcp 'https://app.howseen.ai/api/mcp'
What is the Howseen MCP server?
Howseen is an MCP server listed in the public MCP registry as ai.howseen/howseen-mcp. How ChatGPT, Gemini, Perplexity and Google AI name your brand, cite sources and rank rivals. This page covers its hosted endpoint (https://app.howseen.ai/api/mcp).
Is the Howseen MCP server safe to use?
Howseen scores 84 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Howseen MCP server expose?
Howseen exposes 44 tools: list_brands, get_visibility, list_prompts, get_competitors, get_top_sources, and 39 more. Their descriptions and schemas cost roughly 6,950 tokens of context every time the server is loaded.
Does the Howseen MCP server require authentication?
Yes. Howseen asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.
Is the Howseen MCP server still maintained?
Howseen is still listed as active in the MCP registry. We last reached this channel on 4 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.