Skip to content

Client API

The client API lets Proxy Mobile and connected apps work with a running Proxy host. The host keeps the source data, and the Proxy address routes authorized requests to it. If you are building a third-party app, start with Connect your app to request the access it needs.

Base URL

For a proxy.ing address:

https://username.proxy.ing/client/v1

Proxy Mobile can be paired with the MCP endpoint:

https://username.proxy.ing/mcp/proxy

The mobile client rewrites that endpoint to /client/v1 for app API requests. This lets the same address expose MCP tools and app/mobile routes without asking the user to type a second URL.

Authentication

Private tunnel requests require authorization. An approved device can use the account bearer. A connected app uses the scoped token issued by the address's authorization flow. Its token only opens the permitted route families; the route list below is not a promise that every app can use every endpoint. A Party connection is further limited to one direct thread with the named agent.

Clients should preserve the Mcp-Session-Id header when an MCP server returns one.

Private tunnel prefixes do not enable broad browser CORS. Browser-facing OpenAI-compatible requests should use the top-level /v1/* route class.

Timeline And Content

Route Purpose
GET /timeline/entries Timeline entries
GET /timeline/entries/:id One timeline entry
GET /content/:reference Referenced content for blocks, attachments, and timeline items
GET /events App-wide event stream

Use /events to keep remote UI state fresh after messages, approvals, roster changes, or Move updates.

Moves

Route Purpose
GET /moves List Moves for review
POST /moves/:id/resolve Resolve a Move

Moves are the app review surface for proposed agent work. A remote client should render them as reviewable actions, not plain chat text.

An app with the moves scope can read Moves. Resolving a Move also requires proof from an approved owner device; a bearer token alone receives 403. See Move approval requirements. Connecting an app does not authorize it to make the person's decisions.

Agents And Loadouts

Route Purpose
GET /agents Available agents
GET /agents/:id Agent detail
GET /agents/:id/loadouts Loadouts for an agent
POST /agents/:id/loadouts Create a loadout
PATCH /loadouts/:id Update a loadout
DELETE /loadouts/:id Delete a loadout
POST /loadouts/:id/duplicate Duplicate a loadout
POST /loadouts/:id/activate Activate a loadout
POST/PATCH/DELETE /loadouts/:id/skills/:skill_id Equip, update, or remove a skill
POST/DELETE /loadouts/:id/integrations/:integration_id Equip or remove an integration

Some integrations require desktop setup. If a remote client tries to equip one directly, Grand Central can return a conflict explaining that desktop setup is required.

Catalogs

Route Purpose
GET /catalog/harnesses Harness catalog
GET /catalog/skills Skill catalog
GET /catalog/integrations Integration catalog
GET /catalog/models Model catalog
GET /catalog/providers Provider catalog

Use catalogs to build roster, harness, model, skill, and integration selection UI.

Threads And Party

Route Purpose
GET /threads List threads
POST /threads Create a thread
GET /threads/:id Thread detail
GET /threads/:id/roster Thread roster
POST /threads/:id/participants Add a participant
GET /threads/:id/snapshot Thread snapshot
GET /threads/:id/events Thread event stream
GET /threads/:id/messages List messages
POST /threads/:id/messages Send a message

For live Party UI, use the thread event stream and refresh snapshots after state-changing operations.

Approvals

Route Purpose
POST /approvals/:id/respond Approve or reject an approval request

Approvals are separate from normal chat messages. Treat them as first-class review actions in a remote client.