bron is built to be driven by an LLM agent (Claude Code, Codex, Cursor, custom tooling) without any wrapping layer. This page captures the contract: what an agent can rely on, what surfaces it should query first, and how to keep it from doing damage.
The agent doesn’t need to memorise the API. --schema emits the complete CLI surface as one OpenAPI 3.1 JSON document:
bron --schema # full CLI: every command, every flag, every typebron <resource> <verb> --schema # single-command fragmentbron --output yaml <r> <v> --schema # same dump in YAML
What’s in there:
Every command path (accounts list, tx withdrawal, tx subscribe, …)
Every flag, with its type, enum values, defaults, and short description
Every request body shape, by transactionType discriminator for tx create
Every response shape, indexed by HTTP status code
The --embed tokens each list endpoint accepts, with the resulting _embedded shape
For an agent that just spawned, bron --schema | head -200 is enough orientation to start composing valid commands. Agents driving the MCP server instead have an even cheaper entry point: a single bron_help call returns the data model, any tool’s response shape, and worked jq recipes on demand.
1. user: "approve every signing-required withdrawal under $1k" ↓2. agent: bron tx --help # → see verbs (list, get, approve, ...) agent: bron tx list --help # → see filters ↓3. agent: bron tx list \ --transactionStatuses signing-required \ --transactionTypes withdrawal \ --output jsonl → JSONL: agent parses, picks the ones with params.amount < 1000 ↓4. agent: bron tx approve <tx> # for each match → exit 0 = success, exit ≠ 0 = stop and report to user
Three loops covers most workflows: discover → query → act. --schema for static introspection, --help for human prose where helpful, --output jsonl for machine consumption.
Every tx <type> and tx create call accepts --externalId <key>. Bron de-duplicates by (workspace, externalId): retrying a call with the same key returns the existing transaction, not a duplicate.For an agent, this is critical — LLMs retry on perceived failure, and without an idempotency key a retry would create a second withdrawal:
# DON'T — agent retries this on a hiccup → double-spendbron tx withdrawal --accountId acc --params.amount=100 ...# DO — agent retries this on a hiccup → same tx, no double-spendbron tx withdrawal --externalId "agent-task-7f3a" --accountId acc --params.amount=100 ...
Generate --externalId from a stable identifier of the agent’s task (task ID, request ID, hash of the prompt + timestamp) — anything that would be the same on retry.
bron tx dry-run validates a transaction body against the API without submitting it: returns the expected fees, blockchain ETA, validation errors:
bron tx dry-run --transactionType withdrawal --file /tmp/tx.json --output json
For an agent acting on behalf of a human, a dry-run + summary + explicit confirmation step is the standard pattern. Same body schema as the live call, so the agent can reuse the same JSON.
The default JSON is fine. JSONL is often easier to parse line-by-line in a streaming agent:
bron tx list --output jsonl
For really long lists, project just the fields the agent needs:
bron tx list \ --transactionStatuses signing-required \ --output jsonl \ --columns transactionId,transactionType,params.amount,params.assetId,createdAt
Less to parse, less context spent.
Intent vs settlement.params.amount is what a transaction requested (the intent / quote); _embedded.events[].amount is what actually moved on-chain (the settlement). For any financial total — volume, net flow, P&L — aggregate _embedded.events[], never params.amount. Summing params.amount looks right but is wrong for swaps, bridges, intents, fiat and fee-bearing transfers. Events are omitted by default — add --includeEvents (CLI) or includeEvents: true (MCP) to fetch them. params.amount is still correct when you genuinely want the requested amount, e.g. filtering withdrawals under a threshold.
Prints a concise, machine-readable orientation guide: the commands you’ll need most, the schema entry point, the idempotency contract, the exit-code map. Reference it from agent system prompts so a fresh agent can self-orient in one call.
For Claude Code, packaged skills live in bronlabs/bron-skills — SKILL.md files with allowed-tools declarations, references, and worked examples for the most common flows (bron-tx-send, bron-tx-subscribe, bron-balances-read, bron-address-book).Install for Claude Code in one shot:
Cross-agent project memory (AGENTS.md standard) ships in the same repo for Codex, Cursor, Aider, GitHub Copilot, Junie. Drop the file into any project that uses bron and the agent picks it up automatically.
Suggested constraints for a Bron-driving agent — copy into your system prompt and tune:
Always pass --externalId on any tx <type> or tx create call. Generate it from a stable task identifier.
Never pipe credentials anywhere except the local profile config. Don’t log JWK contents.
Confirm before approve / decline / cancel / sign — these are state-changing, often irreversible. Show the human the affected transactions and wait for explicit OK.
Use tx dry-run before any first-time withdrawal pattern, to surface fees and validation errors.
Bound query windows — --createdAtFrom / --createdAtTo on list queries to avoid pulling thousands of records into context.
Treat exit codes as truth — bron tx approve $tx || stop_and_report instead of grepping success messages.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Bron Developer","colors":{"primary":"#FFFFFF","light":"#FFFFFF","dark":"#FFFFFF"},"logo":{"light":"https://mintcdn.com/bron/MNkWnppL55qZ5yuZ/images/bron-developer-dark.png?fit=max\u0026auto=format\u0026n=MNkWnppL55qZ5yuZ\u0026q=85\u0026s=4eabb2d593c8a3451fdf1b107b55e418","dark":"https://mintcdn.com/bron/MNkWnppL55qZ5yuZ/images/bron-developer-dark.png?fit=max\u0026auto=format\u0026n=MNkWnppL55qZ5yuZ\u0026q=85\u0026s=4eabb2d593c8a3451fdf1b107b55e418","href":"https://developer.bron.org"},"favicon":"https://mintcdn.com/bron/MNkWnppL55qZ5yuZ/favicon.svg?fit=max\u0026auto=format\u0026n=MNkWnppL55qZ5yuZ\u0026q=85\u0026s=6b07dbc8cfb909ad6b3a7dc9b74be244","api":{"playground":{"display":"simple"}},"appearance":{"default":"dark","strict":true},"background":{"image":{"light":"https://mintcdn.com/bron/cesJ2R5k9KwxlXS_/images/background.png?fit=max\u0026auto=format\u0026n=cesJ2R5k9KwxlXS_\u0026q=85\u0026s=bd71107ca07e3ee9afaac423d567f90f","dark":"https://mintcdn.com/bron/cesJ2R5k9KwxlXS_/images/background.png?fit=max\u0026auto=format\u0026n=cesJ2R5k9KwxlXS_\u0026q=85\u0026s=bd71107ca07e3ee9afaac423d567f90f"},"color":{"light":"#000000","dark":"#000000"}},"navbar":{"links":[{"href":"https://support.bron.org","label":"Support"}],"primary":{"type":"button","label":"Open Bron","href":"https://app.bron.org"}},"footer":{"socials":{"github":"https://github.com/bronlabs","x":"https://x.com/bronwallet","telegram":"https://t.me/bronwallet","linkedin":"https://www.linkedin.com/company/bronwallet","youtube":"https://www.youtube.com/@BronWallet"}},"seo":{"indexing":"navigable"},"styling":{"eyebrows":"breadcrumbs","codeblocks":"system","latex":false},"integrations":{"ga4":{"measurementId":"G-P15YV3N55W"},"intercom":{"appId":"r3g4ebjo"}},"contextual":{"options":["chatgpt","claude"],"display":"header"},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"bron","hasAudioNarration":false,"actualSubdomain":"bron","customDomains":["developer.bron.org"],"gitSource":{"type":"github","owner":"bronlabs-public","repo":"public-api-docs","deployBranch":"master","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae44ef02e4c4b8ea8e49dab","collectionId":"2caa61a4-47bd-4272-a859-b61f4b3e49bf","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae44ef02e4c4b8ea8e49dab"},"feedback":{"thumbs":true,"edits":true,"issues":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae49b3d546b569add0c9a44","clientVersion":"0.0.4043","searchFilterCounts":[{"language":"default","tag":"API","count":50},{"language":"default","tag":"transactions","count":13},{"language":"default","tag":"SDKs \u0026 CLI","count":11},{"language":"default","tag":"assets","count":10},{"language":"default","tag":"CLI","count":8},{"language":"default","tag":"Intents","count":7},{"language":"default","tag":"API Documentation","count":6},{"language":"default","tag":"address-book","count":4},{"language":"default","tag":"intents","count":4},{"language":"default","tag":"transaction-limits","count":3}]},"assistantConfig":{"deflection":{"enabled":true,"email":"support@bron.org","showHelpButton":true}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"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":"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":"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":"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":"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":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","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":"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":"turbopuffer-dual-write","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},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"span.text-white,svg.text-white,svg.text-white\\/90{color:#2f2d35!important}"}],"page":{"pagePath":"sdk/cli/agents","slug":"/sdk/cli/agents","pageMetadata":{"title":"LLM agent integration","icon":"robot","description":null,"href":"/sdk/cli/agents"},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,em:`em`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Table,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[_jsx(_components.code,{children:`bron`}),` is built to be driven by an LLM agent (Claude Code, Codex, Cursor, custom tooling) without any wrapping layer. This page captures the contract: what an agent can rely on, what surfaces it should query first, and how to keep it from doing damage.`]}),`\n`,_jsx(Heading,{level:`2`,id:`discovery-in-one-call`,children:`Discovery in one call`}),`\n`,_jsxs(_components.p,{children:[`The agent doesn’t need to memorise the API. `,_jsx(_components.code,{children:`--schema`}),` emits the complete CLI surface as one OpenAPI 3.1 JSON document:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`3`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`3`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`bron`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --schema`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # full CLI: every command, every flag, every type`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`bron`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`resourc`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`e`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`ver`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`b`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --schema`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # single-command fragment`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`bron`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --output`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` yaml`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`r`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`v`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --schema`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # same dump in YAML`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`What’s in there:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Every command path (`,_jsx(_components.code,{children:`accounts list`}),`, `,_jsx(_components.code,{children:`tx withdrawal`}),`, `,_jsx(_components.code,{children:`tx subscribe`}),`, …)`]}),`\n`,_jsxs(_components.li,{children:[`Every flag, with its type, `,_jsx(_components.code,{children:`enum`}),` values, defaults, and short description`]}),`\n`,_jsxs(_components.li,{children:[`Every request body shape, by `,_jsx(_components.code,{children:`transactionType`}),` discriminator for `,_jsx(_components.code,{children:`tx create`})]}),`\n`,_jsx(_components.li,{children:`Every response shape, indexed by HTTP status code`}),`\n`,_jsxs(_components.li,{children:[`The `,_jsx(_components.code,{children:`--embed`}),` tokens each list endpoint accepts, with the resulting `,_jsx(_components.code,{children:`_embedded`}),` shape`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`For an agent that just spawned, `,_jsx(_components.code,{children:`bron --schema | head -200`}),` is enough orientation to start composing valid commands. Agents driving the `,_jsx(_components.a,{href:`/sdk/cli/mcp`,children:`MCP server`}),` instead have an even cheaper entry point: a single `,_jsx(_components.code,{children:`bron_help`}),` call returns the data model, any tool’s response shape, and worked `,_jsx(_components.code,{children:`jq`}),` recipes on demand.`]}),`\n`,_jsx(Heading,{level:`2`,id:`the-recommended-agent-flow`,children:`The recommended agent flow`}),`\n`,_jsx(CodeBlock,{numberOfLines:`14`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`14`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`1. user: \"approve every signing-required withdrawal under $1k\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` ↓`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`2. agent: bron tx --help # → see verbs (list, get, approve, ...)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` agent: bron tx list --help # → see filters`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` ↓`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`3. agent: bron tx list \\\\`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` --transactionStatuses signing-required \\\\`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` --transactionTypes withdrawal \\\\`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` --output jsonl`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` → JSONL: agent parses, picks the ones with params.amount \u003c 1000`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` ↓`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`4. agent: bron tx approve \u003ctx> # for each match`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` → exit 0 = success, exit ≠ 0 = stop and report to user`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[`Three loops covers most workflows: discover → query → act. `,_jsx(_components.code,{children:`--schema`}),` for static introspection, `,_jsx(_components.code,{children:`--help`}),` for human prose where helpful, `,_jsx(_components.code,{children:`--output jsonl`}),` for machine consumption.`]}),`\n`,_jsx(Heading,{level:`2`,id:`stable-contracts`,children:`Stable contracts`}),`\n`,_jsxs(_components.p,{children:[`These won’t break across `,_jsx(_components.code,{children:`0.x`}),` releases:`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Surface`}),_jsx(_components.th,{children:`Contract`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Exit codes`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`0`}),` success; `,_jsx(_components.code,{children:`1`}),` other; `,_jsx(_components.code,{children:`3`}),` 401/403; `,_jsx(_components.code,{children:`4`}),` 404; `,_jsx(_components.code,{children:`5`}),` 400; `,_jsx(_components.code,{children:`6`}),` 409; `,_jsx(_components.code,{children:`7`}),` 429; `,_jsx(_components.code,{children:`8`}),` 5xx`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Error envelope on stderr`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`error: \u003cmessage>`}),` line + `,_jsx(_components.code,{children:`status:`}),` / `,_jsx(_components.code,{children:`code:`}),` / `,_jsx(_components.code,{children:`id:`}),` lines`]})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`--schema`}),` document shape`]}),_jsx(_components.td,{children:`Strict OpenAPI 3.1 fragment; field paths + types`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Flag/verb names`}),_jsxs(_components.td,{children:[_jsx(_components.code,{children:`tx`}),`, `,_jsx(_components.code,{children:`tx list`}),`, `,_jsx(_components.code,{children:`tx withdrawal`}),`, `,_jsx(_components.code,{children:`--output`}),`, `,_jsx(_components.code,{children:`--columns`}),`, etc.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Date rendering`}),_jsx(_components.td,{children:`ISO 8601 UTC in every output format`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Numeric strings`}),_jsxs(_components.td,{children:[`Decimals stay strings (no `,_jsx(_components.code,{children:`float64`}),` coercion)`]})]})]})]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`--help`}),` text wording, color, and table layout are NOT part of the stable surface. Don’t grep `,_jsx(_components.code,{children:`--help`}),` output in agent code; use `,_jsx(_components.code,{children:`--schema`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`idempotency`,children:`Idempotency`}),`\n`,_jsxs(_components.p,{children:[`Every `,_jsx(_components.code,{children:`tx \u003ctype>`}),` and `,_jsx(_components.code,{children:`tx create`}),` call accepts `,_jsx(_components.code,{children:`--externalId \u003ckey>`}),`. Bron de-duplicates by `,_jsx(_components.code,{children:`(workspace, externalId)`}),`: retrying a call with the same key returns the `,_jsx(_components.strong,{children:`existing`}),` transaction, not a duplicate.`]}),`\n`,_jsx(_components.p,{children:`For an agent, this is critical — LLMs retry on perceived failure, and without an idempotency key a retry would create a second withdrawal:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`5`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# DON'T — agent retries this on a hiccup → double-spend`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`bron`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` tx`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` withdrawal`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --accountId`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` acc`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --params.amount=100`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` ...`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# DO — agent retries this on a hiccup → same tx, no double-spend`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`bron`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` tx`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` withdrawal`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --externalId`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"agent-task-7f3a\"`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --accountId`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` acc`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --params.amount=100`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` ...`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Generate `,_jsx(_components.code,{children:`--externalId`}),` from a stable identifier of the agent’s task (task ID, request ID, hash of the prompt + timestamp) — anything that would be the same on retry.`]}),`\n`,_jsx(Heading,{level:`2`,id:`dry-runs-before-real-submits`,children:`Dry-runs before real submits`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`bron tx dry-run`}),` validates a transaction body against the API without submitting it: returns the expected fees, blockchain ETA, validation errors:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`bron`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` tx`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` dry-run`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --transactionType`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` withdrawal`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --file`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` /tmp/tx.json`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --output`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` json`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`For an agent acting on behalf of a human, a dry-run + summary + explicit confirmation step is the standard pattern. Same body schema as the live call, so the agent can reuse the same JSON.`}),`\n`,_jsx(Heading,{level:`2`,id:`output-for-agents`,children:`Output for agents`}),`\n`,_jsx(_components.p,{children:`The default JSON is fine. JSONL is often easier to parse line-by-line in a streaming agent:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`bron`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` tx`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` list`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --output`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` jsonl`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`For really long lists, project just the fields the agent needs:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`4`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`bron`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` tx`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` list`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --transactionStatuses`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` signing-required`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --output`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` jsonl`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --columns`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` transactionId,transactionType,params.amount,params.assetId,createdAt`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`Less to parse, less context spent.`}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Intent vs settlement.`}),` `,_jsx(_components.code,{children:`params.amount`}),` is what a transaction `,_jsx(_components.em,{children:`requested`}),` (the intent / quote); `,_jsx(_components.code,{children:`_embedded.events[].amount`}),` is what `,_jsx(_components.em,{children:`actually moved on-chain`}),` (the settlement). For any financial total — volume, net flow, P\u0026L — aggregate `,_jsx(_components.code,{children:`_embedded.events[]`}),`, never `,_jsx(_components.code,{children:`params.amount`}),`. Summing `,_jsx(_components.code,{children:`params.amount`}),` looks right but is wrong for swaps, bridges, intents, fiat and fee-bearing transfers. Events are omitted by default — add `,_jsx(_components.code,{children:`--includeEvents`}),` (CLI) or `,_jsx(_components.code,{children:`includeEvents: true`}),` (MCP) to fetch them. `,_jsx(_components.code,{children:`params.amount`}),` is still correct when you genuinely want the requested amount, e.g. filtering withdrawals under a threshold.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`agent-friendly-help-topic`,children:`Agent-friendly help topic`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`bron`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` help`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` agents`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`Prints a concise, machine-readable orientation guide: the commands you’ll need most, the schema entry point, the idempotency contract, the exit-code map. Reference it from agent system prompts so a fresh agent can self-orient in one call.`}),`\n`,_jsx(Heading,{level:`2`,id:`dedicated-skills-repo`,children:`Dedicated skills repo`}),`\n`,_jsxs(_components.p,{children:[`For Claude Code, packaged skills live in `,_jsx(_components.a,{href:`https://github.com/bronlabs/bron-skills`,children:`bronlabs/bron-skills`}),` — `,_jsx(_components.code,{children:`SKILL.md`}),` files with `,_jsx(_components.code,{children:`allowed-tools`}),` declarations, references, and worked examples for the most common flows (`,_jsx(_components.code,{children:`bron-tx-send`}),`, `,_jsx(_components.code,{children:`bron-tx-subscribe`}),`, `,_jsx(_components.code,{children:`bron-balances-read`}),`, `,_jsx(_components.code,{children:`bron-address-book`}),`).`]}),`\n`,_jsx(_components.p,{children:`Install for Claude Code in one shot:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`2`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`git`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` clone`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://github.com/bronlabs/bron-skills`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` ~/src/bron-skills`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`~`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`/src/bron-skills/install/install-claude.sh`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Cross-agent project memory (`,_jsx(_components.a,{href:`https://github.com/bronlabs/bron-skills/blob/master/AGENTS.md`,children:_jsx(_components.code,{children:`AGENTS.md`})}),` standard) ships in the same repo for Codex, Cursor, Aider, GitHub Copilot, Junie. Drop the file into any project that uses `,_jsx(_components.code,{children:`bron`}),` and the agent picks it up automatically.`]}),`\n`,_jsx(Heading,{level:`2`,id:`safety-guardrails-to-write-into-your-agent-prompt`,children:`Safety guardrails to write into your agent prompt`}),`\n`,_jsx(_components.p,{children:`Suggested constraints for a Bron-driving agent — copy into your system prompt and tune:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Always`}),` pass `,_jsx(_components.code,{children:`--externalId`}),` on any `,_jsx(_components.code,{children:`tx \u003ctype>`}),` or `,_jsx(_components.code,{children:`tx create`}),` call. Generate it from a stable task identifier.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Never`}),` pipe credentials anywhere except the local profile config. Don’t log JWK contents.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Confirm before approve / decline / cancel / sign`}),` — these are state-changing, often irreversible. Show the human the affected transactions and wait for explicit OK.`]}),`\n`,_jsxs(_components.li,{children:[_jsxs(_components.strong,{children:[`Use `,_jsx(_components.code,{children:`tx dry-run`})]}),` before any first-time withdrawal pattern, to surface fees and validation errors.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Bound query windows`}),` — `,_jsx(_components.code,{children:`--createdAtFrom`}),` / `,_jsx(_components.code,{children:`--createdAtTo`}),` on list queries to avoid pulling thousands of records into context.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Treat exit codes as truth`}),` — `,_jsx(_components.code,{children:`bron tx approve $tx || stop_and_report`}),` instead of grepping success messages.`]}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"codeStyling":"system","config":{},"pageMetadata":{"title":"LLM agent integration","icon":"robot","description":null,"href":"/sdk/cli/agents"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Discovery in one call","slug":"discovery-in-one-call","depth":2,"children":[]},{"title":"The recommended agent flow","slug":"the-recommended-agent-flow","depth":2,"children":[]},{"title":"Stable contracts","slug":"stable-contracts","depth":2,"children":[]},{"title":"Idempotency","slug":"idempotency","depth":2,"children":[]},{"title":"Dry-runs before real submits","slug":"dry-runs-before-real-submits","depth":2,"children":[]},{"title":"Output for agents","slug":"output-for-agents","depth":2,"children":[]},{"title":"Agent-friendly help topic","slug":"agent-friendly-help-topic","depth":2,"children":[]},{"title":"Dedicated skills repo","slug":"dedicated-skills-repo","depth":2,"children":[]},{"title":"Safety guardrails to write into your agent prompt","slug":"safety-guardrails-to-write-into-your-agent-prompt","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/bron/87bd79541289693a/update-postman-collection.js"],"subdomain":"bron","siteName":"Bron Developer","title":"LLM agent integration - Bron Developer","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-30T08:02:00.950Z","originalFileLocation":"sdk/cli/agents.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=\"dark\";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=\"dark\"}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=\"application-name\" content=\"Bron Developer\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/bron/kA8jsPj3ZLGgzsQH/_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/bron/kA8jsPj3ZLGgzsQH/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/bron/kA8jsPj3ZLGgzsQH/_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/bron/kA8jsPj3ZLGgzsQH/_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/bron/kA8jsPj3ZLGgzsQH/_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/bron/kA8jsPj3ZLGgzsQH/_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/bron/kA8jsPj3ZLGgzsQH/_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/bron/kA8jsPj3ZLGgzsQH/_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/bron/kA8jsPj3ZLGgzsQH/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"LLM agent integration - Bron Developer\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Bron Developer\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://developer.bron.org/sdk/cli/agents\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://bron.mintlify.app/_mintlify/api/og/v2?division=CLI\u0026amp;title=LLM+agent+integration\u0026amp;theme=2be74c70eb8525740950b6ac\u0026amp;signature=8209c60b2b3417f3cc0a641da78d02ecb012e51ebcac95abb2a9deeea7a64c2a\">\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=\"LLM agent integration - Bron Developer\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://bron.mintlify.app/_mintlify/api/og/v2?division=CLI\u0026amp;title=LLM+agent+integration\u0026amp;theme=2be74c70eb8525740950b6ac\u0026amp;signature=8209c60b2b3417f3cc0a641da78d02ecb012e51ebcac95abb2a9deeea7a64c2a\">\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/bron/kA8jsPj3ZLGgzsQH/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Bron Developer\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#FFFFFF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://developer.bron.org/sdk/cli/agents\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/sdk/cli/agents.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://developer.bron.org/#organization\",\"name\":\"Bron Developer\",\"url\":\"https://developer.bron.org\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/bron/MNkWnppL55qZ5yuZ/images/bron-developer-dark.png?fit=max\u0026auto=format\u0026n=MNkWnppL55qZ5yuZ\u0026q=85\u0026s=4eabb2d593c8a3451fdf1b107b55e418\"}},{\"@type\":\"WebSite\",\"@id\":\"https://developer.bron.org#website\",\"name\":\"Bron Developer\",\"url\":\"https://developer.bron.org\",\"publisher\":{\"@id\":\"https://developer.bron.org/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://developer.bron.org/sdk/cli/agents#webpage\",\"url\":\"https://developer.bron.org/sdk/cli/agents\",\"name\":\"LLM agent integration\",\"dateModified\":\"2026-10-30T08:02:00.950Z\",\"isPartOf\":{\"@id\":\"https://developer.bron.org#website\"},\"breadcrumb\":{\"@id\":\"https://developer.bron.org/sdk/cli/agents#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://developer.bron.org/sdk/cli/agents#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"CLI\",\"item\":\"https://developer.bron.org/sdk/cli\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"LLM agent integration\",\"item\":\"https://developer.bron.org/sdk/cli/agents\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://developer.bron.org/sdk/cli/agents#article\",\"headline\":\"LLM agent integration\",\"name\":\"LLM agent integration\",\"url\":\"https://developer.bron.org/sdk/cli/agents\",\"mainEntityOfPage\":{\"@id\":\"https://developer.bron.org/sdk/cli/agents#webpage\"},\"dateModified\":\"2026-10-30T08:02:00.950Z\",\"publisher\":{\"@id\":\"https://developer.bron.org/#organization\"},\"isPartOf\":{\"@id\":\"https://developer.bron.org#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Bron Developer\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Bron Developer","nav":{"global":null,"tabs":[{"tab":"API","pages":[{"title":"API","href":"/api-reference/getting-started"}]},{"tab":"SDKs \u0026 CLI","pages":[{"title":"TypeScript SDK","icon":"square-js","href":"/sdk/typescript"},{"title":"Golang SDK","icon":"golang","href":"/sdk/golang"},{"title":"Python SDK","icon":"python","href":"/sdk/python"},{"group":"CLI","icon":"terminal","pages":[{"title":"Overview","icon":"circle-info","href":"/sdk/cli"},{"title":"Authentication \u0026 profiles","icon":"key","href":"/sdk/cli/auth"},{"title":"Output formats \u0026 schema","icon":"brackets-curly","href":"/sdk/cli/output"},{"title":"Live updates","icon":"satellite-dish","href":"/sdk/cli/subscribe"},{"title":"MCP server","icon":"plug","href":"/sdk/cli/mcp"},{"title":"Cookbook","icon":"book","description":null,"href":"/sdk/cli/cookbook"},{"title":"LLM agent integration","icon":"robot","href":"/sdk/cli/agents"},{"title":"Errors \u0026 exit codes","icon":"triangle-exclamation","description":null,"href":"/sdk/cli/errors"}]}]},{"tab":"MPC Hot Signer","pages":[{"title":"MPC Hot Signer","href":"/hot-signer/about"}]},{"tab":"Bug Bounty","pages":[{"title":"Bug Bounty","href":"/bug-bounty/about"}]},{"tab":"Intents","pages":[{"title":"Intents","href":"/intents/about"}]}]},"basePath":"","title":"LLM agent integration - Bron Developer","buildId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","deploymentId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","dynamics":[],"chunks":[]}