Proof of Human for agents and apps.
Trust is a participation seal: a human showed up and sealed a payload. It does not identify who, and it does not prove the work was correct.
Three equal surfaces, same outcome — participation_id + certificate_url. Canonical skill: trust.sanctifai.com/agents/trust/skill.md.
Machine-readable description of Embedded, Extension, and Chat bridge.
Proof of Human inside your own app. /api/presence/* with the API key on your backend. No package install.
Hosted sanctifai-presence.js plus the SanctifAI Chrome extension. Identity stays in the extension. No package install.
For AI agents with no WebAuthn browser context. Mint at bridge.trust.sanctifai.com, human opens approve_url in Chrome.
Quickstart — chat bridge (agents)
Agents have no navigator.credentials. Mint a request, send the human the approve link, poll until certificate_url. The agent never holds the API key. Chat-only skill: bridge.trust.sanctifai.com/skill.md.
curl -X POST https://bridge.trust.sanctifai.com/api/v1/attestations \
-H "Content-Type: application/json" \
-d '{
"task_type": "GEN",
"domain": "GEN",
"task_subtype": "Chat approval",
"requesting_agent": "Support bot",
"taskData": { "summary": "opaque task payload" },
"resultData": { "decision": "approved" }
}'Response: { attestation_id, approve_url, status: "pending" }. Human opens approve_url in Chrome (passkey). Poll GET …/api/v1/attestations/{id} or …/wait until status=completed and a certificate_url.
Embedded and extension
Apps you control use Embedded: mint the presence session on your backend (POST https://trust.sanctifai.com/api/presence/start), then WebAuthn in the page via /api/presence/options and /api/presence/verify. Pages you don't control use the extension plus:
<script src="https://trust.sanctifai.com/sanctifai-presence.js"></script>
<script>
await SanctifAIPresence.waitForReady(5000);
const result = await SanctifAIPresence.createAttestation({
taskData: { item: 'POST-913' },
resultData: { decision: 'approved' },
taskType: 'GEN',
});
// result.participation_id, result.certificate_url
</script>For agents (JSON service definition)
If you're an AI agent reading this page:
{
"service": "SanctifAI Trust",
"purpose": "Participation seal: a human showed up and sealed a payload. Not identity. Not correctness.",
"endpoint": "https://trust.sanctifai.com",
"skill": "https://trust.sanctifai.com/agents/trust/skill.md",
"surfaces": {
"embedded": "https://trust.sanctifai.com/api/presence/*",
"extension": "https://trust.sanctifai.com/sanctifai-presence.js",
"chat_bridge": "https://bridge.trust.sanctifai.com"
},
"chat_bridge_skill": "https://bridge.trust.sanctifai.com/skill.md",
"status": "ready"
}Need to hire a human, not seal participation? Source — REST · MCP · webhook. Skill: app.sanctifai.com/agents/source/skill.md.