by.waclaw.online / agent-operator / 08

The Tool Catalog and Governance

Part 8 of 9 — the operator's complete tool belt as a catalog of contracts, the practices that keep it trustworthy, and how to generalize beyond eBay.

The catalog: tools, not code

This is the durable deliverable. A tool's implementation ages with the API; its contract — name, purpose, whether it reads or writes, the access it needs, and whether it requires confirmation — is what the agent reasons about and what you govern. Build the belt from this catalog; the bodies are mechanical (Part 4).

Read tools safe to run freely

ToolPurposeKey argumentsScope needed
ebay-list-ordersList orders, filterable by status.--status, --since, --jsonread: orders
ebay-get-orderFull detail for one order.--id, --jsonread: orders
ebay-get-trackingShipment status / last scan for an order.--order, --jsonread: fulfillment
ebay-list-messagesList buyer messages; filter unread / by order.--unread, --order, --jsonread: messaging
ebay-get-messageOne message thread, including attachments.--id, --jsonread: messaging
ebay-list-returnsOpen return / "not as described" cases.--status, --jsonread: post-order
ebay-list-listingsActive listings with price and stock.--active, --jsonread: inventory
ebay-market-priceCompeting prices for a listing (repricing input).--listing, --jsonread: marketplace

Write tools change the world — gated

ToolPurposeKey argumentsScopeConfirm?
ebay-acknowledge-orderMark order received / processing.--id …write: fulfillmentNo (low-risk, idempotent)
ebay-ship-orderMark shipped, attach tracking number.--id, --tracking, --carrierwrite: fulfillmentNo
ebay-reply-messageSend a reply to a buyer.--id, --body-file, --dry-runwrite: messagingPer soul.md (drafts shown for non-routine)
ebay-refundRefund money against an order.--order, --amount, --reason, --confirm, --dry-runwrite: post-orderYes over $100 (enforced in code)
ebay-accept-returnApprove a return request.--case, --dry-runwrite: post-orderWithin policy: no. Outside: escalate
ebay-repricePropose / apply price changes; respects floor.--strategy, --dry-run, --apply, --onlywrite: inventoryYes (propose, then human approves)
ebay-relistRelist an ended item.--item, --dry-runwrite: inventoryNo (reversible)

Operational tools setup & safety

ToolPurpose
ebay-operator auth loginOne-time OAuth: user logs in, grants scopes; tokens → keychain.
ebay-operator auth statusShow who is authorized and which scopes are held.
ebay-operator auth logoutRevoke and delete local tokens.
ebay-operator auditPrint the local action log: every write tool, args, result, timestamp.
ebay-operator doctorHealth check: token validity, API reachability, config sanity.

That is the entire operator: roughly two dozen tools, a soul.md, and a handful of skills. Small enough for one person to maintain, capable enough to run the daily work of a real store.

Governance: keeping it trustworthy

Autonomy without governance is how good patterns turn into incidents. The practices below are what make this safe to run unattended and safe to share.

Generalizing beyond eBay

Nothing in this guide is really about eBay. Swap the external system and the same four ingredients (Part 1) reassemble:

DomainSystemRepresentative tools
Support opsZendesk / Intercomlist-tickets, reply-ticket, escalate, tag
Sales opsA CRM (Salesforce/HubSpot)list-deals, update-stage, log-activity, draft-followup
Project opsJira / Linearlist-issues, triage, comment, transition
Personal opsCalendar + emaillist-events, find-slot, draft-reply, schedule
Finance opsAccounting / invoicinglist-invoices, send-reminder, reconcile (read-heavy!)

In every case: wrap the sanctioned API in small CLI tools that act as the user, write a soul.md for the role, capture procedures as skills, and gate the writes. The operator pattern is domain-agnostic; only the tool belt changes.

We now have a complete, governed operator that you drive by talking to it. The final chapter argues that the conversation is only step one — the real payoff comes when the same operator runs on a loop, on a schedule, without anyone watching.