{"name":"io.github.KazKozDev/footnote-mcp","slug":"kazkozdev-footnote-mcp","title":"footnote-mcp","description":"Source-grounded web research: search, extraction, verification, and browser automation.","url":"https://mcp.market/server/kazkozdev-footnote-mcp","rating":null,"grade":"A","score":88,"certified":false,"status":"active","category":"scraping","tags":["scraping","search"],"presence":{"score":25,"stars":2,"forks":0,"downloads_week":27,"last_push_at":"2026-09-07T05:21:30.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"mixed","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/KazKozDev/footnote-mcp","website":"https://github.com/KazKozDev/footnote-mcp","version":"0.2.6","remotes":[],"packages":[{"registryType":"pypi","identifier":"footnote-mcp","version":"0.2.6","transport":{"type":"stdio"}},{"registryType":"oci","identifier":"ghcr.io/kazkozdev/footnote-mcp:0.2.6","transport":{"type":"stdio"}}],"tools":[{"name":"archive_search","description":"Find archived captures of a URL or host through the Wayback Machine and Common Crawl; optionally extract archived text.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_extract_tables","description":"Extract visible tables from the current browser page after navigation/interactions.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_extract_tables_for_date_range","description":"Set date range in the current browser page, submit it, then extract visible tables.","write_action":false,"price_micros":0,"input_schema":null},{"name":"browser_set_date_range","description":"Best-effort browser date-range setter for interactive pages with date inputs.","write_action":false,"price_micros":0,"input_schema":null},{"name":"build_research_debug_report","description":"Build a compact diagnostic report for a research run: queries, URLs, source quality, and verification gaps.","write_action":false,"price_micros":0,"input_schema":null},{"name":"check_date_completeness","description":"Validate date-range completeness for structured results. Supports day, week, and month granularity.","write_action":false,"price_micros":0,"input_schema":null},{"name":"classify_source","description":"Classify a source as official, aggregator, blog, forum, interactive, blocked, or error.","write_action":false,"price_micros":0,"input_schema":null},{"name":"corroborate_claim","description":"Triangulate a claim across multiple source excerpts; returns a corroboration verdict (corroborated/conflicting/single_source/...).","write_action":false,"price_micros":0,"input_schema":null},{"name":"encyclopedia_search","description":"Search Wikipedia articles and Wikidata entities, or execute a read-only Wikidata SPARQL query.","write_action":false,"price_micros":0,"input_schema":null},{"name":"evidence_entailment","description":"Strict entailment check for claim vs source excerpt. Supports heuristic, Ollama judge, or auto fallback.","write_action":false,"price_micros":0,"input_schema":null},{"name":"export_dataset","description":"Write extracted rows to a consolidated file (csv | xlsx | json) and return the path.","write_action":true,"price_micros":0,"input_schema":null},{"name":"generate_search_queries","description":"Generate specialized search queries using operators like site:, filetype:, API, CSV, and data-table variants.","write_action":false,"price_micros":0,"input_schema":null},{"name":"github_search","description":"Search public GitHub repositories, issues, code, or commits. Authentication is optional; zero-key requests use GitHub's public rate limit.","write_action":false,"price_micros":0,"input_schema":null},{"name":"locate_claim_span","description":"Locate the sentence(s) in a source that best support a claim, with character offsets and a containment score (span-level provenance).","write_action":false,"price_micros":0,"input_schema":null},{"name":"papers_search","description":"Search scientific publications through Crossref and arXiv. Uses no API key and returns one normalized paper result shape.","write_action":false,"price_micros":0,"input_schema":null},{"name":"recipe_registry","description":"Manage promoted extraction recipes: list, get, run, or delete saved recipes.","write_action":false,"price_micros":0,"input_schema":null},{"name":"reconcile_time_series","description":"Align several time series on a common key, compute deltas vs the first series, and flag missing keys and outliers.","write_action":false,"price_micros":0,"input_schema":null},{"name":"resolve_units","description":"Resolve units, currencies, and currency pairs from text so incompatible rows can be rejected.","write_action":false,"price_micros":0,"input_schema":null},{"name":"source_cache_get","description":"Read persistent source cache entry for a URL.","write_action":false,"price_micros":0,"input_schema":null},{"name":"source_cache_put","description":"Write arbitrary parsed source payload into persistent source cache.","write_action":true,"price_micros":0,"input_schema":null},{"name":"startup_health_check","description":"Check optional parser, OCR, browser, and cache dependencies for this MCP server.","write_action":false,"price_micros":0,"input_schema":null},{"name":"tool_code_generate","description":"Generate a safe starter extraction recipe function for the proposed spec. The result must still be validated before running.","write_action":false,"price_micros":0,"input_schema":null},{"name":"tool_code_run_sandboxed","description":"Run validated extraction recipe code in a separate limited subprocess. Code must define extract(source_text, input_payload).","write_action":true,"price_micros":0,"input_schema":null},{"name":"tool_code_validate","description":"Statically validate task-specific extraction code against the safe recipe contract and allowlist.","write_action":false,"price_micros":0,"input_schema":null},{"name":"tool_promote","description":"Save a validated extraction recipe as reusable memory after an optional smoke test. Does not edit the MCP server.","write_action":false,"price_micros":0,"input_schema":null},{"name":"tool_spec_propose","description":"Propose a controlled task-specific extraction recipe spec when generic tools cannot extract structured rows.","write_action":false,"price_micros":0,"input_schema":null},{"name":"validate_unit_rows","description":"Reject structured rows that are incompatible with the expected unit, currency, or currency pair.","write_action":false,"price_micros":0,"input_schema":null},{"name":"web_archive_fetch","description":"Find the closest Wayback Machine snapshot of a URL (for dead or changed sources) and optionally read its text.","write_action":false,"price_micros":0,"input_schema":null},{"name":"web_click","description":"Click an interactive element by its ref (e.g. @e3 from web_snapshot).","write_action":false,"price_micros":0,"input_schema":null},{"name":"web_crawl","description":"Breadth-first crawl from a start URL, fetching and extracting each page. Stays on the start host by default. Capped at 50 pages.","write_action":false,"price_micros":0,"input_schema":null},{"name":"web_deep_search","description":"Iterative 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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"web_detect_downloads","description":"Detect downloadable CSV/XLS/XLSX/PDF/JSON/XML links on a page.","write_action":false,"price_micros":0,"input_schema":null},{"name":"web_extract","description":"Extract text from the page. refs: comma-separated @eN, or 'visible' for all visible text, or 'all' for full HTML.","write_action":false,"price_micros":0,"input_schema":null},{"name":"web_extract_tables","description":"Fetch a page, parse HTML tables, and return structured columns/rows with source URL provenance.","write_action":false,"price_micros":0,"input_schema":null},{"name":"web_fetch_authenticated","description":"Fetch a page that needs cookies or custom headers (logged-in or gated pages).","write_action":false,"price_micros":0,"input_schema":null},{"name":"web_fetch_json","description":"Fetch an API/JSON URL directly and return parsed JSON with source URL provenance and persistent cache.","write_action":false,"price_micros":0,"input_schema":null},{"name":"web_navigate","description":"Navigate the browser to a URL.","write_action":false,"price_micros":0,"input_schema":null},{"name":"web_parse_file","description":"Download and parse CSV/TSV/XLSX/PDF/JSON files, returning structured rows or extracted text with provenance.","write_action":false,"price_micros":0,"input_schema":null},{"name":"web_read","description":"Fetch and extract text from a single URL. Returns extracted content (markdown).","write_action":false,"price_micros":0,"input_schema":null},{"name":"web_screenshot","description":"Capture a PNG screenshot of the current browser page, save it to disk, and optionally OCR text locked inside the image.","write_action":false,"price_micros":0,"input_schema":null},{"name":"web_scroll","description":"Scroll the page: up, down, top, bottom.","write_action":false,"price_micros":0,"input_schema":null},{"name":"web_search","description":"General 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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"web_search_recent","description":"Web search restricted to a recency window via DuckDuckGo's date filter (day/week/month/year).","write_action":false,"price_micros":0,"input_schema":null},{"name":"web_snapshot","description":"Capture the current page state: URL, title, accessibility tree with stable refs (@e1, @e2...), and visible text. Use this before clicking/typing.","write_action":false,"price_micros":0,"input_schema":null},{"name":"web_type","description":"Type text into an input field by its ref.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":88,"grade":"A","scanned_at":"2026-11-04T20:00:33.184Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-11-04T20:00:33.118Z","components":{"code":{"score":25,"max":25,"notes":["30 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":12,"max":15,"notes":["last push 59 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"pypi","identifier":"footnote-mcp","version":"0.2.6","found":true,"weeklyDownloads":27,"license":"MIT","dependencyCount":16,"publishedAt":"2026-08-06T03:35:28.239493Z","repositoryUrl":"https://github.com/KazKozDev/footnote-mcp"}],"repo":{"found":true,"owner":"KazKozDev","repo":"footnote-mcp","archived":false,"pushedAt":"2026-09-07T05:21:30Z","stars":2,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/159002820?v=4","ownerCreatedAt":"2024-02-05T08:08:07Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/159002820?v=4&s=128","source":"registry","width":128,"height":128},"presence":{"stars":2,"forks":0,"downloadsWeek":27,"license":"MIT","lastPushAt":"2026-09-07T05:21:30.000Z","score":25}}}},"grade_history":[],"reviews":[]}