Skip to main content
Glama

Publish a file to fmrl.site

fmrl_publish_file

Publish a local HTML, Markdown, or text file as a new fmrl.site page and return its link; pages are private and encrypted by default unless public sharing is requested.

Instructions

Publish a local .html, .htm, .md, .markdown, .mdx or .txt file as a new page on fmrl.site and answer its link. The file is read here, so its content never passes through the model; for content already in the conversation use fmrl_publish, and to change a page you published use fmrl_edit. Only call it when the person asked to share the file. Private by default, encrypted here first: 2 MiB at most public, roughly 1.4 MB private, since encryption adds about a third. Pass visibility: "public" only when the person asked for a public page. 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. A page lasts seven days unless someone keeps it from the page itself.

Input Schema

NameRequiredDescriptionDefault
pathYesAbsolute path to the file (a leading ~ is expanded).
titleNoPage title; the file's 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.
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.8/5.0
Behavior5/5

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

Annotations only declare a non-read-only open-world write; the description adds substantial context beyond them: the file is read locally so content never passes through the model, encryption happens client-side, size limits differ by visibility (2 MiB public vs ~1.4 MB private because encryption adds a third), content with recognizable credentials is refused, and pages expire after seven days unless retained. These are the operational facts an agent needs to avoid a failed or inappropriate call.

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 purpose and routing before the operational caveats, and nearly every sentence carries distinct information. It is dense and slightly run-on across size limits, refusal rules, and expiry, but none of that is filler for a call with this many failure modes.

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?

An output schema exists, so the description need only promise the link, which it does. Given a destructive-free but state-creating, open-world, non-idempotent call with encryption and expiry, the description covers the privacy default, size ceilings, secret refusal, and retention lifetime.

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% and the visibility/private/title semantics are already well documented in the schema, so the description's main added value is the policy layer around visibility and the credential refusal. It adds real meaning (when to choose public) but overlaps heavily with the schema text.

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 (publish) plus the exact resource (a local .html/.md/.txt file) and the outcome (a new page on fmrl.site with a link). It explicitly distinguishes itself from fmrl_publish (content already in conversation) and fmrl_edit (changing an existing page), so an agent can pick it without opening the 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 an explicit gate ('Only call it when the person asked to share the file'), names the two alternative siblings and the condition that selects each, and adds a conditional rule for visibility ('Pass public only when the person asked for a public page'). Nothing is left to inference about when this tool is the right choice.

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