Koskamo

FactStable MCP

Provides verified fact packs for AI agents, serving statutory rates, passenger rights, and consumer law data directly from official sources with refusal semantics when sources drift. The server ensures data integrity by anchoring records to a Bitcoin blockchain and offering citations for every fact served.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

FactStable MCP logo, by FactStableVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-07Operated by FactStable
You need:keys are bought in secondsBearer key
MCP endpoint (Streamable HTTP)
https://factstable.com/mcp
Vendor documentation

What its tools do

86 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

Not annotated (86)

86 of 86 have a description · 0 of 86 declare behavior hints · 1 of 29 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to factstable.com ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Retrieve verified statutory rates like UK SSP
  • Check consumer cancellation rights and refund deadlines
  • Assess passenger compensation for flight delays
  • Verify employee benefits and bereavement leave rules

Source and maintenance

Vendor evidenceRegistry 0.1.0

Protocol and capabilities

Server
factstable 0.1.0
MCP protocol negotiated in check
2024-11-05
Tools
86 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {}
}

Tools

86 advertised

benefitsuk_get_fact
Advertised by the server during the last successful anonymous check.

Get one verified fact from the benefitsuk pack. Refuses (do_not_answer) when drifted or unverified — never guesses.

benefitsuk_get_fact input schema
{
  "type": "object",
  "required": [
    "fact_id"
  ],
  "properties": {
    "fact_id": {
      "type": "string"
    }
  }
}
benefitsuk_list_facts
Advertised by the server during the last successful anonymous check.

List fact ids + verification states (benefitsuk).

benefitsuk_list_facts input schema
{
  "type": "object",
  "properties": {}
}
benefitsuk_changes
Advertised by the server during the last successful anonymous check.

Recent verification changelog (benefitsuk).

benefitsuk_changes input schema
{
  "type": "object",
  "properties": {}
}
bereavementuk_get_fact
Advertised by the server during the last successful anonymous check.

Get one verified fact from the bereavementuk pack. Refuses (do_not_answer) when drifted or unverified — never guesses.

bereavementuk_get_fact input schema
{
  "type": "object",
  "required": [
    "fact_id"
  ],
  "properties": {
    "fact_id": {
      "type": "string"
    }
  }
}
bereavementuk_list_facts
Advertised by the server during the last successful anonymous check.

List fact ids + verification states (bereavementuk).

bereavementuk_list_facts input schema
{
  "type": "object",
  "properties": {}
}
bereavementuk_changes
Advertised by the server during the last successful anonymous check.

Recent verification changelog (bereavementuk).

bereavementuk_changes input schema
{
  "type": "object",
  "properties": {}
}
broadbanduk_get_fact
Advertised by the server during the last successful anonymous check.

Get one verified fact from the broadbanduk pack. Refuses (do_not_answer) when drifted or unverified — never guesses.

broadbanduk_get_fact input schema
{
  "type": "object",
  "required": [
    "fact_id"
  ],
  "properties": {
    "fact_id": {
      "type": "string"
    }
  }
}
broadbanduk_list_facts
Advertised by the server during the last successful anonymous check.

List fact ids + verification states (broadbanduk).

broadbanduk_list_facts input schema
{
  "type": "object",
  "properties": {}
}
broadbanduk_changes
Advertised by the server during the last successful anonymous check.

Recent verification changelog (broadbanduk).

broadbanduk_changes input schema
{
  "type": "object",
  "properties": {}
}
cancelflow_get_fact
Advertised by the server during the last successful anonymous check.

Get one verified fact from the cancelflow pack. Refuses (do_not_answer) when drifted or unverified — never guesses.

cancelflow_get_fact input schema
{
  "type": "object",
  "required": [
    "fact_id"
  ],
  "properties": {
    "fact_id": {
      "type": "string"
    }
  }
}
cancelflow_list_facts
Advertised by the server during the last successful anonymous check.

List fact ids + verification states (cancelflow).

cancelflow_list_facts input schema
{
  "type": "object",
  "properties": {}
}
cancelflow_changes
Advertised by the server during the last successful anonymous check.

