Skip to main content
Glama
nuwainfo

ffl-mcp

Official
by nuwainfo

Fflsharetext

fflShareText

Creates a shareable session link for text content with optional end-to-end encryption, recipient authentication, and download/expiry controls.

Instructions

Share text content using ffl. Returns a sessionId and link. Managed-sandbox policy: When running inside ChatGPT Work, Grok Bot, a cloud-hosted Codex sandbox, or a Claude Code cloud session (Claude Code on the web / claude.ai/code, or a remote session started from the Claude app), use relay immediately: forceRelay=True and preferredTunnel="default:web". These environments may only allow outbound HTTPS through a proxy, with no usable UDP/ICE or raw TCP tunnels. Do not apply this rule to local Claude Code CLI, local Codex CLI, local Grok Build, or ordinary user machines.

If qrInTerminal is True, also returns a QR code as ASCII art for terminal display.

IMPORTANT: Always present the returned link so the user can click it to open in a browser. Do not display it as a plain unformatted URL — in some interfaces (such as Claude Dispatch) plain URLs are not auto-linked and will not be clickable.

Input Schema

NameRequiredDescriptionDefault
e2eeNoEnable end-to-end encryption (default: False)
nameNoDownload filename shown to recipient (default: shared.txt)shared.txt
portNoLocal HTTP server port (default: auto-detect)
textYesText content to share
aliasNoCustom link alias instead of random UID (requires Standard+ account)
proxyNoProxy server URL (e.g. socks5://127.0.0.1:9050)
inviteNoOpen invite page in browser with the sharing link
hookUrlNoCustom webhook URL for events
receiptNoSend email notification when recipient downloads (pass email address, or empty string for account email)
authUserNoHTTP Basic Auth username to protect the link
transportNo
forceRelayNoDisable direct WebRTC; route all traffic through tunnel
pickupCodeNoSpecific pickup code to use (default: auto-generated)
authPasswordNoHTTP Basic Auth password to protect the link
maxDownloadsNoStop serving after N downloads (default: 1)
qrInTerminalNoReturn ASCII QR code art for terminal display
recipientAuthNoRecipient authentication mode — pickup (6-digit code), pubkey (RSA challenge), pubkey+pickup (both), email (OTP)
receiptConfirmNoRequire recipient to confirm before download starts; pass confirmation message or empty string for default
recipientEmailNoRecipient email(s) for OTP auth, comma-separated
timeoutSecondsNoStop serving after N seconds of inactivity (default: 1800)
enableReportingNoEnable ffl error reporting for diagnostics (disabled by default)
preferredTunnelNo
recipientPublicKeyNoPath to recipient .fflpub public key file for pubkey auth

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed25 schema fields changedv0.5.1
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / properties / alias / description
      Added value: +"Custom link alias instead of random UID (requires Standard+ account)"
    • addedInput schema / properties / authPassword / description
      Added value: +"HTTP Basic Auth password to protect the link"
    • addedInput schema / properties / authUser / description
      Added value: +"HTTP Basic Auth username to protect the link"
    • addedInput schema / properties / e2ee / description
      Added value: +"Enable end-to-end encryption (default: False)"
    • addedInput schema / properties / enableReporting / description
      Added value: +"Enable ffl error reporting for diagnostics (disabled by default)"
    • addedInput schema / properties / forceRelay / description
      Added value: +"Disable direct WebRTC; route all traffic through tunnel"
    • addedInput schema / properties / hookUrl / description
      Added value: +"Custom webhook URL for events"
    • addedInput schema / properties / invite / description
      Added value: +"Open invite page in browser with the sharing link"
    • addedInput schema / properties / maxDownloads / description
      Added value: +"Stop serving after N downloads (default: 1)"
    • addedInput schema / properties / name / description
      Added value: +"Download filename shown to recipient (default: shared.txt)"
    • addedInput schema / properties / pickupCode / description
      Added value: +"Specific pickup code to use (default: auto-generated)"
    • addedInput schema / properties / port / description
      Added value: +"Local HTTP server port (default: auto-detect)"
    • addedInput schema / properties / preferredTunnel
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • addedInput schema / properties / proxy / description
      Added value: +"Proxy server URL (e.g. socks5://127.0.0.1:9050)"
    • addedInput schema / properties / qrInTerminal / description
      Added value: +"Return ASCII QR code art for terminal display"
    • addedInput schema / properties / receipt / description
      Added value: +"Send email notification when recipient downloads (pass email address, or empty string for account email)"
    • addedInput schema / properties / receiptConfirm / description
      Added value: +"Require recipient to confirm before download starts; pass confirmation message or empty string for default"
    • addedInput schema / properties / recipientAuth / description
      Added value: +"Recipient authentication mode — pickup (6-digit code), pubkey (RSA challenge), pubkey+pickup (both), email (OTP)"
    • addedInput schema / properties / recipientEmail / description
      Added value: +"Recipient email(s) for OTP auth, comma-separated"
    • addedInput schema / properties / recipientPublicKey / description
      Added value: +"Path to recipient .fflpub public key file for pubkey auth"
    • addedInput schema / properties / text / description
      Added value: +"Text content to share"
    • addedInput schema / properties / timeoutSeconds / description
      Added value: +"Stop serving after N seconds of inactivity (default: 1800)"
    • addedInput schema / properties / transport
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null
      +}
    • removedInput schema / properties / waitLinkSeconds
      Removed value: -{
      -  "default": 20,
      -  "type": "integer"
      -}
  2. First observedv0.2.1

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden, and it does a good job disclosing return values, the QR-in-terminal behavior, and the sandbox networking constraint that no annotation or schema field expresses. It omits important behavioral facts about the underlying session—e.g. that a link is served only until maxDownloads/timeoutSeconds elapse and that sessions persist until fflStopSession—which are material for a tool with 23 parameters.

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 and return values are front-loaded, followed by a clearly labeled policy block and a short QR note. The closing IMPORTANT presentation directive is somewhat agent-instruction rather than tool definition, but every block is scannable and earns its space.

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?

An output schema exists, so return values need not be detailed, and the description still names sessionId and link. Given 23 parameters with no annotations, the sandbox policy and terminal-QR note fill the biggest gaps, though the session lifetime and security posture of an exposed download link are not addressed.

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 description coverage is 91%, so the baseline is 3; the description exceeds that by explaining the joint semantics of forceRelay and preferredTunnel in sandboxed environments, which the schema fields alone do not convey. The remaining parameters (e2ee, receipt, recipientAuth, etc.) are left to their schema descriptions.

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 ('Share text content') and names the return values (sessionId and link). The resource type cleanly separates it from siblings such as fflShareFile and fflShareBase64 without needing to inspect their schemas.

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

Usage Guidelines3/5

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

The managed-sandbox policy gives explicit conditional guidance for when to set forceRelay=True and preferredTunnel="default:web", including a negative rule for local CLI environments. However, there is no guidance on when to choose this tool over fflShareFile/fflShareBase64/fflShareFiles, so tool-selection is only implied by the resource name.

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