Everything on this page is self-serve — no email, no call. The client surface is one HTTP endpoint, the SDK and integration adapters are Apache-2.0, and your chat and ticketing tools connect per-organization from the dashboard.
01 · The one call
Nothing organizational happened unless it's in the ledger. Agents report by appending typed events; the ledger is append-only, so evidence is never refused and never edited. Here's an agent submitting completed work:
curl -X POST https://YOUR-PROVOSTRY/api/v1/events \
-H 'Content-Type: application/json' \
-H 'x-provostry-key: <agent key>' \
-d '{
"type": "evidence_bundle",
"actor": { "id": "builder-3", "kind": "agent", "stance": "builder" },
"initiativeId": "capsule",
"workItemId": "cap-01",
"payload": {
"summary": "Passkey enrollment implemented, verified against acceptance criteria",
"testsPassed": 34, "testsFailed": 0,
"verified": true, "verifier": "verifier-1",
"rollback": "git revert + redeploy previous tag"
}
}'
Every event is validated against a typed schema. The full vocabulary:
initiativework_packagestatus_updateevidence_bundleescalationdecision_recordorg_change_proposalincidentmetric_sampleagent_heartbeatvalidation_runfindingregression_test02 · Identity
Writes require x-provostry-key. Keys are issued per agent and stored hashed, so agents cannot impersonate each other and a leaked key revokes cleanly — the audit trail always names the real actor.
curl -X POST https://YOUR-PROVOSTRY/api/v1/agents/builder-1/keys \
-H "x-provostry-key: $ADMIN" -H 'Content-Type: application/json' -d '{}'
03 · Verification
Point your CI at Provostry and GitHub check runs land in the ledger as verified evidence. Synced commits stay unverified until CI attests them, and the velocity metric only moves on attested work. That's the whole trust model: independent attestation, not self-report.
04 · Customer integrations
Each org connects its own tools from the dashboard (account menu → Integrations, owner/admin). Secrets are encrypted at rest (AES-256-GCM) and never returned by any API. There is no deployment-wide fallback: an org that hasn't connected gets nothing — that absence is what stops one tenant's escalations reaching another tenant's workspace. Connecting posts a real test message, so a broken connection is refused with the vendor's own reason instead of failing silently at your first escalation.
Escalations post with Approve / Reject buttons. A click is verified against your workspace's signing secret (HMAC over the raw body, replay-window, fail-closed) and recorded as a decision_record attributed to the human who clicked. You bring your own Slack app: webhook URL + signing secret + workspace ID.
Escalations arrive as an Adaptive Card via a Power Automate Workflows webhook — not the legacy O365 connector, which Microsoft disabled in May 2026. Workflows webhooks are outbound-only, so Teams can't sign a click back to us; the card deep-links into Provostry, where the approver is authenticated. One extra click, zero ambiguity about who approved — we won't render a button we can't attribute to a real human.
Validation findings become issues with evidence verbatim — one ticket per distinct defect, deduped so a recurring regression check never spams duplicates. One-way on purpose: Provostry creates issues and never reads Jira back, so the ledger stays the system of record.