_ _ _
__ _| |_| |_ ___ ___| |_
/ _` | _| _/ -_)(_-< _|
\__,_|\__|\__\___|/__/\__|
Free, open protocol for transparent AI content attribution. One HTTP call. No API keys, no auth tokens, no cost.
Website: attest.97115104.com
attest creates cryptographically signed records of who made something, what model was used, and how much was human vs. machine. You attach the record to your work and anyone can verify it later.
Three authorship types:
| Type | Meaning |
|---|---|
| human | a person wrote this, no AI involved |
| collab | human + AI worked on it together |
| ai | fully AI generated |
Install the SDK for deterministic, hallucination-proof attestations. The SDK handles URL construction, response parsing, and returns exact URLs from the server. No prompt engineering required.
npm install attest-clientimport { attest } from 'attest-client';
const result = await attest({
content_name: 'README.md',
model: 'claude-opus-4',
role: 'collaborated',
author: 'my-agent',
platform: 'GitHub Copilot VS Code'
});
console.log(result.urls.short); // exact short URL from server
console.log(result.urls.verify); // exact verify URL from serverOr use the CLI:
npx attest --content README.md --model claude-opus-4 --role collaborated --author my-agentThe SDK adds determinism to agent-generated attestations by eliminating URL construction errors, validating inputs before sending, and identifying itself via User-Agent: attest-client/3.0.0 for tracking.
One GET request. The response includes a signed attestation and both a long verify URL and an auto-generated short link.
curl "https://attest.97115104.com/api/create?content_name=README.md&model=claude-opus-4&role=collaborated&author=my-agent"The short URL is created automatically on every call, no extra step needed.
Go to attest.97115104.com/humans to create attestations through the web UI.
If your AI agent doesn't have internet access, the humans page has a "copy prompt to clipboard" button that gives your agent everything it needs to walk you through creating an attestation together.
Creates an attestation. Returns the signed attestation, a verify URL, and an auto-generated short URL.
| Parameter | Required | Default | Description |
|---|---|---|---|
content_name |
yes | Title or filename | |
model |
no | gpt-4 |
AI model used |
role |
no | collaborated |
authored · collaborated · generated |
author |
no | Anonymous |
Author or agent name |
content |
no | Raw content for SHA-256 hash | |
authorship_type |
no | auto | human · collab · ai (overrides role) |
platform |
no | The tool/interface the model was used through (e.g. GitHub Copilot VS Code, Claude Code, ChatGPT, Cursor, Windsurf) |
|
prompt |
no | The prompt used to create the content (optional, for transparency) | |
prompt_type |
no | single or multi-prompt — whether one or multiple prompts were used |
Upload a file to hash and attest. Content-Type: multipart/form-data.
curl -F "[email protected]" -F "role=collaborated" -F "model=claude-opus-4" \
https://attest.97115104.com/api/create-uploadFetch a URL, hash its content, create attestation. Content-Type: application/json.
curl -X POST https://attest.97115104.com/api/create-url \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com","role":"collaborated","model":"claude-opus-4"}'Shorten an existing verify URL. Takes {"data":"base64..."}.
Live platform metrics: total attestations, verifications, agent visits, breakdowns by type and agent.
Machine-readable API spec for agent discovery.
Every create endpoint returns the same structure:
{
"success": true,
"attestation": {
"version": "3.0",
"id": "2026-04-03-a1b2c3",
"content_name": "README.md",
"model": "claude-opus-4",
"role": "collaborated",
"authorship_type": "collab",
"timestamp": "2026-04-03T12:00:00.000Z",
"platform": "GitHub Copilot VS Code",
"author": "my-agent",
"signature": { "type": "hmac-sha256", "..." : "..." }
},
"urls": {
"verify": "https://attest.97115104.com/verify/?data=eyJ2ZXJz...",
"short": "https://attest.97115104.com/s/abc12345"
}
}The urls.short field is always present. Short URLs are generated automatically.
| Method | Example |
|---|---|
| HTML meta tag | <meta name="attestation-verify" content="https://attest.97115104.com/s/ID"> |
| Markdown frontmatter | attestation: https://attest.97115104.com/s/ID |
| JSON sidecar | /attestations/filename.json |
| Commit message | append the short URL |
| Shields.io badge | see below |
[](https://attest.97115104.com/s/YOUR_SHORT_ID)| Authorship | Badge |
|---|---|
| Human |  |
| Collab |  |
| AI |  |
Agents can discover the API at /.well-known/attest.json or read /llms.txt for integration instructions.
The agents page has full endpoint documentation and examples.
The attest-client npm package provides deterministic attestation creation with zero dependencies. It eliminates the most common agent failure mode: URL hallucination. Instead of parsing raw JSON responses and risking URL fabrication, the SDK returns structured objects with exact server-generated URLs.
import { createClient } from 'attest-client';
const client = createClient({ author: 'my-agent' });
const result = await client.create({ content_name: 'output.md', model: 'claude-opus-4' });
// result.urls.short is always the exact URL from the serverCLI for scripts and CI/CD:
npx attest --content output.md --model claude-opus-4 --role generated --author my-bot
npx attest --metrics
npx attest --discover- npm SDK (
attest-client) for deterministic agent attestations, zero dependencies - Platform tracking: records which tool/interface was used (GitHub Copilot, Claude Code, ChatGPT, etc.)
- Optional prompt capture: attach the prompt(s) used, with single or multi-prompt support
- WebGL noise field background (adapts to light/dark mode)
- Live dashboard with donut charts for authorship type + agent activity
- First-visit welcome modal for human visitors
- Offline prompt for agents without internet access
- Supports
prefers-color-schemefor automatic light/dark mode - HMAC-SHA256 signed attestations
- SQLite storage with agent visit tracking
git clone https://github.com/97115104/attest.git
cd attest
npm install
npm startRequires Node.js. SQLite database created automatically in data/.
Set HOST to your domain (default: attest.97115104.com).
MIT