Palimpsest — censorship, China economy and model-eval observatory
Rights-aware censorship, China-economic status, and tamper-evident AI evaluation tools.
Sollte ich dies verwenden
Qualität und Sicherheit
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"palimpsest": {
"url": "https://api.seiche.info/palimpsest/mcp"
}
}
}Remote-Endpunkte
https://api.seiche.info/palimpsest/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (7)
🟢research_catalog(offset, limit)
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.
Eingabe-Schema
{
"type": "object",
"properties": {
"offset": {
"type": "integer",
"minimum": 0,
"maximum": 1000,
"default": 0
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 25,
"default": 12
}
},
"additionalProperties": false
}🟢list_signals
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.
Eingabe-Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟢get_signal(name, max_rows)
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.
Eingabe-Schema
{
"type": "object",
"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",
"minimum": 1,
"maximum": 500,
"default": 25,
"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."
}
},
"required": [
"name"
],
"additionalProperties": false
}🟢get_newsroom(view, limit, status, priority)
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.
Eingabe-Schema
{
"type": "object",
"properties": {
"view": {
"type": "string",
"enum": [
"newsroom",
"wire",
"economy",
"machine-analysis",
"investigations",
"editorial-readiness",
"interconnection"
],
"default": "newsroom"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"default": 10
},
"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
}🟢query_economic_observations(series_id, source_id, geography, sector, firm_size, ...)
Inspect the native publication-rights status for the China-economic observation surface. The reviewed default-deny policy does not authorize redistribution of current CFETS/ChinaMoney values, so this tool returns policy digest, UTC clocks, per-source decisions and zero published-record status only. It never reads or returns observation rows, empty row arrays, derived signals, or neutral replacements. Filters are validated for contract compatibility but cannot override source rights.
Eingabe-Schema
{
"type": "object",
"properties": {
"series_id": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"description": "exact series_id filter"
},
"source_id": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"description": "exact source_id filter"
},
"geography": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"description": "exact geography filter"
},
"sector": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"description": "exact sector filter"
},
"firm_size": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"description": "exact firm_size filter"
},
"ownership": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"description": "exact ownership filter"
},
"as_of": {
"type": "string",
"format": "date-time",
"description": "point-in-time cutoff applied to BOTH released_at and collected_at; omitted means the full published ledger"
},
"period_start": {
"type": "string",
"format": "date",
"description": "inclusive lower bound on observation period_start"
},
"period_end": {
"type": "string",
"format": "date",
"description": "inclusive upper bound on observation period_end"
},
"released_from": {
"type": "string",
"format": "date-time",
"description": "inclusive lower bound on released_at"
},
"released_to": {
"type": "string",
"format": "date-time",
"description": "inclusive upper bound on released_at"
},
"revision_view": {
"type": "string",
"enum": [
"all",
"latest-as-of"
],
"default": "latest-as-of",
"description": "all visible vintages, or the newest knowable revision per source/series/slice/period"
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 25
},
"cursor": {
"type": "string",
"minLength": 1,
"maxLength": 1024,
"description": "opaque next_cursor from the preceding page"
}
},
"additionalProperties": false
}🟢whats_happening
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'.
Eingabe-Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}🟢gfw_reading
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'.
Eingabe-Schema
{
"type": "object",
"properties": {},
"additionalProperties": false
}Community
Nachweis