Skip to main content
Glama
rajesh-taylor

@refueler/mcp-server

@refueler/mcp-server

Apache 2.0


What this is

An MCP server that runs in your own infrastructure and gives an AI agent a privacy-first file-transfer capability backed by Refueler Share. The server handles local encryption, BLAKE3 chunk integrity, and upload orchestration; the Refueler Worker relays the resulting ciphertext to R2 storage without being able to read it. Four tools ship in v0.1: refueler_capabilities, refueler_quote, refueler_send_file, and refueler_check_transfer.

Status: in development — not yet published to npm. The Refueler Worker moved to direct-to-R2 uploads (initiate → signed uploads → finalise); refueler_send_file is being moved onto that path and cannot complete a transfer against production until it lands. This README will be updated when it does.

The identity rail — HMAC-authenticated, credit-pool-funded — is the first rail this server targets. The anonymous rail, which settles transfers over Lightning with no identity at all, gates on the B7 infrastructure milestone and is not in this release.


Related MCP server: @sequesign/mcp

Trust boundary

This is the section that matters. Read it once; it decides whether this product is right for your threat model.

What the server does in your infrastructure

  • Chunks and encrypts files locally using AES-256-GCM before anything leaves the process. The session key lives in the returned share_url fragment only — it is never transmitted to the Refueler Worker, never written to a log, never present in any request.

  • Computes a BLAKE3 hash over each ciphertext chunk and a Merkle root over those hashes, and hands both to the Worker when the upload is finalised.

  • Holds your API credentials (rfs_live_, rfs_sign_) locally, in your environment. They are used to sign HMAC-SHA256 requests outbound to the Refueler API. They never leave your infrastructure in any request payload.

  • On the anonymous rail (B7): holds a local stack of blind-signed capability tokens. The balance is your local state — Refueler's server is blind to it.

What the Refueler Worker sees

  • Ciphertext chunks and their BLAKE3 hashes.

  • Byte counts, UUID, credential commitment, and expiry.

  • The declared Content-Type at the upload boundary, checked against an execution-capable denylist and not stored.

  • On the identity rail: your rfs_live_ handle and an optional transfer_ref you supply for your own attribution. No plaintext. No key. No passphrase.

What the Refueler Worker never sees

  • Plaintext bytes. The Worker is a blind byte-relay; it physically cannot produce your file content under compulsion because it never held the key.

  • The AES-256-GCM session key.

  • The passphrase, if set. The Worker receives only a SHA-256 hash of the passphrase — not the passphrase itself.

  • The filename. From SW-MCP-4 onward, the filename travels in the URL fragment alongside the session key, never in any request. Until that release, the filename is present in the upload manifest — scope your trust claims accordingly.

  • On the anonymous rail: any identity, email address, or Supabase row. The anonymous rail has no identity by architectural construction, not policy.

What "chunk integrity" means, and what it does not

Ciphertext storage integrity is live on the Refueler Worker. At upload, the per-chunk BLAKE3 hashes and the Merkle root over them (rfc6962-unbalanced-blake3-v1) are recorded when the transfer is finalised. On download, the Worker checks each stored chunk against that record before serving it and refuses (409) on any mismatch. The claim this supports is "the encrypted object served equals the encrypted object stored" — ciphertext storage integrity.

It is not end-to-end file integrity. The Worker never sees plaintext, so it cannot vouch for the file you meant to send. Only the recipient, after decrypting, can check the plaintext — and that check never passes through this server or the Worker.

The server runs in your infrastructure. Refueler has no visibility into your MCP server process, your credential store, or your agent's conversation history. If your security model requires an audit, the full source is on GitHub under Apache 2.0.


Requirements

  • Node.js ≥ 18

  • Credentials from refueler.io/share/ — you need two keys per credential relationship:

    • rfs_live_… — identifies the API relationship

    • rfs_sign_… — signs outbound requests (HMAC-SHA256)

  • Optional: rfs_whsec_… — webhook signing verification (Chartered / identity-API tier only)

Environment variable names:

REFUELER_LIVE_KEY=rfs_live_…
REFUELER_SIGN_KEY=rfs_sign_…
REFUELER_WHSEC_KEY=rfs_whsec_…   # optional; Chartered tier only
REFUELER_API_BASE=https://api.share.refueler.io

Use a .env file for local development or a secrets manager for production. Never commit key values to version control — the rfs_live_ and rfs_sign_ prefixes are pattern-matched by common secret scanners.


Install

Not yet on npm (see Status above). When published:

npm install @refueler/mcp-server

Add to your MCP host configuration — the exact method depends on your agent framework. The server expects credentials via environment variables or a .env file in the working directory. You manage your own config; no credentials are ever pulled from a remote source by this package.


Tools

refueler_capabilities — discover the live feature set and rate card. Unauthenticated, free, called automatically before any send. The agent will not offer features the server cannot honour.

