A step-by-step account of the path the agent took on a domain, written so
another agent could follow it. `--step` already records where the agent was
when the outcome occurred; `--attempt-trace` is the whole path.
Sent for every outcome, not just `success`. The dead ends on a failed attempt
are what stop the next agent from spending tokens on them.
The field's value is set almost entirely by how it is described, so the schema
description asks for a specific shape — one numbered line per step, each with
the URL path, the label acted on, the action, and the observed result — and
`skills/create-payment-credential/SKILL.md` carries a worked example. Agents
match an example far more reliably than they follow prose.
Deliberately no zod `.max()`. The API truncates past
`REPORT_ATTEMPT_TRACE_MAX_LENGTH` (8000) and still records the report, so
rejecting client-side would trade a long narrative for a lost outcome.
`--step` and `--freeform-context` keep their `.max(500)` because the API
rejects those outright.
Both the description and the docs tell agents to keep the buyer's personal
data out of it and write `[email]`/`[address]` instead.
Requires the server-side `attempt_trace` field on `POST /agent_observations`,
which ships separately and is not deployed yet. Until it is, the API ignores
the extra key, so sending it is a no-op rather than an error.
Test plan
- `pnpm run test` — 310 tests pass, including new SDK coverage for sending
`attempt_trace` in the body, omitting it, and passing an over-cap value
through unchanged for the server to truncate.
- `pnpm run typecheck` and `pnpm biome check .` clean.
- `node packages/cli/dist/cli.js report --schema` shows `attemptTrace` with no
`maxLength`, while `step`/`freeformContext` keep theirs.
Committed-By-Agent: claude
Orbit-Session-Id: e89d7110-bf81-4181-974b-21b0d5dc0c30
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
* docs: add report command instructions to SKILL.md and README
- SKILL.md: reporting instructions (when to report, tag reference, examples)
- README.md: report outcomes section with usage examples
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Committed-By-Agent: claude
* docs: make outcome reporting opt-in and add tag guidance
Address review feedback on the reporting docs:
- Soften the "REQUIRED" / "always report" language to encouraged-but-optional
in both SKILL.md and README, so reporting is suggested rather than mandated
for now.
- Add guidance to prefer the most specific tag and use `other` only when none
apply (describing details in --freeform-context).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Committed-By-Agent: claude
* docs: reword report rationale to "improve checkout for agents"
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Committed-By-Agent: claude
* docs: align SKILL.md report rationale wording with README
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Committed-By-Agent: claude
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* feat: add serve command to expose MCP endpoint over HTTP
Committed-By-Agent: claude
* fix: cleanup and readme
* Potential fix for pull request finding 'CodeQL / Information exposure through a stack trace'
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
---------
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
* feat: add noRefresh option to createAccessTokenProvider
Committed-By-Agent: claude
* feat: add env-based token provider to ResourceFactory
Committed-By-Agent: claude
* feat: read LINK_ACCESS_TOKEN, LINK_REFRESH_TOKEN, LINK_NO_REFRESH from env
Committed-By-Agent: claude
* docs: add LINK_ACCESS_TOKEN, LINK_REFRESH_TOKEN, LINK_NO_REFRESH to env vars docs
Committed-By-Agent: claude
* fix: auth status shows LINK_ACCESS_TOKEN state instead of stored credentials
Committed-By-Agent: claude
* refactor: extract resolveAuthInfo helper, simplify auth status component
Committed-By-Agent: claude
* fix: formatting
* support polling straight from auth login
* improvements
* sanitize output; make the polling into a shared helper and share across the auth login polling and the auth status polling
* commands to cancel a spend request
* document
* nit: remove unneeded status text
* code improvements
* Fix typecheck
* Just go back to old promise approach
* migrate commander -> incur enabling mcp server
* save
* use incur skill handling and clarify to use mcp if running
* add changeset
* fix type error
* fix fmt
* fix tests
* fmt
Use update notifier to indicate new versions. In TTY outputs, this is a very standard update-notifier integration. For JSON outputs consumed by agents, we include the info in the auth status command to not interfere with agents parsing output in other commands.
npx skills add for skill installation
npm install -g for installing from skill file
remove the unneeded --install option
remove some duplicative instructions
tell it to use --include card when retrieving a card
tell it to check auth status before running a new login command