footnote-mcp server
Source-grounded web research: search, extraction, verification, and browser automation.
2 stars27 downloads/wk
Reviews
Write oneNobody has reviewed footnote-mcp yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
footnote-mcp tools (45, 3 write)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
archive_searchFind archived captures of a URL or host through the Wayback Machine and Common Crawl; optionally extract archived text.
browser_extract_tablesExtract visible tables from the current browser page after navigation/interactions.
browser_extract_tables_for_date_rangeSet date range in the current browser page, submit it, then extract visible tables.
browser_set_date_rangeBest-effort browser date-range setter for interactive pages with date inputs.
build_research_debug_reportBuild a compact diagnostic report for a research run: queries, URLs, source quality, and verification gaps.
check_date_completenessValidate date-range completeness for structured results. Supports day, week, and month granularity.
classify_sourceClassify a source as official, aggregator, blog, forum, interactive, blocked, or error.
corroborate_claimTriangulate a claim across multiple source excerpts; returns a corroboration verdict (corroborated/conflicting/single_source/...).
encyclopedia_searchSearch Wikipedia articles and Wikidata entities, or execute a read-only Wikidata SPARQL query.
evidence_entailmentStrict entailment check for claim vs source excerpt. Supports heuristic, Ollama judge, or auto fallback.
export_datasetwrite actionWrite extracted rows to a consolidated file (csv | xlsx | json) and return the path.
generate_search_queriesGenerate specialized search queries using operators like site:, filetype:, API, CSV, and data-table variants.
github_searchSearch public GitHub repositories, issues, code, or commits. Authentication is optional; zero-key requests use GitHub's public rate limit.
locate_claim_spanLocate the sentence(s) in a source that best support a claim, with character offsets and a containment score (span-level provenance).
papers_searchSearch scientific publications through Crossref and arXiv. Uses no API key and returns one normalized paper result shape.
recipe_registryManage promoted extraction recipes: list, get, run, or delete saved recipes.
reconcile_time_seriesAlign several time series on a common key, compute deltas vs the first series, and flag missing keys and outliers.
resolve_unitsResolve units, currencies, and currency pairs from text so incompatible rows can be rejected.
source_cache_getRead persistent source cache entry for a URL.
source_cache_putwrite actionWrite arbitrary parsed source payload into persistent source cache.
startup_health_checkCheck optional parser, OCR, browser, and cache dependencies for this MCP server.
tool_code_generateGenerate a safe starter extraction recipe function for the proposed spec. The result must still be validated before running.
tool_code_run_sandboxedwrite actionRun validated extraction recipe code in a separate limited subprocess. Code must define extract(source_text, input_payload).
tool_code_validateStatically validate task-specific extraction code against the safe recipe contract and allowlist.
tool_promoteSave a validated extraction recipe as reusable memory after an optional smoke test. Does not edit the MCP server.
tool_spec_proposePropose a controlled task-specific extraction recipe spec when generic tools cannot extract structured rows.
validate_unit_rowsReject structured rows that are incompatible with the expected unit, currency, or currency pair.
web_archive_fetchFind the closest Wayback Machine snapshot of a URL (for dead or changed sources) and optionally read its text.
web_clickClick an interactive element by its ref (e.g. @e3 from web_snapshot).
web_crawlBreadth-first crawl from a start URL, fetching and extracting each page. Stays on the start host by default. Capped at 50 pages.
web_deep_searchIterative evidence-led deep research: decompose requirements, search unresolved gaps, extract text/tables/files, verify each fact, and return a diagnostic funnel plus source-grounded context.
web_detect_downloadsDetect downloadable CSV/XLS/XLSX/PDF/JSON/XML links on a page.
web_extractExtract text from the page. refs: comma-separated @eN, or 'visible' for all visible text, or 'all' for full HTML.
web_extract_tablesFetch a page, parse HTML tables, and return structured columns/rows with source URL provenance.
web_fetch_authenticatedFetch a page that needs cookies or custom headers (logged-in or gated pages).
web_fetch_jsonFetch an API/JSON URL directly and return parsed JSON with source URL provenance and persistent cache.
web_navigateNavigate the browser to a URL.
web_parse_fileDownload and parse CSV/TSV/XLSX/PDF/JSON files, returning structured rows or extracted text with provenance.
web_readFetch and extract text from a single URL. Returns extracted content (markdown).
web_screenshotCapture a PNG screenshot of the current browser page, save it to disk, and optionally OCR text locked inside the image.
web_scrollScroll the page: up, down, top, bottom.
web_searchGeneral web discovery. Uses configured providers plus zero-key Bing, DuckDuckGo, Brave, and Wiby. Marginalia is opt-in through auto+marginalia. Returns normalized titles, URLs, snippets and scores.
web_search_recentWeb search restricted to a recency window via DuckDuckGo's date filter (day/week/month/year).
web_snapshotCapture the current page state: URL, title, accessibility tree with stable refs (@e1, @e2...), and visible text. Use this before clicking/typing.
web_typeType text into an input field by its ref.
Public scan report
scanner v0.1.10 · 2026-11-04 · same rubric, same numbers if you re-run it
- Code scan30 source files scanned25/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitylocal package, no credentials required12/15
- Maintenancelast push 59 days ago12/15
- Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
How footnote-mcp compares
Against every graded Scraping and browsing MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 88/100
- higher than 70% of 867 Scraping and browsing servers
- Tools
- 45
- the typical Scraping and browsing server has 6
- Tools that change things
- 7%
- typical: 0%. Fewer write tools means less an agent can break
- GitHub stars
- 2
- more than 65% of 584 Scraping and browsing servers
- Downloads a week
- 27
- more than 7% of 312 Scraping and browsing servers with a package
What its tools let an agent do: 39 read · 1 create · 3 change · 1 delete · 1 run or deploy
Install footnote-mcp in Claude Code, Cursor or VS Code
claude mcp add footnote-mcp -- uvx footnote-mcp
What the publisher says
From the footnote-mcp repository's README, as published. We do not edit it. Read it on GitHub
footnote-mcp — web research MCP server with claim verification
Search, extract data, and verify every claim against the source page.
Unlike search APIs (Tavily, Exa) or scrapers (Firecrawl) that return raw text or markdown, footnote-mcp is built for verification: every claim is checked against the raw source text with sentence-level citations and character offsets, with zero required API keys.
Add to Cursor · Claude Desktop setup
Runs without API keys · 45 tools · MIT licensed
<!-- mcp-name: io.github.KazKozDev/footnote-mcp -->
Quick start
pip install footnote-mcp
python -m playwright install chromium # browser tier for JS-heavy and blocked pagesfootnote-mcp speaks MCP over stdio. Point a client at it — Claude Desktop's claudedesktopconfig.json, or Cursor's ~/.cursor/mcp.json:
{"mcpServers": {"footnote": {"command": "footnote-mcp"}}}No API keys are needed to start. Restart the client and ask it to run startuphealthcheck: it reports, one line each, whether the extractors, the PDF and spreadsheet parsers, the browser, OCR and the cache directory are usable on this machine — so a missing optional piece shows up now rather than halfway through a research task.
Search the web without configuring an API key
Ask the assistant to look something up and web_search queries the zero-key providers — Bing, DuckDuckGo, Brave, Wiby — alongside any keyed provider you configured, then deduplicates and merges them into one ranking.
Every result carries the engines that returned it, so a page two independent indexes agree on is distinguishable from one only a single engine found, and a relevance score. Snippets count as discovery only: nothing at this stage is evidence yet, which is what the next two sections are for.
Provider routing, keys, and semantic reranking: docs/search-backends.md.
Extract tables and files from a page into structured rows
webextracttables turns a page's HTML tables into named columns and rows, each set tagged with the URL it came from and with the true total, so a truncated answer says so instead of looking complete. Point it at a Wikipedia revenue table and you get Rank, Name, Industry, Revenue, Employees as fields you can sort and compare, not a wall of text to re-read.
Data a page links rather than renders is covered too: webdetectdownloads finds the CSV/TSV/XLS/XLSX/PDF/JSON attached to it, webparsefile parses them, and webfetchjson takes an API endpoint directly.
Verify that a source actually supports a claim
The part a plain search tool does not do. evidenceentailment compares a claim to the source text and returns a verdict; corroborateclaim triangulates across excerpts, and locateclaimspan returns the supporting sentence with character offsets.
Given the claim "Norway's battery-electric share of new passenger cars was 82.4% in 2023" and a source reading "In 2023, battery-electric vehicles accounted for 82.4% of all new passenger cars registered in Norway", the verdict comes back as a value your agent can act on rather than a paragraph it has to interpret:
{"status": "supported", "score": 0.778, "reason": "token overlap heuristic", "backend": "heuristic"}Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
footnote-mcp: common questions
- Is footnote-mcp server safe?
- Yes, by our scan: it is graded A (88/100). Read the footnote-mcp safety report
- How do I install footnote-mcp?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does footnote-mcp need an API key?
- Not as far as the registry entry and our scan can tell: no credentials are declared or required.
- Is footnote-mcp maintained?
- The last commit was 59 days ago (2026-09-07). The latest release is v0.2.6.
- What can I use instead of footnote-mcp?
- Servers from other publishers that do the same job: One Search MCP server, Anakin MCP server and SeleniumBase MCP server. Compare all footnote-mcp alternatives.
- How does footnote-mcp compare with other Scraping and browsing MCP servers?
- safety score 88/100 (higher than 70% of 867 Scraping and browsing servers); tools 45 (the typical Scraping and browsing server has 6); tools that change things 7% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.
Alternatives to footnote-mcp
Same job from other publishers: the closest match first, then the best rated.
- One SearchWeb search, URL discovery, scraping & extraction with agent-browser and search providersnot reviewedGrowingB
AnakinWeb data for AI agents: scrape, crawl, search, deep research, site monitoring, browser automationnot reviewedGrowingB- SeleniumBase MCPStealthy browser automation, testing, and web-scraping via CDP Mode.not reviewedWidely usedA
- AIHawkAI browser agent: browses, clicks, types, and reads real web pages from plain-English instructions.not reviewedWidely usedA
- Browser UseBrowser agents and stealth cloud browsers for AI: run web tasks, fill forms, extract data.not reviewedEstablishedA