Skip to main content
Glama

Make a fmrl.site page public or private

fmrl_set_visibility
DestructiveIdempotent

Sets whether a page is publicly readable by anyone with the link or private to key holders; public changes require preview and confirmation, private changes re-encrypt and return a new link.

Instructions

Change who can read a page this key owns, keeping its id; to change its content use fmrl_edit. Going public takes two calls: the first answers a preview and changes nothing, so show it to the person and call again with confirm: true and the preview's rev only after they say yes. Content that carries a key or token is refused. Going private encrypts the page here under a new key and answers its new link (after #p=); the server deletes the page's earlier public versions, title and preview, so only do it when the person asked. A kept page can't change either way.

Input Schema

NameRequiredDescriptionDefault
idYesA page id or page URL; a private page going public needs its key (#p=) in the link, or one this machine already holds.
revNoWith confirm: true, the revision number the preview answered. If the page has changed since, nothing is made public.
confirmNotrue: make a private page public now, after the person said yes to its preview. Leave out the first time; going private needs no confirm.
visibilityYesWho can read the page after the change: public (anyone with the link) or private (only links that carry the new key).

Output Schema

NameRequiredDescriptionDefault
idYes
revNo
urlYes
titleNo
changedYes
previewNo
visibilityYes
content_formatNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv0.17.8
    • removedInput schema / additionalProperties
      Removed value: -false
    • addedInput schema / properties / rev / maximum
      Added value: +9007199254740991
  2. First observedv0.17.6

TDQS

A4.6/5.0
Behavior4/5

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

The annotations already flag destructiveHint=true, but the description goes well beyond them by disclosing exactly what is destroyed — the page's earlier public versions, title and preview — and that going private re-encrypts under a new key with a new link. It also discloses the preview/confirm two-call protocol and the refusal rule for content containing a key or token. Only the idempotency and open-world implications of cross-machine key handling are left implicit.

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

Conciseness4/5

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

Purpose is front-loaded and every sentence carries operational content — two-call protocol, refusal case, deletion consequence, edge case. It is dense to the point of being slightly hard to parse in places ('A kept page can't change either way'), and the ordering of the deletion warning after the encryption sentence pushes a critical risk detail late.

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 destructive, non-idempotent-looking, two-phase mutation with an output schema present, the description covers the return value (the new link after #p=) without duplicating the schema, plus error, consent and irreversible-deletion behavior. Nothing an agent needs to call it safely 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?

Schema coverage is 100%, so the baseline would be 3; the description earns above that by explaining the interaction rather than repeating fields — that rev must be the revision the preview answered and that a changed page blocks publication, and that going private needs no confirm. The id parameter's key/URL nuance is left mostly to the schema, keeping it just under full marks.

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 opening clause states a specific verb and resource — 'Change who can read a page this key owns, keeping its id' — and immediately names the sibling it is not ('to change its content use fmrl_edit'). An agent can distinguish it from fmrl_edit, fmrl_publish and fmrl_rotate without opening any schema.

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 gives explicit when-to-use routing ('to change its content use fmrl_edit'), a full two-step procedure for going public (preview first, then confirm: true with the preview's rev after consent), and an exclusion with a moral caveat for going private ('only do it when the person asked'). It even closes an edge case ('A kept page can't change either way'), leaving little to inference.

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