Server definition
- Hash
- sha256:b177fd85619db9d68e86660c95e8f81f5a9424e3d908f0f13303e2434a053c4d
- What it is
- What a remote MCP server returned when asked what it offers: 11 tools
The blob, as servednamed by its sha256
{
"instructions": "Read-only MCP for Momentic + general SEO/GEO audit tooling. Momentic-specific: get_brand_overview, list_pages, get_page, search. General-purpose: analyze_page (any URL), analyze_site (any domain). Companion skills at /.well-known/agent-skills/.",
"tools": [
{
"description": "Fetches any public URL and returns structured on-page SEO signals: title, meta description, canonical, lang, heading counts, JSON-LD schema types, OpenGraph/Twitter cards, internal/external link counts, word count, and whether Cloudflare Markdown for Agents (Accept: text/markdown) returns markdown for this URL. Designed to power the page-seo-score and geo-aeo-readiness skills.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"url": {
"description": "Absolute http(s) URL",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "analyze_page",
"outputSchema": null
},
{
"description": "Probes a domain root for site-wide AI-discovery signals: /llms.txt, /robots.txt (parsed AI-bot rules for GPTBot/ClaudeBot/PerplexityBot/GoogleOther/CCBot/Google-Extended/Applebot-Extended), /sitemap.xml (URL count + sections), /.well-known/agent-skills/index.json, /.well-known/api-catalog, /.well-known/mcp/server-card.json, and homepage Link header.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"domain": {
"description": "Root domain or full URL (e.g. \"example.com\" or \"https://example.com\")",
"type": "string"
}
},
"required": [
"domain"
],
"type": "object"
},
"name": "analyze_site",
"outputSchema": null
},
{
"description": "Probes a URL with multiple AI bot user-agents in parallel and returns per-bot reachability (status, key WAF/CDN headers, and a verdict). Reveals WAF/CDN-layer blocks that robots.txt audits miss — e.g. a site that allows GPTBot in robots.txt but returns 403 to it at Cloudflare. Verdicts: reachable, blocked-403, challenged-by-cdn, rate-limited-429, server-error-5xx, redirected-to-block-page, timeout, fetch-error. The summary.blockingPattern field names exactly which bots got blocked when others got through.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"timeoutMs": {
"description": "Per-fetch timeout in ms (default 5000)",
"type": "number"
},
"url": {
"description": "Absolute http(s) URL to probe",
"type": "string"
},
"userAgents": {
"description": "Optional UA strings to test. Defaults to GPTBot, ClaudeBot, Claude-Web, PerplexityBot, GoogleOther, Google-Extended, CCBot, Applebot-Extended, ChatGPT-User, meta-externalagent.",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "check_bots",
"outputSchema": null
},
{
"description": "Pure graph computation over a crawled page set. Input: an array of {url, internalLinks: [{href, anchor}, ...], title?, bodyText?}. Returns orphan pages (in-degree 0, excluding the homepage), hubs (top-N by in-degree), authorities (top-N by out-edges to hubs), PageRank-lite ranking, anchor-diversity issues (all-anchors-same, no-descriptive-anchors), connected components, and isolated clusters. With options.findMentions=true and title+bodyText supplied, also returns mention-not-linked suggestions. URL normalization (trailing slash, lowercased host, dropped utm_*/fbclid/gclid/etc.) is on by default.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"options": {
"additionalProperties": false,
"properties": {
"authorityCount": {
"description": "Number of top authorities to return. Default 10.",
"type": "number"
},
"findMentions": {
"description": "Default false. If true (and pages include title+bodyText), include mentioned-not-linked suggestions. O(N^2) — slow on large inputs.",
"type": "boolean"
},
"hubCount": {
"description": "Number of top hubs to return. Default 10.",
"type": "number"
},
"normalizeUrls": {
"description": "Default true. Strip trailing slashes, lowercase host, drop tracking params.",
"type": "boolean"
},
"rankingLimit": {
"description": "Max ranking entries to return. Default 50.",
"type": "number"
}
},
"type": "object"
},
"pages": {
"description": "Array of crawled pages",
"items": {
"properties": {
"bodyText": {
"type": "string"
},
"internalLinks": {
"items": {
"properties": {
"anchor": {
"type": [
"string",
"null"
]
},
"href": {
"type": "string"
}
},
"required": [
"href"
],
"type": "object"
},
"type": "array"
},
"title": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"url",
"internalLinks"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"pages"
],
"type": "object"
},
"name": "compute_link_graph",
"outputSchema": null
},
{
"description": "Pure HTML parser. Given a single page's HTML and its baseUrl, returns every <a href> resolved to absolute, separated into internal vs external by host, with cleaned anchor text, rel attribute, and nofollow flag. Skips fragments, mailto:, tel:, javascript:, and empty hrefs. Designed to feed compute_link_graph: the agent crawls pages on the user's machine (their IP, no Cloudflare subrequest cap) and calls extract_links per page, then ships the structured page data into compute_link_graph.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"baseUrl": {
"description": "Absolute URL of the page (used to resolve relative links and identify internal vs external)",
"type": "string"
},
"html": {
"description": "Raw HTML of the page",
"type": "string"
}
},
"required": [
"html",
"baseUrl"
],
"type": "object"
},
"name": "extract_links",
"outputSchema": null
},
{
"description": "Returns the canonical AI-readable description of Momentic from /llms.txt. Use for authoritative brand info, positioning, services, and contact.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "get_brand_overview",
"outputSchema": null
},
{
"description": "Fetches a Momentic page as Markdown (uses Cloudflare's Markdown for Agents). Pass an absolute path like \"/team/jane-doe\" or a full momenticmarketing.com URL.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"path": {
"description": "Absolute path or full URL on momenticmarketing.com",
"type": "string"
}
},
"required": [
"path"
],
"type": "object"
},
"name": "get_page",
"outputSchema": null
},
{
"description": "Lists pages on momenticmarketing.com from sitemap.xml. Optional `section` filter: team, case-studies, capabilities, services, blog, seo-news, content-academy, google-updates, blog-categories, careers, about, contact, pricing.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"section": {
"description": "Section slug (e.g. \"team\", \"case-studies\"). Omit to list all.",
"type": "string"
}
},
"type": "object"
},
"name": "list_pages",
"outputSchema": null
},
{
"description": "Resolves a brand/topic/person to a structured entity record built from Wikidata + Wikipedia (free APIs, no auth). Pass exactly one of: `name` (search by string), `qid` (Wikidata Q-number to skip search), or `wikipediaTitle` (resolves to QID via the article's wikibase_item). Returns: qid, label, description, instanceOf (P31 with resolved labels), sameAs (Wikipedia + claim-derived URLs for Twitter/Instagram/Facebook/GitHub/LinkedIn/YouTube/Crunchbase/official site), sitelinks (top 10 language wikis) and sitelinkCount, Wikipedia summary + thumbnail, Wikipedia section outline (canonical sub-topic structure for content briefs), and alternativeMatches when a name search returned multiple candidates. Powers entity-graph alignment checks (Stage 4 trustworthiness, Stage 10B verification) and feeds the content-brief skill's outline.",
"inputSchema": {
"additionalProperties": false,
"oneOf": [
{
"required": [
"name"
]
},
{
"required": [
"qid"
]
},
{
"required": [
"wikipediaTitle"
]
}
],
"properties": {
"name": {
"description": "Brand/topic/person name to search Wikidata for. The top match is resolved; runners-up are returned in alternativeMatches.",
"type": "string"
},
"qid": {
"description": "Wikidata Q-number (e.g. \"Q12345\") to fetch directly, skipping search.",
"pattern": "^[Qq][0-9]+$",
"type": "string"
},
"skipWikipedia": {
"description": "If true, return Wikidata-only (no Wikipedia summary/sections). Default false.",
"type": "boolean"
},
"wikipediaTitle": {
"description": "English Wikipedia article title (e.g. \"Acme_Corporation\"). Resolves to QID via pageprops, then proceeds.",
"type": "string"
}
},
"type": "object"
},
"name": "lookup_entity",
"outputSchema": null
},
{
"description": "Pure parser (no fetching). Given HTML plus optional response headers and a sitemap entry for the same URL, extracts every freshness marker on the page — HTTP Last-Modified, sitemap lastmod, JSON-LD dateModified/datePublished (including @graph), OpenGraph article:modified_time/published_time, meta updated/dc.date.modified/dcterms.modified/itemprop dateModified, and the first labelled visible date (Last updated / Updated / Published). Returns per-source ISO dates, the freshest source, cross-source agreement spread, and heuristic flags (stale year in title, suspicious future date, only-published-not-modified, none-at-all). Powers the geo-aeo-readiness skill's freshness check — `Last-Modified` headers and `dateModified` JSON-LD are weighted heavily for AI grounding eligibility.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"headers": {
"additionalProperties": {
"type": "string"
},
"description": "Response headers as a plain object with lowercased keys (e.g. {\"last-modified\": \"...\"})",
"type": "object"
},
"html": {
"description": "Full HTML of the page",
"type": "string"
},
"sitemapEntry": {
"additionalProperties": true,
"description": "Parsed sitemap entry for this URL, e.g. {\"lastmod\": \"2026-04-15\"}",
"properties": {
"lastmod": {
"type": "string"
}
},
"type": "object"
},
"url": {
"description": "URL the HTML was fetched from (for context)",
"type": "string"
}
},
"required": [
"html"
],
"type": "object"
},
"name": "parse_freshness_signals",
"outputSchema": null
},
{
"description": "Searches across Momentic page URLs from sitemap.xml (case-insensitive substring match on URL). For deeper search, fetch matching pages with get_page.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"query": {
"description": "Search term",
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "search",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:b177fd85619db9d68e86660c95e8f81f5a9424e3d908f0f13303e2434a053c4d | sha256sum