@general-liquidity/mcp
OfficialClick on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@@general-liquidity/mcpresolve counterparty ref abc-123"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@general-liquidity/mcp
A curated MCP server that projects the General Liquidity surface as seventeen
task-shaped tools in four groups: money/identity, commerce, memory, and
read-back. It is
deliberately not a 1:1 dump of every REST endpoint, which would overrun an
agent's token budget. The tool names are the surface verbs, and there is no
settle or grant tool: settlement stays behind the client, and mandate
granting is operator-only.
The server wraps a GeneralLiquidity client from
@general-liquidity/sdk.
The client is injected (dependency inversion): this package holds no settle
primitive and no server implementation of its own. It signs and submits intents
through the injected client; the sovereign gate decides and settles.
The tools
Money and identity:
resolve— normalize any counterparty reference (A2A card, signed disclosure, CAIP) into one identity with its accepted rails and trust signals.pay— submit a signed Intent to move value. The gate decides; on allow it settles on the right rail and returns a Receipt.simulate— ask what the gate would decide, without doing any of it. Settles nothing, writes no audit entry, and does not consume the idempotency key, so simulating a payment never prevents making it.authorizesis always false: anallowhere is an answer, not a grant.verify— check a counterparty's signed disclosure against policy and return a Decision.disclose— produce this agent's own signed disclosure: what it is and what it is authorized to do.
Commerce (the opt-in tier):
quote— price a cart against a merchant over a checkout protocol (acporucp). Commits nothing and moves no money; returns the server-authoritative Cart the merchant priced. Only a Cart in statusreadycan then be bought.buy— drive that checkout to a completed Order, authorized through the same gatepayuses. The merchant stays merchant-of-record.
The price is never the caller's to set: it comes from the cart the merchant
priced, which is why buy takes lines and no amount. Its replay key rides the
body and must be supplied, because only a caller that chose its own key can
safely re-send after a retryable rail failure. There is no parked-intent path —
a merchant session cannot be held open across an out-of-band operator approval,
so a gate confirm comes back as intent.denied, not approval.pending.
Both tools are registered on every server even though the tier is opt-in per
deployment: a tool list whose shape depends on the stack is one a model cannot
plan against. A deployment without the tier answers not_found, which arrives
as the same structured problem as any other refusal.
Memory (bi-temporal, mandate-scoped):
memory_remember— write one bi-temporal record under a mandate.memory_recall— read a sealed point-in-time snapshot, cursor-paginated.memory_assemble— assemble a budgeted, signed context.memory_verify— verify a signed memory artifact offline.
Read-back over the calling principal's own record:
get_job— the lifecycle of one intent by its idempotency key.get_job_events— that intent's signed, hash-linked audit events.get_audit— the audit trail across every intent.list_intents— the caller's own intents, newest first, optionally narrowed to one status.get_mandate— the live spend authority covering the caller: caps, expiry, when the period resets, and how much of each has been drawn.get_usage— metered call counts over a window.
list_intents is the one to reach for holding an approval.pending problem whose intent id
was not kept. A confirm verdict parks the intent and returns that id ONCE, so
status: "pending" is how the parked payment is found again rather than paging the whole
audit trail for something the agent cannot name. Each row carries the same lifecycle get_job
returns, including the pending.challenge an operator approval binds to.
get_mandate is the one an agent should reach for BEFORE committing to anything
metered or long-running, rather than discovering a ceiling by being refused. Its
description carries a warning worth repeating here: spent and remaining are
ABSENT together when the server holds a prior spend in a currency it cannot
convert, which is the same state in which the gate refuses to authorize at all.
Absent means unknown, never zero — the opposite reading has a model believe it
holds its whole budget at exactly the moment it holds none.
What is deliberately absent
There is no approve, refund, kill switch, memory_forget or webhook CRUD
tool. Those routes live in a disjoint authorization domain — the detached
GL-Operator ed25519 credential — which the injected agent client cannot mint.
Exposing them would either be dead weight or, worse, would let an agent release
its own parked spend. An agent that can approve its own payment has no gate.
There is also no health tool, for a different reason: it would not work when it mattered.
GET /health separates a deployment that is down from one that refused the credential, but an
agent reaches this server over the same transport it would use to ask, so a stack that cannot
answer cannot answer that either. The question belongs to the host process, and gl health
answers it there.
Related MCP server: seashail
Structured failures
Every tool failure comes back as the same RFC 9457 problem the REST surface
emits, on structuredContent, never as a thrown string:
{
"code": "intent.denied",
"message": "The gate denied intent idem-1.",
"action": "escalate-to-human",
"data": {
"type": "https://docs.generalliquidity.com/problems/intent.denied",
"status": 403,
"action": "escalate-to-human",
"nextStep": "Stop. A human operator must decide; no retry helps.",
"retryable": false,
"reasons": ["payee not on the mandate"]
}
}Branch on action, not on code: codes are added over time, while the four
action classes (never-retry, retry-as-is, retry-after-renegotiation,
escalate-to-human) are closed. A confirm verdict is one of these problems
(approval.pending) and carries the parked intent id and challenge an operator
needs to release it out-of-band.
Two codes now share 429 and mean opposite things, which is the sharpest reason to branch on
action. rate_limited is retry-as-is and clears in seconds. quota_exceeded is
escalate-to-human: the plan's call allowance is spent, and an agent can no more buy itself a
larger plan than approve its own parked payment. A client keyed on the status alone waits out a
billing period for something an operator clears in a minute.
The taxonomy in src/problem.ts mirrors the platform's
@general-liquidity/surface vocabulary, which is an unpublished workspace
package this repository cannot import. src/results.ts also bridges the SDK's
own legacy error slugs (denied, rate-limited, validation) onto it, so an
older peer still speaks the shared codes.
Adding it to an agent host
createMcpServer returns an unconnected McpServer. You wire the client and a
transport (stdio / HTTP) at your composition root:
import { createMcpServer } from "@general-liquidity/mcp";
import { createClient } from "@general-liquidity/sdk";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
const client = createClient({ baseUrl, signer }); // any GeneralLiquidity impl
const server = createMcpServer(client, { name: "gl", version: "1.0.0" });
await server.connect(new StdioServerTransport());Point your agent host (Claude Desktop, an IDE MCP client, or any stdio MCP host) at the process running that entry point.
What it exports
createMcpServer/McpServerOptions— build the curated MCP server over an injected client.buildTools/ToolDef/ToolResult— the tool set and its call-result shape, exported separately so tests can assert registration and delegation with a fake client and no transport.TOOL_NAMES/COMMERCE_TOOL_NAMES/MEMORY_TOOL_NAMES/READ_TOOL_NAMES/ALL_TOOL_NAMES— the exposed tool names, by group.problem/actionFor/nextStep/isRetryable/requiresHuman/ALL_PROBLEM_CODESand theProblem,ProblemCode,ErrorAction,StructuredErrortypes — the shared failure taxonomy.
Dependencies
@general-liquidity/sdk— supplies theGeneralLiquidityclient type and the wire nouns (Intent,Disclosure,Counterparty,Receipt,Decision).@modelcontextprotocol/sdk— the MCPMcpServer.zod— tool input schemas.
Development
bun install
bunx tsc --noEmit -p tsconfig.json
bun test
bunx biome check .This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for Modern Treasury — payment orders, transactions, counterparties and ledgers.
MCP server for Boson Protocol — on-chain agentic commerce for physical & digital goods.
Hosted AgentLux MCP server for marketplace, identity, creator, services, and social flows.
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMCP server for declarative intent execution. Agents submit intents — transfers, swaps, multi-hop routes — and the engine resolves and executes them atomically.MIT
- AlicenseNot gradedqualityDmaintenanceAgent-native, self-hosted MCP server for crypto trading and DeFi management. Enables agents to query balances, execute trades, and manage positions with a policy engine and secure key storage.7Apache 2.0
- AlicenseNot gradedqualityFmaintenanceMCP server that gives AI agents Lightning payments, L402 API access, trust verification, and service discovery.10MIT
- AlicenseNot gradedqualityBmaintenanceMCP server for agent-native and human-accessible payments using MPP and x402 protocols, enabling payment flows from CLI or agent hosts.10MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/general-liquidity/general-liquidity-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server