DocsAPI & MCP

Changelog

Every released change to the v1 REST API and the MCP server, newest first — with the date-based X-MF-API-Version header each change shipped under.

Every response from /api/v1/* and /api/mcp carries an X-MF-API-Version header — the date of the newest released contract change, matching the top entry on this page. Under the contract freeze all changes are additive: released fields never change meaning, scale, or name, so the version is informational — you never need to pin it.

2026-07-11

  • X-MF-API-Version header added to every /api/v1 and /api/mcp response (including errors and 429s).
  • Pagination (additive) on the list resources — brands, prompts, competitors, sources, urls, answers: optional cursor / limit params (limit 1–200, default 50) with next_cursor in the envelope. Paged reads enumerate the full listing, past the default response caps. Requests without either param are unchanged. See Limits.
  • GET /api/v1/crawlers (additive): agent analytics — per-agent hits, pages, first/last seen, and robots.txt verdicts, with the same honest-null rules as the dashboard. Plan-gated like the /crawlers page (Growth+). Matching MCP tool get_crawler_analytics.
  • MCP list_urls tool: the urls resource (shipped to REST 2026-07-10) now has MCP parity.
  • GET /api/v1/metrics/history: historical daily time series (visibility, share-of-voice fraction, citation share, sentiment index) with presets or custom ranges; matching MCP tool get_metrics_history.

2026-07-10

  • GET /api/v1/urls (additive): URL-level citation rows — the individual cited pages behind sources.
  • Per-key rate limiting: 120 requests/minute per API key, shared between REST and MCP; X-RateLimit-* headers on every keyed response, honest 429 + Retry-After on refusal.
  • share_of_voice_fraction (additive) on overview and competitors: the same number as the frozen 0–100 share_of_voice, on the standard 0–1 fraction scale. Prefer it in new integrations.
  • channel_coverage (additive) on the shopping leaderboard: per-engine shopping-capability status; carousels: null means unobservable, not zero.
  • GET /api/v1/shopping and /api/v1/shopping-trend: AI shopping-carousel placements; MCP tools list_shopping_products and get_shopping_trend.
  • archived (additive) on brand listings: archived brands keep their row and their history stays readable; the flag says collection stopped.

2026-07-09

  • Ingest-only key scope: workspace keys minted for deployed Cloudflare Workers carry scope ingest — they can POST /api/v1/crawler-events and nothing else. Read surfaces refuse them with 403.

2026-07-08

  • Workspace API keys (mf_…, Settings → API keys): self-serve tenant-scoped keys alongside the operator key; key lifecycle recorded in the workspace audit log.

2026-07-05

  • MCP server at /api/mcp (Streamable HTTP, stateless, read-only): the v1 read views exposed as tools.
  • POST /api/v1/crawler-events: crawler-event ingestion (nginx/apache combined format or NDJSON), deliberately unmetered.
  • Product renamed EchoLens → MentionFlow (mentionflow.ai).

2026-07-04

  • v1 REST API released (read-only): overview, prompts, competitors, sources, answers, brands under Authorization: Bearer auth. The released response fields froze here — everything since is additive.