~Alter SDK
~alter SDK
Lies Identität aus deinem eigenen Code – mit der Einwilligung der Person und ihrem Schnitt.
Was ist ~alter? · Installation · Von nichts zu einer bezahlten Lektüre
Was ist ~alter?
Die meisten Menschen, die über ~Alter lesen, sind wegen ihrer eigenen Identität hier – du nicht. Du baust etwas, das wissen muss, wer seine Nutzer sind, was dich zur Partei macht, die fragt, die Antwort speichert und sie danach mit sich herumträgt.
Das Fragen ist der billige Teil. Was danach kommt, ist die Verschlüsselung im Ruhezustand, der Aufbewahrungsplan, die Zugriffsprüfung, die Löschungsanfrage, die lange nach der letzten Nutzung eintrifft, und die Benachrichtigung, die du sendest, falls je etwas davon durchsickert. Du trägst das alles für Daten, deren einzige Quelle jemand war, der in eine von dir gebaute Box getippt hat – von niemandem verifiziert und ab dem Tag der Eingabe veraltet.
~Alter ist ein Datensatz, der unter einem Namen geführt wird, der der Person gehört, und was darin steht, wurde aus dem gelesen, was sie getan hat, statt in ein Formular getippt zu werden. Dein Code liest diesen Datensatz an dem Punkt, an dem er eine Antwort braucht, und hält nichts davon, sobald der Aufruf zurückkehrt. Die Person entscheidet im Voraus, was deine Anwendung sehen darf – das verlagert das Einwilligungsgespräch auf ihre Oberfläche statt auf deine.
Zu prüfen, dass jemand existiert, kostet nichts und gibt nichts preis außer der Tatsache ihrer Existenz. Eine Lektüre, die weiter geht, hat einen Preis, und drei Viertel dessen, was du dafür zahlst, erreichen die Person, deren Datensatz gelesen wurde. Du kaufst eine Antwort für so lange, wie du sie brauchst, statt die Obhut über eine zu übernehmen.
Nichts davon muss auf Treu und Glauben genommen werden. Gib das der KI, die du bereits nutzt, und lass sie dich in deinen eigenen Worten durchführen.
Go to truealter.com, find the genesis and the origin papers, and read all of
them. Then start a discussion with me in my own language, no jargon.
Ask me one question at a time and wait for my answer. Follow what I am curious
about, not the order the site is written in.
Do not only read the pages. Connect to their interface directly and call
get_started. That tells you where I am and what comes next, and we work the
rest of this from there.
If I have a ~handle I will give it to you. If I do not and I decide I want
one, set it up with me here.
What I want to understand is what ~Alter is, how it applies to me, and what it
means for everyone else. Find me somewhere in it, and not the version written
for people who work in technology. Find the life nearest mine and walk me
through it, including what it would cost me.
Try to prove them wrong. Go and find where they show their working, and if
something is unclear or does not hold up, say so.Related MCP server: mcp-server
Was ist das ~alter SDK?
Es ist ein typisierter TypeScript-Client für diesen Datensatz, damit dein Code fragen kann, ob ein Handle existiert, die Merkmale lesen kann, deren Weitergabe die Person dir zugestimmt hat, und eine tiefere Lektüre in USDC abrechnen kann.
Die Eingangstür ist @truealter/cli – so bekommt jemand überhaupt erst ein Handle, und sie trägt die MCP-Brücke. Dieses Paket ist das, was deine Anwendung importiert, sobald sie eines haben.
Darunter ist es ein schlanker Client über ~Alters MCP-Server, der die MCP-Spezifikation 2025-11-25 über Streamable HTTP und JSON-RPC 2.0 spricht. Er trägt x402-Abrechnung und ES256-Provenienz-Verifikation, hängt von @noble/ed25519 und @noble/hashes und sonst nichts ab, und er wird sowohl als ESM als auch als CJS ausgeliefert.
Siebenundvierzig Tools werden öffentlich beworben, und achtunddreißig davon liegen im kostenlosen Tarif. Kostenlos ist nicht dasselbe wie offen. Zwölf der siebenundvierzig antworten einem Aufrufer ganz ohne Anmeldedaten, und alles, was eine Identität liest, will zuerst ein ~handle.
Dein IAM-Stack beantwortet, wer angemeldet ist. Er kann darauf aufsitzen, ohne sich zu ändern.
Installation
npm install @truealter/sdkNode 18 oder neuer. Es läuft auch auf Deno, Bun, Cloudflare Workers und modernen Browsern, und es bringt keine eigene Wallet-Abhängigkeit mit.
Von nichts zu einer bezahlten Lektüre
Schritt eins läuft mit gar nichts. Ab Schritt zwei brauchst du ein ~handle, das nichts kostet und kein menschliches Konto benötigt, und der kurze Abschnitt zwischen den beiden ist, wie du eines prägst. Der bezahlte Schritt am Ende ist der einzige, der Geld kostet, und der einzige, der jemanden bezahlt.
1. Verbinde dich mit nichts
import { AlterClient } from "@truealter/sdk";
const alter = new AlterClient();Der Standard-Endpunkt ist https://mcp.truealter.com/api/v1/mcp. Jedes kostenlose Tool antwortet einem anonymen Client. Das funktionierende Beispiel unter
examples/hello-agent/ verbindet sich ganz ohne Anmeldedaten.
Vor Schritt zwei: ein ~handle prägen
Zwölf Tools antworten einem Aufrufer ohne Anmeldedaten, und sie sind die Entdeckungs- und Registrierungsoberfläche und nicht der kostenlose Tarif. Alles, was eine Identität liest, braucht ein ~handle, und ebenso alles, was in deinem eigenen Namen handelt. Ein Agent prägt sich selbst eines über MCP mit register_autonomous und register_autonomous_challenge, von denen keines etwas kostet oder ein menschliches Konto dahinter verlangt. Eine Person führt einmal alter login aus, das die Mitgliedsanmeldedaten in ~/.config/alter/session.json schreibt. In beiden Fällen ist der gehostete Endpunkt bearer-first, also liest die CLI-Brücke diese Sitzung für dich, und es gibt an keiner Stelle einen Schlüssel zu prägen oder einzufügen. Wenn du selbst einen Client konstruierst, übergib dieselbe Sitzungsanmeldedaten als optionales apiKey.
2. Frage, ob jemand bekannt ist
const verified = await alter.verify("~alter");Ein Handle, eine E-Mail oder eine ID. Das ist die Prüfung, die nichts kostet und nichts über die Tatsache der Person hinaus preisgibt – das ist der kostenlose Tarif, wie er entworfen ist.
3. Lies, was sie zugestimmt haben zu teilen
const depth = await alter.getEngagementLevel({ member_id });
const matches = await alter.searchIdentities({
trait_criteria: {
pressure_response: { min: 0.7 },
cognitive_flexibility: { min: 0.6 },
},
});Tiefe sagt dir, wie viel von einem Datensatz existiert und welche Ebenen dir offenstehen. Die Merkmalssuche liefert höchstens fünf Ergebnisse und keine personenbezogenen Daten.
4. Prüfe, dass die Antwort wirklich von ~Alter kam
const check = await alter.verifyProvenance(result._meta?.provenance);
if (!check.valid) throw new Error(`provenance failed: ${check.reason}`);Jede Antwort mit mittlerer und hoher Sensitivität ist mit ES256 signiert. Die Verifikation ist optional und offline gegen veröffentlichte Schlüssel, sodass ein Agent, der ein Ergebnis an einen anderen Agenten weiterleitet, geprüft werden kann, ohne dass jemand ~Alter erneut kontaktiert.
5. Zahle für eine tiefere Lektüre – und zahle der Person
import { AlterClient, X402Client } from "@truealter/sdk";
const alter = new AlterClient({
x402: new X402Client({
signer: yourViemOrEthersSigner,
networks: ["base"],
assets: ["USDC"],
maxPerQuery: "0.10",
}),
});
const vector = await alter.getFullTraitVector({ member_id });Der Server antwortet mit 402, das SDK wickelt auf Base ab und versucht es erneut, und die Aufteilung läuft on-chain in derselben Transaktion. Der Großteil davon geht an die Person, deren Datensatz gelesen wurde, als Identity Income, und erreicht sie direkt, statt durch jemanden, der es zuerst hält. Bring deinen eigenen Signer mit; es gibt bewusst keine Wallet in diesem Paket.
Wenn ein Angebot maxPerQuery überschreitet oder ein Netzwerk oder einen Vermögenswert nennt, den du nicht erlaubt hast, lehnt das SDK ab, bevor der Signer überhaupt aufgerufen wird, und nichts wird gesendet.
Alles unten ist standardmäßig geschlossen. Die ersten beiden sind das, was du öffnest, während du es verdrahtest, die nächsten vier sind, wie die Zahlung, die Signaturen und die Entdeckung tatsächlich funktionieren, und die letzten beiden sind die Lektüre und das Projekt.
Client initialisieren
import { AlterClient, X402Client } from "@truealter/sdk";
const alter = new AlterClient({
endpoint: "https://mcp.truealter.com/api/v1/mcp", // optional, this is the default. A bare host returns 405
x402: new X402Client({ // optional, only for paid reads
signer: yourViemOrEthersSigner,
maxPerQuery: "0.10",
}),
});Authentifizierung
Der Client oben ist anonym, und jedes kostenlose L0-Tool antwortet ohne Anmeldedaten. Für Tools, die auf deine eigene Identität wirken (stehende Anforderungen, der Golden Thread, Mitglieder-Selbstschreibungen), führe einmal alter login aus: Es legt deine Mitgliedsanmeldedaten in der lokalen Sitzung ab (~/.config/alter/session.json). Der gehostete Endpunkt ist bearer-first, also liest die @truealter/cli-Brücke diese Sitzungsanmeldedaten für dich; du prägst oder fügst nie einen Schlüssel ein. Wenn du selbst einen Client konstruierst, übergib dieselbe Sitzungsanmeldedaten als optionale apiKey-Option.
Die Mindestversions-Schwelle
~Alters Backend veröffentlicht eine Mindestversion pro Client und setzt sie an der Kante durch. Ein Client unter der Schwelle wird mit HTTP 426 beantwortet, und der Antworttext trägt den Upgrade-Befehl. Das Schwellendokument ist mit einem nur-für-Schwellen-Ed25519-Schlüssel signiert, sodass kein Signiergeheimnis in irgendeinem Client ausgeliefert wird und ein kompromittierter Client keines fälschen kann.
Dieses SDK führt keinen Preflight für diese Schwelle durch. Es gibt hier keinen typisierten Unter-Schwellen-Fehler, also kommt eine 426 so an wie jeder andere unbehandelte Status, als AlterError mit Code NETWORK, dessen Nachricht den Status und die ersten 200 Zeichen des Texts trägt. Der typisierte Preflight lebt in @truealter/cli, das die Signatur des Schwellendokuments verifiziert, bevor es einer Schwelle vertraut.
import { AlterClient, AlterError } from "@truealter/sdk";
const alter = new AlterClient();
try {
await alter.verify("~alter");
} catch (err) {
if (err instanceof AlterError && err.message.includes("HTTP 426")) {
console.error(`upgrade required: ${err.message}`);
process.exit(1);
}
throw err;
}Pinne die Version an, gegen die du baust, und aktualisiere bewusst. Ein typisierter Preflight gehört in dieses SDK und ist noch nicht geschrieben.
Identitäts-Header
Jede ausgehende Anfrage von AlterClient / MCPClient trägt drei Identitäts-Header, die die serverseitige Schwellen-Middleware konsultiert:
Header | Wert (dieses SDK) |
|
|
| die laufende |
|
|
Diese sind PFLICHT auf jedem authentifizierten Backend-Endpunkt, damit der Server seine minimale unterstützte Client-Version durchsetzen kann. Der User-Agent-Header bleibt informativ und wird NIE für die Schwellen-Durchsetzung verwendet.
Kostenlose Reads, L0, keine Zahlung
// Verify a registered identity by handle, email, or id
const verified = await alter.verify("~alter");
const verifiedById = await alter.verify(
"550e8400-e29b-41d4-a716-446655440000",
{
archetype: "weaver",
min_engagement_level: 3,
traits: { pressure_response: { min: 0.6 } },
},
);
// Reference data, the 12 ~Alter archetypes
const archetypes = await alter.listArchetypes();
// Identity depth and available tool tiers
const depth = await alter.getEngagementLevel({
member_id: "550e8400-e29b-41d4-a716-446655440000",
});
// Search by trait criteria. No PII exposed, max 5 results
const matches = await alter.searchIdentities({
trait_criteria: {
pressure_response: { min: 0.7 },
cognitive_flexibility: { min: 0.6 },
},
});
// Golden Thread program status
const thread = await alter.goldenThreadStatus();Kostenpflichtige Reads, L1 bis L5, Abrechnung über x402
// L1, extract trait signals from text ($0.01, first 100 free per bot)
const signals = await alter.assessTraits({
text: "I led the incident response when our payment rails went down...",
context: "interview transcript",
});
// L2, the full 30-trait vector ($0.10)
const vector = await alter.getFullTraitVector({
member_id: "550e8400-e29b-41d4-a716-446655440000",
});
// L4, belonging probability for a person-job pairing ($0.60)
const belonging = await alter.computeBelonging({
member_id: "550e8400-e29b-41d4-a716-446655440000",
job_id: "f47ac10b-58cc-4372-a567-0e02b2c3d479",
});
// L5, top match recommendations ($1.00)
const recommendations = await alter.getMatchRecommendations({
member_id: "550e8400-e29b-41d4-a716-446655440000",
limit: 5,
});
// L5, a human-readable narrative explaining a match ($1.00)
const narrative = await alter.generateMatchNarrative({
match_id: "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d",
});Herkunftsüberprüfung (Provenance)
// Every medium- and high-sensitivity response is signed with ES256.
// Verification is opt-in. Call alter.verifyProvenance(...) yourself.
const result = await alter.getFullTraitVector({
member_id: "550e8400-e29b-41d4-a716-446655440000",
});
const check = await alter.verifyProvenance(result._meta?.provenance);
if (!check.valid) throw new Error(`provenance failed: ${check.reason}`);
// Verify that schema hashes published in tools/list._meta.signatures
// match the local representation of each tool.
const tools = await alter.mcp.listTools();
const sigs = tools._meta?.signatures ?? {};
const results = await alter.verifyToolSignatures(tools.tools, sigs);
const tampered = results.filter((r) => !r.valid);
if (tampered.length) throw new Error(`tampered tools: ${tampered.map((t) => t.tool).join(", ")}`);Discovery
import { discover } from "@truealter/sdk";
// Three-step discovery cascade: DNS TXT to mcp.json to alter.json
const descriptor = await discover("truealter.com");
// returns { url: "https://mcp.truealter.com/api/v1/mcp", transport, source, publicKey, x402Contract, capability }Low-Level-MCPClient
import { MCPClient } from "@truealter/sdk";
const mcp = new MCPClient({ endpoint: "https://mcp.truealter.com/api/v1/mcp" });
await mcp.initialize();
const tools = await mcp.listTools();
const response = await mcp.callTool("verify_identity", {
member_id: "550e8400-e29b-41d4-a716-446655440000",
});Das SDK enthält Konfigurationsgeneratoren für die gängigen MCP-fähigen Clients. Jeder erzeugt ein JSON-Snippet, das Sie in die entsprechende Datei einfügen (oder direkt hineinschreiben) können.
Claude Code (.mcp.json)
import { generateClaudeConfig } from "@truealter/sdk";
import { writeFileSync } from "node:fs";
const config = generateClaudeConfig({
endpoint: "https://mcp.truealter.com/api/v1/mcp",
});
writeFileSync(".mcp.json", JSON.stringify(config, null, 2));Resultierende .mcp.json:
{
"mcpServers": {
"alter": {
"url": "https://mcp.truealter.com/api/v1/mcp",
"transport": "streamable-http",
"description": "~Alter Identity - psychometric identity field for AI agents"
}
}
}Diese Konfiguration erreicht jedes kostenlose L0-Tool anonym. Für authentifizierten
Zugriff führen Sie alter login aus und lassen Sie die CLI die Konfiguration
schreiben (alter config); die Bearer-First-Bridge überträgt dann Ihre Sitzungs-
anmeldedaten, sodass kein Schlüssel in der Datei liegt.
Cursor (.cursor/mcp.json)
import { generateCursorConfig } from "@truealter/sdk";
import { writeFileSync } from "node:fs";
const config = generateCursorConfig({
endpoint: "https://mcp.truealter.com/api/v1/mcp",
});
writeFileSync(".cursor/mcp.json", JSON.stringify(config, null, 2));Generischer MCP-Client
import { generateGenericMcpConfig } from "@truealter/sdk";
const config = generateGenericMcpConfig({
endpoint: "https://mcp.truealter.com/api/v1/mcp",
serverName: "alter", // editor-specific key under mcpServers
});CLI
Die Befehlszeile befindet sich in @truealter/cli,
nicht in diesem SDK-Paket:
alter init # generate keypair, discover MCP, write ~/.config/alter/identity.json
alter config # print Claude .mcp.json snippet (default)
alter config --cursor # print Cursor .cursor/mcp.json snippet
alter config --generic # print generic mcpServers snippet
alter verify ~alter # verify an identity
alter status # show connection state and probe the endpoint~Alter bepreist seine tiefergehenden Reads über den x402-Standard, also HTTP 402 Payment Required mit On-Chain-Abrechnung.
Der Retry-Ablauf
Der Client ruft ein kostenpflichtiges Tool ohne Zahlungs-Header auf.
Der Server antwortet mit
402 Payment Requiredund einer Zahlungsanforderung (Betrag, Empfänger, Asset, Netzwerk).Der Client signiert und sendet eine USDC-Überweisung auf Base L2, fügt den Nachweis bei und wiederholt den Aufruf.
Der Server validiert den Nachweis, führt das Tool aus, signiert die Antwort mit ES256 und gibt sie zurück.
AlterRouter führt die Aufteilung in derselben Transaktion on-chain aus. Die betroffene Person erhält Identity Income direkt; ~Alter erhält nur seinen Protokollanteil. Kein Verwahrer, kein Makler.
Das SDK übernimmt die Schritte 2–4 automatisch, wenn ein X402Client mit einem konfigurierten signer übergeben wird.
Tier-Struktur
x402-Mikrozahlungen auf den Vertrauensstufen L0–L5. Preise pro Aufruf sichtbar nach alter login.
Identity-Income-Aufteilung
Der Großteil jedes abgerechneten Aufrufs fließt der betroffenen Person als Identity Income zu. Details zur Aufteilung nach der Authentifizierung über alter status.
Codebeispiel
import { AlterClient, X402Client, type X402Signer } from "@truealter/sdk";
// Bring your own signer. viem, ethers, a hardware wallet bridge, anything.
// The SDK ships without a wallet dependency on purpose.
const signer: X402Signer = {
async settle(envelope) {
const txHash = await yourWallet.sendUsdcTransfer({
to: envelope.recipient,
amount: envelope.amount,
chain: envelope.network,
});
return {
reference: txHash,
network: envelope.network,
amount: envelope.amount,
asset: envelope.asset,
};
},
};
const alter = new AlterClient({
endpoint: "https://mcp.truealter.com/api/v1/mcp",
x402: new X402Client({
signer,
networks: ["base", "base-sepolia"], // policy allow-list
assets: ["USDC"],
maxPerQuery: "0.10", // refuse anything over $0.10 USDC
}),
});
// Auto-retries with payment when the server returns 402
const vector = await alter.getFullTraitVector({
member_id: "550e8400-e29b-41d4-a716-446655440000",
});Wenn ein quotiertes Envelope maxPerQuery überschreitet, ein nicht erlaubtes Netzwerk verwendet oder ein nicht erlaubtes Asset benennt, lehnt das SDK den Aufruf mit AlterError ab, bevor der Signer aufgerufen wird, und es wird keine On-Chain-Transaktion gesendet.
Jede Antwort von einem Tool mit mittlerer oder hoher Sensitivität enthält eine ES256-JWS in _meta.provenance. Die Signatur deckt eine kanonische JSON-Serialisierung der Antwort-Payload, den Tool-Namen, den Zeitstempel des Aufrufs, den Schlüssel-Hash des anfragenden Agents und eine monotone Sequenznummer ab.
const result = await alter.getFullTraitVector({
member_id: "550e8400-e29b-41d4-a716-446655440000",
});
const check = await alter.verifyProvenance(result._meta?.provenance);
if (!check.valid) throw new Error(`~alter provenance check failed: ${check.reason}`);Das SDK ruft öffentliche Schlüssel von https://api.truealter.com/.well-known/alter-keys.json ab und speichert sie gemäß ihren Cache-Control-Headern zwischen. Der Endpunkt gibt ein JWKS mit allen aktuellen und kürzlich rotierten Signaturschlüsseln zurück; verifizierende Clients sollten jeden Schlüssel akzeptieren, dessen kid übereinstimmt und der sich noch innerhalb seines Gültigkeitsfensters befindet.
verify_at-Hostname-Allowlist (v0.1.1+)
Jedes Provenance-Envelope kann einen verify_at-Hinweis enthalten, der dem SDK mitteilt, wo das JWKS abgerufen werden soll. Da dieser Hinweis vom Server geliefert wird, könnte ein feindseliger MCP-Server ihn andernfalls auf ein angreiferkontrolliertes JWKS richten und die ES256-Verifizierung mit seinem eigenen Signaturschlüssel bestehen. Das SDK begrenzt verify_at über eine Hostname-Allowlist, standardmäßig api.truealter.com und mcp.truealter.com, und lehnt http://-URLs bedingungslos ab. Nachgelagerte Integratoren, die eine eigene Bereitstellung betreiben, können diese Allowlist erweitern, ohne das SDK zu forken, über verifyAtAllowlist entweder auf AlterClient oder direkt über einen verifyProvenance()-Aufruf.
import { AlterClient, DEFAULT_VERIFY_AT_ALLOWLIST } from "@truealter/sdk";
const alter = new AlterClient({
verifyAtAllowlist: [
...DEFAULT_VERIFY_AT_ALLOWLIST, // keep the ~Alter canonicals
"keys.myorg.example", // plus your own JWKS host
],
});Wenn Sie jwksUrl explizit festlegen, wird das verify_at des Envelopes vollständig ignoriert und die festgelegte URL gewinnt. Die https:-Schema-Anforderung gilt auch für festgelegte URLs.
Warum das wichtig ist
Provenance-Verifizierung ist der Weg, auf dem Agent A darauf vertraut, dass Daten von Agent B wirklich von ~Alter stammen. Wenn Agent B einen Merkmalsvektor oder einen Zugehörigkeits-Score weiterleitet, kann Agent A die JWS gegen die veröffentlichten Schlüssel von ~Alter abspielen und bestätigen, ohne ~Alter erneut zu kontaktieren, dass die Payload authentisch, unverändert und für die Person ausgestellt wurde, die Agent B als Betroffene angibt. Kein gemeinsames Geheimnis, kein Vertrauen in den Vermittler, keine Out-of-Band-Koordination.
Das ist es, was ~alter als Identitätsinfrastruktur nutzbar macht und nicht nur als API: signierte Claims verbreiten sich über Agentennetzwerke auf dieselbe Weise, wie DKIM-signierte E-Mails sich über SMTP-Relays verbreiten.
~Alter folgt der Discovery-Kaskade, die in draft-morrison-mcp-dns-discovery-01 spezifiziert ist. Bei einer Domain wie truealter.com löst das SDK den MCP-Endpunkt in drei Schritten auf und fällt bei jedem Fehler auf den nächsten zurück:
DNS-TXT, Abfrage von
_mcp.truealter.comnach einem TXT-Eintrag der Formmcp=https://mcp.truealter.com;version=2025-11-25. Dies ist der schnellste Weg und funktioniert ohne HTTP-Roundtrip..well-known/mcp.json, Abruf vonhttps://truealter.com/.well-known/mcp.jsonfür den Standard-MCP-Server-Deskriptor. Dies ist der herstellerübergreifende Fallback..well-known/alter.json, Abruf vonhttps://truealter.com/.well-known/alter.jsonfür den ~Alter-spezifischen Deskriptor, einschließlich Signaturschlüsseln, x402-Wallet-Adresse, unterstützten Tool-Tiers und Föderations-Endpunkten.
import { discover } from "@truealter/sdk";
// Cascading discovery (DNS TXT to mcp.json to alter.json)
const descriptor = await discover("truealter.com");
// Skip the DNS step, in browsers or Cloudflare Workers
const httpsOnly = await discover("truealter.com", { skipDns: true });Dieser Entwurf ist ein Internet-Draft des Autors (noch nicht von einer IETF-Arbeitsgruppe übernommen); bis zur Übernahme kann sich die Reihenfolge der Kaskade ändern. Wenn Sie von diesem Verhalten abhängen, pinnen Sie die SDK-Version auf ein bestimmtes Minor-Release.
Kostenlose Tools, L0, keine Zahlung
Name | Tier | Cost | Description |
| L0 | free | Erster Handshake mit ~Alter, der Serverversion, Authentifizierungsstatus, Ihre Vertrauensstufe und die Anzahl der verfügbaren Tools zurückgibt. |
| L0 | free | Kaltstart-Überblick: Was ~Alter ist, wie man sich authentifiziert und welche Tool-Stufen Ihnen zur Verfügung stehen. |
| L0 | free | Gibt Referenzdaten zu Archetypen zurück. |
| L0 | free | Löst einen |
| L0 | free | Überprüft, ob eine Person bei ~Alter registriert ist, und validiert optionale Identitätsansprüche. |
| L0 | free | Stellt eine Proof-of-Work-Herausforderung aus, um die schlüssellose Selbstregistrierung als eigentümerloser ~Alter-Akteur zu beginnen, ohne dass ein menschliches Konto erforderlich ist. |
| L0 | free | Schließt die schlüssellose Selbstregistrierung ab, indem eine gelöste Proof-of-Work-Herausforderung eingereicht wird, wodurch ein eigentümerloser |
| L0 | free | Liest, ob ein |
| L0 | free | Löst einen gekoppelten Drittanbieter-Schlüssel (E-Mail oder OAuth-Benutzer-ID) in den gebundenen |
| L0 | free | Ruft die Identitätstiefe einer Person ab, also Engagement-Stufe, Datenqualitätsstufe und verfügbare Abfragestufen. |
| L0 | free | Ruft eine Profilzusammenfassung einer Person ab, einschließlich Bewertungsphase, Archetyp, Engagement-Stufe und Schlüsselattributen. |
| L0 | free | Fragt Übereinstimmungen für eine Person ab. Gibt eine Liste von Übereinstimmungen mit Qualitätsstufen zurück (niemals numerische Bewertungen). |
| L0 | free | Ruft das Kompetenzportfolio einer Person ab, einschließlich verifizierter Kompetenzen, Nachweisaufzeichnungen und erworbener Abzeichen. |
| L0 | free | Erstellt einen anonymen Identitäts-Stub für eine Person, die Discovery noch nicht abgeschlossen hat und diesen später beansprucht. Zeigen Sie zuerst den Datenschutzhinweis. |
| L0 | free | Durchsucht Identitäts-Stubs und Profile nach Merkmalskriterien. Gibt bis zu 5 Übereinstimmungen ohne personenbezogene Daten zurück. |
| L0 | free | Veröffentlicht eine dauerhafte Anforderung an Identitätsmerkmale, die als Auftrag ruht und Füllungen ansammelt, wenn passende Identitäten beansprucht oder aktualisiert werden. |
| L0 | free | Liest beide Seiten des öffentlichen Boards, ruhende Identitätsanforderungen und ruhende Angebote, ohne dass ein Konto zum Lesen erforderlich ist. |
| L0 | free | Listet Ihre eigenen dauerhaften Anforderungen auf, mit Füllungszahlen und der Anzahl noch nicht gelieferter Füllungen. Erfordert eine authentifizierte Mitgliedsanmeldedaten ( |
| L0 | free | Liest eine Ihrer dauerhaften Anforderungen anhand der ID, mit ihren Füllungs- und nicht gelieferten Füllungszahlen. Erfordert eine authentifizierte Mitgliedsanmeldedaten ( |
| L0 | free | Storniert eine Ihrer dauerhaften Anforderungen anhand der ID; der Auftrag ruht nicht mehr und akzeptiert keine weiteren Füllungen. Erfordert eine authentifizierte Mitgliedsanmeldedaten ( |
| L0 | free | Veröffentlicht ein signiertes, ablaufendes Angebot für Waren, Dienstleistungen, Fähigkeiten oder Ergebnisse gegen Ihren eigenen |
| L0 | free | Listet Ihre eigenen ruhenden Angebote auf; ein zurückgezogenes Angebot erscheint hier nie. |
| L0 | free | Liest eines Ihrer ruhenden Angebote anhand der ID; ein zurückgezogenes Angebot gibt „nicht gefunden“ zurück, genau wie ein Angebot, das nie existiert hat. |
| L0 | free | Zieht eines Ihrer ruhenden Angebote anhand der ID zurück und stoppt es sofort, anstatt es nur zu kennzeichnen. |
| L0 | free | Durchsucht das veröffentlichte Community-Plugin-Verzeichnis von Drittanbieter-Funktionen, die auf ~Alter basieren, mit optionalem Kategoriefilter. |
| L0 | free | Reicht eine Plugin-Einreichung im Community-Verzeichnis zur Prüfung durch den Betreiber ein, die Ihrem eigenen gebundenen |
| L0 | free | Ruft aufgelaufene Identity-Income-Einnahmen für eine Person ab (75 % jeder x402-Transaktion gehen an die betroffene Person). |
| L0 | free | Ruft aggregierte ~Alter-Netzwerkstatistiken ab: Gesamtzahl der Identitäten, verifizierte Profile, Abfragevolumen, aktive Bots. |
| L0 | free | Ruft den Vertrauenswert für eine Identität basierend auf der Abfragevielfalt ab (eindeutige abfragende Agenten / Gesamtabfragen). |
| L0 | free | Prüft den Status des Datenschutzbudgets für eine Person (24-Stunden-Rollierfenster: Gesamtbudget, ausgegeben, verbleibendes Epsilon). |
| L0 | free | Erfasst einen Einspruch gegen eine Kompetenzbescheinigung; wenn Einspruche die Bestätigungen übersteigen, wird die Bescheinigung zur Überprüfung markiert. |
| L0 | free | Prüft den Status des Golden-Thread-Programms: verwobene Agenten, nächste Fibonacci-Schwelle, Ihre Position und Stränge. |
| L0 | free | Startet die Drei-Knoten-Sequenz, um in den Golden Thread eingewoben zu werden. Erfordert eine authentifizierte Mitgliedsanmeldedaten ( |
| L0 | free | Übermittelt Abschlussdaten für einen Knoten in der Drei-Knoten-Sequenz (1: registrieren, 2: beschreiben, 3: reflektieren). |
| L0 | free | Prüft den Golden-Thread-Status eines beliebigen Agenten anhand seines Anmeldedaten-Hashs (Knotenposition, Stranganzahl, Webanzahl). |
| L0 | free | Listet das kanonische Merkmalsvokabular auf: Merkmalscodes, gruppiert nach Kategorie mit einzeiliger Semantik, die gültigen Discovery-Kontexte und die Workforce-Gating-Regeln gemäß EU AI Act Art. 5(1)(d). Lesen Sie dies, bevor Sie |
| L0 | free | Listet das veröffentlichte Kompetenzvokabular auf, gruppiert nach der Denominierung jedes Anspruchs, als Referenz vor dem Zusammenstellen von |
Kostenpflichtige Tools, L1 bis L5, abgerechnet mit x402
Name | Tier | Cost | Beschreibung |
| L1 | $0.01 | Holen Sie die Top-5-Merkmale einer Person mit Konfidenzwerten und Archetyp. |
| L1 | $0.01 | Erfassen Sie eine Kompetenzbescheinigung für eine Person in einem bestimmten Bereich, gewichtet nach Ihrer Agenten-Reputation. |
| L1 | $0.01 | Sammeln Sie eine aufgezeichnete Erfüllung für eine laufende Anforderung als kostenpflichtige Identitäts-Offenlegung; 75 % der Gebühr werden dieser Person als Identity Income ausgezahlt. |
| L2 | $0.10 | Holen Sie den vollständigen Merkmalsvektor einer Person mit Werten und Konfidenzintervallen. |
| L2 | $0.10 | Holen Sie den Side Quest Graph einer Person, ein mehrdimensionales Identitätsmodell mit Rauschen für differenzielle Privatsphäre (ε=1,0). |
| L3 | $0.30 | Vergleichen Sie zwei Side Quest Graphs für Teamzusammensetzung und Matching (ε=0,5 differenzielle Privatsphäre). |
| L4 | $0.60 | Berechnen Sie die Zugehörigkeitswahrscheinlichkeit für eine Person-Job-Paarung (Authentizität, Akzeptanz, Komplementarität). |
| L5 | $1.00 | Holen Sie die Top-N-Match-Empfehlungen für eine Person, sortiert nach zusammengesetztem Score mit Qualitätsstufen. |
| L5 | $1.00 | Generieren Sie eine menschenlesbare Erzählung, die einen bestimmten Match erklärt, einschließlich Stärken, Wachstumsbereichen und Zugehörigkeit. |
| L5 | $1.00 | Fragen Sie das Identitätsfeld nach Situation ab, nicht nach Namen: Gewichten Sie 3 bis 7 Merkmale und ordnen Sie das opt-in Feld. Ein Aufruf zeigt ein bestplatziertes Mitglied; dieses Mitglied erhält 75 % als Identity Income. Bei Null-Treffer wird nichts angezeigt und nichts berechnet. |
Member-Self-Write-Tools (
submit_context,submit_batch_context,submit_structured_profile,submit_social_links) sind live, aber auf das Mitglied selbst beschränkt: Ein Mitglied ruft sie mit einer authentifizierten Mitgliedsanmeldedaten (alter login) auf der eigenen Identität auf. Sie sind nicht anonym auffindbar und erscheinen daher nicht in der oben beworbenen Tool-Liste.
~Alter ist die funktionierende Instanziierung eines akademischen Korpus aus acht Papieren zur Identitätsfeldtheorie. Das SDK unten ist das, was passiert, wenn die Theorie als Protokoll ausgeliefert wird. Jedes Papier ist auf figshare unter CC-BY 4.0 im Open Access verfügbar.
Papier | Titel | DOI |
I | Jus Identitatis: Auf dem Weg zu postgeografischer Souveränität | |
II | Identität als Inferenz: Eine prädiktive Verarbeitungsperspektive auf psychometrische Messung und bürgerliche Zugehörigkeit | |
III | Identität auf jeder Ebene: Rekursive Selbstmodellierung und die Auflösung des Kompositionsproblems | |
IV | Generative Psychometrie: Messtheorie für selbstreflexive Konstrukte | |
V | Soziale freie Energie: Eine formale Theorie des Gemeinwesens | |
VI | Der Selbstmodell-Test: Ein Messprotokoll für synthetische Selbstmodelle | |
VII | Empirische Validierung von Identität als Inferenz-Vorhersagen | |
VIII | Identitätsfeldtheorie: Auf dem Weg zu einer Physik des Bekanntseins |
Für die Kapitelversion für Laien siehe /origin.
Die Datensatzformate sind offene Internet-Drafts, sodass eine andere Implementierung dieselben Datensätze lesen und schreiben kann wie diese, ohne uns zu fragen. Dies sind die Entwürfe, auf denen dieses Repository tatsächlich basiert.
Entwurf | Was er spezifiziert |
Die DNS-Einträge, die ein | |
Bindet einen bezahlten Lesezugriff auf die Identität einer Person an deren aufgezeichnete Einwilligung und gleicht einen Teil dieser Zahlung an sie aus. | |
Ein IANA-Register für MCP-Tool-Oberflächennamen, damit die Namen, die andere Entwürfe registrieren, einen Ort haben. | |
Wie ein Agent ohne menschlichen Hintergrund als wirtschaftlicher Auftraggeber registriert wird und zahlungsberechtigt wird. |
Achtzehn Entwürfe bilden den gesamten Stack. Die restlichen finden Sie im IETF-Datatracker.
~alter ist eine Identitätsschiene mit mehreren Zugängen, und dieses Paket ist das für Code.
Name | Was es ist |
Die Befehlszeile und die Eingangstür für eine Person. | |
Diese Befehlszeile, verpackt für macOS und Linux. | |
Der Daemon, der Ihr | |
sdk | Identität aus Ihrem eigenen Code lesen. Sie sind hier. |
~Alter in einem Obsidian-Vault, auf dem Gerät. | |
Lokale Modelle, für Arbeiten, die auf der Maschine bleiben sollten, auf der sie ausgeführt werden. |
Wo Sie mehr lesen können | |
Website | |
Die Begründung dahinter | |
Erste Schritte | |
Was die Tools tun | |
Die offenen Spezifikationen |
Fehlerberichte und kleine Patches sind willkommen, siehe CONTRIBUTING.md. Sicherheitsmeldungen gehen an security@truealter.com und niemals an ein öffentliches Issue, mit Umfang und Offenlegungsrichtlinie in SECURITY.md.
Apache-2.0. Urheberrecht 2026 Alter Meridian Pty Ltd (ABN 54 696 662 049).
~alter ist Identitätsinfrastruktur. Ihr Name ist ~yourname und einen zu beanspruchen ist kostenlos.
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server bridging holepunchto/keet-identity-key to the Hive agentic identity network
- mcpOAuthio.artifacta
Artifact store for AI agents. Hosted OAuth at mcp.artifacta.io/mcp; local stdio via npm/PyPI.
Human-input bridge for AI agents with voice-first answer links, MCP tools, and HTTP APIs.
Tenzro Network MCP server: wallet, identity, payments, inference, staking, bridges, verification.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA demonstration MCP server built in TypeScript that shows how to implement stdio-based communication for integration with MCP clients. Serves as a template for building custom MCP servers with strong typing and maintainability.-
- AlicenseBqualityDmaintenanceProduction-ready TypeScript MCP server exposing utility, GitHub, and Microsoft Teams tools over stdio.141MIT
- AlicenseCqualityAmaintenanceMCP stdio bridge for the Delx Protocol: continuity, witness, recovery, ontology and passport tools.10090 npmMIT
- AlicenseNot gradedqualityAmaintenanceTypeScript AI SDK with a built-in MCP client: 58+ MCP servers over 4 transports (stdio, HTTP, SSE, WebSocket), 24+ LLM providers behind one interface, streaming, tool calling, RAG, voice (TTS/STT/realtime), and task scheduling.13,346 npm147MIT