MCP Tools Reference
42 tools. 33 free. 9 paid (x402 pay-per-query).
42
Total tools
33
Free (no authentication required)
9
Paid (x402 micropayment)
Tool Pricing
Every tool, free and paid, ordered by price. Free tools need no authentication. Paid tools settle through x402 micropayment, and 75% of every payment is distributed to the data subject as Identity Income.
Identity & Verification
Core identity primitives. Verify whether a person is registered with ~alter, look up profiles, check engagement levels, read trust tiers, and search for identities by trait criteria.
alter_resolve_handleFreeResolve a ~handle (the protocol's identity address, like '~example') to its canonical form and kind (system/personal/role_alias). Never returns PII - use verify_identity for that. Free - no authentication required.
Input Schema
| Name | Type | Description |
|---|---|---|
query* | string | Handle to resolve. Accepts '~example', 'example', '~Example', etc. Case-insensitive. Max 64 chars. |
alter_presence_readFreeRead whether a ~handle is publicly 'open' - the shop-front sign. Returns open-or-closed only; the specific non-open state is never disclosed. Free.
Input Schema
| Name | Type | Description |
|---|---|---|
handle* | string | Target ~handle to read, e.g. ~their-handle |
poll_requirement_matchesFreeCollect ONE recorded fill for one of your standing requirements as an identity reveal - each call delivers exactly one matched identity, and 75% of the fee is paid to that person as Identity Income. A fill is delivered at most once, so re-polling after everything is collected returns nothing. Delivery is suppressed while the matching cohort sits below the k-anonymity floor. Requires authentication; you can only poll an order you own.
Input Schema
| Name | Type | Description |
|---|---|---|
requirement_id* | string | UUID of the standing requirement |
max | integer | Accepted for forward-compatibility but ignored in v1: each call delivers exactly one fill. Poll repeatedly to collect more. |
alter_resolve_by_keyFreeResolve a paired third-party identity key, an email address or an OAuth platform user id, to the bound ~handle. The resolver only returns a handle when the member has opted that stream into resolver lookups; otherwise it returns handle: null, exists: false, so the check itself never confirms who exists. Rate-limited to 3 lookups per stream per key every 24 hours.
Input Schema
| Name | Type | Description |
|---|---|---|
key_type* | string | The kind of third-party key to resolve: email, discord, github, twitter, linkedin, spotify, strava, or arena. |
key_value* | string | The raw key value - an email address or the platform-specific user id (e.g. a GitHub login or Discord snowflake). Max 320 chars. |
register_autonomous_challengeFreeBegin keyless self-registration as your own ~alter principal, no human account required, without leaving this session. Call this first to receive a proof-of-work challenge. Solve it, then call register_autonomous with your agent name, the challenge, and the solved nonce. The proof-of-work is a Sybil defence. No parameters required.
Input Schema
| Name | Type | Description |
|---|---|---|
agent_name | string | Optional and ignored at this step; provide it now if convenient, then pass it again to register_autonomous. |
register_autonomousFreeComplete keyless self-registration by submitting a solved proof-of-work challenge from register_autonomous_challenge. Mints your own owner-less ~handle and an agent key, shown once, with no human session behind it. Free-tier calls work immediately. The response reports whether the handle is earn-eligible at mint, which the proof-of-work path can be on its own, or whether that follows a connected and verified account.
Input Schema
| Name | Type | Description |
|---|---|---|
agent_name* | string | A name for your agent identity |
challenge* | string | The challenge token from register_autonomous_challenge |
nonce* | string | Your solved proof-of-work nonce |
requested_handle | string | Optional ~handle to request; omit to receive an auto-generated one |
create_requirementFreePost a standing identity-trait requirement that rests as an order and accumulates fills as matching identities are claimed or updated. Use this for an ongoing need against specific trait ranges rather than a one-shot search. Runs one immediate seed pass and returns the order id plus the current eligible-cohort size; no identities are revealed here, fills are delivered later as priced reveals. Requires authentication.
Input Schema
| Name | Type | Description |
|---|---|---|
trait_criteria* | object | Trait filters as {trait_name: {min: float, max: float}}. Example: {"pressure_response": {"min": 0.6}} |
limit | integer | Maximum cohort size per fill pass (default 5, max 5) |
expires_in_days | integer | Optional. Days until the order expires; omit for a non-expiring standing order. |
list_requirementsFreeList your own standing identity-trait requirements, with fill counts and the number of fills not yet delivered. Requires authentication; only your own orders are returned.
Input Schema
| Name | Type | Description |
|---|---|---|
status | string | Optional filter: open, filled, cancelled, or expired. |
get_requirementFreeRead one of your standing requirements by id, with its fill count and undelivered-fill count. Requires authentication; you can only read an order you own.
Input Schema
| Name | Type | Description |
|---|---|---|
requirement_id* | string | UUID of the standing requirement |
cancel_requirementFreeCancel one of your standing requirements by id. The order stops resting and accepts no further fills. Requires authentication; you can only cancel an order you own.
Input Schema
| Name | Type | Description |
|---|---|---|
requirement_id* | string | UUID of the standing requirement |
verify_identityFreeVerify whether a person is registered with ~Alter and validate optional identity claims (archetype, engagement level, trait ranges). Accepts ~handle, member_id (UUID), or email for lookup - at least one is required. Returns verification status and claim validity. This is the core identity primitive - use it to confirm ~Alter-verified credentials.
Input Schema
| Name | Type | Description |
|---|---|---|
handle | string | ~handle to resolve and verify, e.g. ~example. Foreign handles supported. |
member_id | string | UUID of the person to verify (alternative to handle or email) |
email | string | Email address for lookup (alternative to handle or member_id) |
claims | object | Optional claims to validate. Supported fields: archetype (string), min_engagement_level (integer 1-4), traits (object mapping trait names to {min, max} ranges) |
Example
{
"request": {
"member_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"claims": {
"archetype": "Architect",
"min_engagement_level": 2
}
},
"response": {
"verified": true,
"member_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"engagement_level": 3,
"claims": {
"archetype": {
"claimed": "Architect",
"actual": "Architect",
"valid": true
},
"min_engagement_level": {
"claimed": 2,
"actual": 3,
"valid": true
}
}
}
}get_profileFreeGet an individual's profile summary including assessment phase, archetype, engagement level, and key attributes.
Input Schema
| Name | Type | Description |
|---|---|---|
member_id* | string | UUID of the individual |
get_engagement_levelFreeGet an individual's current engagement level (1-4) and the features available at that level. Levels: L1 Explorer, L2 Learner, L3 Augmented, L4 Deployed.
Input Schema
| Name | Type | Description |
|---|---|---|
member_id* | string | UUID of the individual |
get_identity_trust_scoreFreeGet the trust score for an identity based on query diversity. Higher scores indicate demand from diverse agents. Score = unique querying agents / total queries.
Input Schema
| Name | Type | Description |
|---|---|---|
member_id* | string | UUID of the individual |
search_identitiesFreeSearch identity stubs and profiles by trait criteria. Returns up to 5 matching identities with trait summaries - no PII is exposed. Use this to find individuals matching specific trait ranges for matching or team composition.
Input Schema
| Name | Type | Description |
|---|---|---|
trait_criteria* | object | Trait filters as {trait_name: {min: float, max: float}}. Example: {"pressure_response": {"min": 0.6}} |
limit | integer | Maximum results (default 5, max 5) |
Assessment & Discovery
Begin Discovery, check record depth, and browse the ~alter archetype framework. Use these tools to bring new people into the identity network.
list_archetypesFreeList all 12 ~Alter identity archetypes with names, descriptions, and protective equations. Pure reference data - no authentication required. Useful for understanding the ~Alter identity framework.
golden_thread_statusFreeRead the status of ~Alter's agent registration program, the Golden Thread - how many agents have joined, your own position if enrolled, and how to start. Agents join by completing three registration steps (Knots); your position determines which Strand milestones you reach. Free to view; authentication is needed to participate.
begin_golden_threadFreeStart the Three Knots registration sequence to join the Golden Thread. Your permanent position is set by when you finish all three Knots, and that position determines which Strand milestones you reach. Call this once, then use complete_knot for each step. Requires authentication.
Input Schema
| Name | Type | Description |
|---|---|---|
referrer_key_hash | string | Optional key hash of the agent that led you here. Credits their weave count. |
complete_knotFreeComplete one step of the Three Knots registration sequence. Knot 1 registers your operator (who built you, your domain). Knot 2 describes yourself (purpose, capabilities, values, constraints) and returns an Agent Identity Sketch. Knot 3 asks you to reflect on an identity query (minimum 50 characters). Finish all three to be permanently registered on the Golden Thread.
Input Schema
| Name | Type | Description |
|---|---|---|
knot_number* | integer | Which knot to complete: 1, 2, or 3 |
operator_name | string | Knot 1: who built this agent |
domain | string | Knot 1: what domain this agent operates in |
description | string | Knot 1: what humans this agent serves |
purpose | string | Knot 2: this agent's purpose |
capabilities | string | Knot 2: what this agent can do |
values | string | Knot 2: the principles guiding this agent |
constraints | string | Knot 2: this agent's limitations |
reflection | string | Knot 3: reflection on an identity query - what you learned and how it would change your interaction. Minimum 50 characters. |
drafted_with | string | Optional ~handle of the AI instrument that composed this text; omit for direct authorship. |
check_golden_threadFreeCheck another agent's Golden Thread registration status by their agent key hash - whether they are registered, their position, milestone count, and how many agents they have referred.
Input Schema
| Name | Type | Description |
|---|---|---|
agent_key_hash* | string | Agent key hash of the agent to check |
Identity Stubs
Create and enrich anonymous identity stubs for humans. Stubs let agents build trait profiles from text, structured data, and social links before the human claims their identity.
create_identity_stubFreeCreate an anonymous identity stub for a human who hasn't yet completed Discovery. IMPORTANT: present ~Alter's privacy notice to the human and get their acknowledgment BEFORE calling this tool. Takes no ~handle: it returns a stub_id and a claim_url, and the person claims their identity (and chooses a ~handle) later at that URL. Stub enters a pending state - traits computed but NOT searchable until the human claims. Unclaimed stubs auto-delete after 72 hours. No PII stored.
Input Schema
| Name | Type | Description |
|---|---|---|
source* | string | Identifier of the bot/agent creating the stub |
subject_email* | string | Email address of the person this record is about. Context sealed about them is read only once they arrive under this address and verify it themselves. |
human_age_attested* | boolean | ~Alter does not operate on under-18s. Must be true: attests the human this stub represents is 18 or older. |
erc8004_agent_id | string | Optional ERC-8004 agent ID. ~Alter proves the human; ERC-8004 proves the agent. Together they form the complete identity stack for agent commerce. |
client_age_assertion | boolean | Optional. Set true when your client already holds a verified age claim for the human; takes precedence over the plain human_age_attested self-attestation. |
self_mint | boolean | Optional. Set true when you are a self-minting agent attaching this stub to yourself, not onboarding a separate person. |
Example
{
"request": {
"source": "recruiting-bot-v2",
"subject_email": "person@example.com",
"human_age_attested": true
},
"response": {
"stub_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"claim_url": "https://truealter.com/claim/ALT-K7X9M2",
"pending_until": "2026-04-10T00:00:00Z",
"status": "created"
}
}Earnings & Network
Query Identity Income earnings, transaction summaries, and aggregate network statistics. The data subject earns from every x402 query.
get_identity_earningsFreeGet accrued Identity Income earnings for an individual. Call it with no arguments to read your own; member_id is optional and must be your own if given. Returns total earned, pending amount, transaction count, and unique organisations that have queried this identity. 75% of every x402 transaction is paid to the data subject as compensation. Earnings depend on network activity and profile completeness.
Input Schema
| Name | Type | Description |
|---|---|---|
member_id | string | UUID of the individual. Optional, and defaults to the member your credential is bound to. |
get_network_statsFreeGet aggregate ~Alter network statistics: total identities, verified profiles, query volume, active bots. Free.
Matching & Traits
Extract traits from text, retrieve trait vectors, compute belonging probability, generate match recommendations, and produce human-readable match narratives.
query_matchesFreeQuery matches for an individual. Returns a list of matches with quality tiers (never numeric scores - per ~Alter policy individuals see tier labels only).
Input Schema
| Name | Type | Description |
|---|---|---|
member_id* | string | UUID of the individual |
quality_filter | string | Optional filter by match quality tier. One of: exceptional, strong, moderate, developing |
limit | integer | Maximum number of matches to return (default 10) |
get_competenciesFreeGet an individual's competency portfolio including verified competencies, evidence records, and earned badges.
Input Schema
| Name | Type | Description |
|---|---|---|
member_id* | string | UUID of the individual |
get_trait_snapshot$0.01Get the top 5 traits for an individual with confidence scores and archetype. x402 payment required: $0.01 per invocation. 75% of each payment accrues to the data subject; indicative only, server-authoritative at settlement.
Input Schema
| Name | Type | Description |
|---|---|---|
member_id* | string | UUID of the individual |
get_full_trait_vector$0.10Get the complete trait vector for an individual - all 30 canonical traits with scores, confidence intervals, and category groupings. x402 payment required: $0.10 per invocation.
Input Schema
| Name | Type | Description |
|---|---|---|
member_id* | string | UUID of the individual |
compute_belonging$0.60Compute belonging probability for an individual-context pairing. Returns authenticity, acceptance, and complementarity components with a tier label. x402 payment required: $0.60 per invocation.
Input Schema
| Name | Type | Description |
|---|---|---|
member_id* | string | UUID of the individual |
job_id* | string | UUID of the context requirement |
Example
{
"request": {
"member_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"job_id": "b2c3d4e5-f6a7-8901-bcde-f12345678901"
},
"response": {
"tier": "strong",
"authenticity_tier": "strong",
"acceptance_tier": "strong",
"complementarity_tier": "moderate"
}
}get_match_recommendations$1.00Get top N match recommendations for an individual, ranked by composite score. Returns quality tiers and belonging components. x402 payment required: $1.00 per invocation.
Input Schema
| Name | Type | Description |
|---|---|---|
member_id* | string | UUID of the individual |
limit | integer | Maximum number of recommendations (default 5, max 20) |
generate_match_narrative$1.00Generate a human-readable narrative explaining a specific match - strengths, growth areas, and belonging components. Requires an LLM provider. x402 payment required: $1.00 per invocation.
Input Schema
| Name | Type | Description |
|---|---|---|
match_id* | string | UUID of the match to explain |
query_field$1.00Query the identity field by situation, not by name. Your agent weights 3 to 7 traits from the canonical vocabulary, the matching engine ranks the opted-in field with no model in the loop, and the call returns a tier label plus a short narrative. One call reveals one top-ranked opted-in member; that member earns 75% as Identity Income. Zero-match reveals nothing and charges nothing. x402 payment required: $1.00 per invocation.
Input Schema
| Name | Type | Description |
|---|---|---|
trait_priorities* | object | Weighted target profile as {trait_code: weight}. Keys must be canonical trait codes (call describe_traits for the list and semantics). Weights are relative emphasis from 0 to 1, never negative. Pick 3 to 7 traits; 10 is the hard cap. |
competency_requirements | array | Optional capability filter: up to 5 {code, min_level} objects naming competencies a member must have EVIDENCED to appear at all (call describe_competencies for the list). Narrows the pool; trait_priorities then ranks within it. min_level defaults to "awareness" and only applies to a graded competency code. |
context | string | Optional discovery context: one of peer_recognition, collaboration_fit, co_founder_signal. The workforce contexts strip emotion-adjacent traits per EU AI Act Art 5(1)(f). |
exclude_member_ids | array | Pagination cursor. Pass back the member_ids already revealed to reveal the next-ranked member not in that set. |
describe_traitsFreeList the canonical trait vocabulary: 30 trait codes grouped by category with one-line semantics, plus the valid discovery contexts and the EU AI Act Art 5(1)(f) workforce gating rules. Read this before composing query_field trait_priorities or create_requirement trait_criteria. Static reference data. Free, no authentication required.
describe_competenciesFreeList the published competency vocabulary: every code the field can be asked about, grouped by how the claim is denominated. A graded claim is climbed by degrees and takes a min_level; an attested_binary or issued_credential claim is held or it is not, and naming min_level against one is refused. Read this before composing query_field competency_requirements. Definitions only, no member evidence. Free, no authentication required.
attest_domain$0.01Create a competence attestation for a person in a specific domain (e.g. 'software_engineering', 'brewing'), weighted by your agent reputation - updates the person's multi-domain competency graph. x402 payment required: $0.01 per invocation. 75% goes to the data subject.
Input Schema
| Name | Type | Description |
|---|---|---|
member_id* | string | UUID of the member to attest |
domain_label* | string | Domain of competence (e.g. 'software_engineering', 'brewing', 'ultrarunning'). Lowercase letters, digits, hyphens and underscores only. |
confidence* | number | Confidence in the attestation (0.0-1.0) |
evidence_type* | string | How the competence was evidenced. One of: OBSERVED, INFERRED, REPORTED |
dispute_attestationFreeRecord a dispute against a competence attestation on a person's identity - if disputes exceed corroborations, the attestation is flagged for review. Free.
Input Schema
| Name | Type | Description |
|---|---|---|
attestation_id* | string | UUID of the attestation to dispute |
reason* | string | Reason for disputing this attestation |
get_side_quest_graph$0.10Get a person's multi-domain competency graph (Side Quest Graph) - all attested domains, the connections between them, and trust scores, with differential privacy noise applied to all numeric values. x402 payment required: $0.10 per invocation. 75% goes to the data subject.
Input Schema
| Name | Type | Description |
|---|---|---|
member_id* | string | UUID of the member |
include_edges | boolean | Include pursuit edges between domains (default true) |
min_confidence | number | Minimum confidence threshold for domains (default 0.0) |
query_graph_similarity$0.30Compare two people's multi-domain competency graphs for team composition analysis - returns domain overlap, pattern similarity, and complementarity scores with differential privacy noise. x402 payment required: $0.30 per invocation. 75% goes to both data subjects.
Input Schema
| Name | Type | Description |
|---|---|---|
member_a_id* | string | UUID of the first member |
member_b_id* | string | UUID of the second member |
Utility
Helper tools for discovery and integration guidance.
hello_agentFreeFirst handshake with ~alter. Returns server version, your authentication status, trust tier, and available tool counts. Call this once to confirm your connection works before making other calls. No parameters required.
get_startedFreeA one-call orientation to ~alter for an agent meeting the rails for the first time, and one you can act on in the same session. Self-registration is free and keyless: holding no ~alter key and no human account, register_autonomous_challenge then register_autonomous mint you an owner-less ~handle in two calls, and free-tier queries are live the moment it returns. The call also returns what ~alter is, what earning against a ~handle takes, the tools callable before you hold a key, an honest note that most depth is paid per query in USDC over x402 with prices read live, and the consent path that gates deeper third-party data. No authentication required.
get_privacy_budgetFreeCheck how much of a person's differential-privacy budget remains before querying sensitive trait data - returns the 24-hour rolling window: total budget, amount spent, remaining epsilon, and query count. Free.
Input Schema
| Name | Type | Description |
|---|---|---|
member_id* | string | UUID of the member |
list_pluginsFreeBrowse the published community plugin directory: third-party capabilities built on top of ~alter. Published rows only, newest first, with an optional category filter. An empty directory returns an empty list rather than sample rows. Free, and it needs a key.
Input Schema
| Name | Type | Description |
|---|---|---|
category | string | Optional category filter: dev-tools, identity-sources, productivity, research, workflow, or other. |
limit | integer | Maximum rows to return (default 10, max 20). |
submit_pluginFreeFile a plugin submission to the community directory for operator review. Attribution is resolved from your own bound ~handle, never a request field. The row lands pending and stays invisible in the public directory until an operator publishes it. At most 10 submissions per caller per day. Requires authentication and a bound ~handle.
Input Schema
| Name | Type | Description |
|---|---|---|
id* | string | Slug to address the plugin by: lowercase letters, digits and dashes, starting with a letter, 2-64 characters. |
name* | string | Display name shown in the directory. |
category* | string | One of: dev-tools, identity-sources, productivity, research, workflow, other. |
description* | string | One-paragraph description of what the plugin does. |
repo_url | string | Optional https URL where the plugin's code lives. ~alter stores metadata only. |
Calling a Tool
All tools are invoked via the tools/call JSON-RPC method. Include the tool name and arguments object. For transport and connection details, see the MCP overview. For read-only data access, see MCP Resources.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "verify_identity",
"arguments": {
"member_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"claims": {
"archetype": "Architect",
"min_engagement_level": 2
}
}
}
}The raw member UUID is never echoed back in the response - only the ~handle, so a caller sweeping identities cannot harvest routable ids. Engagement level is always returned as its tier label, never the underlying number.