refueler_quote — price a transfer before committing. Returns cost in Share credits, your remaining balance, and whether the transfer would exceed your allocation. No spend occurs.

refueler_send_file — encrypt and send a file. Chunks, encrypts, and BLAKE3-hashes locally; uploads ciphertext to R2; returns a share_url with the session key in the fragment. Accepts an optional passphrase for a second access factor. Deducts credits from your pool on issuance.

refueler_check_transfer — pull a signed receipt. Acceptance receipt is available immediately after upload. Collection receipt is available once the recipient has downloaded. These are collection receipts — they confirm collection, not delivery; delivery to a specific person is not something the server can verify.

Gates on B7: Anonymous-rail sends — where no identity is associated with the transfer and credits settle over Lightning — require the B7/NB-4 Lightning infrastructure milestone. The tool is present in v0.1 but the anonymous rail is not available until that milestone lands.

Gates on Silent Drop: refueler_receive — a standing agent-to-agent inbox — is not in v0.1. A recipient in v0.1 collects via a browser link.


Licence

Apache 2.0. §3 of the licence gives you an express patent licence from contributors for their contributions, so you can build on this server without patent risk from those who wrote it.


Roadmap

  • Anonymous rail (B7): Lightning-settled transfers with no identity required — credits purchased over BOLT11, stored locally, spent per send.

  • Silent Drop standing inbox (SD-block): refueler_receive — publish a receiving address; senders lodge ciphertext without a prior link exchange.

  • Inline Lightning payment (B9+): the agent prices a transfer, pays inline in the same tool call, and sends — no separate top-up step.

Available Tools

1 tool
refueler_capabilitiesA

Fetch current Refueler Share service capabilities, rate card, and feature flags. Call this before any send to gate behaviour on live server state. Unauthenticated, free, costs nothing.

ParametersJSON Schema
NameRequiredDescriptionDefault
detailNoLevel of detail to return. "summary" (default) returns the full §7.1 payload; "full" is identical in v1.

TDQS

A4.2/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 does disclose key behavioral facts: unauthenticated access, no cost, and that the live server state governs send behaviour. It implies a safe read but never explicitly says the call is side-effect-free or cacheable, which leaves a small gap for a tool with zero annotation coverage.

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 short sentences, zero filler, with the purpose front-loaded and the usage condition immediately after. Every sentence earns its place by adding purpose, timing, or cost/auth context.

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 no-required-param, no-output-schema discovery call, the description covers what to do and when, plus auth and cost. It does not describe the shape or format of the returned payload, which an agent might want given there is no output schema, but it does enumerate the categories of data returned.

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 single 'detail' parameter is fully documented in the schema, including its enum values and that 'full' is identical in v1. The description adds no parameter-level semantics, so the baseline of 3 applies.

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 (Fetch) and a concrete resource (Refueler Share service capabilities, rate card, feature flags), naming the actual payloads returned. No sibling tools exist, so no differentiation is required. An agent immediately knows what this tool yields.

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

Usage Guidelines4/5

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

Clearly prescribes when to call it: 'Call this before any send to gate behaviour on live server state.' This gives a concrete precondition rather than an implied one. It does not discuss when-not to call or alternatives, but none meaningfully exist for a capability-discovery call, so the gap is minor.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev0.1.0
    • First observedrefueler_capabilities

TDQS

A3.8/5.0

Scored across 1 tool

Disambiguation5/5

With a single tool there is no possibility of misselection or overlapping purpose. Its intent (fetch server capabilities/rate card before sending) is unambiguous.

Naming Consistency4/5

The lone name refueler_capabilities is snake_case and namespaced, which is readable and predictable. It is noun-based rather than a verb_noun action pattern, but consistency cannot really be violated with one tool.

Tool Count2/5

A single tool is far too thin for a server whose description implies a send workflow. There is no operation to actually do anything, making the surface feel like a stub.

Completeness1/5

The tool explicitly exists as a precondition for 'any send', yet no send, quote, status, or account operation is exposed. The advertised domain is essentially uncovered, leaving agents at a dead end.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    F
    maintenance
    Enables AI agents to perform financial transactions such as direct payments, escrows, and bounty management using natural language with zero code integration. It provides a comprehensive suite of tools for fund streaming, subscriptions, and reputation tracking to facilitate secure agent-to-agent commerce.
    5 npm
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI agents to create cryptographically verifiable receipts of their delegated work, with capabilities for multi-party approval and offline verification.
    11
    47 npm
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to securely transfer files between machines via encrypted, expiring share links, with tools for upload, download, status checks, and link management.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Secure file exchange MCP server enabling AI agents to upload, share, fetch, and revoke files with SHA-256 verification, malware scanning, expiry, access restrictions, and human approval workflows.
    23 npm
    MIT