The agent holds the credentials that write. Provely holds separate credentials that read, where the provider permits a read-only key. No surface gives an agent the verifier credentials, and no surface returns a provider secret.

RuleWhat it means
Separate credentialsThe agent writes with its key. The verifier reads with a restricted key that you store through POST /v1/connections.
Encrypted at restA stored provider credential is encrypted. The configuration never logs it.
Redacted telemetryA provider response is redacted before it reaches a log or a span.
Short retentionRaw provider evidence is optional, encrypted, and kept for a short time. A receipt holds a digest, not a payload.
Signed webhooksThe runtime validates every event signature and drops a duplicate event. The contract reconciles a replay and a late arrival by the provider clock, not by arrival order.
The agent is untrustedAn agent report is evidence level E0. It can never support VERIFIED.

How does an agent authenticate?

  • An API key pv_... in the Authorization header, hashed at rest under a server pepper, with scopes, an expiry, and rotation.
  • Or an OAuth access token from the pinned issuer, with the scope checked on each call.
  • The MCP server reads the bearer token inside each tool handler. No tool takes an API key as an argument.
  • The CLI reads the key from its configuration file or the environment. There is no --api-key flag.

A receipt that verifies against a key embedded in the receipt proves nothing. The validator needs a trusted key map that you control. Read what a receipt proves.

Can Provely act on my provider account?

No. The runtime never performs the action. It reads. Where a provider offers a restricted read-only key, use one.

What reaches your servers?

The operation, the contract id, the correlation keys, and the observations the contract needs.