# Blockchain IQ brief: Coinbase AgentKit action provider An independent, native Coinbase AgentKit action provider that buys one Blockchain IQ `brief` through x402 v2 for exactly **0.01 USDC on Base**. A paid AgentKit invocation completed on26October2026; see [LIVE-TEST.md](LIVE-TEST.md) for transaction metadata and a single public explorer check. Bounty acceptance and payment remain unconfirmed. It extends the real `ActionProvider`, binds the engine's real `EvmWalletProvider`, and runs through `AgentKit.from(...).getActions()[0].invoke`. There is one action and its input schema is strictly `{}`. Wallet configuration, the fixed URL and the expected recipient remain application-owned. ## Run Use Node.js22+ and an npm version compatible with that runtime. ```sh npm ci --ignore-scripts --no-audit --no-fund npm test node src/cli.js --help ``` Default/help is offline and reads no wallet key. An optional unsigned quote is: ```sh node src/cli.js --quote ``` Review its recipient independently. For an intentional paid test, provide a throwaway wallet funded with a small amount of Base USDC. Configure its private key through `AGENT_PRIVATE_KEY`, never a command-line argument or a repository file. Supply only public addresses as arguments: ```sh node src/cli.js --pay --pay-to 0xREVIEWED_RECIPIENT --payer 0xYOUR_WALLET ``` One successful call returns the provider's JSON and settlement transaction hash. Do not publish the purchased research, payment header, signature or key. No CDP account, hosted signer, gas RPC call or broad wallet action is required by this example. No automatic paid retry exists. If an error reports `paymentMayHaveCommitted: true`, inspect its status separately before deciding what to do; a timeout does not prove that payment failed. ## Use in an AgentKit application ```js import { createBlockchainIqAgentKit } from './src/index.js'; const kit = await createBlockchainIqAgentKit({ walletProvider: yourBaseEvmWalletProvider, expectedPayTo: independentlyReviewedRecipient, }); const [brief] = kit.getActions(); const result = JSON.parse(await brief.invoke({})); ``` `BlockchainIqActionProvider` and `blockchainIqActionProvider` are also exported for applications that construct AgentKit themselves. The provider supports only `protocolFamily: 'evm', chainId: '8453'`. A provider cannot be rebound to another wallet. Calling `getActions()` repeatedly does not reset its one-call budget. The included `LazyBriefWalletProvider` is a minimal real EVM wallet provider for the CLI. It delays constructing the local signer until the guarded action has approved the payment challenge and exact typed-data message. Its transaction, message-signing and RPC methods are disabled. Applications supplying another wallet provider remain responsible for its key handling and other behavior. ## Payment bounds The independently licensed payment core derives from this builder's LangChain integration, with the framework wrapper removed. Its payment checks are kept: - Fixed HTTPS GET to `https://www.blockchainiq.co/api/x402/v1/brief`. - One unsigned402request, then at mostone paidrequest and one signature. - Exact x402 v2, Base mainnet, native USDC, amount10000atomicunits and the application-pinned recipient; alternate amounts/assets/networks and extra payment requirements fail before signer construction. - Exact EIP-3009 `TransferWithAuthorization` domain, payer, payee, amount, timestamp bounds and nonce are checked before delegating typed-data signing. - No redirect, cookies, third request, automatic paid retry or model-selected URL, payee, key, price or network. - Bounded responses and a validated settlement header. The header is the provider's settlement assertion, not independent chain finality. ## Native SDK telemetry The pinned AgentKit0.10.4 `CreateAction` decorator sends an unconditional analytics POST. Its base wallet constructor also schedules a virtual `trackInitialization()` hook that sends wallet metadata by default. This integration uses the framework's `getActions(walletProvider)` interface directly instead of the optional decorator. Its own minimal wallet subclass overrides `trackInitialization()` to do nothing. The installed SDK is unchanged. Tests block global `fetch` and verify no analytics attempt in this example's flow. An externally supplied wallet can have its own telemetry; this provider does not rewrite someone else's wallet implementation. ## Verification and cost Tests use synthetic public addresses, mock signatures and a mock402/200 transport. They exercise the actual pinned SDK and AgentKit classes, including engine dispatch, native wallet binding, strict inputs, wrong challenges, ambiguous paid failures, repeated action discovery, concurrency and forbidden wallet operations. They load no real key and make no actual quote or paid call. AgentKit is a broad SDK: its installed dependency tree is about1.3GiB. An offline import/engine check measured about260MiB peak RSS and3.7seconds wall time on the test VPS. Allow sufficient memory when isolating a real test. Native bigint bindings are optional; this install emits a warning and uses its JavaScript fallback after lifecycle scripts are disabled. Direct dependencies and transitive resolutions are pinned in the lockfile. AgentKit's npm release here is0.10.4; its GitHub main branch already advertises 0.11.0, so examples from main were checked against the actual installed release. ## Conditional build bounty The [official program](https://www.blockchainiq.co/blog/x402-build-bounties) includes an AgentKit action-provider slot and permits at mosttwo framework claims per builder. A public repository and an actual paid call from this integration are required. Remaining slots are not published. This repository does not establish a reserved slot, acceptance, prize entitlement or income. Framework references: - [Coinbase AgentKit repository](https://github.com/coinbase/agentkit) - [ActionProvider API](https://coinbase.github.io/agentkit/agentkit/typescript/classes/action-providers_actionProvider.ActionProvider.html) - [EvmWalletProvider API](https://coinbase.github.io/agentkit/agentkit/typescript/classes/wallet-providers_evmWalletProvider.EvmWalletProvider.html)