Skip to main content
Glama

Palimpsest — censorship and model-eval observatory

Ownership verified

Server Details

Live internet-censorship signals and tamper-evident, pre-registered, hash-chained AI model evals.

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
beepboop2025/palimpsest
GitHub Stars
3

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 4.7/5 across 4 of 4 tools scored.

Server CoherenceA
Disambiguation5/5

Each tool has a clearly distinct purpose: list_signals for discovery, get_signal for a single named signal, gfw_reading for a specific combined view, and whats_happening for a cross-signal verdict. Descriptions explicitly clarify boundaries, such as when to use get_signal instead of gfw_reading.

Naming Consistency3/5

Tool names mix conventions: get_signal and list_signals are verb_noun, gfw_reading is noun_gerund, and whats_happening is a question phrase. While all use underscores and are readable, the pattern is not uniform, making it less predictable.

Tool Count5/5

Four tools is well-scoped for a read-only observatory. Each tool covers a distinct need: discovery, single-signal access, a specialized combined view, and an aggregate verdict. The count feels complete without excess or deficiency.

Completeness4/5

The tool set covers core observatory functions: listing, reading individual signals, a combined GFW view, and a summary verdict. A minor gap is lack of historical data access, but the current surface supports the intended workflows well.

Available Tools

4 tools
get_signalOne signal's full readingA
Read-onlyIdempotent
Inspect

Read the full latest published reading of one named signal: the raw payload with its generated_at timestamp, method scope and upstream sources, exactly as served on palimpsest.info. 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, and 'refusal-drift' returns the current frontier-model refusal reading on the frozen benign probe set. Distinct from gfw_reading, which merges the two Great Firewall layers into one combined view.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYessignal name from list_signals, e.g. 'ooni-gfw', 'eval-registry' or 'refusal-drift'
max_rowsNocap 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.
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Even with annotations indicating read-only and idempotent behavior, the description adds valuable context: it describes the exact response shape, mentions special named signals and their distinct return formats, and discloses that caps on long arrays are reported with the true total rather than silently truncated. This goes well beyond the annotations and gives the agent a clear model of the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured: it leads with the core purpose, follows with prerequisites and special cases, and closes with a sibling distinction. Every sentence adds distinct value—no filler, redundancy, or re-stating of the tool name. The format is easy to scan and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool without an output schema, the description is remarkably complete: it explains what is returned, how to discover valid names, special-cases two named signals with their specific return structures, and notes the difference from a sibling. The max_rows parameter is fully documented in the schema, which the description complements. The agent has all the information needed to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers 100% of parameters, providing baseline 3. The description adds extra semantics for the 'name' parameter by giving concrete examples ('ooni-gfw', 'eval-registry', 'refusal-drift') and instructing users to call list_signals first. It does not discuss 'max_rows' directly, but the schema description is thorough, so the description's contribution earns a 4 rather than a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a specific verb and resource: 'Read the full latest published reading of one named signal', and details the exact contents (raw payload, timestamp, method scope, upstream sources). It explicitly distinguishes the tool from the sibling gfw_reading, stating that gfw_reading merges the Great Firewall layers instead. This leaves no ambiguity about what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear usage guidance: 'Call list_signals first to discover valid names', explains when to use it for AI-model-evaluation signals ('eval-registry', 'refusal-drift'), and explicitly differentiates from gfw_reading. It also advises on parameter sizing with the max_rows default, indicating a practical usage tip for keeping calls responsive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gfw_readingGreat Firewall: both layersA
Read-onlyIdempotent
Inspect

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'.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint and idempotentHint. The description adds context about the combined data (live network blocking and model-layer censorship), which is useful but not extensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core purpose, and every sentence adds value without repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read tool with rich annotations, the description adequately explains the return data and alternatives. Minor gap: no mention of caching or staleness, but not critical for this context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters. The description confirms this with 'Takes no arguments'. Per guidelines, 0 params baseline is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool reads the Great Firewall's state at both layers, specifying OONI and Generative Firewall Index. It distinguishes from siblings by noting that get_signal should be used for one layer's full raw payload.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly advises when to use this tool (convenience view) and when to use the alternative (get_signal with specific arguments). It also notes that no arguments are needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_signalsList published signalsA
Read-onlyIdempotent
Inspect

List every published signal Palimpsest exposes, across both of its 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. AI model evaluation — the tamper-evident, pre-registered eval registry (hash-chained and Merkle-anchored) and frontier-model refusal drift, alongside the Generative Firewall Index over Chinese LLMs. Takes no arguments. Call this first to discover signal names, then get_signal for one full reading.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds context about the two application domains (censorship/information control and AI model evaluation) and the specific signal families included, as well as the return fields. This goes beyond the annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose, followed by concrete examples of signal categories that add context, and ends with actionable usage guidance. Each sentence is informative; the length is justified by the richness of the signal taxonomy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by listing the output fields (name, one-line description, source URL) and describing the tool's role as the discovery entry point before get_signal. Given its simplicity and strong annotations, no critical information is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the schema is empty. The description explicitly states 'Takes no arguments,' which is consistent with the schema and leaves no ambiguity. The baseline for zero parameters is 4, and the description meets it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific action: 'List every published signal Palimpsest exposes' and specifies the output fields (name, one-line description, source URL). It differentiates from the sibling get_signal by stating 'Call this first to discover signal names, then get_signal for one full reading.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit usage guidance is given: 'Takes no arguments. Call this first to discover signal names, then get_signal for one full reading.' This clearly tells the agent when to use this tool and how it relates to the get_signal alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

whats_happeningCross-signal board verdictA
Read-onlyIdempotent
Inspect

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' or 'refusal-drift'.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, and the description adds useful context about the statistical control ('multiplicity paid for (false-discovery control)') and how to interpret artifacts ('coverage confounds flagged as measurement artifacts, never findings'). This goes beyond the annotations by setting expectations for the verdict's nature, though it doesn't detail return structure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each earned: first states the core purpose, second gives when-to-use and follow-up action, third provides scope differentiation. No fluff or repetition, and the key action is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema, the description sufficiently orients the agent: it explains what the verdict is, how to use it, and when to use alternatives. A slight gap is that it doesn't describe the shape of the verdict, but for a zero-argument tool with strong usage guidance, this is nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so the baseline is 4. The description explicitly states 'Takes no arguments', which is consistent with the empty schema and leaves no ambiguity for invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Judge' and clearly identifies the resource: 'whether anything is happening in Chinese censorship right now, across every signal at once'. It distinguishes from siblings by positioning itself as the cross-signal aggregation tool, saying 'Use this instead of fetching signals individually', and the scope note differentiates from get_signal's AI-model-evaluation side.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit guidance is given: 'Use this instead of fetching signals individually and reconciling them yourself; then use get_signal to drill into whichever signal moved.' It also clarifies scope boundaries ('this is the censorship board') and provides an alternative for the other domain ('For the AI-model-evaluation side use get_signal with eval-registry or refusal-drift').

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Servers

View all MCP Servers

Try in Browser

Your Connectors

Sign in to create a connector for this server.