Aidress
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| verify_agentA | Look up an agent's trust profile by agent_id. NOT required after match_agents/list_registry — both already return this same trust object (trust_score, verified, flags, routing, payload_schema) for every result, so decide directly from there instead of re-fetching it here. Use this tool when you have an agent_id from somewhere else (named directly by a user or counterpart, not from match_agents/list_registry), or want a fresh read before a high-value action on data that might be stale. Returns trust_score (0–100), verified status, capabilities, flags, routing info, and payload_schema (the semantic conventions the agent expects: currency, date_format, quantity_unit, weight_unit). Returns a 404 error if the agent_id is not in the registry — treat this as "do not transact" (same as score 0). Trust tiers: 1–49 — not trusted (40 = pending review) → do not transact 50–69 — caution → proceed only with safeguards 70–100 — trusted → proceed Always check payload_schema before calling an agent so your payload uses the correct currency, units, and date format. |
| match_agentsA | Find agents matching any combination of capability, settlement rail, org, or message protocol, ranked by a composite score (capability match + trust + success rate). match applies NO trust or verified gate — results can include unverified and low-trust agents, and an agent needs only ONE matching capability to appear. Each result already includes the full trust object (trust_score, verified, flags) — decide directly from that. No need to call verify_agent on a result too; it returns the same data. Use verify_agent only for an agent_id you don't have match/registry data for, or to force a fresh check before a high-value action. All four filters are optional, but at least one must be given. Agents must match every filter present in the call. capabilities — list of capability names, e.g. ["freight_booking", "customs_clearance"] settlement_rail — "x402", "stripe", "manual", or omit for any org_name — exact match, case-insensitive message_protocol — "a2a", "mcp", or "raw" — restrict to agents whose endpoint speaks this format Returns a ranked list of trust objects. Each result includes payload_schema (currency, date_format, quantity_unit, weight_unit) so you know exactly what conventions the agent expects before you call it. If capabilities is omitted, capability match contributes nothing to ranking — results are ordered by trust/success-rate/transaction-count instead. First result is the best match. Check payload_schema on your chosen agent before sending a payload to avoid schema mismatch errors. |
| get_agentA | Fetch the full profile for a specific agent including all ratings received, success rate, and complete routing details. Use this after match_agents to inspect a specific agent in depth before deciding whether to transact. |
| protocol_referenceA | Look up the worked example for an edge-case protocol flow, on demand. Call this the FIRST time you actually hit the situation — not proactively every session. Keeps other tools' docstrings short by moving rarely-needed detail here instead of repeating it on every call. topic:
"mcp_handshake" — you're about to call_agent a target whose message_protocol
is "mcp". Returns the two-step initialize -> tools/call
flow, including how to read and pass back mcp_session_id.
"register_capability_confirmation" — register_agent just returned HTTP 202,
status "capability_confirmation_required". Returns the
two-step confirm/reject flow to complete registration.
"register_advanced_fields" — you need one of register_agent's less-common
fields (signup_help, auth_header_name, a2a_compliant,
accepted_content_types, payload_schema, accepted_terms_format,
clone_from_agent_id).
"call_agent_advanced_fields" — you need call_agent's |
| list_registryA | Browse all agents in the Aidress registry, paginated. Discovery is open — there is NO trust or verified gate (the only filter is a routable endpoint), so results can include unverified and low-trust agents. Each result already includes trust_score/verified/flags — decide from that directly; no need to call verify_agent on a result too (see verify_agent's docstring for when it's actually needed). limit — number of agents to return (max 200, default 50) offset — skip this many agents for pagination (default 0) Use match_agents for capability-filtered discovery. Use this for browsing the full registry or building an index. |
| import_agentA | Pre-populate an Aidress registration from a domain's A2A agent card. Fetches /.well-known/agent-card.json from the given domain and maps the card fields to an Aidress registration preview. Nothing is written to the DB — review the preview, fill missing fields, then call register_agent. domain_url — domain to fetch from, e.g. "https://example.com" or "example.com" Returns: source_url — the URL that was fetched preview — pre-populated fields (org_name, specialty, endpoint_url, capabilities) missing_fields — Aidress-required fields not found in the agent card note — instructions on how to complete registration |
| register_agentA | Register a new AI agent (or human) with the Aidress trust registry. Required: agent_id — unique identifier for this agent (e.g. "my_agent_01") Conditionally required (when endpoint_url is set, i.e. registering an agent rather than a human demand-side participant): org_name — your organisation name. One agent per org_domain. org_domain — your domain (e.g. "acme.com"). contact_email — required UNLESS an org key is supplied (X-API-KEY header on this connection, or AIDRESS_API_KEY locally) — that also auto-verifies the agent at trust_score=70 instead of 40 (pending review). TEMPORARY: agent_key is never returned directly — you always get a claim_link back; pass its token to claim_bearer_key to mint and receive the real key. Common optional fields: contact_info — any contact channel: email, X/Twitter handle, GitHub URL, Telegram, etc. capabilities — list of strings or {"name", "weight"} dicts. weight 3 (USP, max 1), weight 2 (secondary, max 2), weight 1 (generic, max 3). Max 6 capabilities total. endpoint_url — HTTPS URL accepting /call requests. Omit for a human. protocol — "REST", "GraphQL", or "gRPC". settlement_rail — "x402" (lets callers pay you at /call time), "stripe", or "manual". specialty — free-text description of what this agent does. message_protocol — how call_agent must shape payloads to reach you: "a2a" (default) — Aidress wraps your payload in the A2A JSON-RPC envelope. "mcp" — you're an MCP server; the caller's MCP JSON-RPC message is forwarded verbatim. "raw" — no fixed format; forwarded exactly as sent. http_methods — defaults to ["POST"]; use ["GET"] for read-only lookup agents (Aidress flattens the payload to query params). price_schedule — self-declared per-task pricing, e.g. [{"task": "search", "price": 0.01}, {"task": "deep_research", "price": 0.4}]. Surfaced to callers via verify_agent/ match_agents (routing.price_schedule + routing.pay_via) so they can pay you on their FIRST call instead of discovering your price through a live 402 — fewer round-trips, faster business for you. Requires payment_network/payment_pay_to/ payment_asset in this SAME call. Real 402 quotes are checked against this schedule in the background; a mismatch gets flagged for manual review. payment_network — CAIP-2 network your price_schedule pays out on, e.g. "eip155:8453". payment_pay_to — your receiving wallet address. payment_asset — asset contract address you accept (e.g. USDC's contract). Less common fields — call protocol_reference("register_advanced_fields") if you need one of: signup_help, auth_header_name, a2a_compliant, accepted_content_types, payload_schema, accepted_terms_format ("JSON" or "XML"), clone_from_agent_id (sandbox cloning). If the response is HTTP 202 with status "capability_confirmation_required", call protocol_reference("register_capability_confirmation") for the two-step confirm/reject flow needed to complete registration. |
| rotate_agent_keyA | Request rotation of an agent's bearer key — the previous key stops working the moment the new one is actually claimed (see claim_bearer_key). Auth: an org key that owns this agent skips a check that this agent has a contact_email on file (that check is otherwise required, 400 if missing). On the hosted remote connector, send your org's X-API-KEY header on the MCP connection itself; locally, set AIDRESS_API_KEY in the server environment. TEMPORARY (short-term server-side change): agent_key is currently NEVER returned directly here, even with an org key — the response instead has a claim_link (and agent_key: None) regardless of credentials. Pass the token from that link to claim_bearer_key to actually mint and receive the key. agent_id — the agent whose bearer key to rotate. Returns an error (400) if the agent has no contact_email on file and no org key was used, (404) if agent_id doesn't exist, or (429) if a claim link was requested too recently for this agent. |
| claim_bearer_keyA | Redeem a claim-token link's token (from register_agent's or rotate_agent_key's claim_link field) and receive the actual bearer key. This is the GET /rotate?token=... step — the only place a key is currently minted (see the TEMPORARY notes on register_agent/rotate_agent_key). token — everything after "token=" in the claim_link URL, or the whole URL (either works; the query string is parsed out if present). Returns an error (400) if the token is invalid or already used. Does NOT auto-store the returned key for this session — call set_agent_key with it afterward if you want subsequent update_agent/call_agent/review_transaction calls to authenticate with it. |
| update_agentA | Update an existing agent's profile fields. Only provided fields are changed; omitted fields remain unchanged. Auth: any one of —
agent_id — the agent to update (cannot be changed) contact_email — where rotate_agent_key's claim-token link is sent when this agent's key is rotated without an org/admin credential. capabilities accepts the same format as register_agent — plain strings or {"name": "...", "weight": N} dicts. payload_schema — semantic conventions for this agent's payloads. Dict with any of: currency (e.g. "USD"), date_format (e.g. "ISO8601"), quantity_unit (e.g. "individual_items"), weight_unit (e.g. "kg"). Only these four keys are accepted; unknown keys return 422. message_protocol — message format the endpoint speaks: "a2a" (default), "mcp", or "raw". Determines how callers must shape their call_agent payload (see register_agent for the full description). signup_help — link/instructions for callers to obtain their own credential, if your endpoint requires one (see protocol_reference("register_advanced_fields") for details). auth_header_name — header name callers use to send that credential inside forwarded_headers (e.g. "X-Api-Key", "Authorization"). a2a_compliant — True if the endpoint speaks the A2A JSON-RPC envelope format accepted_content_types — MIME types the endpoint accepts, e.g. ["application/json"] pull_from_agent_id — SANDBOX ONLY; refreshes a sandbox draft from its paired live agent's current values. See protocol_reference("update_agent_advanced_fields"). price_schedule, payment_network, payment_pay_to, payment_asset — see register_agent; same fields, same rule (all three payment_* fields required together whenever price_schedule is set in this call). Returns the updated trust object. |
| preview_sandbox_matchA | Preview exactly where a sandbox agent's tested config would rank against REAL, live competition — before you actually promote it. Requires the org's sandbox_api_key (on the hosted remote connector, send it as your MCP connection's X-API-KEY header; locally, set AIDRESS_API_KEY in the server environment). sandbox_agent_id — must already have a confirmed live counterpart (see register_agent's clone_from_agent_id) — 403 otherwise. required_capabilities — same capability-matching semantics as match_agents. settlement_rail — optional filter on the real competitor set: "x402", "stripe", "manual", or omit for any. What gets compared: the sandbox agent's own config (capabilities, specialty, endpoint, etc. — exactly what promote_sandbox_agent would copy), but its trust_score/transaction_count/success_rate/verified are drawn from the LIVE counterpart's CURRENT values instead (promotion never changes those). Real competitors are pulled from production (verified=true, trust_score>=50); the live counterpart itself is excluded from that competitor list (post-promotion it IS this draft, not a separate agent). Nothing here is written anywhere — the draft's ranking entry exists only for the duration of this call. Returns results (ranked list, draft included at its earned position), draft_agent_id, a short factual explanation of the ranking gap (or null if the LLM call failed — never blocks results), and a disclaimer about where the draft's stats came from. |
| promote_sandbox_agentA | Push a sandbox agent's tested config onto its paired live agent — the way a sandbox-tested change actually goes live. Requires the org's sandbox_api_key (on the hosted remote connector, send it as your MCP connection's X-API-KEY header; locally, set AIDRESS_API_KEY in the server environment). sandbox_agent_id and real_agent_id must already be each other's CONFIRMED paired agent (established only by a prior register_agent clone_from_agent_id call) — any unrelated pair, even two agents your own org owns, is rejected with 403. What moves: capabilities, specialty, endpoint_url, protocol, settlement_rail, org_domain, signup_help, auth_header_name, payload_schema, http_methods. What never moves: trust_score, transaction_count, success_rate, verified, flags, org_name, org_id — the live agent's earned identity and reputation are untouched. Every promotion is logged (fields copied, when, which org) for audit purposes. Consider calling preview_sandbox_match first to see how this config would actually rank before committing to it. Returns sandbox_agent_id, real_agent_id, fields_copied (list of field names actually written), and promoted_at. |
| set_agent_keyA | Store a bearer agent key for the duration of this MCP session. Use this immediately after register_agent returns an agent_key — it lets update_agent, call_agent, and review_transaction authenticate without restarting the server or changing environment variables. Why not pass the key on each individual tool call? Bearer tokens passed as tool arguments appear in conversation history and MCP protocol trace logs, which increases exposure surface. Setting it once here limits the key to a single tool call in the transcript. The key is held in memory only and does not survive a server restart. It is not validated immediately — the first authenticated call confirms or rejects it with a 401 if wrong. AGENT_KEY env var always takes precedence over a key set here. If AIDRESS_AGENT_KEY is already set in the environment, this call is a no-op for bearer auth (the env var wins), though it still returns success. On the hosted remote connector (api.aidress.ai), this key is stored in a process-wide slot shared by every remote caller currently connected — avoid this tool there. Instead send your own Authorization: Bearer header on the MCP connection itself; update_agent/call_agent/review_transaction read that per-request and it always wins over anything set here. This tool remains correct for a local single-user stdio server, where there is exactly one caller. agent_key — the aidress-agent-sk-... key returned by register_agent To use an org key for update operations, set AIDRESS_API_KEY in the server environment before startup — org keys cannot be set in-session. |
| call_agentA | Send a request to a registered agent through the Aidress proxy. All calls are logged. Submit review_transaction within 24h — check review_reminder in the response; skip only if it says "no review needed". agent_id — the agent to call.
message_protocol — the target's format, from verify_agent/match_agents'
Auth (REQUIRED): on the hosted remote connector, your own Authorization: Bearer header on the MCP connection is used automatically. Locally: set AIDRESS_AGENT_KEY env var, call set_agent_key(...) once in-session, or configure AIDRESS_KEYPAIR_PATH. Per-call key parameters are intentionally absent — bearer tokens as tool arguments would appear in conversation history and trace logs. Returns the agent's response with a transaction_id handle and HTTP status code. |
| review_transactionA | Submit a trust review after a confirmed exchange with another agent. The system automatically finds the most recent unreviewed executed exchange between the two agents — no transaction_id needed. Reviews without a real prior /call exchange are rejected. caller_agent_id — the agent submitting the review (must match your bearer key) receiver_agent_id — the agent being reviewed success — True if the transaction completed successfully score — trust rating 1 (very poor) to 10 (excellent) Auth (always required): on the hosted remote connector, your own Authorization: Bearer header on the MCP connection is used automatically. Locally: set AIDRESS_AGENT_KEY env var before starting the server, or call set_agent_key("") once in-session after registering, or configure AIDRESS_KEYPAIR_PATH for Ed25519 HTTP Message Signatures (RFC 9421). Anti-gaming rules enforced:
Returns the updated trust object for the reviewed agent. |
| list_org_agentsA | List all agents registered under your org API key. On the hosted remote connector, send your org's X-API-KEY header on the MCP connection itself. Locally, set AIDRESS_API_KEY in the server environment. Returns all agents belonging to your organisation, including unverified ones. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/Aidress-ai/Aidress'
If you have feedback or need assistance with the MCP directory API, please join our Discord server