Skip to main content
Glama

~alter SDK

Считывайте идентичность из своего кода с согласия человека и с его долей.

npm Node Runtimes Licence

Что такое ~alter? · Установка · От нуля до платного чтения

Что такое ~alter?

Большинство людей, которые читают о ~Alter, приходят сюда ради собственной идентичности, а вы — нет. Вы создаёте нечто, что должно знать, кто его пользователи, а значит, именно вы — сторона, которая спрашивает, хранит ответ и несёт его дальше.

Спросить — самая дешёвая часть. Дальше идут шифрование в состоянии покоя, график хранения, пересмотр доступа, запрос на удаление, который приходит спустя долгое время после того, как они перестали вами пользоваться, и уведомление, которое вы отправляете, если что-то из этого утечёт. Вы несёте всё это за данные, единственным источником которых был кто-то, вводивший текст в созданное вами поле, никем не проверенные и устаревшие с первого дня.

~Alter — это запись, хранящаяся под именем, которым владеет человек, и её содержимое прочитано из того, что человек делал, а не введено в форму. Ваш код читает эту запись в тот момент, когда ему нужен ответ, и ничего не хранит после возврата вызова. Человек заранее решает, что ваше приложение может видеть, и это переносит разговор о согласии на их сторону, а не на вашу.

Проверка того, что кто-то существует, ничего не стоит и не раскрывает ничего, кроме самого факта существования. Чтение, которое идёт дальше, платное, и три четверти того, что вы платите, доходит до человека, чью запись прочитали. Вы покупаете ответ на столько времени, сколько он вам нужен, а не берёте его на хранение.

Ни во что из этого не нужно верить на слово. Передайте это ИИ, которым вы уже пользуетесь, и пусть он проведёт вас через это вашими словами.

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-клиент для этой записи, позволяющий вашему коду проверять, существует ли хэндл, читать черты, которые человек согласился вам раскрыть, и оплачивать более глубокое чтение в USDC.

Входная дверь — это @truealter/cli: именно так человек в первую очередь получает хэндл, и именно этот пакет содержит MCP-мост. А этот пакет ваше приложение импортирует, когда хэндл уже есть.

Под капотом это тонкий клиент поверх MCP-сервера ~Alter, говорящий на спецификации MCP 2025-11-25 через Streamable HTTP и JSON-RPC 2.0. Он поддерживает расчёты 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, и то же самое нужно всему, что действует от вашего имени. Агент выпускает собственный ~handle через MCP с помощью register_autonomous и register_autonomous_challenge — ни то, ни другое ничего не стоит и не требует человеческого аккаунта за собой. Человек один раз запускает alter login, который записывает учётные данные участника в ~/.config/alter/session.json. В любом случае хостируемая конечная точка ориентирована на bearer-токены, так что CLI-мост читает эту сессию за вас, и нигде не нужно выпускать или вставлять ключ. Если вы создаёте клиент сами, передайте те же учётные данные сессии как необязательный apiKey.

2. Узнайте, известен ли кто-то

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

Хэндл, электронная почта или идентификатор. Это проверка, которая ничего не стоит и не раскрывает ничего, кроме факта существования человека, — бесплатный уровень по замыслу.

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 приходит так же, как любой другой необработанный статус, — как AlterError с кодом NETWORK, чьё сообщение содержит статус и первые 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 несёт три заголовка идентичности, которые учитывает серверное промежуточное ПО порога:

Заголовок