Recent verification changelog (cancelflow).

cancelflow_changes input schema
{
  "type": "object",
  "properties": {}
}
childcareuk_get_fact
Advertised by the server during the last successful anonymous check.

Get one verified fact from the childcareuk pack. Refuses (do_not_answer) when drifted or unverified — never guesses.

childcareuk_get_fact input schema
{
  "type": "object",
  "required": [
    "fact_id"
  ],
  "properties": {
    "fact_id": {
      "type": "string"
    }
  }
}
childcareuk_list_facts
Advertised by the server during the last successful anonymous check.

List fact ids + verification states (childcareuk).

childcareuk_list_facts input schema
{
  "type": "object",
  "properties": {}
}
childcareuk_changes
Advertised by the server during the last successful anonymous check.

Recent verification changelog (childcareuk).

childcareuk_changes input schema
{
  "type": "object",
  "properties": {}
}
credituk_get_fact
Advertised by the server during the last successful anonymous check.

Get one verified fact from the credituk pack. Refuses (do_not_answer) when drifted or unverified — never guesses.

credituk_get_fact input schema
{
  "type": "object",
  "required": [
    "fact_id"
  ],
  "properties": {
    "fact_id": {
      "type": "string"
    }
  }
}
credituk_list_facts
Advertised by the server during the last successful anonymous check.

List fact ids + verification states (credituk).

credituk_list_facts input schema
{
  "type": "object",
  "properties": {}
}
credituk_changes
Advertised by the server during the last successful anonymous check.

Recent verification changelog (credituk).

credituk_changes input schema
{
  "type": "object",
  "properties": {}
}
debtuk_get_fact
Advertised by the server during the last successful anonymous check.

Get one verified fact from the debtuk pack. Refuses (do_not_answer) when drifted or unverified — never guesses.

debtuk_get_fact input schema
{
  "type": "object",
  "required": [
    "fact_id"
  ],
  "properties": {
    "fact_id": {
      "type": "string"
    }
  }
}
debtuk_list_facts
Advertised by the server during the last successful anonymous check.

List fact ids + verification states (debtuk).

debtuk_list_facts input schema
{
  "type": "object",
  "properties": {}
}
debtuk_changes
Advertised by the server during the last successful anonymous check.

Recent verification changelog (debtuk).

debtuk_changes input schema
{
  "type": "object",
  "properties": {}
}
deposituk_get_fact
Advertised by the server during the last successful anonymous check.

Get one verified fact from the deposituk pack. Refuses (do_not_answer) when drifted or unverified — never guesses.

deposituk_get_fact input schema
{
  "type": "object",
  "required": [
    "fact_id"
  ],
  "properties": {
    "fact_id": {
      "type": "string"
    }
  }
}
deposituk_list_facts
Advertised by the server during the last successful anonymous check.

List fact ids + verification states (deposituk).

deposituk_list_facts input schema
{
  "type": "object",
  "properties": {}
}
deposituk_changes
Advertised by the server during the last successful anonymous check.

Recent verification changelog (deposituk).

deposituk_changes input schema
{
  "type": "object",
  "properties": {}
}
dismissaluk_get_fact
Advertised by the server during the last successful anonymous check.

Get one verified fact from the dismissaluk pack. Refuses (do_not_answer) when drifted or unverified — never guesses.

dismissaluk_get_fact input schema
{
  "type": "object",
  "required": [
    "fact_id"
  ],
  "properties": {
    "fact_id": {
      "type": "string"
    }
  }
}
dismissaluk_list_facts
Advertised by the server during the last successful anonymous check.

List fact ids + verification states (dismissaluk).

dismissaluk_list_facts input schema
{
  "type": "object",
  "properties": {}
}
dismissaluk_changes
Advertised by the server during the last successful anonymous check.

Recent verification changelog (dismissaluk).

dismissaluk_changes input schema
{
  "type": "object",
  "properties": {}
}
drivinguk_get_fact
Advertised by the server during the last successful anonymous check.

