Skip to main content
Glama

Publish a page to fmrl.site

fmrl_publish

Publish HTML or Markdown as a new fmrl.site page and get a shareable link; pages are private by default and expire in seven days unless kept.

Instructions

Publish HTML or Markdown as a new page on fmrl.site and answer its link. Each call makes a new page: to change one you already published use fmrl_edit, and to publish a file from disk use fmrl_publish_file. Only call it when the person asked to share, send, or get a link for something. Pages are private by default: encrypted on this machine, with the key only in the link after #p= and in this machine's key ring. Pass visibility: "public" only when the person asked for a public page. A page lasts seven days unless someone keeps it from the page itself. Public content or a title carrying a recognizable credential (a private key, or an AWS, GitHub, Slack, Anthropic, OpenAI, Google, Stripe, GitLab, npm, Hugging Face or fmrl key) is refused. Each publish counts toward this key's monthly free publishes, shown by fmrl_whoami.

Input Schema

NameRequiredDescriptionDefault
titleNoPage title; the first heading is used when left out. For a private page the server stores no title; when the content is rendered from Markdown the encrypted document's own title uses it (falling back to the first heading), and raw HTML is sealed as-is.
formatNohtml or md; leave out to let the server detect it.
contentYesThe HTML or Markdown to publish: 2 MiB at most public; private pages are encrypted first, so roughly 1.4 MB fits.
privateNoOlder form of visibility: true is private, false is public. Prefer visibility.
visibilityNoprivate (the default): encrypted here before upload; the link carries the key after #p=, the page has no title or preview on fmrl.site, and opens only with that key. public: anyone with the link can read it, and it shows a title and preview. Either can be kept from the page itself. Pass public only when the person asked for a public page, after showing them what will be shared.

Output Schema

NameRequiredDescriptionDefault
idYes
urlYes
notesNo
statusYes
raw_urlYes
link_urlNo
recoveryNo
attach_urlNo
expires_atYes
manage_urlYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.17.8
    • changedInput schema / properties / visibility / description
      Previous value: -"private (the default): encrypted here before upload; the link carries the key after #p=, the page has no title or preview on fmrl.site, cannot be kept past seven days, and cannot be recovered without the link. public: anyone with the link can read it, it shows a title and preview, and it can be kept. Pass public only when the person asked for a public page, after showing them what will be shared."New value: +"private (the default): encrypted here before upload; the link carries the key after #p=, the page has no title or preview on fmrl.site, and opens only with that key. public: anyone with the link can read it, and it shows a title and preview. Either can be kept from the page itself. Pass public only when the person asked for a public page, after showing them what will be shared."
  2. First observedv0.17.6

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already mark this as a non-read-only, non-idempotent, open-world write, and the description goes well beyond them: it explains why each call creates a new page, the client-side encryption model and where the key lives (#p= fragment and local key ring), the seven-day lifetime, the credential-scanning refusal, and the monthly quota counter. These are exactly the non-obvious traits an agent needs before invoking a publish operation.

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?

Front-loaded with the core action, then the alternatives, then the trigger condition, then the privacy model, then caveats — a sensible order. The long enumeration of credential providers is dense but justified by the refusal rule; a couple of clauses could still be tightened.

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 five-parameter, open-world write tool with an output schema, the description covers what an agent cannot learn from structured fields: creation semantics, privacy defaults, expiry, refusal conditions, and quota implications. Return values are handled by the output schema, so nothing essential is missing.

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

Parameters3/5

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

Schema description coverage is 100% and the schema itself already documents title, format, private, visibility and content in depth, including the public/private warning. The description's visibility advice largely restates what the schema's visibility description says, so it adds policy emphasis rather than new meaning beyond the structured fields.

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?

States a specific verb and resource ('Publish HTML or Markdown as a new page on fmrl.site') plus the immediate outcome ('answer its link'). It explicitly distinguishes itself from fmrl_edit (change an existing page) and fmrl_publish_file (publish from disk), so an agent can pick the right tool 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?

Gives a positive trigger ('Only call it when the person asked to share, send, or get a link for something') and names both alternatives with the condition that selects each. It also supplies a decision rule for the visibility parameter and a warning to show the user what will be shared before going public.

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