Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
FORESTRIE_GRANTNoYour Forestrie-Grant, as base64 or a file path.
MCP_REGISTER_HOMENoKey files, grants, registrations and the spend ledger.~/.config/forestrie/mcp-register
FORESTRIE_BASE_URLNoThe canopy SCRAPI base URL.
MCP_REGISTER_PAY_TONoOptional: the only payee.
FORESTRIE_ROOT_LOG_IDNoThe forest's root log id (R in /register/{R}/entries).
MCP_REGISTER_KEY_FILENoThe log key file.$MCP_REGISTER_HOME/log-key.jwk
MCP_REGISTER_PAY_ASSETNoThe one asset it pays in.USDC on Base Sepolia
MCP_REGISTER_PAY_NETWORKNoThe one network it pays on.eip155:84532
FORESTRIE_AUTHORITY_GRANTNoYour authority log's grant, for issue_grant and register_grant.
FORESTRIE_COORDINATOR_URLNoThe delegation coordinator, for delegate_sealing.
FORESTRIE_KNOWN_SEALER_KEYNoThe registrar's voucher key, base64 x‖y, for delegate_sealing.
MCP_REGISTER_PAYER_KEY_FILENoAn EVM private key (0x + 64 hex, mode 600) that pays; unset means relay mode.
MCP_REGISTER_PAY_MAX_PER_DAYNoThe most all payments in one UTC day may total (required with a payer).
MCP_REGISTER_PAY_MAX_PER_CALLNoThe most one payment may be, in the asset's atomic units (required with a payer).
MCP_REGISTER_PAY_ALLOW_MAINNETNoSet to 1 to pay on a network that is not a testnet; off by default.
MCP_REGISTER_AUTHORITY_KEY_FILENoThe authority key file.$MCP_REGISTER_HOME/authority-key.jwk

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
prompts
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_log_keyA

Return the public half of one of this server's keys (ES256, 64 bytes x‖y, as hex, base64 and an SPKI PEM) and where it lives, creating it on first use. which: "log" (the default) is the key that owns your data log: a grant issuer names it in the grant's grantData, and a grant naming any other key cannot carry statements this server signs. which: "authority" is the requester's key that owns your authority log and signs the grants issue_grant makes. Never returns private key material.

register_statementA

Sign a payload with the log key and register it under your Forestrie-Grant. Takes the payload bytes (inline base64 or a file path, up to canopy's 4 MiB statement limit) and its content type. The signed statement is saved before it is sent, so the returned content hash always names it, even if the request fails. A payload path may not point at the log key or inside this server's home. Registration is accepted, not yet sequenced: call check_registration next.

check_registrationA

One status check for a registration, by its content hash: pending (not yet sequenced; retry after the given seconds), awaiting_seal (sequenced, entry id known, receipt not yet sealed — sealing takes minutes, and never happens until delegate_sealing has run for the log), or sealed (the receipt is saved and its path returned). Any other answer from canopy is reported as a problem with its reason. canopy answers a statement it never received exactly like a pending one, so after ten minutes of pending this says so. Does not sleep; pace the retries yourself.

verify_registrationA

Verify a sealed registration's receipt over the statement you registered, with @forestrie/mcp-verify's verifier, and return its four-question answers unaltered. By default the trust root is this server's own log key, the root of your data log; verifying never creates a key. Pass a known accumulator (from @forestrie/mcp-resolve's fetch_accumulator) to use a root that can also answer split-view.

delegate_sealingA

Authorise the operator's sealer to publish checkpoints for your data log, signed with the log key. Without it entries sequence but are never sealed. If the coordinator has not learned the log's public root, this calls canopy's prepare with the same grant first. Run once per log; the delegation lasts until the returned expiresAt. With as: "authority" it does the same for your authority log, signed with the authority key, so the child grants you register there get sealed.

issue_grantA

As the requester, sign a child grant with this server's authority key: a data-log creation grant under your authority log (named by your authority grant, FORESTRIE_AUTHORITY_GRANT), naming the performer's log key (by default this server's own) and sized with maxHeight, the batch ceiling canopy prices it by. Saves the grant under a fresh child log id; nothing is sent. Call register_grant next.

register_grantA

Register a child grant with canopy (POST /register/{R}/grants, your authority grant as the parent) and follow it to its receipt; call it again with the same logId to resume until it reports complete. If canopy answers 402 and a payer is configured, it pays within the server's hard caps (per call, per UTC day, one network and asset, testnet only by default) and reports any cap that refuses. With no payer it returns the payment requirements: pay them from your own x402 wallet and call again with payment set to the X-PAYMENT value. Every payment for a grant carries a nonce derived from that grant, so retries and overlapping calls can never pay for it twice. When complete it returns the completed grant for delegate_sealing and register_statement.

Prompts

Interactive templates invoked by user choice

NameDescription
registerWalk through checking the key and grant, delegating sealing, registering, waiting for the seal, verifying and keeping the receipt.
auditExplain which of the four trust questions a receipt answers under each trust root, and how to choose a root.
issue-and-payAs the requester, size and sign a child grant, register it with canopy, pay its 402 within the caps or relay the payment, and hand the completed grant to the performer.

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.1/5.0

Scored across 7 tools

Disambiguation4/5

Most tools have clearly distinct purposes (key retrieval, signing, delegation, grant issuance). However, check_registration and verify_registration both operate on a registration's validity/status, and register_statement vs register_grant both 'register' an object, so a few pairs require careful reading of the descriptions to distinguish.

Naming Consistency5/5

All seven tools follow a consistent verb_noun snake_case convention (check_registration, register_statement, issue_grant, register_grant, etc.). No camelCase or stylistic mixing.

Tool Count5/5

Seven tools is well-scoped for a registration/grant lifecycle server, with each tool earning its place across key, statement, grant, and sealing operations. No padding or redundancy.

Completeness4/5

The core lifecycle (sign/register -> check -> verify, plus grant issue/register and sealing delegation) is well covered with no obvious dead ends. Minor gaps exist: no listing of pending registrations or grants, and no delete/revoke operations.

Maintenance

ActivityMaintained
ResponsivenessNo issues