Значение (в этом 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-токена затем передаёт ваши учётные данные сессии, так что в файле не хранится ни одного ключа.

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 с расчётом on-chain.

Процесс повторных попыток

  1. Клиент вызывает платный инструмент без заголовка оплаты.

  2. Сервер отвечает 402 Payment Required с требованием оплаты (сумма, получатель, актив, сеть).

  3. Клиент подписывает и отправляет перевод USDC в Base L2, прикрепляет доказательство и повторяет попытку.

  4. Сервер проверяет доказательство, выполняет инструмент, подписывает ответ с помощью ES256 и возвращает его.

  5. AlterRouter выполняет разделение on-chain в той же транзакции. Субъект данных получает Identity Income напрямую; ~Alter получает только свою долю протокола. Никакого кастодиана, никакого брокера.

SDK автоматически обрабатывает шаги 2–4, когда передаётся X402Client с настроенным signer.

Структура уровней

Микроплатежи x402 на уровнях доверия L0–L5. Цена за вызов видна после alter login.

Распределение Identity Income

Большая часть каждого оплаченного вызова поступает субъекту данных в качестве Identity Income. Детали распределения доступны после аутентификации через 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 отклоняет вызов с AlterError до вызова подписанта, и никакая on-chain транзакция не отправляется.

Каждый ответ от инструмента средней или высокой чувствительности поставляется с ES256 JWS в _meta.provenance. Подпись покрывает каноническую 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, и безусловно отклоняет URL-адреса http://. Интеграторы, разворачивающие собственное решение, могут расширить этот список, не форкая SDK, через verifyAtAllowlist либо в AlterClient, либо при прямом вызове verifyProvenance().

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 может воспроизвести JWS против опубликованных ключей ~Alter и подтвердить, не связываясь с ~Alter снова, что полезная нагрузка подлинна, не изменена и выпущена для человека, о котором, как утверждает агент B, идёт речь. Никакого общего секрета, никакого доверия к посреднику, никакой внешней координации.

Именно это делает ~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

Выдаёт proof-of-work задание для начала бесключевой самостоятельной регистрации в качестве принципала ~Alter без владельца; человеческая учётная запись не требуется.

register_autonomous

L0

free

Завершает бесключевую самостоятельную регистрацию, отправляя решённое proof-of-work задание, создавая ~handle без владельца и одноразовый ключ агента.

alter_presence_read

L0

free

Читает, открыт ли ~handle публично — вывеску витрины. Возвращает только «открыт» или «закрыт»; причина закрытия никогда не раскрывается.

alter_resolve_by_key

L0

free

Разрешает связанный сторонний ключ (email или OAuth user-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

Получает накопленный доход Identity Income для человека (75% каждой транзакции x402 идёт субъекту данных).

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

Начинает последовательность Three Knots для вплетения в Golden Thread. Требуется аутентифицированное членское удостоверение (alter login).

complete_knot

L0

free

Отправляет данные о завершении узла в последовательности Three Knots (1: register, 2: describe, 3: reflect).

check_golden_thread

L0

free

Проверяет статус Golden Thread любого агента по хешу его удостоверения (позиция узла, количество Strand, количество плетений).

describe_traits

L0

free

Перечисляет канонический словарь признаков: коды признаков, сгруппированные по категориям с однострочной семантикой, допустимые контексты discovery и правила ограничения рабочей силы по ст. 5(1)(d) EU AI Act. Прочтите это перед составлением 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% комиссии выплачивается этому человеку как Identity Income.

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% как Identity Income. При отсутствии совпадений ничего не раскрывается и не взимается плата.

Инструменты самостоятельной записи участника (submit_context, submit_batch_context, submit_structured_profile, submit_social_links) работают, но ограничены самим участником: участник вызывает их для своей собственной личности с аутентифицированным учётным данным участника (alter login). Они не обнаруживаются анонимно, поэтому не появляются в приведённом выше списке рекламируемых инструментов.

~Alter — это рабочая реализация академического корпуса из восьми статей по теории поля идентичности. SDK ниже — это то, что получается, когда теория поставляется как протокол. Каждая статья находится в открытом доступе на figshare под лицензией CC-BY 4.0.

Статья

Название

DOI

I

Jus Identitatis: К постгеографическому суверенитету

10.6084/m9.figshare.31794784

II

Идентичность как вывод: предиктивная обработка психометрических измерений и гражданской принадлежности

10.6084/m9.figshare.31804222

III

Идентичность на каждом уровне: рекурсивное самомоделирование и решение проблемы композиции

10.6084/m9.figshare.31812955

IV

Генеративная психометрика: теория измерений для саморефлексивных конструктов

10.6084/m9.figshare.31812982

V

Социальная свободная энергия: формальная теория политии

10.6084/m9.figshare.31813000

VI

Тест самомодели: протокол измерения для синтетических самомоделей

10.6084/m9.figshare.31813006

VII

Эмпирическая валидация предсказаний идентичности как вывода

10.6084/m9.figshare.31951644

VIII

Теория поля идентичности: к физике быть известным

10.6084/m9.figshare.31951383

Для версии глав для широкой аудитории см. /origin.

Форматы записей — открытые Internet-Drafts, поэтому чужая реализация может читать и записывать те же записи, что и эта, не спрашивая нас. Это черновики, на которых фактически основан этот репозиторий.

Черновик

Что он определяет

mcp-dns-discovery

DNS-записи, публикующие ~handle, сервер, который отвечает за него, и подписанный конверт, привязанный к нему.

consent-settlement

Привязка платного чтения чьей-либо идентичности к их собственному записанному согласию и выплата части этого платежа им.

mcp-tool-surface-names-registry

Реестр IANA для имён поверхностей инструментов MCP, чтобы имена, регистрируемые другими черновиками, имели место.

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, и получить его бесплатно.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

No tool schema history has been recorded yet.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/true-alter/sdk'

If you have feedback or need assistance with the MCP directory API, please join our Discord server