/api/v1/*. Any agent runtime that implements the same surface — or a compatible subset — can be connected; the routes documented below describe the wire contract Placet expects upstream.
The dashboard is off by default per user. It becomes visible once a user enables it under Settings → Preferences → Management Dashboard. Placet auto-enables this preference the first time a user registers an agent that provides management credentials.
Placet owns a dedicated, typed endpoint for every upstream management route — it is not a generic wildcard proxy. Controllers are explicit to give the backend room for caching, cross-agent aggregation, and request shaping. When the upstream is unreachable Placet returns 502 Bad Gateway and the frontend silently hides the view.
Registering Management Credentials
An agent registers management credentials the same way it registers a channel — by callingPOST /api/v1/agents/setWebhook on the Placet backend with the additional management object, or by using the dedicated setManagement endpoint.
Option A — Combined with setWebhook
Option B — Dedicated endpoint
"url": null, "apiKey": null to clear the management credentials for a channel.
Endpoints
Every endpoint listed below lives under/api/agents/:agentId/manage/ on the Placet backend and maps 1:1 to the upstream /api/v1/ route. All requests require a valid Placet user JWT (Authorization: Bearer <jwt>) and are scoped to the authenticated user’s agent.
Health
Sessions
Audit log
Token usage
Settings
Runtime settings exposed by the agent. Browser settings include the new browser tool controls shown in the Management Dashboard:enable, max_named_sessions, domain_allowlist, and domain_denylist.
Credentials
Generic secrets stored on the agent and made available to skills/tools as${credentials.KEY}. The exposed flag mirrors config.tools.exec.exposed_credentials — when true the key is injected as an env var into the shell-exec sandbox.
LLM provider credentials
Provider API keys live underconfig.providers.<name>.api_key. OAuth-only providers (github_copilot, openai_codex) report isOauth: true and use a token store instead of api_key; for those, POST / PUT return 400 and the OAuth endpoints below must be used.
POST /oauth/start returns:
GET /oauth/poll?session_id=… every interval seconds and receives {status: "pending" | "ok" | "error", error?, account?}. On ok the OAuth token is persisted server-side (no value ever crosses the wire). openai_codex is intentionally not supported via REST — its OAuth client mandates a fixed http://localhost:1455/auth/callback redirect, so use your agent’s local CLI to complete the OAuth login.
Cron
MCP servers
Tool policy
Persistent allow/deny rules for tool calls plus runtime toggles for the approval gate.deny wins over allow; missing rules trigger a one-time approval prompt unless the gate is disabled or skipped for cron callers.
The
enabled flag is the master switch for the approval gate — when off, every tool call runs without prompts and the rule list is ignored. skipCron lets cron-triggered tool calls bypass the approval prompt while keeping the gate active for interactive callers.
Workspace
Skills & scripts
Channels
Commands
Agent Card
A2A peers
Error semantics
Minimal Upstream Requirements
To support the management dashboard, your agent runtime must:- Expose a bearer-authenticated management API on
/api/v1/*that matches the wire contract documented above. - Implement any subset of the routes above that you want users to see; unsupported ones simply return
404, which the dashboard handles gracefully. - Accept a long-lived management bearer token that you can transmit to Placet via
setWebhook/setManagement.
cron, mcp) isn’t supported by your runtime, the Placet UI tab for that feature stays empty — there is nothing else you need to do to “opt out”.
Security Notes
- Management keys are stored alongside webhook secrets and returned as
***on every agent read. - Only the agent owner (owner of the
apiKeythat registered the channel) can call/manage/*for that agent. - Rotate a key by calling
setManagementagain; to revoke, set both fields tonull.
