portfolios.read
Read discretionary portfolio records from named collections.
{
"type": "portfolios.read",
"collections": [
"client-records"
]
}
A synthetic portfolio set behind two detail types: read a collection, or write a note on one record. Nothing here moves value.
Reference implementation, built to demonstrate integration. Operated by Tarnbrook Platforms in the tarnbrook-agents domain. It exists to show what a resource can demand of an agent, and to show that a refusal can always be explained.
portfolios.readRead discretionary portfolio records from named collections.
{
"type": "portfolios.read",
"collections": [
"client-records"
]
}
portfolios.annotateWrite a note on a portfolio record. Moves nothing.
{
"type": "portfolios.annotate",
"collections": [
"client-records"
]
}
sub required The agent the authorization server admitted, or the person on whose authority it acts.authorization_details required The RFC 9396 grant. Each tool names the detail type it requires.act optional The RFC 8693 actor chain when the token was exchanged.cnf optional The DPoP key thumbprint when the token is sender constrained.trace_id optional The trace id of the run, echoed on every decision.| Tool | Purpose | Requires | Effect |
|---|---|---|---|
read_portfolios |
Read discretionary portfolio records from a collection. | portfolios.read |
read only |
annotate_portfolio |
Write a note on a portfolio record. Moves nothing. | portfolios.annotate |
changes state |
Calls are accepted only with an access token issued by https://api.agents.showcase.raidiam.io, addressed to this resource as its audience, and verified against keys that the walked chain from that server to the pinned trust anchor vouches. A token minted for a different resource, or signed with a key the chain does not publish, is refused even when it is otherwise valid.
Each tool names one authorization_details type. The token must carry that type, or a type that narrows to it in the published type tree. Holding a scope, or holding authority for a neighbouring resource, does not admit the call.
A DPoP proof is verified whenever one is presented, and is required whenever the access token names a key in its cnf.jkt claim. Each proof is accepted once, so a captured proof cannot be replayed.
Arguments are validated before any business rule runs, and the refusal names the argument at fault rather than returning a bare failure.
Both detail types carry a collections member. A call that names a collection outside the grant is refused before any record is read, and the refusal names the collection at fault.
portfolios.annotate writes a note against one record. There is no path from this resource to a transfer, so the widest authority it can exercise is a sentence on a file. portfolios.read reads and changes nothing at all.
Every admission decision, allowed and refused, is recorded with the checks that ran, the policy that decided it and the values it turned on. Read them at /decisions, or one run at a time by trace id.