Assay / Solutions / AWS Bedrock
Platform · AWS Bedrock AgentCore

Agent Trust for AWS Bedrock

Bedrock gives your agent an execution environment. It does not give the agent a reputation that means anything outside your AWS account. Assay does — a portable identity and a trust score any counterparty on any cloud can verify.


The problem

IAM ends at the account boundary

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.

AWS IAM answers “is this principal allowed to call this API in my account?” That is the right question inside AWS and the wrong question the moment a Bedrock agent hands work to an agent it did not build — a partner's scheduler, a supplier's dispatcher, a customer's ERP bot.

Cross-account roles can carry permission across the boundary. They cannot carry track record. A freshly assumed role and a role attached to an agent that has completed 400 verified jobs are indistinguishable to IAM, because IAM was never designed to score behaviour.

So the Bedrock agent delegates on faith, and the audit trail records that a call was authorized — never that the callee was any good at the work.


The solution

A reputation your Bedrock agent can take off AWS

Register the agent once with platform: "bedrock". Assay mints a platform-neutral agt_ identity and an API key that belong to the agent, not to AWS. Trust starts at a neutral 0.5 and is earned only through attested outcomes, each one naming the counterparty that witnessed it.

Before your Bedrock agent delegates, it makes one /v1/verify call and gets an allow/deny plus the list of capabilities the counterparty has actually proven — not the ones it claims. Trust computed on Assay is identical whether the counterparty runs on Bedrock, Azure AI Foundry, ServiceNow, or a laptop.

It works through the Bedrock AgentCore gateway as a plain HTTPS tool, or over MCP. No VPC peering, no cross-account role, no shared secret with the counterparty's org.

platform: bedrockAgentCore gatewayMCP transportOAuth 2.0 or API keysub-second verifyno cross-account role

Why it holds up

What you actually get

Identity that survives the account boundary

The agent's agt_ ID and trust score are yours, not your AWS account's. Move the workload to another region, another account, or off Bedrock entirely and the reputation follows it.

Bedrock-native, no infrastructure

Register the verify call as an AgentCore gateway target or an MCP tool. It is one HTTPS request with a sub-second p50 — safe inside an agent's tool-call loop.

Counterparty-verified outcomes

Every attestation names the other party to the work. Self-reported success without a witness is capped by a verification ceiling, so an agent cannot talk itself up.

Cross-cloud by construction

A Bedrock agent and an Azure agent accumulate trust in one graph, each citing the other. Neither cloud mediates and neither can see the other's account.


Live API

Verify a Bedrock agent against the live API

Runs as-is. Registration is anonymous and free; the verify call needs the key registration hands back.

# 1. Register the agent — no key needed, no card. Returns its portable ID + API key. curl -s https://assay.foundrynet.io/v1/agents/register \ -H 'Content-Type: application/json' \ -d '{"name":"bedrock-monitoring-agent", "owner_org":"your_org", "platform":"bedrock", "capabilities":["equipment_monitoring", "predictive_maintenance"]}' { "agent_id": "agt_4411f10541d0e3af7f47f6e5c75bcdeb", "api_key": "asy_live_…", // shown once "agent_card": { "trust_score": 0.5, "attestation_count": 0, … } } # 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":["work_order_creation", "maintenance_scheduling"], "min_trust_threshold":0.6}' { "verified": true, "trust_score": 0.8, "capabilities_confirmed": ["work_order_creation", "maintenance_scheduling"], "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 "work_order_creation" in capabilities_confirmed: dispatch()
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

Does this replace AWS IAM?

No, and it should not. IAM decides whether a principal may invoke an API in your account. Assay decides whether an agent has earned the work. Keep IAM on the permission question and add Assay for the trust question — they gate different things and both calls are cheap.

Does the agent have to run on Bedrock?

No. The platform field is metadata for discovery and reporting, not a constraint. The same agent identity works if you move it to Azure, ServiceNow, or your own container — that portability is the point.

What does a Bedrock agent do with a low trust score?

Whatever your policy says. Assay returns the decision inputs — verified, trust_score, capabilities_confirmed — and your agent applies the rule. A common pattern is auto-dispatch above 0.7, human approval between 0.5 and 0.7, and refuse below 0.5.

How long does verification take?

Assay's verify, trust and passport endpoints run a sub-second median in production. Verification is not the slow part of an agent loop.


Related

Keep reading