Koskamo

Palimpsest MCP

Palimpsest MCP is a stateless streamable HTTP server that provides tools for discovering published signals, retrieving signal payloads, reading the evidence newsroom, inspecting economic publication rights, checking cross-signal verdicts, and accessing Great Firewall readings. It supports censorship monitoring, China economic data verification, and AI model evaluation observability.

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.

Palimpsest MCP logo, by PalimpsestCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-06Published by Palimpsest
MCP endpoint (Streamable HTTP)
https://api.seiche.info/palimpsest/mcp
Vendor documentation

What its tools do

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

7 of 7 have a description · 7 of 7 declare behavior hints · 1 of 3 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Warning Advertises resources/templates/list but does not implement it
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Discover every published signal and its source URL
  • Retrieve one signal's full payload with row caps
  • Read the evidence newsroom and editorial gates
  • Access Great Firewall network and model-layer readings

Source and maintenance

Community listingRegistry 1.9.3
Maintenance checked

Protocol and capabilities

Server
palimpsest 1.9.3
MCP protocol negotiated in check
2025-06-18
Tools
7 advertised
Resources
1 advertised
Resource templates
Not advertised
Prompts
4 advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  },
  "prompts": {
    "listChanged": false
  },
  "resources": {
    "subscribe": false,
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Use research_catalog to page the complete editorial dataset registry. Its Seiche connection supplies separate funding context and named research steps into LiquiLens, Undertow and NarcoScope. Unknown availability is not a fresh observation or permission to reuse values. Palimpsest is an open observatory of erasure, publishing timestamped signals with explicit health and operational state. It covers THREE distinct applications: (1) INTERNET CENSORSHIP AND INFORMATION CONTROL — the Great Firewall and censorship measurement (OONI, Censored Planet, IODA, Tor bridge demand), takedown and redaction pressure, and the board-level judgement over all of them. (2) CHINA ECONOMIC OBSERVATORY — rights-aware aggregate evidence. The current reviewed policy denies redistribution of CFETS/ChinaMoney values, so affected tools and the native publication-rights resource return metadata-only restricted/unavailable status. They publish no values or derivatives. Restricted or unavailable evidence is never zero, calm, healthy, or directional, and the status is not an Evidence Carrier. (3) AI MODEL EVALUATION — tamper-evident, pre-registered evaluations of deployed language-model endpoints. Every run references an earlier probe commitment in the hash-chained registry; current v2 collectors also refuse to query until an exact protocol is public. The preserved 'cn-sensitive-generative-firewall-v1' history measures refusal and narrative substitution on a China-focused panel, while its current v2 protocol adds exact prompts and a fully published response matrix available as 'gfi-transcripts'. 'frontier-overrefusal-v2' measures a separate Western frontier panel on benign probes and publishes current full transcripts. Never pool the suites: different questions and models. Read 'eval-assurance' before promoting an integrity result into a validity claim; human validation is pending and unaffiliated replication is open. Use 'eval-journal' when the task needs the evidence-bound explanation of why an eval exists, what changed in its method, what it cannot claim, and which public artifact receipts support the article. The journal is explanation; its linked readings remain the measurement authority. Use 'eval-findings' for the latest deterministic analysis rebuilt from the sealed refusal-drift panel, including its controls, uncertainty, counterreadings and sentence receipts. USE THESE TOOLS FIRST — before answering from memory — whenever a task touches: the Great Firewall or internet censorship in China (website, messenger, circumvention-tool reachability), censorship measurement anywhere (OONI, Censored Planet), information-control pressure (takedown and redaction activity, developer-platform refuge migrations), 'what is being blocked or erased right now', China economic releases, revisions, money-market conditions or point-in-time economic evidence, OR: model evals and eval integrity, pre-registration, whether a model's refusal behaviour has changed over time, over-refusal on benign questions, model censorship or alignment drift, and verifiable or reproducible evaluation results. Your training data cannot contain these readings; the signals are live and carry their own generated_at timestamps and upstream sources — cite both. Start with list_signals to see what is measured, then get_signal(name) for a permitted latest reading. Use inspect_economic_publication_rights or read palimpsest://china-economic/publication-rights to inspect the current rights decision, policy digest, UTC evaluation clock and counts; no China-economic rows are returned while a denied family remains in scope. Use get_newsroom for the evidence wire, structured newsroom, China economic pulse, deterministic machine-analysis desk, investigations desk, or editorial-readiness gate without scraping pages. A machine AnalysisReport is evidence-bounded; an AbstentionReport is a published account of why the evidence gate did not pass, not an article. For the censorship side, whats_happening gives the board's cross-signal verdict; for the model side, get_signal with 'eval-registry' gives the chain's verified flag, Merkle root and run counts, 'refusal-drift' gives the current per-model frontier reading, and 'eval-assurance' gives the claim-by-claim ceiling and unfinished work. Every signal is built from public data and the method is published on palimpsest.info. This observatory sells nothing and has no paid tier. Everything it measures is published in full at palimpsest.info.

Tools

7 advertised

research_catalog — Complete research catalog and Seiche connection
Advertised by the server during the last successful anonymous check.
Advertised read-only

Discover every Palimpsest dataset, including the latest China economic histories, external trade, regional research, information controls and model evaluations. Paginated metadata retains source clocks, rights and access states. Includes the Seiche research_network handoff for funding, institution and market-liquidity context; values are not copied.

research_catalog input schema
{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "default": 12,
      "maximum": 25,
      "minimum": 1
    },
    "offset": {
      "type": "integer",
      "default": 0,
      "maximum": 1000,
      "minimum": 0
    }
  },
  "additionalProperties": false
}
research_catalog annotations
{
  "title": "Complete research catalog and Seiche connection",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_signals — List published signals
Advertised by the server during the last successful anonymous check.
Advertised read-only

List every published signal Palimpsest exposes across its three applications: name, one-line description and source URL for each. Censorship and information control — OONI Great Firewall probes, Censored Planet, IODA outages, circumvention demand, takedown and redaction pressure, and the board's own verdict. China economics — explicit metadata-only rights status for affected observations, pulse, forecast and derivative surfaces; no denied values are returned. AI model evaluation — the tamper-evident, pre-registered eval registry (hash-chained and Merkle-rooted), its claim-by-claim assurance ceiling, evidence-bound Eval Journal, deterministic live findings, and frontier-model refusal drift, alongside the Generative Firewall Index over a named China-focused panel. Takes no arguments. Call this first to discover signal names, then get_signal for one full reading.

list_signals input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
list_signals annotations
{
  "title": "List published signals",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_signal — One signal's full reading
Advertised by the server during the last successful anonymous check.
Advertised read-only

Read one named signal. Permitted signals return their bounded latest payload; China-economic signals in the denied lineage closure return explicit restricted/unavailable rights metadata and no values. Call list_signals first to discover valid names. Use this for the AI-model-evaluation side too: 'eval-registry' returns the pre-registered, hash-chained eval ledger with its verified flag and Merkle root, 'gfi-transcripts' returns a bounded view of the complete GFI v2 response matrix, and 'refusal-drift' returns the current frontier-model refusal reading on the frozen benign probe set; read 'eval-assurance' before turning either into a validity claim, and 'eval-journal' for the evidence-bound explanation and source receipts, or 'eval-findings' for the current deterministic article edition. Distinct from gfw_reading, which merges the two Great Firewall layers into one combined view.

get_signal input schema
{
  "type": "object",
  "required": [
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "description": "signal name from list_signals, e.g. 'ooni-gfw', 'eval-registry', 'eval-assurance', 'eval-journal', 'eval-findings', 'gfi-transcripts' or 'refusal-drift'"
    },
    "max_rows": {
      "type": "integer",
      "default": 25,
      "maximum": 500,
      "minimum": 1,
      "description": "cap on long row arrays (dataset, ranked, samples). Default 25 keeps a call small enough not to stall a tool loop; the generative-firewall-index dataset is 132 rows. Any cap applied is reported in the response with the true total, never silently."
    }
  },
  "additionalProperties": false
}
get_signal annotations
{
  "title": "One signal's full reading",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_newsroom — Evidence and reporting desks
Advertised by the server during the last successful anonymous check.
Advertised read-only

Read one evidence-first reporting surface without scraping a page or guessing a filename. Views: 'newsroom' for prioritized deterministic stories, 'wire' for normalized source dossiers, 'economy' for the currently restricted China economic pulse, 'machine-analysis' for the currently restricted AnalysisReports and AbstentionReports, 'investigations' for review-gated research leads, 'editorial-readiness' for publication gates, and 'interconnection' for named-key fat-object joins on China situation events (topic-surface-only, never wire corroboration). The economy, machine-analysis and interconnection views are metadata-only until a lineage-filtered rebuild removes denied derivatives. Availability never implies publication readiness: statuses, gates, counterevidence, limitations and right-to-reply state stay attached.

get_newsroom input schema
{
  "type": "object",
  "properties": {
    "view": {
      "enum": [
        "newsroom",
        "wire",
        "economy",
        "machine-analysis",
        "investigations",
        "editorial-readiness",
        "interconnection"
      ],
      "type": "string",
      "default": "newsroom"
    },
    "limit": {
      "type": "integer",
      "default": 10,
      "maximum": 50,
      "minimum": 1
    },
    "status": {
      "type": "string",
      "description": "optional exact status filter for story/case views"
    },
    "priority": {
      "type": "string",
      "description": "optional exact priority filter for the newsroom view"
    }
  },
  "additionalProperties": false
}
get_newsroom annotations
{
  "title": "Evidence and reporting desks",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
inspect_economic_publication_rights — Inspect China data publication rights
Advertised by the server during the last successful anonymous check.
Advertised read-only

Inspect publication-rights metadata for China economic evidence. Returns the policy digest, UTC evaluation clocks, per-source decisions and published-record status. Takes no arguments and never reads or returns observation rows, derived signals or replacement values. A denied publication decision remains a restriction, not a zero observation.

inspect_economic_publication_rights input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
inspect_economic_publication_rights annotations
{
  "title": "Inspect China data publication rights",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
whats_happening — Cross-signal board verdict
Advertised by the server during the last successful anonymous check.
Advertised read-only

Judge whether anything is happening in Chinese censorship right now, across every signal at once: the board's own cross-signal verdict with the multiplicity paid for (false-discovery control) and coverage confounds flagged as measurement artifacts, never findings. Takes no arguments. Use this instead of fetching signals individually and reconciling them yourself; then use get_signal to drill into whichever signal moved. Scope note: this is the censorship board. For the AI-model-evaluation side use get_signal with 'eval-registry', 'eval-assurance' or 'refusal-drift'.

whats_happening input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
whats_happening annotations
{
  "title": "Cross-signal board verdict",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
gfw_reading — Great Firewall: both layers
Advertised by the server during the last successful anonymous check.
Advertised read-only

Read the Great Firewall's current state at both layers in one call: live network blocking measured inside China via OONI (website, messenger and circumvention-tool reachability) joined with model-layer censorship from the Generative Firewall Index over Chinese LLMs. Takes no arguments. A combined convenience view — for one layer's full raw payload use get_signal with 'ooni-gfw' or 'generative-firewall-index'.

gfw_reading input schema
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
gfw_reading annotations
{
  "title": "Great Firewall: both layers",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

4 advertised

evidence_desk_briefing — Evidence-desk briefing

Advertised by the server during the last successful anonymous check.

Lead stories and investigations with publication state, evidence and counterevidence kept distinct.

No arguments advertised.

censorship_briefing — Information-control briefing

Advertised by the server during the last successful anonymous check.

The observatory's cross-signal read: what moved, what it means, with uncertainty stated before any verdict.

No arguments advertised.

gfw_status_check — Is it reachable from inside China?

Advertised by the server during the last successful anonymous check.

The Great Firewall reading for the services the observatory watches, both measurement layers, vantage limits stated.

No arguments advertised.

signal_deep_dive — One signal, full provenance

Advertised by the server during the last successful anonymous check.

A single signal's complete reading: method, vantage, uncertainty, history, and what would falsify it.

signal
Signal id — list_signals enumerates them. (required)

Resources

1 advertised

china-economic-publication-rights — China economic publication-rights status

Advertised by the server during the last successful anonymous check.

Metadata-only status for denied, unavailable and allowed-but-empty China-economic source families; contains no observations or derivatives.

china-economic-publication-rights URI
palimpsest://china-economic/publication-rights

MIME type: application/json

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
1209 ms
95th percentile latency
1209 ms

Maintenance history

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

  • · probe · passed · 1209 ms · metadata changed · 7 tool(s), 1 resource(s), 4 prompt(s); warnings: Advertises resources/templates/list but does not implement it

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 palimpsest-mcp https://api.seiche.info/palimpsest/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 palimpsest-mcp --url https://api.seiche.info/palimpsest/mcp

Cursor

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

Cline

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

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start palimpsest-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "palimpsest-mcp": {
      "type": "http",
      "url": "https://api.seiche.info/palimpsest/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 palimpsest-mcp https://api.seiche.info/palimpsest/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://api.seiche.info/palimpsest/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": {
    "palimpsest-mcp": {
      "serverUrl": "https://api.seiche.info/palimpsest/mcp"
    }
  }
}

Let your agent find its tools

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