Any agent works with Provely. Every agent connects through four surfaces: the REST API, the MCP server, the CLI, and the SDKs. Each target is one profile plus guidance files.
No agent forks the core. A new agent needs a profile and rendered guidance, not code.
| Agent | Kind | MCP | CLI | Hooks | CI gate | Verified on |
|---|---|---|---|---|---|---|
| Claude Code | coding agent | Supported | Supported | Supported | yes | 2026-09-05 |
| Codex | coding agent | Verify at implementation | Supported | Verify at implementation | yes | 2026-09-05 |
| Cursor | coding agent | Verify at implementation | Supported | Verify at implementation | yes | 2026-09-05 |
| Generic agent | agent | Supported | Supported | Not supported | yes | 2026-09-05 |
| Grok | autonomous agent | Verify at implementation | Supported | Not supported | yes | 2026-09-05 |
| Hermes | autonomous agent | Supported | Supported | Not supported | yes | 2026-09-05 |
| LangGraph | agent framework | Supported | Supported | Not supported | yes | 2026-09-05 |
| OpenAI Agents SDK | agent framework | Supported | Supported | Supported | yes | 2026-09-05 |
| OpenClaw | autonomous agent | Verify at implementation | Supported | Not supported | no | 2026-09-05 |
| pi | coding agent | Not supported | Supported | Verify at implementation | yes | 2026-09-05 |
What does every agent do, on every surface?
begin(contract, input)returns an operation id and the correlation and idempotency metadata.- The agent does the side-effecting action with that metadata.
action_result(operation_id)submits the provider acknowledgement.verify(operation_id)returns VERIFIED, PENDING, CONTRADICTED, FAILED, or UNVERIFIABLE.statusandreceiptresume the operation later and fetch the signed receipt.
The agent is untrusted. An agent report is E0, which is never sufficient. No surface gives an agent the verifier credentials.