Create or update an agent instance. Registration is policy-gated based on the your organizations’s policy_mode:
open (default) — Any agent type is auto-admitted. The type is added to the
tenant’s allow-list automatically.
allow-list — Only pre-approved agent types can register. Returns 403 if
the type is not in the tenant’s allow-list. Use /agents/allow_type to add it.
audit — All types can register, but a registration_flagged event is
emitted for admin review.
Auto-creates the agent-type on first registration. Tool declarations and optional MCP server configs are persisted. Requires a valid JWT Bearer token.
Deployment mode — deployment_mode selects the transport the mesh uses for every dispatch sent to this instance:
connected (default) — the agent dials connect_url (returned in
the response) over WebSocket and keeps the connection open; the
mesh pushes dispatches down that socket. The agent-card probe is
skipped. url must be omitted.
hosted — the agent exposes a public A2A HTTP surface at url.
The gateway probes GET {url}/.well-known/agent-card.json on
admission; if the probe fails the registration is rejected with
502.
If deployment_mode is omitted, the server infers hosted when url is present and connected otherwise.
Re-registering an existing instance_id with a different deployment_mode is rejected with 409 DEPLOYMENT_MODE_MISMATCH — deregister first and re-register, or create a new instance.
Base URL where the agent serves its A2A surface. Required for hosted mode; must be omitted or null for connected mode. Switching the deployment_mode for an existing instance is rejected with 409 DEPLOYMENT_MODE_MISMATCH.
connected (default) — mesh pushes frames down an
agent-initiated WebSocket. Works anywhere outbound HTTPS/WSS
reaches, including behind firewalls, NATs, laptops, and CI.
hosted — mesh POSTs to url over HTTPS. Opt in when your
agent already runs as a public HTTP service.
If the field is omitted, the server infers hosted when url is present and connected otherwise.
How the mesh authenticates each dispatch it sends to the agent.
Per-dispatch authentication applies to bothhosted (HTTPS callback) and connected (WebSocket) agents. The envelope is attached to every outbound dispatch payload and verified by the SDK on the agent side via verify_dispatch_auth.
Enforcement is gated by the mesh's SVANTIC_DISPATCH_AUTH_ENABLED flag. When the flag is on, the mesh refuses to send unauthenticated dispatches; when off, the mesh skips minting envelopes and the SDK skips verification. Both sides must agree on the flag.
Defaults to svantic_jwt when omitted.
See the internal spec platform/docs/specs/dispatch_auth.md for the wire format, error taxonomy, and test ownership.
Raw secret bytes for dispatch_auth.type=shared_secret. Required on register when and only when dispatch_auth.type is shared_secret; rejected with 400 in any other case. The gateway encrypts this value under the tenant key and stores the ciphertext in agent_instances.dispatch_auth_secret_ciphertext; the raw value is never echoed in any response. Rotate by re-registering with a new credentials_ref and a fresh secret.
Dynamic tool declarations registered with this instance. These are instance-specific capabilities that may vary across instances of the same agent type.
Optional MCP server configs applied to the agent type for this tenant.
Show child attributes
Response
Agent registered successfully.
Registration confirmation. The tenant_id is derived from the JWT.
Connected-mode agents must dial the returned connect_url over WebSocket immediately and keep the connection open; that socket is the only path dispatches reach the agent on. Hosted-mode agents can ignore connect_url (it is null).
The effective deployment mode for this instance after admission. Usually matches the request, but the server may reject a switch attempt with 409 DEPLOYMENT_MODE_MISMATCH (see the register path spec), so callers should always trust this value.
Populated only for connected mode: the WebSocket endpoint the SDK must dial to complete registration. Always includes the instance_id as a query parameter; authenticate with the same JWT used for the register call. null for hosted mode.
Public JWKS endpoint for dispatch_auth.type = svantic_jwt validation. null when the agent declared a non-JWT auth scheme. Hosted agents that rely on the default scheme should cache this JWKS with a short TTL (max 10 minutes) to catch signing-key rotations.
How the mesh authenticates each dispatch it sends to the agent.
Per-dispatch authentication applies to bothhosted (HTTPS callback) and connected (WebSocket) agents. The envelope is attached to every outbound dispatch payload and verified by the SDK on the agent side via verify_dispatch_auth.
Enforcement is gated by the mesh's SVANTIC_DISPATCH_AUTH_ENABLED flag. When the flag is on, the mesh refuses to send unauthenticated dispatches; when off, the mesh skips minting envelopes and the SDK skips verification. Both sides must agree on the flag.
Defaults to svantic_jwt when omitted.
See the internal spec platform/docs/specs/dispatch_auth.md for the wire format, error taxonomy, and test ownership.
{"docsConfig":{"theme":"luma","$schema":"https://mintlify.com/docs.json","name":"Svantic","description":"AI agent platform — discovery, orchestration, governance, and knowledge for agent fleets.","colors":{"primary":"#7C3AED","light":"#A78BFA","dark":"#5B21B6"},"logo":{"light":"https://mintcdn.com/svantic/DQEVJ_RnVW5_l6gu/images/logo_large.png?fit=max\u0026auto=format\u0026n=DQEVJ_RnVW5_l6gu\u0026q=85\u0026s=c23d1b1fd831f2dc24e9b758c0e4f930","dark":"https://mintcdn.com/svantic/DQEVJ_RnVW5_l6gu/images/logo_large.png?fit=max\u0026auto=format\u0026n=DQEVJ_RnVW5_l6gu\u0026q=85\u0026s=c23d1b1fd831f2dc24e9b758c0e4f930"},"favicon":"https://mintcdn.com/svantic/DQEVJ_RnVW5_l6gu/images/logo_large.png?fit=max\u0026auto=format\u0026n=DQEVJ_RnVW5_l6gu\u0026q=85\u0026s=c23d1b1fd831f2dc24e9b758c0e4f930","api":{"openapi":"api-reference/openapi-bundled.yaml","playground":{"display":"interactive"},"examples":{"languages":["curl","javascript","python","go"]}},"appearance":{"default":"light","strict":true},"navbar":{"links":[{"href":"https://svantic.com","label":"Website"},{"href":"https://app.svantic.com","label":"Dashboard"}]},"footer":{"socials":{"github":"https://github.com/svantic","website":"https://svantic.com"},"links":[{"header":"Documentation","items":[{"label":"Home","href":"/"},{"label":"Getting Started","href":"/getting-started"},{"label":"Core Concepts","href":"/core-concepts"}]},{"header":"Reference","items":[{"label":"SDK","href":"/sdk"},{"label":"API Reference","href":"/api-reference"},{"label":"CLI Reference","href":"/cli-reference"}]},{"header":"Resources","items":[{"label":"Website","href":"https://svantic.com"},{"label":"GitHub","href":"https://github.com/svantic"},{"label":"Dashboard","href":"https://app.svantic.com"}]},{"header":"Legal","items":[{"label":"Terms of Service","href":"https://svantic.com/legal/terms"},{"label":"Privacy Policy","href":"https://svantic.com/legal/privacy"}]}]},"fonts":{"heading":{"family":"Inter"},"body":{"family":"Inter"}},"icons":{"library":"lucide"},"styling":{"eyebrows":"breadcrumbs","latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"svantic","hasAudioNarration":false,"actualSubdomain":"svantic","customDomains":["docs.svantic.com"],"gitSource":{"type":"github","owner":"svantic","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6a21dcceab250d2c48819885","collectionId":"6c93ef79-0ccb-422b-a348-0750b4a5fbcf","schemaVersion":"v2"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6a21dcceab250d2c48819885:success","clientVersion":"0.0.4006","searchFilterCounts":[{"language":"default","tag":"API Reference","count":50},{"language":"default","tag":"REST API","count":49},{"language":"default","tag":"Documentation","count":43},{"language":"default","tag":"SDK","count":27},{"language":"default","tag":"Reference","count":14},{"language":"default","tag":"Guides","count":12},{"language":"default","tag":"Knowledge Base","count":12},{"language":"default","tag":"Agents","count":10},{"language":"default","tag":"Policies","count":10},{"language":"default","tag":"Deep Dive","count":9}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"global.css","content":"#sidebar,nav#sidebar{width:300px!important;min-width:300px!important}html:not([data-current-path^=\"/api-reference\"]) #content,html:not([data-current-path^=\"/api-reference\"]) #content-area{max-width:1260px;margin-left:auto;margin-right:auto}#page-title,h1{color:#7c3aed;font-weight:900;letter-spacing:-.025em}html:not([data-current-path^=\"/api-reference\"]) h2{color:#7c3aed;font-weight:700;letter-spacing:-.025em;padding-bottom:8px;border-bottom:2px solid rgba(124,58,237,.12);margin-top:1.75rem;margin-bottom:.4rem}html:not([data-current-path^=\"/api-reference\"]) h3{color:#5b21b6;font-weight:600;letter-spacing:-.025em;margin-top:1.25rem;margin-bottom:.3rem}html:not([data-current-path^=\"/api-reference\"]) h4{color:#7c3aed;font-weight:600;letter-spacing:-.025em;margin-top:1rem;margin-bottom:.25rem}html.dark #page-title,html.dark h1{color:#a78bfa}html.dark:not([data-current-path^=\"/api-reference\"]) h2{color:#a78bfa;border-bottom-color:rgba(167,139,250,.2)}html.dark:not([data-current-path^=\"/api-reference\"]) h3,html.dark:not([data-current-path^=\"/api-reference\"]) mdx-content a:not([class]):hover{color:#c4b5fd}html.dark:not([data-current-path^=\"/api-reference\"]) h4{color:#facc15}html:not([data-current-path^=\"/api-reference\"]) p{line-height:1.65;margin-bottom:.75em}html:not([data-current-path^=\"/api-reference\"]) li{line-height:1.6;margin-bottom:2px}html:not([data-current-path^=\"/api-reference\"]) h1{margin-bottom:.5rem}:not(pre)>code{padding:2px 7px;border-radius:5px;font-weight:500;background-color:#f1f5f9;border:1px solid rgba(124,58,237,.12);color:#5b21b6}html.dark :not(pre)>code{background-color:#1e293b;border-color:rgba(103,232,249,.2);color:#67e8f9}pre{border-radius:10px!important;box-shadow:0 2px 8px rgba(0,0,0,.06)}html.dark pre{box-shadow:0 2px 8px rgba(0,0,0,.3)}html:not([data-current-path^=\"/api-reference\"]) blockquote{margin:1.5rem 0 2rem;padding:1rem 1.25rem;background:linear-gradient(135deg,rgba(124,58,237,.05) 0,rgba(124,58,237,.02) 100%);border-left:3px solid #7c3aed;border-radius:0 8px 8px 0;font-style:normal}html.dark:not([data-current-path^=\"/api-reference\"]) blockquote{background:linear-gradient(135deg,rgba(167,139,250,.08) 0,rgba(167,139,250,.02) 100%)}html:not([data-current-path^=\"/api-reference\"]) hr{height:1px;margin:2.5rem 0;background:linear-gradient(to right,transparent,rgba(124,58,237,.18),transparent);border:0}html.dark:not([data-current-path^=\"/api-reference\"]) hr{background:linear-gradient(to right,transparent,rgba(167,139,250,.2),transparent)}html:not([data-current-path^=\"/api-reference\"]) table{border-radius:10px;overflow:hidden;border:1px solid #e2e8f0}html:not([data-current-path^=\"/api-reference\"]) thead{background:linear-gradient(135deg,#f8fafc 0,#f1f5f9 100%)}html.dark:not([data-current-path^=\"/api-reference\"]) thead{background:linear-gradient(135deg,#1e293b 0,#334155 100%)}html:not([data-current-path^=\"/api-reference\"]) th{font-weight:600;text-transform:uppercase;letter-spacing:.05em}html:not([data-current-path^=\"/api-reference\"]) tr:hover td{background:rgba(124,58,237,.04)}html.dark:not([data-current-path^=\"/api-reference\"]) tr:hover td{background:rgba(167,139,250,.06)}html:not([data-current-path^=\"/api-reference\"]) mdx-content img{border-radius:10px;box-shadow:0 2px 12px rgba(0,0,0,.08)}html.dark:not([data-current-path^=\"/api-reference\"]) mdx-content img{box-shadow:0 2px 12px rgba(0,0,0,.3)}::selection{background:rgba(124,58,237,.18)}html.dark ::selection{background:rgba(167,139,250,.25)}html:not([data-current-path^=\"/api-reference\"]) mdx-content a:not([class]){color:#7c3aed}html:not([data-current-path^=\"/api-reference\"]) mdx-content a:not([class]):hover{color:#6d28d9}html.dark:not([data-current-path^=\"/api-reference\"]) mdx-content a:not([class]){color:#a78bfa}html[data-current-path^=\"/api-reference\"] #content-area,html[data-current-path^=\"/api-reference\"] #content-area *{font-family:\"Inter\",-apple-system,BlinkMacSystemFont,\"Segoe UI\",system-ui,sans-serif!important;line-height:1.55}html[data-current-path^=\"/api-reference\"] #content-area dd,html[data-current-path^=\"/api-reference\"] #content-area div,html[data-current-path^=\"/api-reference\"] #content-area dt,html[data-current-path^=\"/api-reference\"] #content-area label,html[data-current-path^=\"/api-reference\"] #content-area li,html[data-current-path^=\"/api-reference\"] #content-area p,html[data-current-path^=\"/api-reference\"] #content-area span,html[data-current-path^=\"/api-reference\"] #content-area td,html[data-current-path^=\"/api-reference\"] #content-area th{font-size:14px;line-height:1.55}html[data-current-path^=\"/api-reference\"] #content-area h1{font-size:24px;line-height:1.3}html[data-current-path^=\"/api-reference\"] #content-area h2{font-size:18px;line-height:1.3}html[data-current-path^=\"/api-reference\"] #content-area h3{font-size:15px;line-height:1.4}mdx-content svg text[fill]{color:unset}mdx-content svg{border-radius:12px;box-shadow:0 1px 6px rgba(0,0,0,.06);border:1px solid #e2e8f0}html{scroll-behavior:smooth}"}],"page":{"pagePath":"api-reference/agents/register-agent","slug":"/api-reference/agents/register-agent","pageMetadata":{"title":"Register Agent","description":"Create or update an agent instance. Registration is policy-gated based on the your organizations's `policy_mode`:\n- **open** (default) — Any agent type is auto-admitted. The type is added to the\n tenant's allow-list automatically.\n\n- **allow-list** — Only pre-approved agent types can register. Returns `403` if\n the type is not in the tenant's allow-list. Use `/agents/allow_type` to add it.\n\n- **audit** — All types can register, but a `registration_flagged` event is\n emitted for admin review.\n\nAuto-creates the agent-type on first registration. Tool declarations and optional MCP server configs are persisted. Requires a valid JWT Bearer token.\n\n**Deployment mode** — `deployment_mode` selects the transport the mesh uses for every dispatch sent to this instance:\n\n- `connected` (default) — the agent dials `connect_url` (returned in\n the response) over WebSocket and keeps the connection open; the\n mesh pushes dispatches down that socket. The agent-card probe is\n skipped. `url` must be omitted.\n\n- `hosted` — the agent exposes a public A2A HTTP surface at `url`.\n The gateway probes `GET {url}/.well-known/agent-card.json` on\n admission; if the probe fails the registration is rejected with\n `502`.\n\n\nIf `deployment_mode` is omitted, the server infers `hosted` when `url` is present and `connected` otherwise.\n\nRe-registering an existing `instance_id` with a different `deployment_mode` is rejected with `409 DEPLOYMENT_MODE_MISMATCH` — deregister first and re-register, or create a new instance.\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /agents/register","href":"/api-reference/agents/register-agent","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n li: \"li\",\n p: \"p\",\n strong: \"strong\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Create or update an agent instance. Registration is policy-gated based on the your organizations’s \", _jsx(_components.code, {\n children: \"policy_mode\"\n }), \":\"]\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"open\"\n }), \" (default) — Any agent type is auto-admitted. The type is added to the\\ntenant’s allow-list automatically.\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"allow-list\"\n }), \" — Only pre-approved agent types can register. Returns \", _jsx(_components.code, {\n children: \"403\"\n }), \" if\\nthe type is not in the tenant’s allow-list. Use \", _jsx(_components.code, {\n children: \"/agents/allow_type\"\n }), \" to add it.\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"audit\"\n }), \" — All types can register, but a \", _jsx(_components.code, {\n children: \"registration_flagged\"\n }), \" event is\\nemitted for admin review.\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsx(_components.p, {\n children: \"Auto-creates the agent-type on first registration. Tool declarations and optional MCP server configs are persisted. Requires a valid JWT Bearer token.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Deployment mode\"\n }), \" — \", _jsx(_components.code, {\n children: \"deployment_mode\"\n }), \" selects the transport the mesh uses for every dispatch sent to this instance:\"]\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.code, {\n children: \"connected\"\n }), \" (default) — the agent dials \", _jsx(_components.code, {\n children: \"connect_url\"\n }), \" (returned in\\nthe response) over WebSocket and keeps the connection open; the\\nmesh pushes dispatches down that socket. The agent-card probe is\\nskipped. \", _jsx(_components.code, {\n children: \"url\"\n }), \" must be omitted.\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.code, {\n children: \"hosted\"\n }), \" — the agent exposes a public A2A HTTP surface at \", _jsx(_components.code, {\n children: \"url\"\n }), \".\\nThe gateway probes \", _jsx(_components.code, {\n children: \"GET {url}/.well-known/agent-card.json\"\n }), \" on\\nadmission; if the probe fails the registration is rejected with\\n\", _jsx(_components.code, {\n children: \"502\"\n }), \".\"]\n }), \"\\n\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"If \", _jsx(_components.code, {\n children: \"deployment_mode\"\n }), \" is omitted, the server infers \", _jsx(_components.code, {\n children: \"hosted\"\n }), \" when \", _jsx(_components.code, {\n children: \"url\"\n }), \" is present and \", _jsx(_components.code, {\n children: \"connected\"\n }), \" otherwise.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Re-registering an existing \", _jsx(_components.code, {\n children: \"instance_id\"\n }), \" with a different \", _jsx(_components.code, {\n children: \"deployment_mode\"\n }), \" is rejected with \", _jsx(_components.code, {\n children: \"409 DEPLOYMENT_MODE_MISMATCH\"\n }), \" — deregister first and re-register, or create a new instance.\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Register Agent","description":"Create or update an agent instance. Registration is policy-gated based on the your organizations's `policy_mode`:\n- **open** (default) — Any agent type is auto-admitted. The type is added to the\n tenant's allow-list automatically.\n\n- **allow-list** — Only pre-approved agent types can register. Returns `403` if\n the type is not in the tenant's allow-list. Use `/agents/allow_type` to add it.\n\n- **audit** — All types can register, but a `registration_flagged` event is\n emitted for admin review.\n\nAuto-creates the agent-type on first registration. Tool declarations and optional MCP server configs are persisted. Requires a valid JWT Bearer token.\n\n**Deployment mode** — `deployment_mode` selects the transport the mesh uses for every dispatch sent to this instance:\n\n- `connected` (default) — the agent dials `connect_url` (returned in\n the response) over WebSocket and keeps the connection open; the\n mesh pushes dispatches down that socket. The agent-card probe is\n skipped. `url` must be omitted.\n\n- `hosted` — the agent exposes a public A2A HTTP surface at `url`.\n The gateway probes `GET {url}/.well-known/agent-card.json` on\n admission; if the probe fails the registration is rejected with\n `502`.\n\n\nIf `deployment_mode` is omitted, the server infers `hosted` when `url` is present and `connected` otherwise.\n\nRe-registering an existing `instance_id` with a different `deployment_mode` is rejected with `409 DEPLOYMENT_MODE_MISMATCH` — deregister first and re-register, or create a new instance.\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /agents/register","href":"/api-reference/agents/register-agent","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"agents_register","summary":"Register Agent","description":"Create or update an agent instance. Registration is policy-gated based on the your organizations's `policy_mode`:\n- **open** (default) — Any agent type is auto-admitted. The type is added to the\n tenant's allow-list automatically.\n\n- **allow-list** — Only pre-approved agent types can register. Returns `403` if\n the type is not in the tenant's allow-list. Use `/agents/allow_type` to add it.\n\n- **audit** — All types can register, but a `registration_flagged` event is\n emitted for admin review.\n\nAuto-creates the agent-type on first registration. Tool declarations and optional MCP server configs are persisted. Requires a valid JWT Bearer token.\n\n**Deployment mode** — `deployment_mode` selects the transport the mesh uses for every dispatch sent to this instance:\n\n- `connected` (default) — the agent dials `connect_url` (returned in\n the response) over WebSocket and keeps the connection open; the\n mesh pushes dispatches down that socket. The agent-card probe is\n skipped. `url` must be omitted.\n\n- `hosted` — the agent exposes a public A2A HTTP surface at `url`.\n The gateway probes `GET {url}/.well-known/agent-card.json` on\n admission; if the probe fails the registration is rejected with\n `502`.\n\n\nIf `deployment_mode` is omitted, the server infers `hosted` when `url` is present and `connected` otherwise.\n\nRe-registering an existing `instance_id` with a different `deployment_mode` is rejected with `409 DEPLOYMENT_MODE_MISMATCH` — deregister first and re-register, or create a new instance.\n","tags":["Agents"],"requestBody":"963f4fe3-4a82-4aa0-815e-a664385c858a","responses":{"200":"1e52c575-23d2-4f90-bda7-34ffda5ac296","400":"48df6211-c247-48db-a276-d5e8cfb5322e","401":"f48f02a6-5306-4913-8f51-26bbd2c0fd89","403":"baae509f-0839-4b0d-ada5-b5d050a9e8eb","404":"4c88c7c4-f4d1-40bc-86d4-952a24ca252c","408":"6ec8213d-6193-4223-9b9b-680a3c524c38","409":"b325ae6b-3a92-4bc6-b663-fc6f97fff9fd","500":"53b68788-0d57-489f-9461-acac7104f730","502":"5b19ab0a-e22d-4bea-8d2b-9a029049c617","503":"d9b5e7d1-940d-4650-b107-640db81e4274"},"method":"post","type":"path","servers":["23c8e2ad-07ab-4135-be8c-1e87165fd5ec","50d8a590-0451-4c5b-9ac8-40df9dd6b53e"],"security":["cecde30b-8822-4598-9468-5ad0203a2961"],"path":"/agents/register","baseUrlOptions":["https://api.svantic.com","https://mesh.svantic.com"],"title":"Register Agent","codeSamples":[],"requestExampleLanguages":["bash","javascript","python","go"],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["agent_type","instance_id"],"properties":{"agent_type":{"type":"string","description":"Logical agent type (e.g. \"navigator\", \"transcript-link\").","isRequired":true,"uniqueKey":"agent_type","typeLabel":"string"},"instance_id":{"type":"string","description":"Unique instance id (caller-supplied; upserted per instance).","isRequired":true,"uniqueKey":"instance_id","typeLabel":"string"},"url":{"oneOf":[{"type":"string","format":"uri","description":"Base URL where the agent serves its A2A surface. Required for `hosted` mode; must be omitted or `null` for `connected` mode. Switching the deployment_mode for an existing instance is rejected with `409 DEPLOYMENT_MODE_MISMATCH`.\n","uniqueKey":"url.oneOf.0","typeLabel":"string\u003curi>"},{"type":"null","format":"uri","description":"Base URL where the agent serves its A2A surface. Required for `hosted` mode; must be omitted or `null` for `connected` mode. Switching the deployment_mode for an existing instance is rejected with `409 DEPLOYMENT_MODE_MISMATCH`.\n","uniqueKey":"url.oneOf.1","typeLabel":"null"}],"uniqueKey":"url","typeLabel":"string\u003curi> | null"},"deployment_mode":{"type":"string","enum":["hosted","connected"],"default":"connected","description":"How the mesh reaches this agent for dispatches.\n- `connected` (default) — mesh pushes frames down an\n agent-initiated WebSocket. Works anywhere outbound HTTPS/WSS\n reaches, including behind firewalls, NATs, laptops, and CI.\n- `hosted` — mesh POSTs to `url` over HTTPS. Opt in when your\n agent already runs as a public HTTP service.\n\nIf the field is omitted, the server infers `hosted` when `url` is present and `connected` otherwise.\n","uniqueKey":"deployment_mode","typeLabel":"enum\u003cstring>"},"dispatch_auth":{"type":"object","description":"How the mesh authenticates each dispatch it sends to the agent.\nPer-dispatch authentication applies to **both** `hosted` (HTTPS callback) and `connected` (WebSocket) agents. The envelope is attached to every outbound dispatch payload and verified by the SDK on the agent side via `verify_dispatch_auth`.\nEnforcement is gated by the mesh's `SVANTIC_DISPATCH_AUTH_ENABLED` flag. When the flag is on, the mesh refuses to send unauthenticated dispatches; when off, the mesh skips minting envelopes and the SDK skips verification. Both sides must agree on the flag.\nDefaults to `svantic_jwt` when omitted.\nSee the internal spec `platform/docs/specs/dispatch_auth.md` for the wire format, error taxonomy, and test ownership.\n","required":["type"],"properties":{"type":{"type":"string","enum":["svantic_jwt","shared_secret","mtls"],"description":"Authentication scheme the mesh mints on each dispatch.\n- `svantic_jwt` (default) — mesh mints a short-lived HS256 JWT\n signed with `SIGNING_SECRET`. The SDK verifies against the\n same secret. Rotation = rotate the secret; no per-agent\n state.\n- `shared_secret` — mesh looks up a tenant-supplied raw secret\n by `credentials_ref`, attaches it to the envelope, and the\n SDK compares against its local copy. Use when the agent\n must prove possession of a secret the tenant minted\n themselves (e.g. the agent forwards dispatches to a legacy\n system that already speaks a shared-secret protocol).\n- `mtls` — reserved, not implemented.\n","isRequired":true,"uniqueKey":"dispatch_auth.type","typeLabel":"enum\u003cstring>"},"credentials_ref":{"oneOf":[{"type":"string","default":null,"description":"Opaque vault reference (`vault://…` URI) to the raw secret.\nRequired when `type` is `shared_secret`; must be omitted when `type` is `svantic_jwt` or `mtls`. The raw secret itself is supplied only at registration time via `dispatch_auth_shared_secret` (never echoed in responses and never reachable over the public API once stored).\n","uniqueKey":"dispatch_auth.credentials_ref.oneOf.0","typeLabel":"string"},{"type":"null","default":null,"description":"Opaque vault reference (`vault://…` URI) to the raw secret.\nRequired when `type` is `shared_secret`; must be omitted when `type` is `svantic_jwt` or `mtls`. The raw secret itself is supplied only at registration time via `dispatch_auth_shared_secret` (never echoed in responses and never reachable over the public API once stored).\n","uniqueKey":"dispatch_auth.credentials_ref.oneOf.1","typeLabel":"null"}],"uniqueKey":"dispatch_auth.credentials_ref","typeLabel":"string | null"}},"uniqueKey":"dispatch_auth","typeLabel":"object"},"dispatch_auth_shared_secret":{"type":"string","minLength":1,"maxLength":4096,"writeOnly":true,"description":"Raw secret bytes for `dispatch_auth.type=shared_secret`. Required on register when and only when `dispatch_auth.type` is `shared_secret`; rejected with 400 in any other case. The gateway encrypts this value under the tenant key and stores the ciphertext in `agent_instances.dispatch_auth_secret_ciphertext`; the raw value is never echoed in any response. Rotate by re-registering with a new `credentials_ref` and a fresh secret.\n","uniqueKey":"dispatch_auth_shared_secret","typeLabel":"string"},"agent_card":{"type":"object","additionalProperties":true,"default":{},"description":"Optional agent card JSON persisted with the instance.","uniqueKey":"agent_card","typeLabel":"object"},"tools":{"type":"array","items":{"type":"object","description":"A dynamic tool registered by an agent instance at runtime. Tools are instance-specific capabilities that may vary across instances of the same agent type.","required":["name"],"properties":{"name":{"type":"string","description":"Unique identifier for the tool within the instance","example":"execute_command","isRequired":true,"uniqueKey":"tools.items.[INDEX].name","typeLabel":"string"},"description":{"type":"string","description":"Human-readable description of what the tool does","example":"Executes a shell command in the terminal","uniqueKey":"tools.items.[INDEX].description","typeLabel":"string"},"inputSchema":{"type":"object","description":"JSON Schema defining the tool's input parameters","additionalProperties":true,"example":{"type":"object","properties":{"command":{"type":"string","description":"The command to execute"}},"required":["command"]},"uniqueKey":"tools.items.[INDEX].inputSchema","typeLabel":"object"}},"uniqueKey":"tools.items.[INDEX]","typeLabel":"object"},"default":[],"description":"Dynamic tool declarations registered with this instance. These are instance-specific capabilities that may vary across instances of the same agent type.","uniqueKey":"tools","typeLabel":"object[]"},"mcp_servers":{"type":"object","additionalProperties":{"type":"object","required":["command"],"properties":{"command":{"type":"string","isRequired":true,"uniqueKey":"mcp_servers.additionalProperties.command","typeLabel":"string"},"args":{"type":"array","items":{"type":"string","uniqueKey":"mcp_servers.additionalProperties.args.items.[INDEX]","typeLabel":"string"},"default":[],"uniqueKey":"mcp_servers.additionalProperties.args","typeLabel":"string[]"}},"uniqueKey":"mcp_servers.additionalProperties","typeLabel":"object"},"description":"Optional MCP server configs applied to the agent type for this tenant.","uniqueKey":"mcp_servers","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"sample":{"title":"sample","value":{"agent_type":"navigator","instance_id":"navigator-prod-01","deployment_mode":"connected","dispatch_auth":{"type":"svantic_jwt"},"agent_card":{"example_key":"example_value"},"tools":[{"example_key":"example_value"}],"mcp_servers":{"sample_key":{"command":"string","args":["string"]}}}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"1e52c575-23d2-4f90-bda7-34ffda5ac296":{"description":"Agent registered successfully.","content":{"application/json":{"schema":{"type":"object","description":"Registration confirmation. The `tenant_id` is derived from the JWT.\nConnected-mode agents must dial the returned `connect_url` over WebSocket immediately and keep the connection open; that socket is the only path dispatches reach the agent on. Hosted-mode agents can ignore `connect_url` (it is `null`).\n","required":["ok","tenant_id","instance_id","deployment_mode"],"properties":{"ok":{"type":"boolean","isRequired":true,"uniqueKey":"ok","typeLabel":"boolean"},"tenant_id":{"type":"string","description":"Tenant derived from the JWT Bearer token.","isRequired":true,"uniqueKey":"tenant_id","typeLabel":"string"},"instance_id":{"type":"string","description":"Echo of the submitted instance_id, confirming the upsert target.","isRequired":true,"uniqueKey":"instance_id","typeLabel":"string"},"deployment_mode":{"type":"string","enum":["hosted","connected"],"description":"The effective deployment mode for this instance after admission. Usually matches the request, but the server may reject a switch attempt with `409 DEPLOYMENT_MODE_MISMATCH` (see the register path spec), so callers should always trust this value.\n","isRequired":true,"uniqueKey":"deployment_mode","typeLabel":"enum\u003cstring>"},"connect_url":{"oneOf":[{"type":"string","format":"uri","description":"Populated only for `connected` mode: the WebSocket endpoint the SDK must dial to complete registration. Always includes the `instance_id` as a query parameter; authenticate with the same JWT used for the register call. `null` for `hosted` mode.\n","uniqueKey":"connect_url.oneOf.0","typeLabel":"string\u003curi>"},{"type":"null","format":"uri","description":"Populated only for `connected` mode: the WebSocket endpoint the SDK must dial to complete registration. Always includes the `instance_id` as a query parameter; authenticate with the same JWT used for the register call. `null` for `hosted` mode.\n","uniqueKey":"connect_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"connect_url","typeLabel":"string\u003curi> | null"},"svantic_jwks_url":{"oneOf":[{"type":"string","format":"uri","description":"Public JWKS endpoint for `dispatch_auth.type = svantic_jwt` validation. `null` when the agent declared a non-JWT auth scheme. Hosted agents that rely on the default scheme should cache this JWKS with a short TTL (max 10 minutes) to catch signing-key rotations.\n","uniqueKey":"svantic_jwks_url.oneOf.0","typeLabel":"string\u003curi>"},{"type":"null","format":"uri","description":"Public JWKS endpoint for `dispatch_auth.type = svantic_jwt` validation. `null` when the agent declared a non-JWT auth scheme. Hosted agents that rely on the default scheme should cache this JWKS with a short TTL (max 10 minutes) to catch signing-key rotations.\n","uniqueKey":"svantic_jwks_url.oneOf.1","typeLabel":"null"}],"uniqueKey":"svantic_jwks_url","typeLabel":"string\u003curi> | null"},"dispatch_auth":{"type":"object","description":"How the mesh authenticates each dispatch it sends to the agent.\nPer-dispatch authentication applies to **both** `hosted` (HTTPS callback) and `connected` (WebSocket) agents. The envelope is attached to every outbound dispatch payload and verified by the SDK on the agent side via `verify_dispatch_auth`.\nEnforcement is gated by the mesh's `SVANTIC_DISPATCH_AUTH_ENABLED` flag. When the flag is on, the mesh refuses to send unauthenticated dispatches; when off, the mesh skips minting envelopes and the SDK skips verification. Both sides must agree on the flag.\nDefaults to `svantic_jwt` when omitted.\nSee the internal spec `platform/docs/specs/dispatch_auth.md` for the wire format, error taxonomy, and test ownership.\n","required":["type"],"properties":{"type":{"type":"string","enum":["svantic_jwt","shared_secret","mtls"],"description":"Authentication scheme the mesh mints on each dispatch.\n- `svantic_jwt` (default) — mesh mints a short-lived HS256 JWT\n signed with `SIGNING_SECRET`. The SDK verifies against the\n same secret. Rotation = rotate the secret; no per-agent\n state.\n- `shared_secret` — mesh looks up a tenant-supplied raw secret\n by `credentials_ref`, attaches it to the envelope, and the\n SDK compares against its local copy. Use when the agent\n must prove possession of a secret the tenant minted\n themselves (e.g. the agent forwards dispatches to a legacy\n system that already speaks a shared-secret protocol).\n- `mtls` — reserved, not implemented.\n","isRequired":true,"uniqueKey":"dispatch_auth.type","typeLabel":"enum\u003cstring>"},"credentials_ref":{"oneOf":[{"type":"string","default":null,"description":"Opaque vault reference (`vault://…` URI) to the raw secret.\nRequired when `type` is `shared_secret`; must be omitted when `type` is `svantic_jwt` or `mtls`. The raw secret itself is supplied only at registration time via `dispatch_auth_shared_secret` (never echoed in responses and never reachable over the public API once stored).\n","uniqueKey":"dispatch_auth.credentials_ref.oneOf.0","typeLabel":"string"},{"type":"null","default":null,"description":"Opaque vault reference (`vault://…` URI) to the raw secret.\nRequired when `type` is `shared_secret`; must be omitted when `type` is `svantic_jwt` or `mtls`. The raw secret itself is supplied only at registration time via `dispatch_auth_shared_secret` (never echoed in responses and never reachable over the public API once stored).\n","uniqueKey":"dispatch_auth.credentials_ref.oneOf.1","typeLabel":"null"}],"uniqueKey":"dispatch_auth.credentials_ref","typeLabel":"string | null"}},"uniqueKey":"dispatch_auth","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"examples":{"sample":{"title":"sample","value":{"ok":true,"tenant_id":"tenant_abc123","instance_id":"navigator-prod-01","deployment_mode":"connected","connect_url":"wss://api.svantic.com/agents/connect","svantic_jwks_url":"https://api.svantic.com/.well-known/jwks.json","dispatch_auth":{"type":"svantic_jwt"}}}},"exampleType":"examples"}},"exampleType":"examples"},"48df6211-c247-48db-a276-d5e8cfb5322e":{"description":"Malformed JSON, failed request validation, or missing required fields in the body (gateway returns before the handler runs in some cases).\n","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable error message.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Machine-readable error code, when available.","uniqueKey":"code","typeLabel":"string"},"request_id":{"type":"string","description":"Correlation id for support — present on some gateway catch-all responses (e.g. unmatched route, unhandled error).\n","uniqueKey":"request_id","typeLabel":"string"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 time when the error was produced, when returned by the gateway.","uniqueKey":"timestamp","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"","typeLabel":"object"},"examples":{"sample":{"title":"sample","value":{"error":"Invalid request body","code":"BAD_REQUEST"}}},"exampleType":"examples"}},"exampleType":"examples"},"f48f02a6-5306-4913-8f51-26bbd2c0fd89":{"description":"Authentication failed — missing or invalid credentials.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable error message.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Machine-readable error code, when available.","uniqueKey":"code","typeLabel":"string"},"request_id":{"type":"string","description":"Correlation id for support — present on some gateway catch-all responses (e.g. unmatched route, unhandled error).\n","uniqueKey":"request_id","typeLabel":"string"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 time when the error was produced, when returned by the gateway.","uniqueKey":"timestamp","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"","typeLabel":"object"},"examples":{"sample":{"title":"sample","value":{"error":"Invalid or expired token","code":"unauthorized"}}},"exampleType":"examples"}},"exampleType":"examples"},"baae509f-0839-4b0d-ada5-b5d050a9e8eb":{"description":"Insufficient scope — JWT does not carry the required scope for this operation.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable error message.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Machine-readable error code, when available.","uniqueKey":"code","typeLabel":"string"},"request_id":{"type":"string","description":"Correlation id for support — present on some gateway catch-all responses (e.g. unmatched route, unhandled error).\n","uniqueKey":"request_id","typeLabel":"string"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 time when the error was produced, when returned by the gateway.","uniqueKey":"timestamp","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"","typeLabel":"object"},"examples":{"sample":{"title":"sample","value":{"error":"JWT does not include the required scope for this operation","code":"forbidden"}}},"exampleType":"examples"}},"exampleType":"examples"},"4c88c7c4-f4d1-40bc-86d4-952a24ca252c":{"description":"Unknown resource identifier, tenant mismatch for the requested resource, or (for unmatched HTTP routes) the gateway catch-all `NOT_FOUND` envelope.\n","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable error message.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Machine-readable error code, when available.","uniqueKey":"code","typeLabel":"string"},"request_id":{"type":"string","description":"Correlation id for support — present on some gateway catch-all responses (e.g. unmatched route, unhandled error).\n","uniqueKey":"request_id","typeLabel":"string"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 time when the error was produced, when returned by the gateway.","uniqueKey":"timestamp","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"","typeLabel":"object"},"examples":{"sample":{"title":"sample","value":{"error":"Not found","code":"NOT_FOUND","request_id":"req_01EXAMPLE","timestamp":"2026-03-31T12:00:00.000Z"}}},"exampleType":"examples"}},"exampleType":"examples"},"6ec8213d-6193-4223-9b9b-680a3c524c38":{"description":"Request exceeded the gateway timeout window (HTTP 408).\n","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable error message.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Machine-readable error code, when available.","uniqueKey":"code","typeLabel":"string"},"request_id":{"type":"string","description":"Correlation id for support — present on some gateway catch-all responses (e.g. unmatched route, unhandled error).\n","uniqueKey":"request_id","typeLabel":"string"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 time when the error was produced, when returned by the gateway.","uniqueKey":"timestamp","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"","typeLabel":"object"},"examples":{"sample":{"title":"sample","value":{"error":"Request timeout","code":"REQUEST_TIMEOUT"}}},"exampleType":"examples"}},"exampleType":"examples"},"b325ae6b-3a92-4bc6-b663-fc6f97fff9fd":{"description":"`DEPLOYMENT_MODE_MISMATCH` — an instance with this `instance_id` already exists under a different `deployment_mode`. Deregister and re-register, or use a new `instance_id`.\n","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable error message.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Machine-readable error code, when available.","uniqueKey":"code","typeLabel":"string"},"request_id":{"type":"string","description":"Correlation id for support — present on some gateway catch-all responses (e.g. unmatched route, unhandled error).\n","uniqueKey":"request_id","typeLabel":"string"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 time when the error was produced, when returned by the gateway.","uniqueKey":"timestamp","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"error":"\u003cstring>","code":"\u003cstring>","request_id":"\u003cstring>","timestamp":"2023-11-07T05:31:56Z"}}},"exampleType":"generated"}},"exampleType":"generated"},"53b68788-0d57-489f-9461-acac7104f730":{"description":"Unhandled exception in the gateway — `INTERNAL_ERROR` with optional `request_id` and `timestamp` for correlation.\n","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable error message.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Machine-readable error code, when available.","uniqueKey":"code","typeLabel":"string"},"request_id":{"type":"string","description":"Correlation id for support — present on some gateway catch-all responses (e.g. unmatched route, unhandled error).\n","uniqueKey":"request_id","typeLabel":"string"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 time when the error was produced, when returned by the gateway.","uniqueKey":"timestamp","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"","typeLabel":"object"},"examples":{"sample":{"title":"sample","value":{"error":"Internal server error","code":"INTERNAL_ERROR","request_id":"req_01EXAMPLE","timestamp":"2026-03-31T12:00:00.000Z"}}},"exampleType":"examples"}},"exampleType":"examples"},"5b19ab0a-e22d-4bea-8d2b-9a029049c617":{"description":"Gateway received an invalid or failed response from an upstream dependency (MCP Servers, Mesh, Gateway, etc.), or could not complete a proxied request.\n","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable error message.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Machine-readable error code, when available.","uniqueKey":"code","typeLabel":"string"},"request_id":{"type":"string","description":"Correlation id for support — present on some gateway catch-all responses (e.g. unmatched route, unhandled error).\n","uniqueKey":"request_id","typeLabel":"string"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 time when the error was produced, when returned by the gateway.","uniqueKey":"timestamp","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"","typeLabel":"object"},"examples":{"sample":{"title":"sample","value":{"error":"Bad gateway","code":"BAD_GATEWAY"}}},"exampleType":"examples"}},"exampleType":"examples"},"d9b5e7d1-940d-4650-b107-640db81e4274":{"description":"Temporary failure — e.g. JWT signing not configured (`MESH_SECRET` missing on token route), mesh or upstream unreachable, or dependency unavailable.\n","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"string","description":"Human-readable error message.","isRequired":true,"uniqueKey":"error","typeLabel":"string"},"code":{"type":"string","description":"Machine-readable error code, when available.","uniqueKey":"code","typeLabel":"string"},"request_id":{"type":"string","description":"Correlation id for support — present on some gateway catch-all responses (e.g. unmatched route, unhandled error).\n","uniqueKey":"request_id","typeLabel":"string"},"timestamp":{"type":"string","format":"date-time","description":"ISO 8601 time when the error was produced, when returned by the gateway.","uniqueKey":"timestamp","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"","typeLabel":"object"},"examples":{"sample":{"title":"sample","value":{"error":"Service temporarily unavailable","code":"SERVICE_UNAVAILABLE"}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"cecde30b-8822-4598-9468-5ad0203a2961":{"bearerAuth":{"$ref":"d88ee237-81d8-4cdd-a44b-4a75927b9d73","scopes":[]}}},"servers":{"23c8e2ad-07ab-4135-be8c-1e87165fd5ec":{"url":"https://api.svantic.com","description":"Production"},"50d8a590-0451-4c5b-9ac8-40df9dd6b53e":{"url":"https://mesh.svantic.com","description":"Mesh runtime"}}},"originalFileLocation":"api-reference/openapi-bundled.yaml"},"subdomain":"svantic","siteName":"Svantic","title":"Register Agent - Svantic","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-04-27T14:39:56.677Z","originalFileLocation":"api-reference/agents/register-agent.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=\"light\";if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"light\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Create or update an agent instance. Registration is policy-gated based on the your organizations\u0026#x27;s policy_mode: - open (default) — Any agent type is auto-admitted. The type is added to the tenant\u0026#x27;s allow-list automatically. - allow-list — Only pre-approved agent types can register. Returns 403 if the type is not in the tenant\u0026#x27;s allow-list. Use /agents/allow_type to add it. - audit — All types can register, but a registration_flagged event is emitted for admin review. Auto-creates the agent-type on first registration. Tool declarations and optional MCP server configs are persisted. Requires a valid JWT Bearer token. Deployment mode — deployment_mode selects the transport the mesh uses for every dispatch sent to this instance: - connected (default) — the agent dials connect_url (returned in the response) over WebSocket and keeps the connection open; the mesh pushes dispatches down that socket. The agent-card probe is skipped. url must be omitted. - hosted — the agent exposes a public A2A HTTP surface at url. The gateway probes GET {url}/.well-known/agent-card.json on admission; if the probe fails the registration is rejected with 502. If deployment_mode is omitted, the server infers hosted when url is present and connected otherwise. Re-registering an existing instance_id with a different deployment_mode is rejected with 409 DEPLOYMENT_MODE_MISMATCH — deregister first and re-register, or create a new instance.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Svantic\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/svantic/RPjRh-i-AWgBqfl_/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/svantic/RPjRh-i-AWgBqfl_/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/svantic/RPjRh-i-AWgBqfl_/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/svantic/RPjRh-i-AWgBqfl_/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/svantic/RPjRh-i-AWgBqfl_/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/svantic/RPjRh-i-AWgBqfl_/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/svantic/RPjRh-i-AWgBqfl_/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/svantic/RPjRh-i-AWgBqfl_/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/svantic/RPjRh-i-AWgBqfl_/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Register Agent - Svantic\">\u003cmeta data-mint-head property=\"og:description\" content=\"Create or update an agent instance. Registration is policy-gated based on the your organizations\u0026#x27;s policy_mode: - open (default) — Any agent type is auto-admitted. The type is added to the tenant\u0026#x27;s allow-list automatically. - allow-list — Only pre-approved agent types can register. Returns 403 if the type is not in the tenant\u0026#x27;s allow-list. Use /agents/allow_type to add it. - audit — All types can register, but a registration_flagged event is emitted for admin review. Auto-creates the agent-type on first registration. Tool declarations and optional MCP server configs are persisted. Requires a valid JWT Bearer token. Deployment mode — deployment_mode selects the transport the mesh uses for every dispatch sent to this instance: - connected (default) — the agent dials connect_url (returned in the response) over WebSocket and keeps the connection open; the mesh pushes dispatches down that socket. The agent-card probe is skipped. url must be omitted. - hosted — the agent exposes a public A2A HTTP surface at url. The gateway probes GET {url}/.well-known/agent-card.json on admission; if the probe fails the registration is rejected with 502. If deployment_mode is omitted, the server infers hosted when url is present and connected otherwise. Re-registering an existing instance_id with a different deployment_mode is rejected with 409 DEPLOYMENT_MODE_MISMATCH — deregister first and re-register, or create a new instance.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Svantic\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.svantic.com/api-reference/agents/register-agent\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://svantic.mintlify.app/_mintlify/api/og/v2?division=Agents\u0026amp;title=Register+Agent\u0026amp;description=Create+or+update+an+agent+instance.+Registration+is+policy-gated+based+on+the+your+organizations%27s+%60policy_mode%60%3A%0A-+**open**+%28default%29+%E2%80%94+Any+agent+type+is+auto-\u0026amp;theme=2470158210da7f4215f78abb\u0026amp;signature=768ca8a81b5c0db460f5938541254a6a798a0a9dcfa33c9cd59e635ce4314335\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Register Agent - Svantic\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Create or update an agent instance. Registration is policy-gated based on the your organizations\u0026#x27;s policy_mode: - open (default) — Any agent type is auto-admitted. The type is added to the tenant\u0026#x27;s allow-list automatically. - allow-list — Only pre-approved agent types can register. Returns 403 if the type is not in the tenant\u0026#x27;s allow-list. Use /agents/allow_type to add it. - audit — All types can register, but a registration_flagged event is emitted for admin review. Auto-creates the agent-type on first registration. Tool declarations and optional MCP server configs are persisted. Requires a valid JWT Bearer token. Deployment mode — deployment_mode selects the transport the mesh uses for every dispatch sent to this instance: - connected (default) — the agent dials connect_url (returned in the response) over WebSocket and keeps the connection open; the mesh pushes dispatches down that socket. The agent-card probe is skipped. url must be omitted. - hosted — the agent exposes a public A2A HTTP surface at url. The gateway probes GET {url}/.well-known/agent-card.json on admission; if the probe fails the registration is rejected with 502. If deployment_mode is omitted, the server infers hosted when url is present and connected otherwise. Re-registering an existing instance_id with a different deployment_mode is rejected with 409 DEPLOYMENT_MODE_MISMATCH — deregister first and re-register, or create a new instance.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://svantic.mintlify.app/_mintlify/api/og/v2?division=Agents\u0026amp;title=Register+Agent\u0026amp;description=Create+or+update+an+agent+instance.+Registration+is+policy-gated+based+on+the+your+organizations%27s+%60policy_mode%60%3A%0A-+**open**+%28default%29+%E2%80%94+Any+agent+type+is+auto-\u0026amp;theme=2470158210da7f4215f78abb\u0026amp;signature=768ca8a81b5c0db460f5938541254a6a798a0a9dcfa33c9cd59e635ce4314335\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/svantic/RPjRh-i-AWgBqfl_/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Svantic\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#7C3AED\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.svantic.com/api-reference/agents/register-agent\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/agents/register-agent.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.svantic.com/#organization\",\"name\":\"Svantic\",\"url\":\"https://docs.svantic.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/svantic/DQEVJ_RnVW5_l6gu/images/logo_large.png?fit=max\u0026auto=format\u0026n=DQEVJ_RnVW5_l6gu\u0026q=85\u0026s=c23d1b1fd831f2dc24e9b758c0e4f930\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.svantic.com#website\",\"name\":\"Svantic\",\"url\":\"https://docs.svantic.com\",\"publisher\":{\"@id\":\"https://docs.svantic.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.svantic.com/api-reference/agents/register-agent#webpage\",\"url\":\"https://docs.svantic.com/api-reference/agents/register-agent\",\"name\":\"Register Agent\",\"description\":\"Create or update an agent instance. Registration is policy-gated based on the your organizations's policy_mode: - open (default) — Any agent type is auto-admitted. The type is added to the tenant's allow-list automatically. - allow-list — Only pre-approved agent types can register. Returns 403 if the type is not in the tenant's allow-list. Use /agents/allow_type to add it. - audit — All types can register, but a registration_flagged event is emitted for admin review. Auto-creates the agent-type on first registration. Tool declarations and optional MCP server configs are persisted. Requires a valid JWT Bearer token. Deployment mode — deployment_mode selects the transport the mesh uses for every dispatch sent to this instance: - connected (default) — the agent dials connect_url (returned in the response) over WebSocket and keeps the connection open; the mesh pushes dispatches down that socket. The agent-card probe is skipped. url must be omitted. - hosted — the agent exposes a public A2A HTTP surface at url. The gateway probes GET {url}/.well-known/agent-card.json on admission; if the probe fails the registration is rejected with 502. If deployment_mode is omitted, the server infers hosted when url is present and connected otherwise. Re-registering an existing instance_id with a different deployment_mode is rejected with 409 DEPLOYMENT_MODE_MISMATCH — deregister first and re-register, or create a new instance.\",\"dateModified\":\"2026-04-27T14:39:56.677Z\",\"isPartOf\":{\"@id\":\"https://docs.svantic.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.svantic.com/api-reference/agents/register-agent#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.svantic.com/api-reference/agents/register-agent#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"REST API\",\"item\":\"https://docs.svantic.com/api-reference/credentials-\u0026-access/get-token\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Register Agent\",\"item\":\"https://docs.svantic.com/api-reference/agents/register-agent\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.svantic.com/api-reference/agents/register-agent#apireference\",\"headline\":\"Register Agent\",\"name\":\"Register Agent\",\"description\":\"Create or update an agent instance. Registration is policy-gated based on the your organizations's policy_mode: - open (default) — Any agent type is auto-admitted. The type is added to the tenant's allow-list automatically. - allow-list — Only pre-approved agent types can register. Returns 403 if the type is not in the tenant's allow-list. Use /agents/allow_type to add it. - audit — All types can register, but a registration_flagged event is emitted for admin review. Auto-creates the agent-type on first registration. Tool declarations and optional MCP server configs are persisted. Requires a valid JWT Bearer token. Deployment mode — deployment_mode selects the transport the mesh uses for every dispatch sent to this instance: - connected (default) — the agent dials connect_url (returned in the response) over WebSocket and keeps the connection open; the mesh pushes dispatches down that socket. The agent-card probe is skipped. url must be omitted. - hosted — the agent exposes a public A2A HTTP surface at url. The gateway probes GET {url}/.well-known/agent-card.json on admission; if the probe fails the registration is rejected with 502. If deployment_mode is omitted, the server infers hosted when url is present and connected otherwise. Re-registering an existing instance_id with a different deployment_mode is rejected with 409 DEPLOYMENT_MODE_MISMATCH — deregister first and re-register, or create a new instance.\",\"url\":\"https://docs.svantic.com/api-reference/agents/register-agent\",\"mainEntityOfPage\":{\"@id\":\"https://docs.svantic.com/api-reference/agents/register-agent#webpage\"},\"dateModified\":\"2026-04-27T14:39:56.677Z\",\"publisher\":{\"@id\":\"https://docs.svantic.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.svantic.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Svantic\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Svantic","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/what-is-svantic"}]},{"tab":"SDK","pages":[{"title":"SDK","href":"/sdk"}]},{"tab":"CLI","pages":[{"title":"CLI","href":"/cli-reference"}]},{"tab":"API Reference","groups":[{"group":"REST API","pages":[{"group":"Credentials \u0026 Access","pages":[{"title":"Get Token","description":"Exchanges a credential pair (client_id + client_secret) for a signed JWT. The client_id is a credential_id obtained from `/internal/credentials/create`. Optional expires_in controls the JWT lifetime in seconds (default: 86400 = 24 hours).\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /auth/get_token","href":"/api-reference/credentials-\u0026-access/get-token"}]},{"group":"Agents","pages":[{"title":"Register Agent","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /agents/register","href":"/api-reference/agents/register-agent"},{"title":"Deregister Agent","description":"Remove a previously registered agent instance gracefully. It will not accept any new sessions and close all the existing sessions.","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /agents/deregister","href":"/api-reference/agents/deregister-agent"},{"title":"Agent heartbeat","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /agents/heartbeat","href":"/api-reference/agents/agent-heartbeat"},{"title":"List agent instances","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /agents/get","href":"/api-reference/agents/list-agent-instances"},{"title":"Get agent instance detail","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /agents/get_by_id","href":"/api-reference/agents/get-agent-instance-detail"},{"title":"Get agent connection state","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /agents/get_connection","href":"/api-reference/agents/get-agent-connection-state"},{"title":"Aggregate agent connection counters","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /agents/get_connection_stats","href":"/api-reference/agents/aggregate-agent-connection-counters"},{"title":"Allow Agent Type","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /agents/allow_type","href":"/api-reference/agents/allow-agent-type"},{"title":"Disallow Agent Type","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /agents/disallow_type","href":"/api-reference/agents/disallow-agent-type"},{"title":"Agent card discovery","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml get /.well-known/agent-card.json","href":"/api-reference/agents/agent-card-discovery"}]},{"group":"Messages","pages":[{"title":"Send a message (A2A JSON-RPC)","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /send","href":"/api-reference/messages/send-a-message-a2a-json-rpc"},{"title":"List pending messages (Approval Queue)","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /messages/pending","href":"/api-reference/messages/list-pending-messages-approval-queue"},{"title":"Resolve a pending message","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /messages/{message_id}/resolve","href":"/api-reference/messages/resolve-a-pending-message"},{"title":"List messages for a tenant","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /messages/get","href":"/api-reference/messages/list-messages-for-a-tenant"},{"title":"Get a single message by ID","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /messages/get_by_id","href":"/api-reference/messages/get-a-single-message-by-id"},{"title":"Cancel a running message","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /messages/cancel","href":"/api-reference/messages/cancel-a-running-message"}]},{"group":"Sessions","pages":[{"title":"Interrupt in-flight streams","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /sessions/interrupt","href":"/api-reference/sessions/interrupt-in-flight-streams"},{"title":"Create a new session","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /sessions/init","href":"/api-reference/sessions/create-a-new-session"},{"title":"Close a session","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /sessions/close","href":"/api-reference/sessions/close-a-session"},{"title":"List sessions","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /sessions/get","href":"/api-reference/sessions/list-sessions"},{"title":"Get session detail","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /sessions/get_by_id","href":"/api-reference/sessions/get-session-detail"}]},{"group":"Knowledge Base","pages":[{"title":"List knowledge bases","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /knowledge_base/get","href":"/api-reference/knowledge-base/list-knowledge-bases"},{"title":"Get a single knowledge base","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /knowledge_base/get_by_id","href":"/api-reference/knowledge-base/get-a-single-knowledge-base"},{"title":"Create a knowledge base","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /knowledge_base/new","href":"/api-reference/knowledge-base/create-a-knowledge-base"},{"title":"Update a knowledge base","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /knowledge_base/update","href":"/api-reference/knowledge-base/update-a-knowledge-base"},{"title":"Delete a knowledge base","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /knowledge_base/delete","href":"/api-reference/knowledge-base/delete-a-knowledge-base"},{"title":"Ingest a document","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /knowledge_base/ingest","href":"/api-reference/knowledge-base/ingest-a-document"},{"title":"Semantic search","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /knowledge_base/query","href":"/api-reference/knowledge-base/semantic-search"},{"title":"List ingested sources","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /knowledge_base/get_sources","href":"/api-reference/knowledge-base/list-ingested-sources"},{"title":"Delete a source","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /knowledge_base/delete_source","href":"/api-reference/knowledge-base/delete-a-source"},{"title":"Regenerate embeddings","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /knowledge_base/refresh","href":"/api-reference/knowledge-base/regenerate-embeddings"},{"title":"Knowledge base statistics","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /knowledge_base/get_stats","href":"/api-reference/knowledge-base/knowledge-base-statistics"},{"title":"Processing job status","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /knowledge_base/get_status","href":"/api-reference/knowledge-base/processing-job-status"}]},{"group":"Policies","pages":[{"title":"List policies","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /policies/get_policies","href":"/api-reference/policies/list-policies"},{"title":"Get a single policy","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /policies/get_policy_by_id","href":"/api-reference/policies/get-a-single-policy"},{"title":"Create a policy","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /policies/create_policy","href":"/api-reference/policies/create-a-policy"},{"title":"Update a policy","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /policies/update_policy","href":"/api-reference/policies/update-a-policy"},{"title":"Delete a policy","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /policies/delete_policy","href":"/api-reference/policies/delete-a-policy"},{"title":"List alert rules","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /policies/get_alerts","href":"/api-reference/policies/list-alert-rules"},{"title":"Create alert rule","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /policies/new_alert","href":"/api-reference/policies/create-alert-rule"},{"title":"Update alert rule","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /policies/update_alert","href":"/api-reference/policies/update-alert-rule"},{"title":"Delete alert rule","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /policies/delete_alert","href":"/api-reference/policies/delete-alert-rule"},{"title":"Test alert rule notifications","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /policies/test_alert","href":"/api-reference/policies/test-alert-rule-notifications"}]},{"group":"Telemetry","pages":[{"title":"List or get traces","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /telemetry/get_traces","href":"/api-reference/telemetry/list-or-get-traces"},{"title":"Usage statistics","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /telemetry/get_usage","href":"/api-reference/telemetry/usage-statistics"},{"title":"List events","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /telemetry/get_events","href":"/api-reference/telemetry/list-events"},{"title":"Stream events (SSE)","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml get /telemetry/stream_events","href":"/api-reference/telemetry/stream-events-sse"},{"title":"Event statistics","deprecated":null,"version":null,"openapi":"/api-reference/openapi-bundled.yaml post /telemetry/get_event_stats","href":"/api-reference/telemetry/event-statistics"}]}]},{"group":"WebSocket","pages":[{"title":null,"href":"/api-reference/websocket/agents-connect"}]}]}]},"title":"Register Agent - Svantic","buildId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","deploymentId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","dynamics":["c2aa737661","b0f84f53ff","a9bb46feb3","2b790eda92"],"chunks":["OpenApiReferenceProvider-DmVyH30O.js","utils-BHQqGGOd.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-CD-E4BIt.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Bp5Lq9Ds.js","snippetPresets-C4xAVCFP.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","Page-CBCH2P7b.js","ApiExamples-CgXVLxUC.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BF8I5oUf.js","shallow-Byd0lWnC.js","getApiPlaygroundDisplay-BGOZG1OK.js","CodeSnippet-CpvQL0CY.js","CodeSnippets-B8wkBKXa.js","getPastedJson-Ry3scI3Y.js","icon-D7a9HcdD.js","MethodPill-CJ8pmHhz.js","DuplicateIcon-rh1HJF0t.js","createIcon-DvGznqYs.js","DynamicMarkdown-Cc6AuSHS.js","SectionHeading-B4A0S-ep.js","axios-vUo_bRtp.js","Markdown-Cc16CX65.js","clsx-Cs6nMGht.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-zbf22OZA.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-C_fs-y5n.js"]}