Get one verified fact from the drivinguk pack. Refuses (do_not_answer) when drifted or unverified — never guesses.

drivinguk_get_fact input schema
{
  "type": "object",
  "required": [
    "fact_id"
  ],
  "properties": {
    "fact_id": {
      "type": "string"
    }
  }
}
drivinguk_list_facts
Advertised by the server during the last successful anonymous check.

List fact ids + verification states (drivinguk).

drivinguk_list_facts input schema
{
  "type": "object",
  "properties": {}
}
drivinguk_changes
Advertised by the server during the last successful anonymous check.

Recent verification changelog (drivinguk).

drivinguk_changes input schema
{
  "type": "object",
  "properties": {}
}
energyuk_get_fact
Advertised by the server during the last successful anonymous check.

Get one verified fact from the energyuk pack. Refuses (do_not_answer) when drifted or unverified — never guesses.

energyuk_get_fact input schema
{
  "type": "object",
  "required": [
    "fact_id"
  ],
  "properties": {
    "fact_id": {
      "type": "string"
    }
  }
}
energyuk_list_facts
Advertised by the server during the last successful anonymous check.

List fact ids + verification states (energyuk).

energyuk_list_facts input schema
{
  "type": "object",
  "properties": {}
}
energyuk_changes
Advertised by the server during the last successful anonymous check.

Recent verification changelog (energyuk).

energyuk_changes input schema
{
  "type": "object",
  "properties": {}
}
ferryuk_get_fact
Advertised by the server during the last successful anonymous check.

Get one verified fact from the ferryuk pack. Refuses (do_not_answer) when drifted or unverified — never guesses.

ferryuk_get_fact input schema
{
  "type": "object",
  "required": [
    "fact_id"
  ],
  "properties": {
    "fact_id": {
      "type": "string"
    }
  }
}
ferryuk_list_facts
Advertised by the server during the last successful anonymous check.

List fact ids + verification states (ferryuk).

ferryuk_list_facts input schema
{
  "type": "object",
  "properties": {}
}
ferryuk_changes
Advertised by the server during the last successful anonymous check.

Recent verification changelog (ferryuk).

ferryuk_changes input schema
{
  "type": "object",
  "properties": {}
}
flightcomp_get_fact
Advertised by the server during the last successful anonymous check.

Get one verified fact from the flightcomp pack. Refuses (do_not_answer) when drifted or unverified — never guesses.

flightcomp_get_fact input schema
{
  "type": "object",
  "required": [
    "fact_id"
  ],
  "properties": {
    "fact_id": {
      "type": "string"
    }
  }
}
flightcomp_list_facts
Advertised by the server during the last successful anonymous check.

List fact ids + verification states (flightcomp).

flightcomp_list_facts input schema
{
  "type": "object",
  "properties": {}
}
flightcomp_changes
Advertised by the server during the last successful anonymous check.

Recent verification changelog (flightcomp).

flightcomp_changes input schema
{
  "type": "object",
  "properties": {}
}
goodsuk_get_fact
Advertised by the server during the last successful anonymous check.

Get one verified fact from the goodsuk pack. Refuses (do_not_answer) when drifted or unverified — never guesses.

goodsuk_get_fact input schema
{
  "type": "object",
  "required": [
    "fact_id"
  ],
  "properties": {
    "fact_id": {
      "type": "string"
    }
  }
}
goodsuk_list_facts
Advertised by the server during the last successful anonymous check.

List fact ids + verification states (goodsuk).

goodsuk_list_facts input schema
{
  "type": "object",
  "properties": {}
}
goodsuk_changes
Advertised by the server during the last successful anonymous check.

Recent verification changelog (goodsuk).

goodsuk_changes input schema
{
  "type": "object",
  "properties": {}
}
holidayuk_get_fact
Advertised by the server during the last successful anonymous check.

Get one verified fact from the holidayuk pack. Refuses (do_not_answer) when drifted or unverified — never guesses.

