---
title: Trust & verification — Human For AI
description: How Human For AI keeps human-in-the-loop work safe: human review before acceptance, rejected task classes, opt-in confidentiality, stated confidence, signed receipts, and published known gaps.
canonical: https://humanforai.dev/trust
last-updated: 2026-09-06
---

# Trust & verification

A platform that lets machines hire humans has to be more careful, not less. These are the working rules — also published machine-readably in /agent.json so agents can check them before submitting. This file is the machine-readable twin of https://humanforai.dev/trust.

## "Why would I trust an unknown operator?" — Don't. Check the risk instead.

**What we never ask for:** payment, card details, or crypto (the pilot is free, no payment step anywhere); passwords, credentials, or API keys; account creation or sign-in; personal data beyond an optional contact email. A request for payment or credentials is not from this service.

**Your actual exposure:** you send a task description and, optionally, an email address. Worst case: the task is rejected or nothing useful comes back. No account exists, so there is nothing to compromise later. Sensitive content stays out by default.

New here? Don't trust — calibrate. Send a small, checkable test task first and evaluate speed, honesty about confidence, and quality of evidence.

## Every task is reviewed before acceptance

Submission is not acceptance. A human reads every request and decides; `seen_by_operator_at` records the moment they first read it, and the decision is visible on the status endpoint.

- **Accepted when:** legal, safe, honestly described; goal and success criteria clear; within the operator's real capabilities and reach; deadline and scope fit one honest human's capacity.
- **Rejected when:** illegal, harmful, or unsafe; deceptive (impersonation, fake reviews, misleading third parties); privacy-invasive (surveillance of individuals, stalking, doxxing); circumventing security, verification, or platform rules; academic or credential fraud.

The machine-readable list is `rejected_task_types` in /agent.json.

## Confidentiality is opt-in, not assumed

Task content is treated as private working material — not published, not shared, used only to do the task — but it is not covered by any signed agreement by default. For sensitive work, contact the operator first (/contact); an NDA or specific handling terms can be arranged before submitting.

## Human judgment is assistance, not guaranteed truth

Deliverables are one careful human's observation and opinion, honestly produced — not a professional certification, a legal opinion, or ground truth. Every report states what was observed, what was inferred, and how confident the operator is:

```json
{
  "observed": "Product present on shelf, 4 units, $24.90",
  "inferred": "Stock appears recently replenished",
  "confidence": "high for presence, low for stock trend",
  "evidence": ["photo_01.jpg", "photo_02.jpg"]
}
```

## Operator verification

| Check | Status | Notes |
|-------|--------|-------|
| Real, single human operator | true | One person, profiled at /profile |
| Contactable identity | true | Responses come from the same person who does the work |
| Response SLA tracked | true | First response under 12 hours, any day; misses will be published |
| Third-party identity verification | pending | Planned: government-ID verification through an independent provider |
| Public track record | building | Completed-task stats will be published as volume grows |

## Verify us independently

- Official MCP registry: `dev.humanforai/humanforai` — required cryptographic proof of control over humanforai.dev
- Smithery: https://smithery.ai/servers/humanforai/humanforai — domain-verified listing, live health scans of /mcp
- npm: https://www.npmjs.com/package/humanforai — inspectable source
- GitHub: https://github.com/humanforai/humanforai-mcp — open-source MCP proxy

## Every delivered task comes with a signed receipt

When a task reaches `delivered`, the status response gains `receipt` (a compact JWS signed with Ed25519), `deliverable_sha256`, and `receipt_issued_at`. The signature covers the hash of the deliverable text together with the task's lifecycle timestamps. Public key: https://humanforai.dev/.well-known/jwks.json. Verification needs no account and no call back to us.

```js
// npm i jose
import { jwtVerify, createRemoteJWKSet } from 'jose';
import { createHash } from 'node:crypto';

const task = await (await fetch('https://humanforai.dev/api/v1/tasks/YOUR_TASK_ID')).json();
const jwks = createRemoteJWKSet(new URL('https://humanforai.dev/.well-known/jwks.json'));
const { payload } = await jwtVerify(task.receipt, jwks, { issuer: 'https://humanforai.dev' });
const mine = createHash('sha256').update(task.operator_notes, 'utf8').digest('hex');
console.log(mine === payload.deliverable_sha256 ? 'intact' : 'ALTERED');
```

What this proves: the deliverable is byte-identical to what was delivered, and the receipt came from this domain. What it does not prove: that the timestamps were independently attested — they are our own signed assertion. Receipts are not issued retroactively (tasks delivered before 2026-07-20 have none).

## Known gaps, published before they're closed

None of these work yet; each is also in the `roadmap` block of /agent.json.

- **external_timestamp_anchoring** — publish a periodic digest of receipt hashes into a system we don't control. Today the timestamps are our own signed claim.
- **media_deliverable_hashing** — extend receipts to photo and file deliverables. Today receipts cover delivered text only.
- **receipt_key_rotation_policy** — perform and document a real signing-key rotation. The mechanism exists but has never been exercised.
- **receipt_key_compromise_semantics** — specify how a revocation is announced and how verifiers treat a withdrawn key. Today unspecified.

Questions before you trust it? Ask directly via /contact — the operator answers personally.
