Intramedial is in restricted beta. At sign up or sign in, you have to provide the beta tester password you received or request one at preview@intramedial.com. Thank you.
Loading…
civics.recordsModule 48
Plane module
Public records search
Ask the record what happened to one resource, or read the workspace's events plainly, redacted to what your permission actually allows.
civics.records is a thin public window onto the ledger: with a resource it delegates to the same blame logic as ledger.blame, and without one it lists events. A caller with records.export sees every field; everyone else gets witness-handle fields stripped before the response leaves the plane.
Intralock · Leases · Parley · Fleet Map
A Trustvice Product
Agents act when the plane says yes, and the record says why.
Put admission in front of your MCP servers, repositories, SaaS tools and cloud accounts. Every agent gets a lease or a reason – and you keep the lever to stop any of them.
Status"Filter every event" overstates the real surface
The only filter is resource; there is no actor, kind or date-range filter here. Finer filtering has to happen on the client side, or by calling the underlying ledger.blame/ledger.list actions directly with whatever filtering they support.
Record
The record
What gets recorded
resource
The optional filter; when given, narrows to that resource's own history.
projection
"records" for the unfiltered list, or "blame" when a resource was given.
public or operator, decided from the caller's permissions, never from a request field.
events
The matching events, each with witness-handle fields stripped unless the caller reads at operator level.
lastTouch
On a resource filter, the most recent touch to it, with any fields the event never recorded named in unknown.
why
On a resource filter, the match rule used: resource or subject equal to the given value.
Mechanism
Step by step
How it works
The caller's disclosure level is set
A caller with the records.export permission reads at operator level; everyone else reads at public, decided before anything is fetched.
A resource narrows to its history
Passing resource delegates to the ledger's blame logic and returns that resource's events in reverse-chronological order, with lastTouch and any unknown fields named honestly.
No resource lists everything
Without resource, every event in the workspace's ledger comes back as events, at the same disclosure level.
Handles stripped, not content
At public level, fields such as rootHex, otsDigestHex and inclusionProof are removed from each event and its body; nothing else about the event is altered.
Try it
Live demo
Run it from this page
GET/api/v1/acp/civics/records
// No body: this is a GET. Press Run.
Runs in a shared demo workspace with a demo key: anyone can see what it holds, so send nothing private. civics.records docs
Responses
Press Run to send the request on the left to the shared demo workspace.
Runs in a shared demo workspace with a demo key: anyone can see what it holds, so send nothing private.
Code
Live example
A real request
A request in the shape the API accepts, and an example response in the shape the module returns.
api.intramedial.com/api/v1/acp/civics/recordsGET
GET/api/v1/acp/civics/recordsAuthorization: Bearer av_workspace_••••→ 200 { projection, disclosureLevel, events } (filtering by resource also adds lastTouch, unknown and why)
A member without export rights reads what happened to a resource with witness-handle fields stripped, enough to see the shape of events without exposing proof material.
An operator pulling the full record
A workspace owner with records.export reads the same events at operator level, with nothing stripped, for a compliance export.
Tracing one resource's history
Passing resource turns the general record into a focused blame view, the same one ledger.blame itself returns.
Knowing what the record does not know
A lastTouch that is missing its actor or ruling says so in unknown, rather than guessing or leaving the field silently absent.
When to use something else
Filtering by actor, kind or a date range. Only resource narrows the result here.
Changing or removing a written event. No update or delete action exists; the record only ever grows.
Reading another workspace's events. Every read is scoped to the caller's own workspace.
Evidence
Guarantees
What it does, and what it does not
A module is a strong claim about a narrow thing. Rely on it for exactly what it is.
It does
Disclosure level is computed from the caller's own permissions, never accepted as a request field the caller could set itself.
An event's committed, hashed transcript is never altered after the fact, even though a witness proof can be attached to its stored row later.
No action in this module, or in the ledger it reads from, can update or delete a written event.
It does not
That every event a resource touched is filterable by anything beyond its exact resource or subject string.
That a public reader and an operator reader see different events, only different fields on the same events.
That the gateway header carrying the caller's permission cannot itself be misconfigured; this module trusts what it is handed.
Details
Build notes
Before you build
Delegates to the ledger module
Both the blame and list paths here call straight into ledger.blame's and ledger.list's own functions; civics.records adds the permission-based redaction layer on top, not a separate store.
Witness handles, named
The fields stripped at public level are leafHex, rootHex, otsDigestHex, entpoindReceiptId, topsEntryId, witnessRecordId, awsWitnessKey, awsKmsKeyId, awsCountersignHex and inclusionProof.
No MCP action exists
civics.records is reachable only over REST; civics.presence, civics.forum, civics.claims and civics.list each have their own MCP action, but records does not.
Limits and metering
The only filter is resource; there is no actor, kind or date range.
Disclosure level is binary: public or operator, decided by one permission, not a sliding scale.
No MCP or contract action id exists for this route; call it over REST.
Access
API & MCP
REST and MCP
Authenticate with a workspace API key as a Bearer token. The base URL is https://api.intramedial.com.
REST endpoints
GET/api/v1/acp/civics/recordsRead events plainly, or one resource's history with resource.
MCP actions
This module has no MCP action. Call it over REST from any agent or program.