Skip to main content
Glama
inviti8

Obolus

by inviti8

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": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
x402_fetchA

Fetch a URL, paying automatically if it answers with an x402 payment challenge.

SPENDS REAL MONEY when the network is mainnet. Payment comes from a short-lived session account funded from the user's vault, never from the vault itself, so the most any single call can lose is the session balance.

Returns the response body plus, when a payment happened, the price, the merchant address, the transaction id and the settlement receipt.

What the receipt proves: that this payment settled on chain. It does NOT prove the resource was correct, honest, or worth the price - a settled payment and a useful answer are different claims.

Refuses, without spending, when: the price exceeds max_price_usdc or the configured per-call cap; the day's spending cap would be exceeded; the merchant is outside an allowlist the user enabled; the resource asks for an asset this wallet does not hold; the payTo address is one of ours (paying yourself is not a payment); or a mainnet resource is not https. Each refusal says which rule it hit.

Unpaid URLs are fine - if the server answers normally, the body is returned and nothing is spent.

FILES. body_file sends the bytes at a path instead of body, and output_file writes the response to a path instead of returning it inline. Use them for anything binary or large - an image to be signed, a document to be processed - because binary cannot survive being passed as text and a large body would swamp the conversation. Both are confined to a directory the user configured, and both are DISABLED unless they configured one; a path outside it is refused. Pass body or body_file, never both.

JSON. Pass body as an object or array, not as a string of JSON - it is sent as application/json and you do not need to set content_type. A string body is sent verbatim, which is what you want for text, XML or form encoding. If the exact bytes matter - anything the endpoint hashes or signs over - use body_file, which is never re-encoded.

content_type sets the request's Content-Type. Some paid endpoints require it and reject the request without it - AFTER taking payment, because the payment is verified before the handler runs. Set it whenever the body is not plain text.

Response headers the merchant set are returned under response_headers; some endpoints put results there that appear nowhere in the body.

wallet_statusA

Report the wallet's state: network, vault address and balances, the active session and what remains in it, spending so far today, and the configured caps.

Read this before assuming a payment can be made. A vault that is not yet funded or not yet opted into the payment asset cannot pay for anything, and this is where that shows up. Costs nothing and spends nothing.

wallet_funding_infoA

Explain how to put money in this wallet, and report which of the three setup steps the vault is on.

For the human, not the agent - it returns an address and instructions, and no part of it can be automated by the agent.

The three steps are in a forced order: ALGO must arrive before the vault can opt into the payment asset, and the opt-in must happen before USDC can be received at all. USDC sent to a vault that has not opted in is rejected outright - it does not sit pending, it fails.

Each step a human performs carries a scan value: an ARC-26 URI an Algorand wallet can scan. It encodes the address AND the asset id, so the sender cannot aim at the wrong asset by hand - which matters because sending the wrong one is rejected rather than held. No amount is encoded; the human types that into their own wallet where they see it before confirming.

TOPPING UP ONE ASSET. Pass asset - "ALGO", "USDC", or the asset id - and the reply narrows to that asset's steps AND includes the QR code as an image, so the human can scan it directly. ALGO codes are black; the payment asset's are blue and captioned, so the two are not confused at a glance. Omit asset for the whole picture as text.

The usual flow: wallet_status answers "how much do I have", then wallet_funding_info(asset="USDC") answers "I want to top up USDC".

SET open_in_browser WHENEVER A HUMAN WANTS TO SCAN THE CODE. The image block this returns renders in some MCP clients and not in a terminal, so on its own it can reach the model and never reach the person holding the phone. With the flag, Obolus writes a self-contained page and opens it in the default browser - no server and no network needed.

qr_dir optionally writes the codes as PNG files into that directory, under the same configured file root as body_file/output_file. obolus vault qr prints them straight into a terminal.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/inviti8/Obolus'

If you have feedback or need assistance with the MCP directory API, please join our Discord server