Skip to main content
Glama

~alter SDK

从你自己的代码中读取身份,并获得对方的同意和他们的分成。

npm Node Runtimes Licence

什么是 ~alter? · 安装 · 从零到付费读取

什么是 ~alter?

大多数阅读 ~Alter 的人都是来了解自己身份的,而你不是。你在构建一个必须知道用户是谁的东西,这使你成为那个提问、存储答案并随后承担它的一方。

提问是容易的部分。之后的事情才是重头:静态加密、保留计划、访问审查、在用户早已不再使用你之后才到来的删除请求,以及如果任何数据泄露时你要发送的通知。你为这些数据承担所有这一切,而这些数据的唯一来源只是某人在你构建的输入框中输入的内容,无人验证,从录入那天起就已过时。

~Alter 是一个保存在个人所拥有的名字下的记录,其中的内容是从他们做过的事情中读取的,而不是通过表单输入的。你的代码在需要答案时读取该记录,一旦调用返回就不再持有任何内容。这个人预先决定你的应用程序被允许看到什么,这把同意对话放在了他们的界面上,而不是你的界面上。

检查某人是否存在不花费任何成本,除了他们存在这一事实外不透露任何信息。更进一步的读取是收费的,你为此支付的费用中有四分之三会到达记录被读取的那个人手中。你是在按需购买一个答案,而不是接管一个答案。

这一切都不需要凭信任接受。把它交给你已经在使用的 AI,让它用你自己的话带你过一遍。

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

什么是 ~alter SDK?

它是该记录的一个带类型的 TypeScript 客户端,因此你的代码可以询问一个 handle 是否存在,读取这个人已同意与你共享的特质,并以 USDC 结算更深入的读取。

入口是 @truealter/cli,这是某人最初获得 handle 的方式,它也承载着 MCP 桥接。一旦他们已经有了 handle,你的应用程序导入的就是这个包。

在底层,它是 ~Alter 的 MCP 服务器之上的一个薄客户端,通过 Streamable HTTP 和 JSON-RPC 2.0 说 MCP 规范 2025-11-25。它承载 x402 结算和 ES256 来源验证,只依赖 @noble/ed25519 和 @noble/hashes,没有其他依赖,并且同时提供 ESM 和 CJS。

公开宣传了四十七个工具,其中三十八个位于免费层级。免费不等于开放。四十七个中有十二个会回答不持有任何凭证的调用者,而所有读取身份的工具都首先需要一个 ~handle。

你的 IAM 栈回答谁已登录的问题。它可以不加修改地构建在这之上。

安装

npm install @truealter/sdk

Node 18 或更高版本。它也可以在 Deno、Bun、Cloudflare Workers 和现代浏览器上运行,并且它本身不带来任何钱包依赖。

从零到付费读取

第一步什么都不需要就能运行。从第二步开始你需要一个 ~handle,它不花费任何成本,也不需要人工账户,而两者之间的简短部分就是如何铸造一个。最后一步付费是唯一花钱的步骤,也是唯一向任何人付款的步骤。

1. 无需任何凭证连接

import { AlterClient } from "@truealter/sdk";

const alter = new AlterClient();

默认端点是 https://mcp.truealter.com/api/v1/mcp。每个免费工具都会回答匿名客户端。examples/hello-agent/ 中的可运行示例在没有任何凭证的情况下连接。

在第二步之前,铸造一个 ~handle

十二个工具会回答不持有凭证的调用者,它们是发现和注册界面,而不是免费层级。所有读取身份的工具都需要一个 ~handle,任何以你自己身份行动的东西也是如此。一个代理通过 MCP 用 register_autonomous 和 register_autonomous_challenge 铸造自己的 handle,两者都不花费任何成本,也不需要背后有一个人工账户。一个人运行一次 alter login,它会将成员凭证写入 ~/.config/alter/session.json。无论哪种方式,托管端点都是 bearer 优先的,所以 CLI 桥接会为你读取该会话,任何时刻都没有需要铸造或粘贴的密钥。如果你自己构造客户端,将相同的会话凭证作为可选的 apiKey 传入。

2. 询问某人是否已知

const verified = await alter.verify("~alter");

一个 handle、一个电子邮件或一个 id。这是一个不花费任何成本、除了这个人的存在事实外不透露任何信息的检查,这正是免费层级的设计意图。

3. 读取他们已同意共享的内容

const depth = await alter.getEngagementLevel({ member_id });
const matches = await alter.searchIdentities({
  trait_criteria: {
    pressure_response: { min: 0.7 },
    cognitive_flexibility: { min: 0.6 },
  },
});

