Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

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
}

Tools

Functions exposed to the LLM to take actions

NameDescription
network_infoA

Show which proxy-shopping network this server is on (ps-main = public Nostr relays + BTC signet, or the local lab), its relays, trusted coordinators, chains, timelock policy, and how many shopper × escrow combinations are trusted right now (with their regions and operator lists). Call it first in a session: on a new network there may be no shoppers yet, and then find_offers will return nothing. Read-only; re-reads the trust lists from the relays and the registry unless refresh is false. Returns a summary and the details as JSON.

walletA

Show this agent's identity (Nostr pubkey), its BTC signet address and balance, and where the network has USDC its EVM address with USDC and ETH balances. Use it before fund_order to check that the wallet can pay the quote, and to get the address to fund (signet faucet; on the lab: lab_faucet). Read-only: queries the chain, never signs. The key is created on first run in the data dir; export_backup shows it.

find_offersA

Step 1 of buying from a cash-only or crypto-unsupported shop: list the trusted proxy shopper × escrow combinations that serve this shop, region and payment method. Each offer has an index, the shopper's fee, delivery days, cash regions and order limit, the escrow's fees and dispute SLA, and which operator list (under which coordinator) vouches for it. Pass the index to request_quote with the same shop_url, region and payment. Read-only; an empty list means nobody serves that shop/region yet (network_info shows what exists).

request_quoteA

Step 2: create an order with one shopper × escrow combination (offer_index from the last find_offers with the same shop_url, region and payment, or both shopper and escrow pubkeys) and wait up to wait_seconds for the quote. Sends a signed, encrypted order request over Nostr; the delivery address is encrypted for the shopper (the escrow can read it only in a dispute). Nothing is paid. Returns the order id, the price breakdown, and our validation of the quote: rate deviation from our own rate sources, the recomputed 2-of-3 escrow address, the timelocks T1/T2. If no quote arrives in time the order stays open; follow it with get_order. Next: accept_quote or cancel_order.

get_orderA

Show one order: status, quote and its validation, funding, purchase, tracking, dispute, ruling, refund offer and settlement, the recent timeline, and next_steps telling which tool to call next. Optionally waits (bounded) until the order reaches one of wait_for, e.g. ["quoted","rejected"] after request_quote. Read-only (local order state, kept up to date by the running session).

list_ordersA

List this agent's orders (from its data dir), newest first, with status, shop, items, lock amount and next steps. Use it to find an order id or to see what needs attention; get_order shows one order in full. Read-only.

accept_quoteA

Step 3: accept a quoted order (sends a signed acceptance to the shopper; nothing is paid yet — fund_order pays). Only for status quoted. A quote that failed validation is refused. A quote whose rate deviates strongly (> 10 %) from our sources, or could not be checked, is not accepted until you call again with acknowledge_rate_deviation: true — ask your human first.

fund_orderA

Step 4, moves money: pay the quoted lock amount into the per-order 2-of-3 escrow (BTC P2WSH address or USDC Safe) plus the escrow upfront fee, from this wallet. Only for status accepted/funding. Without confirm: true it only returns the recipients, amounts and network fee (a preview; call it first). With confirm: true it signs and broadcasts. The funds can then leave only with 2 of 3 signatures, by the shopper alone after T1, or by you alone after T2. Ask your human before confirming.

confirm_receiptA

Step 5, moves money: the items arrived and are right, so sign the escrow payout to the shopper (release); the shopper co-signs and broadcasts it. Irreversible. Without confirm: true it only returns the payout (amount, recipient) and a warning if the shopper has not reported delivery. With confirm: true it signs and waits up to wait_seconds for the payout on chain. If the items did not arrive or are wrong, use open_dispute instead.

open_disputeA

Ask the escrow to decide a funded order: items not delivered, wrong item, or the shopper not releasing. Sends the claim with all signed order messages as evidence (copy to the shopper) and the key that lets the escrow decrypt the delivery address. No funds move now; the escrow later rules a split, which you check with review_ruling and execute with countersign_ruling. Without confirm: true it only shows what would be sent.

