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.

    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.