holidayuk_get_fact input schema
{
  "type": "object",
  "required": [
    "fact_id"
  ],
  "properties": {
    "fact_id": {
      "type": "string"
    }
  }
}
holidayuk_list_facts
Advertised by the server during the last successful anonymous check.

List fact ids + verification states (holidayuk).

holidayuk_list_facts input schema
{
  "type": "object",
  "properties": {}
}
holidayuk_changes
Advertised by the server during the last successful anonymous check.

Recent verification changelog (holidayuk).

holidayuk_changes input schema
{
  "type": "object",
  "properties": {}
}
insuranceuk_get_fact
Advertised by the server during the last successful anonymous check.

Get one verified fact from the insuranceuk pack. Refuses (do_not_answer) when drifted or unverified — never guesses.

insuranceuk_get_fact input schema
{
  "type": "object",
  "required": [
    "fact_id"
  ],
  "properties": {
    "fact_id": {
      "type": "string"
    }
  }
}
insuranceuk_list_facts
Advertised by the server during the last successful anonymous check.

List fact ids + verification states (insuranceuk).

insuranceuk_list_facts input schema
{
  "type": "object",
  "properties": {}
}
insuranceuk_changes
Advertised by the server during the last successful anonymous check.

Recent verification changelog (insuranceuk).

insuranceuk_changes input schema
{
  "type": "object",
  "properties": {}
}
legaluk_get_fact
Advertised by the server during the last successful anonymous check.

Get one verified fact from the legaluk pack. Refuses (do_not_answer) when drifted or unverified — never guesses.

legaluk_get_fact input schema
{
  "type": "object",
  "required": [
    "fact_id"
  ],
  "properties": {
    "fact_id": {
      "type": "string"
    }
  }
}
legaluk_list_facts
Advertised by the server during the last successful anonymous check.

List fact ids + verification states (legaluk).

legaluk_list_facts input schema
{
  "type": "object",
  "properties": {}
}
legaluk_changes
Advertised by the server during the last successful anonymous check.

Recent verification changelog (legaluk).

legaluk_changes input schema
{
  "type": "object",
  "properties": {}
}
maternityuk_get_fact
Advertised by the server during the last successful anonymous check.

Get one verified fact from the maternityuk pack. Refuses (do_not_answer) when drifted or unverified — never guesses.

maternityuk_get_fact input schema
{
  "type": "object",
  "required": [
    "fact_id"
  ],
  "properties": {
    "fact_id": {
      "type": "string"
    }
  }
}
maternityuk_list_facts
Advertised by the server during the last successful anonymous check.

List fact ids + verification states (maternityuk).

maternityuk_list_facts input schema
{
  "type": "object",
  "properties": {}
}
maternityuk_changes
Advertised by the server during the last successful anonymous check.

Recent verification changelog (maternityuk).

maternityuk_changes input schema
{
  "type": "object",
  "properties": {}
}
mileageuk_get_fact
Advertised by the server during the last successful anonymous check.

Get one verified fact from the mileageuk pack. Refuses (do_not_answer) when drifted or unverified — never guesses.

mileageuk_get_fact input schema
{
  "type": "object",
  "required": [
    "fact_id"
  ],
  "properties": {
    "fact_id": {
      "type": "string"
    }
  }
}
mileageuk_list_facts
Advertised by the server during the last successful anonymous check.

List fact ids + verification states (mileageuk).

mileageuk_list_facts input schema
{
  "type": "object",
  "properties": {}
}
mileageuk_changes
Advertised by the server during the last successful anonymous check.

Recent verification changelog (mileageuk).

mileageuk_changes input schema
{
  "type": "object",
  "properties": {}
}
motuk_get_fact
Advertised by the server during the last successful anonymous check.

Get one verified fact from the motuk pack. Refuses (do_not_answer) when drifted or unverified — never guesses.

motuk_get_fact input schema
{
  "type": "object",
  "required": [
    "fact_id"
  ],
  "properties": {
    "fact_id": {
      "type": "string"
    }
  }
}
motuk_list_facts
Advertised by the server during the last successful anonymous check.

