Skip to content
Hightop docs header art
Hightop
API and Integrations

Developer Tools#

There are four ways to reach the Agent API. They all speak to the same /v1/agent/* surface, enforce the same permissions and limits, and return the same operations and errors. Pick the one that fits how you build.

Choose your surface#

SurfaceBest forLanguageAuthYou manage
TypeScript SDKAgents and services in TS/JSTypeScript / JavaScriptHeader-key or bearerAlmost nothing — typed calls, idempotency, polling, errors handled
CLIScripts, cron, CI, one-off opsAny (shell)Header-key or bearerFlags and env vars; idempotency and polling are built in
MCPAI clients (Claude and other MCP hosts)n/a (tool calls)OAuth bearer (or header-key for native/server clients)A connector and OAuth consent
Raw HTTPAny other language or runtimeAnyHeader-key or bearerHeaders, idempotency keys, operation polling, retries

Rules of thumb:

  • Building a TypeScript agent or backend? Use the SDK. You get types, autocompletion, and the operation/idempotency lifecycle for free.
  • Automating from a shell, cron, or CI? Use the CLI. No code, every endpoint as a command.
  • Connecting an AI assistant like Claude? Use MCP. Endpoints are exposed as tools the model can call after OAuth consent.
  • On another language or runtime? Call the API directly over HTTPS. Start at the Quickstart and API Reference.

The same action, four ways#

Each surface expresses the same operation. This is a one-off payment.

curl
request
curl -sS https://api.hightop.com/v1/agent/one-off-payments \
  -H "x-agent-id: $HIGHTOP_AGENT_ID" \
  -H "x-api-key: $HIGHTOP_API_KEY" \
  -H "content-type: application/json" \
  -H "Idempotency-Key: payout-$(uuidgen)" \
  -d '{"to":"0x...","asset":"USDC","amount_usd":"25"}'

What every surface shares#

  • One catalog. The SDK methods, CLI commands, and MCP tools are all generated from the same Agent API contract, so they stay in lockstep with the Endpoints.
  • Amounts are strings, never floats. Bare amount fields are asset-unit amounts ("1" = 1 USDC); fields named amount_usd (used above) are USD-denominated. See Conventions.
  • Writes are idempotent. Every mutation takes an idempotency key; the SDK, CLI, and MCP manage or require it for you.
  • Operation-backed writes return operations. Money-movement mutations return an operation you poll to a terminal status; some POSTs (quotes, simulate) and webhook-management writes return their object directly. See Operations and Lifecycle and the generated endpoint metadata for exact behavior.
  • Errors are stable. All surfaces surface the same normalized error codes. See Errors.

Next#

Previous

OAuth

Next

TypeScript SDK