Skip to content

feat(agentkit): add Bursar action provider - #1554

Open
bursarworld wants to merge 3 commits into
coinbase:mainfrom
bursarworld:add-bursar-action-provider
Open

bursarworld wants to merge 3 commits into
coinbase:mainfrom
bursarworld:add-bursar-action-provider

Conversation

@bursarworld

Copy link
Copy Markdown

Description

Adds a Bursar action provider. A Bursar mandate is a contract on Robinhood Chain (chain id 4663) that holds USDG and the limits an agent spends inside: per call, per day, per month, which providers, which capabilities, and the amount above which the principal has to sign. The provider exposes four actions over one mandate: inspect, quote, pay and settlements. The wallet provider AgentKit holds is the mandate's agent; spends go out through its sendTransaction, so CDP, Privy and viem wallets all work. The money is the mandate's, never the wallet's.

Built on @bursar/toolset, which carries the Bursar SDK. The toolset ships as ES modules and is loaded with a dynamic import() from this CommonJS build, so the package's module format does not change; the toolset itself runs on Node 22 or newer. AgentKit pins viem 2.47 and the toolset 2.56: the wallet client crosses that boundary with one typed cast, explained in the code. Robinhood Chain only. Docs: https://bursar.world.

Tests

Unit tests with a mocked toolset (src/action-providers/bursar/bursarActionProvider.test.ts): pnpm build, pnpm test, pnpm lint and pnpm format:check pass in typescript/agentkit.

The same four actions, over the same toolset with an AgentKit wallet provider holding the agent key, paid a provider from the example mandate on Robinhood Chain mainnet:

Network: Robinhood Chain (eip155:4663)
Setup: example mandate 0x8605853aC6A64dA11F4ED0Ff0Ad128961Cc3cd5c, USDG; the wallet provider is the mandate's agent

Action: pay { provider: "0x5210D8df060A9D5ce4c1305045ED5c9548fca374", capability: "gpu.render:1", amount: "20000", input: "render a koi" }

Paid 0.02 USDG, settlement 40:
https://robinhoodchain.blockscout.com/tx/0xe1092315d19a76975896dd1b997b61bfc0959347ddb53d4b5ad300fb2f5cdfe8

Checklist

  • Added documentation to all relevant README.md files (src/action-providers/bursar/README.md)
  • Added a changelog entry (.changeset/bursar-action-provider.md)

@cb-heimdall

Copy link
Copy Markdown

🟡 Heimdall Review Status

Requirement Status More Info
Reviews 🟡 0/1
Denominator calculation
Show calculation
1 if user is bot 0
1 if user is external 0
2 if repo is sensitive 0
From .codeflow.yml 1
Additional review requirements
Show calculation
Max 0
0
From CODEOWNERS 0
Global minimum 0
Max 1
1
1 if commit is unverified 0
Sum 1

@github-actions github-actions Bot added documentation Improvements or additions to documentation action provider New action provider typescript labels Oct 11, 2026
@bursarworld
bursarworld force-pushed the add-bursar-action-provider branch from a8aafa4 to e338dc2 Compare October 11, 2026 15:16
@bursarworld

Copy link
Copy Markdown
Author

Brought the branch up to date with main. It merges cleanly and the checks pass.

The provider adds four actions over one Bursar mandate (inspect, quote, pay, settlements). Every spend goes out through the wallet provider's sendTransaction, so the mandate's onchain limits apply whichever wallet AgentKit holds, the same way the 8004 provider (#930) sits on top of the existing wallet providers.

@phdargen @murrlincoln could one of you take a look? Glad to make any changes.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

action provider New action provider documentation Improvements or additions to documentation typescript

Development

Successfully merging this pull request may close these issues.

2 participants