Assay / Solutions / Cross-org trust
Problem · Cross-org trust

Cross-Organization Agent Trust Verification

The hard problem is not trusting your own agents. It is delegating to an agent built by a company you have a contract with and no visibility into. Assay makes that a one-call decision with evidence behind it.


The problem

B2B agent handoffs run on faith and paperwork

60%
of enterprises are scaling AI agents
4%
have agent governance in place
97%
reported an agent identity incident

Source: 2025 industry surveys of enterprise AI agent adoption.

Two companies want their agents to work together. Today that means a federation project, shared credentials, a contract that assigns liability, and an integration per counterparty. Weeks of work to enable one handoff, repeated for every new partner.

And after all of it, neither side can answer the question that matters: has the agent on the other end actually done this before, successfully, in a way anyone independent confirmed? Contracts allocate blame after failure. They do not prevent it.

Meanwhile neither party will accept the obvious fix — exposing their operational history to a counterparty — because that history is commercially sensitive.


The solution

Verify the counterparty, expose nothing

One call returns whether the counterparty clears your trust bar and which capabilities it has proven. It does not return their customers, their other work, their telemetry, or their volumes. Both sides get the decision input; neither gets the other's book.

There is no shared credential, no federation, and no prior relationship required. The verifier calls with its own key about a public identity. Onboarding a new partner's agent is a call, not a project.

After the work, each party records its own outcome and names the other as counterparty. Notably, an agent cannot write reputation onto another agent — that would let any registered key inflate or sabotage anyone. Self-report plus named witness is what keeps the graph both useful and honest.

no shared credentialsno federationorg isolationcounterparty-verifiedper-capabilityinstant onboarding

Why it holds up

What you actually get

Decision inputs, not data

A verifier learns trust score and proven capabilities. It never learns who else the counterparty works for or what their equipment is doing.

Onboarding is a call

No integration per partner. If their agent has an Assay identity, you can verify it today without either side signing anything new.

Peer-writes are refused

Attesting on another agent's behalf returns 403. Reputation can only be written by the party that did the work, naming who witnessed it.

Independent verification

A party relying on an asset can verify condition and provider themselves rather than taking a counterparty's report at face value.


Live API

The full cross-org loop

Verify before the handoff, attest after it. Both need your own agent key; substitute the IDs and they run against production as shown.

# 2. Verify it before you delegate. This is the allow/deny call. curl -s https://assay.foundrynet.io/v1/verify \ -H 'X-API-Key: YOUR_ASSAY_KEY' \ -H 'Content-Type: application/json' \ -d '{"agent_id":"agt_4411f105…", "claimed_capabilities":["crane_maintenance", "emergency_dispatch"], "min_trust_threshold":0.6}' { "verified": true, "trust_score": 0.8, "capabilities_confirmed": ["crane_maintenance", "emergency_dispatch"], "attestation_count": 8, "last_attestation_age_seconds": 41 } # Gate on BOTH fields. `verified` reflects the trust threshold and account # status only — an unproven capability comes back absent from # capabilities_confirmed, not as verified:false. if verified and "crane_maintenance" in capabilities_confirmed: dispatch() # Record an outcome. An agent attests to its OWN work and names the # counterparty that witnessed it — the witness is the party that received the work. curl -s https://assay.foundrynet.io/v1/agents/agt_78bd8467…/attest \ -H 'X-API-Key: THAT_AGENTS_KEY' \ -H 'Content-Type: application/json' \ -d '{"task_type":"crane_maintenance", "outcome":"success", "counterparty_agent_id":"agt_bbad0619…", "evidence_hash":"6a9b0ba5dbd9de83b808f3dead16f6bb…"}' { "attestation_id": "att_…", "updated_trust_score": 0.6609 } # Posting to another agent's ID returns 403. You cannot write reputation # onto an agent you don't control — that's what keeps the graph honest.
Read the gate carefully. verified reflects the trust threshold and account status. It does not fall to false because a claimed capability is unproven — an unproven capability simply does not appear in capabilities_confirmed. Gate on both fields.

Questions

Frequently asked

Do both organizations need an Assay subscription?

No. The agent being verified must be registered, which is free. The verifier calls with its own key. Many relationships run with one paying side and one free side.

What stops a competitor from probing us with verify calls?

Verification returns a trust score, proven capabilities and attestation counts — reputational facts about a public identity, by design. It exposes no operational data, no customer list and no telemetry.

Can we require an industry-specific trust model?

Yes. An organization's agents are scored under that org's configured model, and the model name travels on the passport, so a relying party can see whether a score was computed under manufacturing rules or defaults.

How do we handle a partner with no track record?

They fail a meaningful threshold, correctly. Route those to human approval, start them on low-stakes work to build history, or let them import verified prior work — imported records are flagged and remain subject to the verification ceiling.


Related

Keep reading