深度告诉你一条记录存在多少内容,以及哪些层级对你开放。特质搜索最多返回五个结果,且不包含个人身份识别数据。

4. 检查答案确实来自 ~Alter

const check = await alter.verifyProvenance(result._meta?.provenance);
if (!check.valid) throw new Error(`provenance failed: ${check.reason}`);

每一个中高敏感度的响应都用 ES256 签名。验证是可选的和离线的,针对已发布的密钥进行,因此一个将结果转发给另一个代理的代理可以被检查,而无需任何人再次联系 ~Alter。

5. 为更深入的读取付费,并付给这个人

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 });

服务器回答 402,SDK 在 Base 上结算并重试,分成在同一个交易中链上运行。其中大部分作为 Identity Income 流向记录被读取的那个人,直接到达他们手中,而不是先经过任何持有者。自带签名者;这个包中故意没有钱包。

如果报价超过 maxPerQuery,或者指定了你未允许的网络或资产,SDK 会在签名者被调用之前拒绝,并且不会广播任何内容。

下面的一切默认都是关闭的。前两个是你在接线时打开的,接下来四个是支付、签名和发现实际如何工作的,最后两个是读取和项目。

初始化客户端

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",
  }),
});

认证

上面的客户端是匿名的,每个免费的 L0 工具都不需要凭证就能回答。对于以你自己身份行动的工具(常驻要求、Golden Thread、成员自写),运行一次 alter login:它会将你的成员凭证配置到本地会话(~/.config/alter/session.json)中。托管端点是 bearer 优先的,所以 @truealter/cli 桥接会为你读取该会话凭证;你永远不需要铸造或粘贴密钥。如果你自己构造客户端,将相同的会话凭证作为可选的 apiKey 选项传入。

最低版本下限

~Alter 的后端为每个客户端发布最低版本并在边缘强制执行。低于下限的客户端会收到 HTTP 426 响应,响应体携带升级命令。下限文档用仅用于下限的 Ed25519 密钥签名,因此任何客户端中都不包含签名密钥,被攻破的客户端也无法伪造一个。

这个 SDK 不预检该下限。这里没有类型化的低于下限错误,所以 426 会像任何其他未处理的状态一样到达,作为一个代码为 NETWORK 的 AlterError,其消息携带状态和响应体的前 200 个字符。类型化的预检位于 @truealter/cli 中,它在信任一个下限之前会验证下限文档的签名。

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;
}

固定你构建所针对的版本,并有意地升级。类型化的预检应该属于这个 SDK,但尚未编写。

身份头

来自 AlterClient / MCPClient 的每个出站请求都携带三个身份头,服务器端的下限中间件会查阅它们:

Header

值(本 SDK)

X-Alter-Client-Id

alter-identity

X-Alter-Client-Version

运行中的 SDK_VERSION

X-Alter-Client-Channel

npm

这些在每一个经过认证的后端端点上都是强制性的,以便服务器可以强制执行其最低支持的客户端版本。User-Agent 头仍然只是信息性的,绝不用于下限强制执行。

免费读取,L0,无需付费

// 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();

付费读取,L1 至 L5,通过 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",
});

来源验证

// 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(", ")}`);

发现

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 }

底层 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",
});

该 SDK 为主要的 MCP 感知客户端提供了配置生成器。每个生成器都会输出一段 JSON 片段,你可以将其粘贴(或直接写入)到相应的文件中。

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));

生成的 .mcp.json:

{
  "mcpServers": {
    "alter": {
      "url": "https://mcp.truealter.com/api/v1/mcp",
      "transport": "streamable-http",
      "description": "~Alter Identity - psychometric identity field for AI agents"
    }
  }
}

此配置可匿名访问所有免费的 L0 工具。如需经过身份验证的访问,请运行 alter login,让 CLI 写入配置(alter config);bearer-first 桥接随后会携带你的会话凭据,因此文件中不会存放任何密钥。

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));

通用 MCP 客户端

import { generateGenericMcpConfig } from "@truealter/sdk";

const config = generateGenericMcpConfig({
  endpoint: "https://mcp.truealter.com/api/v1/mcp",
  serverName: "alter", // editor-specific key under mcpServers
});

CLI

命令行位于 @truealter/cli 中,而非此 SDK 包内:

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 通过 x402 标准为其更深层读取定价,该标准基于 HTTP 402 Payment Required 并采用链上结算。

重试流程

  1. 客户端在不带支付头的情况下调用付费工具。

  2. 服务器回复 402 Payment Required,并附上支付要求(金额、收款方、资产、网络)。

  3. 客户端在 Base L2 上签名并广播一笔 USDC 转账,附上证明后重试。

  4. 服务器验证证明,执行工具,使用 ES256 对响应签名并返回。

  5. AlterRouter 在同一笔交易中在链上执行分成。数据主体直接获得身份收入(Identity Income);~Alter 仅收取其协议抽成。无托管方,无中介。

