Context
commands::info and --help output are the first thing most agents see. Today Info is a stub and doesn't show supported chains + contract addresses (Create Protocol AgentDeposit, USDC, etc.). A richer info command that emits a machine-parseable inventory of chains / contracts / subcommands is useful for both humans and for MCP-style tool discovery (related to #1).
Scope
- Fill out
commands::info in src/commands.rs to emit JSON with:
chains: list of supported chains (currently just Arbitrum + Arbitrum Sepolia — start with that but make the list a constant that's easy to extend).
- For each chain:
chain_id, name, rpc_default, explorer, contracts: {usdc, agent_deposit, uniswap_v3_quoter}.
subcommands: array of {name, description, args: [...]}. You can introspect this from clap's CommandFactory — see clap::CommandFactory::command().
version from env!("CARGO_PKG_VERSION").
- For
--human output, print a nicely-formatted table.
Acceptance criteria
arbitrum-cli info returns JSON.
arbitrum-cli info --human prints a readable summary.
- Test that at least
chains[0].chain_id == 42161 and the subcommand list includes every Commands variant.
- No hardcoded subcommand names — must come from clap reflection so new subcommands auto-appear.
Reference: src/main.rs::Commands for the enum; clap introspection docs; the AgentDeposit command landed in PR #2 shows the contract-address constants pattern.
Estimated effort
S (2–3 hours)
— kcolbchain / Abhishek Krishna
Context
commands::infoand--helpoutput are the first thing most agents see. TodayInfois a stub and doesn't show supported chains + contract addresses (Create Protocol AgentDeposit, USDC, etc.). A richerinfocommand that emits a machine-parseable inventory of chains / contracts / subcommands is useful for both humans and for MCP-style tool discovery (related to #1).Scope
commands::infoinsrc/commands.rsto emit JSON with:chains: list of supported chains (currently just Arbitrum + Arbitrum Sepolia — start with that but make the list a constant that's easy to extend).chain_id,name,rpc_default,explorer,contracts: {usdc, agent_deposit, uniswap_v3_quoter}.subcommands: array of{name, description, args: [...]}. You can introspect this from clap'sCommandFactory— seeclap::CommandFactory::command().versionfromenv!("CARGO_PKG_VERSION").--humanoutput, print a nicely-formatted table.Acceptance criteria
arbitrum-cli inforeturns JSON.arbitrum-cli info --humanprints a readable summary.chains[0].chain_id == 42161and the subcommand list includes everyCommandsvariant.Reference:
src/main.rs::Commandsfor the enum; clap introspection docs; theAgentDepositcommand landed in PR #2 shows the contract-address constants pattern.Estimated effort
S (2–3 hours)
— kcolbchain / Abhishek Krishna