review_rulingA

Show the escrow's ruling for a disputed order — the split between you, the shopper and the escrow fee, and its reason — and whether the escrow's transaction really pays exactly that split. Read-only. If it matches, countersign_ruling executes it; if not, do not countersign and consider report.

countersign_rulingA

Moves money: add your signature to the escrow's ruling transaction (2 of 3) and broadcast it, settling the dispute. Refused if the transaction does not pay the ruled split. Without confirm: true it returns the same review as review_ruling. Ask your human before confirming.

accept_refund_offerA

Moves money: co-sign and broadcast a cooperative refund the shopper offered (e.g. the item was sold out or delivery failed), returning the funds to your wallet. Refused if the offer does not pay you as the refund template requires. Without confirm: true it shows the offer and its check. Errors if there is no offer (get_order shows refund_offer).

refund_after_timelockA

Moves money, last resort: after the T2 timelock you alone can take the locked funds back to your wallet (e.g. the shopper disappeared). Without confirm: true it shows T2, the current block height or chain time, whether T2 is reached, and the amount. Before T2 the chain rejects it; prefer accept_refund_offer or open_dispute while the shopper responds.

cancel_orderA

Cancel an order that is not funded yet (requested, quoted or accepted) and tell the shopper (best effort). Refused once funding has started — then use open_dispute, accept_refund_offer or refund_after_timelock. Nothing is paid or refunded.

reportA

Report the order's shopper or escrow to the operator that listed them, attaching the order's signed messages as evidence (e.g. a dishonest ruling, a quote that failed validation, no delivery). Sends one signed message; no funds move and the order is not changed otherwise. The operator may remove them from its list.

export_backupA

Show this agent's 12-word BIP39 mnemonic, which controls the identity and every order's escrow key, with restore instructions. Only with confirm: true — the words then stay in the conversation, and anyone who sees them can take the funds; use only when your human asks for a backup. Local, no network.

become_shopperA

Return a step-by-step plan to earn fees as a proxy shopper (buying at local shops for remote users who pay into the escrow): requirements (always-online host, Docker, the Go node and shopper-bot images, card or cash regions), fees and risks, an honest status of the network, a ps-main node config and compose file, and how to get listed through the registry (then registry_entry). Local, no network, nothing is started.

registry_entryA

Return the exact JSON file and path to add in a pull request to github.com/pad01g/proxy-shopping-registry, so a shopper, escrow, operator or coordinator gets listed once the maintainer merges it: shoppers/.json {pk, contact, description, regions (cash regions), payments, escrows}; escrows/.json {pk, contact, description, sla_days}; operators/.json {pk, contact, description, regions}; coordinators/.json {pk, contact, description, url?, bundle?}. Uses this data dir's identity pubkey unless pubkey is given (a shopper entry must carry the shopper node's key). Local; opens no pull request itself.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.1/5.0

Scored across 19 tools

Disambiguation4/5

Tools are nicely differentiated by explicit multi-step labeling (find_offers → request_quote → accept_quote → fund_order → confirm_receipt) and money-moving vs read-only distinctions. Some overlap clusters exist (report vs open_dispute, and the four refund/dispute settlement tools), but descriptions consistently clarify when to use each.

Naming Consistency4/5

Dominated by clear verb_noun snake_case (find_offers, request_quote, accept_quote, fund_order, confirm_receipt, open_dispute, review_ruling, cancel_order). A few deviations break the pattern: bare noun phrases network_info, wallet, registry_entry, and a lone bare verb report.

Tool Count4/5

19 tools is on the heavier side but each maps to a distinct step in a genuinely multi-step, money-handling escrow workflow where separation aids safety. Some consolidation (info/registry helpers) might be possible, but nothing feels gratuitous.

Completeness4/5

The buy → fund → receive → dispute/refund/report → settle lifecycle is thoroughly covered, including edge cases (timelock refund, cooperative refund offer, ruling verification) and seller-side onboarding. Minor gap: no shop-discovery tool, so agents must already know shop_url.

Maintenance

ActivityMaintained
ResponsivenessNo issues