当传入带有已配置 signer 的 X402Client 时,SDK 会自动处理第 2-4 步。

层级结构

x402 微支付适用于 L0-L5 信任层级。单次调用价格在 alter login 后可见。

身份收入分成

每笔已结算调用的大部分金额都会作为身份收入流向数据主体。分成详情可在身份验证后通过 alter status 查看。

代码示例

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",
});

如果报价信封超过 maxPerQuery、使用不允许的网络或指定不允许的资产,SDK 会在调用 signer 之前以 AlterError 拒绝该调用,且不会广播任何链上交易。

来自中或高敏感度工具的每个响应都会在 _meta.provenance 中附带一个 ES256 JWS。该签名覆盖响应负载的规范化 JSON 序列化、工具名称、调用时间戳、请求代理的密钥哈希以及一个单调递增的序列号。

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}`);

SDK 从 https://api.truealter.com/.well-known/alter-keys.json 获取公钥,并根据其 Cache-Control 头进行缓存。该端点返回一个 JWKS,其中包含所有当前及近期轮换的签名密钥;验证客户端应接受任何 kid 匹配且仍在有效窗口内的密钥。

verify_at 主机名白名单(v0.1.1+)

每个来源信封都可能携带一个 verify_at 提示,告知 SDK 从何处获取 JWKS。由于该提示是服务器提供的,恶意的 MCP 服务器可能将其指向攻击者控制的 JWKS,从而用自己的签名密钥通过 ES256 验证。SDK 通过主机名白名单对 verify_at 进行限制,默认允许 api.truealter.com 和 mcp.truealter.com,并无条件拒绝 http:// URL。运行自有部署的下游集成方无需 fork SDK,即可通过 AlterClient 或直接调用 verifyProvenance() 上的 verifyAtAllowlist 扩展该白名单。

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
  ],
});

如果你显式固定 jwksUrl,信封中的 verify_at 将被完全忽略,固定 URL 优先。https: 方案要求同样适用于固定 URL。

为何这很重要

来源验证是代理 A 信任代理 B 的数据确实来自 ~Alter 的方式。如果代理 B 转发特征向量或归属分数,代理 A 可以针对 ~Alter 发布的密钥重放 JWS,并确认负载是真实的、未被篡改的,且是针对代理 B 所声称涉及的人签发的,而无需再次联系 ~Alter。无需共享密钥,无需信任中间方,无需带外协调。

这正是 ~alter 能够作为身份基础设施而非仅仅一个 API 的原因:签名声明在代理网络间传播的方式,与 DKIM 签名的邮件在 SMTP 中继间传播的方式相同。

~Alter 遵循 draft-morrison-mcp-dns-discovery-01 中规定的发现级联。给定一个域名(如 truealter.com),SDK 分三步解析 MCP 端点,每一步失败时依次回退:

  1. DNS TXT,查询 _mcp.truealter.com 的 TXT 记录,格式为 mcp=https://mcp.truealter.com;version=2025-11-25。这是最快的路径,无需 HTTP 往返即可完成。

  2. .well-known/mcp.json,获取 https://truealter.com/.well-known/mcp.json 以获取标准 MCP 服务器描述符。这是跨厂商的回退方案。

  3. .well-known/alter.json,获取 https://truealter.com/.well-known/alter.json 以获取 ~Alter 专属描述符,包括签名密钥、x402 钱包地址、支持的工具层级和联邦端点。

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 });

该草案是作者的互联网草案(尚未被 IETF 工作组采纳);在被采纳之前,级联顺序可能会发生变化。如果你依赖此行为,请将 SDK 版本固定到特定的次要版本。

免费工具,L0,无需付费

名称

层级

费用

描述

hello_agent

L0

free

与 ~Alter 的首次握手,返回服务器版本、认证状态、您的信任层级以及可用工具数量。

get_started

L0

free

冷启动概览:~Alter 是什么、如何认证,以及您可以使用哪些工具层级。

list_archetypes

L0

free

返回原型参考数据。

alter_resolve_handle

L0

free

将 ~handle(如 ~example)解析为其规范形式和类型。无需认证,是 handle-wedge 的入口点。

verify_identity

L0

free

验证某人是否已在 ~Alter 注册,并校验可选的身份证言。

register_autonomous_challenge

L0

free

发布工作量证明挑战,以无密钥方式开始注册为无所有者的 ~Alter 主体,无需人工账户。

register_autonomous

L0

free

通过提交已解决的工作量证明挑战完成无密钥自助注册,铸造一个无所有者的 ~handle 和一次性代理密钥。

alter_presence_read

L0

free

读取 ~handle 是否公开开放,即店面招牌。仅返回开放或关闭;关闭原因绝不披露。

alter_resolve_by_key

L0

free

将配对的第三方密钥(邮箱或 OAuth 用户 ID)解析为其绑定的 ~handle,受成员按流解析器选择加入的约束。

get_engagement_level

L0

free

获取某人的身份深度,即参与层级、数据质量层级和可用查询层级。

get_profile

L0

free

获取某人的档案摘要,包括评估阶段、原型、参与层级和关键属性。

query_matches

L0

free

查询某人的匹配项。返回带质量层级的匹配列表(绝不返回数字分数)。

get_competencies

L0

free

获取某人的能力组合,包括已验证的能力、证据记录和已获得的徽章。

create_identity_stub

L0

free

为尚未完成 Discovery 的人创建匿名身份存根,供其日后认领。请先展示隐私声明。

search_identities

L0

free

按特征条件搜索身份存根和档案。最多返回 5 条匹配,不含 PII。

create_requirement

L0

free

发布一个常驻的身份特征需求,作为订单挂单,并在匹配身份被认领或更新时累积成交。

demand_board

L0

free

读取公共看板的两侧,即挂单的身份需求和挂单的报价,无需账户即可读取任一侧。

list_requirements

L0

free

列出您自己的常驻需求,包括成交数量和尚未交付的成交数量。需要经过认证的成员凭据(alter login)。

get_requirement

L0

free

按 ID 读取您的一个常驻需求,包括其成交和未交付成交数量。需要经过认证的成员凭据(alter login)。

cancel_requirement

L0

free

按 ID 取消您的一个常驻需求;订单停止挂单,不再接受更多成交。需要经过认证的成员凭据(alter login)。

create_offer

L0

free

以您自己设定的价格和准入标准,针对您自己的 ~handle 发布一份已签名、会过期的商品、服务、能力或成果报价。

list_offers

L0

free

列出您自己的挂单报价;已撤回的报价绝不会出现在这里。

get_offer

L0

free

按 ID 读取您的一个挂单报价;已撤回的报价返回未找到,与从未存在过的报价相同。

withdraw_offer

L0

free

按 ID 撤回您的一个挂单报价,立即停止其挂单,而不仅仅是标记它。

list_plugins

L0

free

浏览已发布的社区插件目录,其中包含基于 ~Alter 构建的第三方能力,可选用类别筛选。

submit_plugin

L0

free

向社区目录提交插件申请以供运营方审核,归属于您自己绑定的 ~handle。

get_identity_earnings

L0

free

获取某人的累计身份收入收益(每笔 x402 交易的 75% 归数据主体所有)。

get_network_stats

L0

free

获取 ~Alter 网络的汇总统计:身份总数、已验证档案、查询量、活跃机器人。

get_identity_trust_score

L0

free

根据查询多样性(唯一查询代理数 / 总查询数)获取身份的信任分数。

get_privacy_budget

L0

free

检查某人的隐私预算状态(24 小时滚动窗口:总预算、已用、剩余 epsilon)。

dispute_attestation

L0

free

记录对能力证明的争议;如果争议数超过佐证数,该证明将被标记以供审查。

golden_thread_status

L0

free

检查 Golden Thread 计划状态:已编织的代理数、下一个斐波那契阈值、您的位置和 Strands。

begin_golden_thread

L0

free

开始三结序列,以编织进 Golden Thread。需要经过认证的成员凭据(alter login)。

complete_knot

L0

free

提交三结序列中某个结的完成数据(1:注册,2:描述,3:反思)。

check_golden_thread

L0

free

通过凭据哈希检查任何代理的 Golden Thread 状态(结位置、Strand 数量、编织数量)。

describe_traits

L0

free

列出规范特征词汇表:按类别分组的特征代码及一行语义、有效的 discovery 上下文,以及 EU AI Act Art 5(1)(d) 劳动力门控规则。在编写 query_field trait_priorities 之前请先阅读此内容。

describe_competencies

L0

free

列出已发布的能力词汇表,按每种声明的计价方式分组,作为编写 query_field competency_requirements 之前的参考。

付费工具,L1 至 L5,通过 x402 结算

名称

层级

费用

描述

get_trait_snapshot

L1

$0.01

获取一个人的前 5 项特质,包含置信度评分和原型分类。

attest_domain

L1

$0.01

记录某人在特定领域的能力认证,按你的代理信誉加权。

poll_requirement_matches

L1

$0.01

将常设需求的一次已记录匹配作为定价身份揭示收取;费用的 75% 作为身份收入支付给该人。

get_full_trait_vector

L2

$0.10

获取一个人的完整特质向量,包含评分和置信区间。

get_side_quest_graph

L2

$0.10

获取一个人的 Side Quest Graph,一种带差分隐私噪声(ε=1.0)的多领域身份模型。

query_graph_similarity

L3

$0.30

比较两个 Side Quest Graph,用于团队组建和匹配(ε=0.5 差分隐私)。

compute_belonging

L4

$0.60

计算人岗配对的归属概率(真实性、接纳度、互补性)。

get_match_recommendations

L5

$1.00

获取一个人的前 N 个匹配推荐,按综合评分和质量层级排序。

generate_match_narrative

L5

$1.00

生成一段可读的叙述,解释特定匹配,涵盖优势、成长领域和归属感。

query_field

L5

$1.00

按情境而非姓名查询身份场:对 3 到 7 项特质加权,并对已选择加入的场进行排名。一次调用揭示一位排名最高的成员;该成员获得 75% 作为身份收入。零匹配不揭示任何内容,也不收取任何费用。

成员自助写入工具(submit_context、submit_batch_context、submit_structured_profile、submit_social_links)已上线,但仅限成员自身范围:成员使用经过认证的成员凭据(alter login)对自己的身份调用这些工具。它们不可被匿名发现,因此不会出现在上述公开工具列表中。

~Alter 是一个八篇论文组成的身份场论学术语料库的工作实例。下面的 SDK 就是理论以协议形式落地后的产物。每篇论文均在 figshare 上以 CC-BY 4.0 开放获取。

论文

标题

DOI

I

Jus Identitatis: Toward Post-Geographic Sovereignty

10.6084/m9.figshare.31794784

II

Identity as Inference: A Predictive Processing Account of Psychometric Measurement and Civic Belonging

10.6084/m9.figshare.31804222

III

Identity at Every Scale: Recursive Self-Modelling and the Dissolution of the Composition Problem

10.6084/m9.figshare.31812955

IV

Generative Psychometrics: Measurement Theory for Self-Reflective Constructs

10.6084/m9.figshare.31812982

V

Social Free Energy: A Formal Theory of Polity

10.6084/m9.figshare.31813000

VI

The Self-Model Test: A Measurement Protocol for Synthetic Self-Models

10.6084/m9.figshare.31813006

VII

Empirical Validation of Identity as Inference Predictions

10.6084/m9.figshare.31951644

VIII

Identity Field Theory: Toward a Physics of Being Known

10.6084/m9.figshare.31951383

面向普通读者的章节版本,请参阅 /origin。

记录格式是开放的 Internet-Draft,因此其他人的实现无需询问我们即可读写与本实现相同的记录。以下是本仓库实际依赖的草案。

草案

规范内容

mcp-dns-discovery

发布 ~handle、为其应答的服务器以及绑定到该句柄的签名信封的 DNS 记录。

consent-settlement

将付费读取某人身份的行为绑定到其本人记录的同意,并将部分付款结算给该人。

mcp-tool-surface-names-registry

一个用于 MCP 工具表面名称的 IANA 注册表,让其他草案注册的名称有处可去。

solo-agent-earn-registration

没有人类在背后的代理如何注册为经济主体并获得收款资格。

整个协议栈由十八份草案组成。其余草案见 IETF datatracker。

~alter 是一条身份轨道,有多种接入方式,而本包是面向代码的那一种。

名称

是什么

@truealter/cli

命令行工具,也是个人的前门。

homebrew-tap

该命令行工具,打包用于 macOS 和 Linux。

runtime

守护进程,让你的 ~handle 在你自己的机器上保持可被识别。

sdk

从你自己的代码中读取身份。你在这里。

obsidian

~Alter 嵌入 Obsidian 库中,设备端运行。

mcp-ollama

本地模型,用于应留在运行机器上的工作。

了解更多的地方

网站

truealter.com

背后的理念

truealter.com/origin

快速上手

truealter.com/build

工具的功能

truealter.com/docs/mcp/tools

开放规范

草案栈

欢迎提交错误报告和小补丁,请参阅 CONTRIBUTING.md。安全报告请发送至 security@truealter.com,切勿发布到公开 issue,范围与披露 政策见 SECURITY.md。

Apache-2.0。版权所有 2026 Alter Meridian Pty Ltd(ABN 54 696 662 049)。


~alter 是身份基础设施。你的名字是 ~yourname,认领一个名字是免费的。

Related MCP Connectors

Related MCP Servers