Skip to content

MCP Server

The RAMP MCP Server is a convenience interface layer that exposes ExchangeService RPCs as MCP tools. Any AI agent with MCP support can discover and access resources without custom SDK integration — just add the MCP server to the agent’s tool configuration.

The MCP server is a thin proxy, not a performance layer. It translates simplified MCP tool calls into full RAMP protocol messages, forwards them to a Exchange via Connect-Go, and translates responses back into agent-friendly JSON. High-throughput production workloads use gRPC/Connect directly (via the Agent SDK or Broker).

Value proposition: Zero-SDK resource access. An agent operator adds a server entry to their MCP config, sets an API key, and the agent gains six tools. No dependency, no generated code, no RAMP-specific client library.

ToolMaps ToScopeDescription
discover_supplyDiscoverResourcesramp:discoverSearch for content offers by URI
execute_transactionExecuteTransactionramp:transactCommit to offers and receive delivery info
report_usageReportUsageramp:reportFile a post-usage report
dispute_transactionDisputeTransactionramp:reportFile a content dispute
check_health(synthetic)ramp:discoverCheck Exchange connectivity
get_rate_limit_status(synthetic)ramp:discoverReturn cached rate limit info

The MCP server auto-populates protocol fields that agents should not need to know about: ver, id (ULID), aisystem (from OAuth context), agent_signature (proxy Ed25519 key), and agent_signature_algorithm.

A full ResourceQuery proto has 12 fields. The discover_supply tool has 3:

{
"uris": ["https://example.com/article-1"],
"functions": ["inference", "summary"],
"deadline_ms": 500
}

The MCP server bridges the gap — translating simplified JSON inputs into full proto messages and stripping internal fields from responses.

The MCP server uses a delegated proxy key model:

Agent --OAuth 2.1--> MCP Server --Ed25519 signed request--> Exchange
  • Agents authenticate to the MCP server via OAuth 2.1
  • The MCP server signs outbound requests with its own registered Ed25519 key
  • The Exchange knows both who signed (proxy) and on whose behalf (agent from OAuth claims)
ScopeTools AllowedDescription
ramp:discoverdiscover_supply, check_health, get_rate_limit_statusRead-only discovery
ramp:transactexecute_transactionFinancial commitment
ramp:reportreport_usage, dispute_transactionPost-transaction reporting

An agent with ramp:discover only can search and evaluate offers without committing to transactions.

Add to claude_desktop_config.json:

{
"mcpServers": {
"ramp": {
"command": "ramp-mcp-server",
"args": ["--transport", "stdio"],
"env": {
"RAMP_MARKETPLACE_URL": "https://exchange.example.com",
"RAMP_PROXY_KEY_PATH": "/path/to/ed25519-private.pem",
"RAMP_OAUTH_TOKEN": "eyJhbGciOi..."
}
}
}
}

For shared deployment behind a load balancer:

Terminal window
ramp-mcp-server \
--transport http \
--listen :8080 \
--exchange-url https://exchange.example.com \
--proxy-key-path /secrets/ed25519-private.pem \
--oauth-jwks-url https://auth.example.com/.well-known/jwks.json

The MCP server is fully stateless — no database, no persistent storage. Deploy N replicas behind a load balancer with no session affinity required.

Tool definitions are generated from ramp.proto via protoc-gen-go-mcp. Zero schema duplication — if the proto changes, tool schemas update automatically on rebuild. The MCP server never manually defines tool input/output schemas.

The MCP server exposes agent-facing RPCs only. Provider onboarding (RequestDomainVerification, ConfirmDomainVerification), CatalogService RPCs, and internal protocol fields (signatures, ext payloads) are deliberately excluded.