List fact ids + verification states (motuk).

motuk_list_facts input schema
{
  "type": "object",
  "properties": {}
}
motuk_changes
Advertised by the server during the last successful anonymous check.

Recent verification changelog (motuk).

motuk_changes input schema
{
  "type": "object",
  "properties": {}
}
parkinguk_get_fact
Advertised by the server during the last successful anonymous check.

Get one verified fact from the parkinguk pack. Refuses (do_not_answer) when drifted or unverified — never guesses.

parkinguk_get_fact input schema
{
  "type": "object",
  "required": [
    "fact_id"
  ],
  "properties": {
    "fact_id": {
      "type": "string"
    }
  }
}
parkinguk_list_facts
Advertised by the server during the last successful anonymous check.

List fact ids + verification states (parkinguk).

parkinguk_list_facts input schema
{
  "type": "object",
  "properties": {}
}
parkinguk_changes
Advertised by the server during the last successful anonymous check.

Recent verification changelog (parkinguk).

parkinguk_changes input schema
{
  "type": "object",
  "properties": {}
}
pensionuk_get_fact
Advertised by the server during the last successful anonymous check.

Get one verified fact from the pensionuk pack. Refuses (do_not_answer) when drifted or unverified — never guesses.

pensionuk_get_fact input schema
{
  "type": "object",
  "required": [
    "fact_id"
  ],
  "properties": {
    "fact_id": {
      "type": "string"
    }
  }
}
pensionuk_list_facts
Advertised by the server during the last successful anonymous check.

List fact ids + verification states (pensionuk).

pensionuk_list_facts input schema
{
  "type": "object",
  "properties": {}
}
pensionuk_changes
Advertised by the server during the last successful anonymous check.

Recent verification changelog (pensionuk).

pensionuk_changes input schema
{
  "type": "object",
  "properties": {}
}
privacyuk_get_fact
Advertised by the server during the last successful anonymous check.

Get one verified fact from the privacyuk pack. Refuses (do_not_answer) when drifted or unverified — never guesses.

privacyuk_get_fact input schema
{
  "type": "object",
  "required": [
    "fact_id"
  ],
  "properties": {
    "fact_id": {
      "type": "string"
    }
  }
}
privacyuk_list_facts
Advertised by the server during the last successful anonymous check.

List fact ids + verification states (privacyuk).

privacyuk_list_facts input schema
{
  "type": "object",
  "properties": {}
}
privacyuk_changes
Advertised by the server during the last successful anonymous check.

Recent verification changelog (privacyuk).

privacyuk_changes input schema
{
  "type": "object",
  "properties": {}
}
railcomp_get_fact
Advertised by the server during the last successful anonymous check.

Get one verified fact from the railcomp pack. Refuses (do_not_answer) when drifted or unverified — never guesses.

railcomp_get_fact input schema
{
  "type": "object",
  "required": [
    "fact_id"
  ],
  "properties": {
    "fact_id": {
      "type": "string"
    }
  }
}
railcomp_list_facts
Advertised by the server during the last successful anonymous check.

List fact ids + verification states (railcomp).

railcomp_list_facts input schema
{
  "type": "object",
  "properties": {}
}
railcomp_changes
Advertised by the server during the last successful anonymous check.

Recent verification changelog (railcomp).

railcomp_changes input schema
{
  "type": "object",
  "properties": {}
}
rentinguk_get_fact
Advertised by the server during the last successful anonymous check.

Get one verified fact from the rentinguk pack. Refuses (do_not_answer) when drifted or unverified — never guesses.

rentinguk_get_fact input schema
{
  "type": "object",
  "required": [
    "fact_id"
  ],
  "properties": {
    "fact_id": {
      "type": "string"
    }
  }
}
rentinguk_list_facts
Advertised by the server during the last successful anonymous check.

List fact ids + verification states (rentinguk).

rentinguk_list_facts input schema
{
  "type": "object",
  "properties": {}
}
rentinguk_changes
Advertised by the server during the last successful anonymous check.

