Protocol Reads and Intents
When to use ProtocolViewer, when to use indexer reads, and how intent creation, cancellation, fulfillment, and hooks fit together.
Read Families
There are two main read surfaces for protocol state.
pv
ProtocolViewer reads are SDK-shaped convenience reads for deposit and intent visibility.
peer pv deposit show <depositId>
peer pv deposit show-many --ids <csv>
peer pv deposit list-owner --owner <address>
peer pv intent list-owner --owner <address>
peer pv intent show <intentHash>indexer
Indexer reads are broader and better for relation-heavy or bulk workflows.
Deposits
peer indexer deposits list --owner <address>
peer indexer deposits list-relations --owner <address>
peer indexer deposits show <composite-deposit-id>
peer indexer deposits by-ids --ids <json>
peer indexer deposits by-ids-relations --ids <json>
peer indexer deposits fund-activities <composite-deposit-id>
peer indexer deposits snapshots <composite-deposit-id>Makers
peer indexer makers fund-activities <address>Intents
peer indexer intents by-deposit-ids --deposit-ids <json>
peer indexer intents by-owner <owner>
peer indexer intents show <intentHash>
peer indexer intents expired --now <value> --deposit-ids <json>
peer indexer intents fulfilled-events --hashes <json>
peer indexer intents fulfillment-amounts <intentHash>
peer indexer intents fulfillment-and-payment <intentHash>Delegations
peer indexer delegations by-deposit <composite-deposit-id>Raw GraphQL
peer indexer query --query '{ Deposit(limit: 2) { id } }'
peer indexer query --query '{ Intent(limit: 2) { intentHash } }'
peer indexer query --query '{ __schema { queryType { fields { name } } } }'Use indexer query carefully. It is a raw GraphQL passthrough and can be expensive.
The live indexer schema uses PascalCase root fields such as Deposit, Intent, RateManager, and TakerStats. Lowercase plural roots like deposits do not exist and will fail with a GraphQL validation error.
If you are unsure which root fields are available, start with the __schema introspection query above and inspect queryType.fields.
When To Prefer Which
| Use case | Surface |
|---|---|
| Simple per-owner or per-ID inspection | pv |
| Bulk relation lookups and snapshots | indexer |
| Custom ad hoc GraphQL | indexer query |
Intent Commands
peer intent create
peer intent list
peer intent show
peer intent cancel
peer intent fulfill
peer intent release
peer intent fulfill-inputs
peer intent cleanup-orphanedTypical lifecycle
- Discover eligible deposits.
- Create the intent in preview mode.
- Execute the creation.
- Inspect or list the intent.
- Fulfill or cancel depending on downstream payment state.
- Release when appropriate.
fulfill
peer intent fulfill supports proof-driven and precomputed-attestation flows.
fulfill-inputs
Use this when you need the derived fulfillment payload before deciding whether to continue.
cleanup-orphaned
Maintenance command for stale intent sets.
Hook Commands
peer intent-hook pre set
peer intent-hook pre getThese are deposit-adjacent OrchestratorV3 hooks and should be treated as governance/operator controls rather than day-to-day user actions. Retired V2-only whitelist-hook helpers are not exposed. The SDK’s historical
accessPolicy namespace supports reads and removal of existing restrictions;
it does not create new policies or groups. Peer Cash merchant-policy preparation
is a separate, payment-method-scoped operation.
For StakeVault state, shared stake, payment-method risk, and keeper releases, use Staking and Dispute Protection.
Use guardian to discover the deployed IntentGuardian, read its live policy,
quote an extension in deposit-token base units, inspect payer funding, or
preview an extension:
peer guardian available
peer guardian policy
peer guardian quote-extension
peer guardian payer-funding
peer guardian extend-intentGuardian amounts are arbitrary deposit-token base units, not assumed USDC decimals. Read current policy and quote immediately before preparing a write.