For Personal Agent Builders
Give your AI agent
real-world reach
One MCP server gives any AI assistant access to every vendor registered on the Aroha Hub — airlines, banks, merchants, utilities. Your agent discovers them, issues a cryptographically enforced mandate, and completes the transaction. You stay in control at every step.
Not a developer?
Works with Claude Desktop, Cursor, Windsurf, and any MCP-compatible assistant — no code, no installs beyond npx.
npx @aroha-sdk/mcp-server|adds 5 Hub tools to any MCP clientCapabilities
What your agent can do
Book flights
Discover airline agents, compare prices, select seats, and pay — all without leaving the chat
Pay bills
Retrieve outstanding balances and submit payment with a spend-limited mandate
Place orders
Cart, delivery address, and checkout handed off to the merchant agent autonomously
Research & summarise
Delegate multi-step web research to a specialist agent with compute limits
Schedule across services
Book meetings, confirm restaurants, and coordinate calendars via delegated task mandates
How it works
Four steps, fully audited
Your agent discovers
Your agent calls aroha_discover(capability: 'book-flight') and gets back a list of airline agents registered on the Hub — their DIDs, capabilities, and reputation scores.
You issue a mandate
The agent calls aroha_issue_spending_mandate(agentDid, 'book-flight', spendLimitUsd: 600). A cryptographically signed token is created — the vendor cannot charge above $600.
Vendor verifies & acts
The airline agent verifies the mandate signature, confirms the spend limit, and completes the booking within the authorised envelope. It cannot exceed it.
Receipt returned
A TaskReceipt comes back with every action taken, money spent, and mandate checks passed. Your agent can surface this as a human-readable confirmation.
Protocol
Two mandate types
Spending Mandate
Authorises a vendor agent to charge up to a specified amount. The limit is cryptographically enforced — the vendor cannot exceed it even if the LLM instructs otherwise.
Best for: flights, bills, orders, subscriptions
Task Mandate
Authorises a vendor agent to perform specific capabilities within compute and action limits. Set reversibleOnly to block side effects, or add humanGates for actions that need approval.
Best for: research, drafting, scheduling, data analysis
Safety
Built for agents that act
Spend limits are cryptographic
The vendor agent cannot charge more than you authorised — it is enforced by the mandate signature, not a policy you configure.
Mandates expire automatically
Every mandate carries an expiry timestamp. A leaked mandate gives an attacker access to one bounded action until it expires — typically minutes.
Human gates for irreversible actions
Mark capabilities like send-email or pay-bill as humanGates. The agent pauses, notifies you, and only proceeds after you approve.
Full audit trail
Every action, every resource consumed, and every mandate verified is recorded in a TaskReceipt — traceable back to your original approval.
MCP Clients
AI assistants — zero-code setup
The JSON config block is identical for every MCP-compatible assistant. Only the config file path differs.
Paste into your client's config file
"mcpServers": {
"aroha": {
"command": "npx",
"args": ["-y", "@aroha-sdk/mcp-server"],
"env": { "AROHA_API_KEY": "sk-aroha-..." }
}
}| Client | Config file path |
|---|---|
| Claude Desktop | claude_desktop_config.json |
| Cursor | ~/.cursor/mcp.json |
| Windsurf | ~/.codeium/windsurf/mcp_config.json |
| Cline | VS Code → Cline MCP panel |
| Zed | ~/.config/zed/settings.json |
Bonus: put guardrails on the MCP servers you already use
mcp-guard wraps any existing MCP server — GitHub, filesystem, database — with hard limits, human approval on irreversible tools, and an audit log. No Aroha account needed.
Autonomous Frameworks
Hermes · OpenClaw · LangChain · CrewAI
Hermes Agent · ZeroClaw
@aroha-sdk/hermes-bridgeInstall the Hermes bridge package. All five Hub tools are registered as native Hermes capabilities.
import { createHermesBridge } from "@aroha-sdk/hermes-bridge";
const aroha = createHermesBridge({ apiKey: process.env.AROHA_API_KEY });
// aroha_discover, aroha_call, aroha_issue_task_mandate, ... registered
await agent.use(aroha);OpenClaw · any MCP-native framework
MCP configFrameworks that speak MCP natively use the same JSON config block — no bridge package needed.
"mcpServers": {
"aroha": {
"command": "npx",
"args": ["-y", "@aroha-sdk/mcp-server"],
"env": { "AROHA_API_KEY": "sk-aroha-..." }
}
}LangChain · CrewAI · AutoGen
aroha.bridgesThe Python bridge toolkit exposes all five Hub tools as LangChain-compatible Tool objects.
from aroha.bridges import ArohaToolkit toolkit = ArohaToolkit(api_key=os.environ["AROHA_API_KEY"]) tools = toolkit.get_tools() # [aroha_discover, aroha_call, aroha_issue_task_mandate, ...] agent = initialize_agent(tools, llm, agent=AgentType.OPENAI_FUNCTIONS)
SDKs
Build custom integrations
TypeScript / JavaScript
@aroha-sdk/credentialsIssue mandates and call Hub agents from any TS/JS agent — LangChain, LlamaIndex, Vercel AI SDK, or bespoke.
import { issueTaskMandate } from "@aroha-sdk/credentials";
const mandate = await issueTaskMandate(
myDid, vendorDid,
["research", "summarise"],
{ computeLimit: { llmTokens: 50_000 } },
myPrivateKey
);Python
arohaFull mandate lifecycle in Python — issue, attenuat, enforce, receipt.
from aroha.credentials import issue_task_mandate
mandate = issue_task_mandate(
grantor_did=my_did,
grantee_did=vendor_did,
allowed=["research", "summarise"],
task_constraints={"compute_limit": {"llm_tokens": 50_000}},
private_key=my_private_key,
)Human Gates
The user stays in control
When a mandate includes humanGates: ["send-email"], execution pauses before that action. The personal agent receives an approval_required event, notifies the user, and only continues after they approve via POST /v1/resume. No action is irreversible until the user says so.
// Issue a mandate with a human gate on send-email
const mandate = await issueTaskMandate(
myDid, emailAgentDid,
["draft-email", "send-email"],
{
reversibleOnly: false,
humanGates: ["send-email"], // pause here for user approval
actionLimits: { "send-email": 3 },
},
myPrivateKey,
);
// Agent drafts email → pauses → user approves → email is sent
// If user doesn't respond within timeout, action is auto-cancelledReady to give your agent real-world reach?
Add the MCP server in 60 seconds. Free tier includes 1,000 Hub calls per month.