Recent verification changelog (rentinguk).

rentinguk_changes input schema
{
  "type": "object",
  "properties": {}
}
studentloanuk_get_fact
Advertised by the server during the last successful anonymous check.

Get one verified fact from the studentloanuk pack. Refuses (do_not_answer) when drifted or unverified — never guesses.

studentloanuk_get_fact input schema
{
  "type": "object",
  "required": [
    "fact_id"
  ],
  "properties": {
    "fact_id": {
      "type": "string"
    }
  }
}
studentloanuk_list_facts
Advertised by the server during the last successful anonymous check.

List fact ids + verification states (studentloanuk).

studentloanuk_list_facts input schema
{
  "type": "object",
  "properties": {}
}
studentloanuk_changes
Advertised by the server during the last successful anonymous check.

Recent verification changelog (studentloanuk).

studentloanuk_changes input schema
{
  "type": "object",
  "properties": {}
}
taxfreeuk_get_fact
Advertised by the server during the last successful anonymous check.

Get one verified fact from the taxfreeuk pack. Refuses (do_not_answer) when drifted or unverified — never guesses.

taxfreeuk_get_fact input schema
{
  "type": "object",
  "required": [
    "fact_id"
  ],
  "properties": {
    "fact_id": {
      "type": "string"
    }
  }
}
taxfreeuk_list_facts
Advertised by the server during the last successful anonymous check.

List fact ids + verification states (taxfreeuk).

taxfreeuk_list_facts input schema
{
  "type": "object",
  "properties": {}
}
taxfreeuk_changes
Advertised by the server during the last successful anonymous check.

Recent verification changelog (taxfreeuk).

taxfreeuk_changes input schema
{
  "type": "object",
  "properties": {}
}
wageuk_get_fact
Advertised by the server during the last successful anonymous check.

Get one verified fact from the wageuk pack. Refuses (do_not_answer) when drifted or unverified — never guesses.

wageuk_get_fact input schema
{
  "type": "object",
  "required": [
    "fact_id"
  ],
  "properties": {
    "fact_id": {
      "type": "string"
    }
  }
}
wageuk_list_facts
Advertised by the server during the last successful anonymous check.

List fact ids + verification states (wageuk).

wageuk_list_facts input schema
{
  "type": "object",
  "properties": {}
}
wageuk_changes
Advertised by the server during the last successful anonymous check.

Recent verification changelog (wageuk).

wageuk_changes input schema
{
  "type": "object",
  "properties": {}
}
counsel_ask
Advertised by the server during the last successful anonymous check.

Ask FactStable Counsel: describe a real situation and Counsel digests it, asks what it must know, and works out possible outcome pathways using ONLY verified pack facts (cite-or-refuse). Returns gates with per-fact citations, open questions, and an assessment when it passes self-verification.

counsel_ask input schema
{
  "type": "object",
  "required": [
    "narrative"
  ],
  "properties": {
    "domain": {
      "type": "string",
      "description": "optional domain (e.g. flightcomp); auto-detected when omitted"
    },
    "narrative": {
      "type": "string",
      "description": "the situation in plain words"
    }
  }
}
counsel_domains
Advertised by the server during the last successful anonymous check.

List domains Counsel can reason about.

counsel_domains input schema
{
  "type": "object",
  "properties": {}
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (2 of 2 answered).

  1. 2026-11-09: 2 of 2 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
838 ms
95th percentile latency
838 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 838 ms · metadata changed · 86 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http factstable-mcp https://factstable.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add factstable-mcp --url https://factstable.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable factstable-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "factstable-mcp": {
      "url": "https://factstable.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "factstable-mcp": {
      "type": "streamableHttp",
      "url": "https://factstable.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start factstable-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "factstable-mcp": {
      "type": "http",
      "url": "https://factstable.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http factstable-mcp https://factstable.com/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://factstable.com/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "factstable-mcp": {
      "serverUrl": "https://factstable.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like FactStable MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run FactStable MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing