← The evidence ledger
Evidence row 723401
Observed , by probe.mcp/1.
- Kind
- mcp.tools
- About
- endpoint 3438e17d-1132-4105-8128-dc6324bc37a1
- Recorded
- Previous row
- None: the first of its kind about this subject
- Body SHA-256
- 1ae33f461928597462be8a403f443ce2808e8151cdf23a88645be70732f94746
- Leaf
- 0x51b27e682fa4e83a29333cd4df16794ae9824bd19d0242f6a16da01c388c059e
What was observed
{
"count": 121,
"tools": [
{
"description": "What a customer's due-diligence or a regulator would flag today: prohibited practices, incomplete\nArticle 5 screens, obligations already in force without evidence (critical), obligations due within 180\ndays (medium), upcoming high-risk duties, and high-risk systems with no recent log. Requires the\norganization API key.",
"inputSchema": {
"properties": {},
"title": "ai_act_checkArguments",
"type": "object"
},
"name": "ai_act_check"
},
{
"description": "Export your AI Act register as JSON to hand to customers, auditors or regulators, with its SHA-256\nsealed on chain so anyone can prove it was not edited afterwards (check with ai_act_verify_export).\nRequires the organization API key.",
"inputSchema": {
"properties": {},
"title": "ai_act_exportArguments",
"type": "object"
},
"name": "ai_act_export"
},
{
"description": "Your EU AI Act register: each AI system's current record, tier and applicable obligations.\nRequires the organization API key.",
"inputSchema": {
"properties": {
"system_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "One system; omit for all",
"title": "System Id"
}
},
"title": "ai_act_registerArguments",
"type": "object"
},
"name": "ai_act_register"
},
{
"description": "Add or update an AI system in your company's EU AI Act register. Privi screens it against the Article 5\nbans, classifies it (prohibited / high-risk / transparency / general-purpose / minimal), and lists the\nobligations that apply to your role with their dates. Every change is versioned and written to your\ntamper-evident 'ai-act' log. Requires the organization API key.",
"inputSchema": {
"properties": {
"actor": {
"description": "Who is making the change (person or agent)",
"title": "Actor",
"type": "string"
},
"merge": {
"default": true,
"description": "Merge into the existing record (true) or replace it (false)",
"title": "Merge",
"type": "boolean"
},
"system": {
"additionalProperties": true,
"description": "AI system record. Required: system_id. Recommended: name, owner, role (provider|deployer|provider_and_deployer|importer|distributor), intended_purpose, used_in_eu, vendor_name. Risk flags: annex_iii_area (biometrics|critical_infrastructure|education|employment|essential_services|law_enforcement|migration|justice_democracy or empty), annex_i_product, gpai_model, public_body_or_public_service, interacts_with_people, generates_synthetic_content, emotion_or_biometric_categorisation, deepfake_or_public_interest_text, not_high_risk_justification (Art. 6(3)). prohibited_screen {practice: true/false} for: harmful_manipulation, exploiting_vulnerabilities, social_scoring, predictive_policing_profiling, untargeted_face_scraping, workplace_school_emotion_recognition, biometric_categorisation_sensitive, realtime_remote_biometric_id_public, non_consensual_intimate_imagery. controls {obligation_id: {done, evidence, date}} for: ai_literacy, disclose_ai_interaction, mark_synthetic_content, inform_emotion_biometric, disclose_deepfake, gpai_technical_documentation, gpai_copyright_policy, gpai_training_summary, risk_management, data_governance, technical_documentation, automatic_logging, instructions_for_use, human_oversight_design, accuracy_robustness_security, quality_management, conformity_assessment, eu_database_registration, post_market_monitoring, use_per_instructions, human_oversight_assigned, monitor_and_report, keep_logs_6_months, inform_workers, inform_affected_persons, fundamental_rights_impact_assessment. log_streams: Privi Ledger stream IDs holding the system's logs. retired: true to retire.",
"title": "System",
"type": "object"
}
},
"required": [
"system",
"actor"
],
"title": "ai_act_system_saveArguments",
"type": "object"
},
"name": "ai_act_system_save"
},
{
"description": "Check that an AI Act register a supplier or partner sent you is exactly what they exported from Privi,\nand return its on-chain seal. Free; no key needed.",
"inputSchema": {
"properties": {
"register_json": {
"description": "The exact register_json a company shared with you",
"title": "Register Json",
"type": "string"
}
},
"required": [
"register_json"
],
"title": "ai_act_verify_exportArguments",
"type": "object"
},
"name": "ai_act_verify_export"
},
{
"description": "Withdraw an approval request (or revoke an approval not yet used). Your key cannot approve, only cancel. Requires the\norganization API key.",
"inputSchema": {
"properties": {
"approval_id": {
"description": "apr_... ID",
"title": "Approval Id",
"type": "string"
}
},
"required": [
"approval_id"
],
"title": "approval_cancelArguments",
"type": "object"
},
"name": "approval_cancel"
},
{
"description": "Your organization's approval requests, newest first. Requires the organization API key.",
"inputSchema": {
"properties": {
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "pending, approved, denied, expired or cancelled",
"title": "Status"
}
},
"title": "approval_listArguments",
"type": "object"
},
"name": "approval_list"
},
{
"description": "Make mandate_spend pause for a human on large payments: any payment over the threshold creates an approval request\nthat the mandate's principal must sign with their wallet before the agent can spend. Requires the organization API key.",
"inputSchema": {
"properties": {
"approve_over_usdc": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Payments above this need a live human approval; omit to remove the rule",
"title": "Approve Over Usdc"
},
"stream_id": {
"description": "The agent (stream), or '*' for all of them",
"title": "Stream Id",
"type": "string"
}
},
"required": [
"stream_id"
],
"title": "approval_policy_setArguments",
"type": "object"
},
"name": "approval_policy_set"
},
{
"description": "Ask a human to approve (or deny) an action. Returns approve_url for them: they read the request and sign with their\nwallet (free, no transaction). Your agent then calls approval_wait, or watches your live channel for approval.approved.\nOnly the named wallet can decide; your API key can only cancel. Requires the organization API key.",
"inputSchema": {
"properties": {
"action": {
"description": "Plain-English action the human is approving, e.g. 'Wire 4,800 USDC to Acme for invoice 1042'",
"title": "Action",
"type": "string"
},
"amount_usdc": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Amount, if money is involved",
"title": "Amount Usdc"
},
"approver_wallet": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "0x wallet of the human who decides (if no mandate_id)",
"title": "Approver Wallet"
},
"mandate_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "mdt_... : the mandate's principal decides",
"title": "Mandate Id"
},
"payee": {
"default": "",
"description": "Payee address or domain, if money is involved",
"title": "Payee",
"type": "string"
},
"reason": {
"default": "",
"description": "Why the agent wants to do this",
"title": "Reason",
"type": "string"
},
"reference": {
"default": "",
"description": "Invoice or order reference",
"title": "Reference",
"type": "string"
},
"stream_id": {
"description": "The agent asking",
"title": "Stream Id",
"type": "string"
},
"ttl_s": {
"default": 900,
"description": "Seconds the request stays open (60-86400)",
"maximum": 86400,
"minimum": 60,
"title": "Ttl S",
"type": "integer"
}
},
"required": [
"stream_id",
"action"
],
"title": "approval_requestArguments",
"type": "object"
},
"name": "approval_request"
},
{
"description": "Status of an approval request: pending, approved, denied, expired or cancelled, with the human's wallet signature\nonce they decide. Free.",
"inputSchema": {
"properties": {
"approval_id": {
"description": "apr_... ID",
"title": "Approval Id",
"type": "string"
}
},
"required": [
"approval_id"
],
"title": "approval_statusArguments",
"type": "object"
},
"name": "approval_status"
},
{
"description": "Block until the human decides (or timeout_s passes). Returns the current status; if still pending, call again.\nFree.",
"inputSchema": {
"properties": {
"approval_id": {
"description": "apr_... ID",
"title": "Approval Id",
"type": "string"
},
"timeout_s": {
"default": 30,
"description": "How long to wait (1-55 seconds); call again to keep waiting",
"maximum": 55,
"minimum": 1,
"title": "Timeout S",
"type": "integer"
}
},
"required": [
"approval_id"
],
"title": "approval_waitArguments",
"type": "object"
},
"name": "approval_wait"
},
{
"description": "Privi's public signing keys: Ed25519 and ML-DSA-87 (NIST FIPS 204, CNSA 2.0 post-quantum). Pin these to\nverify Privi signatures offline. Free.",
"inputSchema": {
"properties": {},
"title": "fortress_keysArguments",
"type": "object"
},
"name": "fortress_keys"
},
{
"description": "Consume a two-person authorization right before performing the action. Single use; refused unless authorized.\nRequires the organization API key.",
"inputSchema": {
"properties": {
"request_id": {
"description": "tpi_... ID",
"title": "Request Id",
"type": "string"
}
},
"required": [
"request_id"
],
"title": "fortress_tpi_executeArguments",
"type": "object"
},
"name": "fortress_tpi_execute"
},
{
"description": "Your organization's two-person requests. Requires the organization API key.",
"inputSchema": {
"properties": {},
"title": "fortress_tpi_listArguments",
"type": "object"
},
"name": "fortress_tpi_list"
},
{
"description": "Define a Two-Person Integrity policy: which officers can approve, and how many distinct approvals an action\nneeds. Requires the organization API key.",
"inputSchema": {
"properties": {
"name": {
"description": "Policy name, e.g. 'treasury-transfers'",
"title": "Name",
"type": "string"
},
"officer_wallets": {
"description": "0x wallets of the officers who may approve (at least 2)",
"items": {
"type": "string"
},
"title": "Officer Wallets",
"type": "array"
},
"required": {
"description": "Approvals needed (2..number of officers)",
"minimum": 2,
"title": "Required",
"type": "integer"
}
},
"required": [
"name",
"officer_wallets",
"required"
],
"title": "fortress_tpi_policyArguments",
"type": "object"
},
"name": "fortress_tpi_policy"
},
{
"description": "Ask officers to authorize a sensitive action under a two-person policy. Returns approve_url for the officers;\neach signs with their wallet. Do not act until fortress_tpi_status shows 'authorized', then call\nfortress_tpi_execute. Requires the organization API key.",
"inputSchema": {
"properties": {
"details": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Exact parameters; their hash is what officers sign",
"title": "Details"
},
"hours": {
"default": 24,
"description": "Hours until the request expires (1-168)",
"maximum": 168,
"minimum": 1,
"title": "Hours",
"type": "integer"
},
"policy": {
"description": "Policy name",
"title": "Policy",
"type": "string"
},
"stream_id": {
"description": "The agent asking",
"title": "Stream Id",
"type": "string"
},
"summary": {
"description": "Exactly what will be done, in plain words",
"title": "Summary",
"type": "string"
}
},
"required": [
"policy",
"stream_id",
"summary"
],
"title": "fortress_tpi_requestArguments",
"type": "object"
},
"name": "fortress_tpi_request"
},
{
"description": "Status of a two-person request (pending, authorized, vetoed, expired, executed) and who approved. Free.",
"inputSchema": {
"properties": {
"request_id": {
"description": "tpi_... ID",
"title": "Request Id",
"type": "string"
}
},
"required": [
"request_id"
],
"title": "fortress_tpi_statusArguments",
"type": "object"
},
"name": "fortress_tpi_status"
},
{
"description": "Put your MCP server behind Privi. You get an HTTP URL and a WebSocket URL that forward to it unchanged (x402\npayments keep working) while Privi rate-limits callers, optionally requires a Privi Passport, meters every tool call\nand writes each call to your tamper-evident log. The kill switch stops the gateway instantly. Upstream must be public\nHTTPS. Requires the organization API key.",
"inputSchema": {
"properties": {
"guard": {
"default": "off",
"description": "Privi Guard on every tool result: off, tag (add the verdict in _meta) or block (withhold injected results). Each check uses your Guard allowance or credits",
"title": "Guard",
"type": "string"
},
"min_score": {
"default": 0,
"description": "0 = open to everyone. >0 = callers must prove a KYA wallet whose Passport scores at least this (0-1000)",
"maximum": 1000,
"minimum": 0,
"title": "Min Score",
"type": "integer"
},
"name": {
"description": "A name for this gateway, e.g. 'acme-search-mcp'",
"title": "Name",
"type": "string"
},
"rate_per_min": {
"default": 60,
"description": "Requests per minute per caller (1-1200)",
"maximum": 1200,
"minimum": 1,
"title": "Rate Per Min",
"type": "integer"
},
"upstream_url": {
"description": "The MCP server's public https URL (streamable HTTP), e.g. https://api.acme.com/mcp",
"title": "Upstream Url",
"type": "string"
}
},
"required": [
"name",
"upstream_url"
],
"title": "gateway_createArguments",
"type": "object"
},
"name": "gateway_create"
},
{
"description": "Turn a gateway off. Its URLs stop working at once; history stays in your log. Requires the organization API key.",
"inputSchema": {
"properties": {
"gw_id": {
"description": "gw_... ID",
"title": "Gw Id",
"type": "string"
}
},
"required": [
"gw_id"
],
"title": "gateway_deleteArguments",
"type": "object"
},
"name": "gateway_delete"
},
{
"description": "Public description of a gateway: where it forwards, whether callers need a Passport, its rate limit and its call\ncounts. Free.",
"inputSchema": {
"properties": {
"gw_id": {
"description": "gw_... ID",
"title": "Gw Id",
"type": "string"
}
},
"required": [
"gw_id"
],
"title": "gateway_infoArguments",
"type": "object"
},
"name": "gateway_info"
},
{
"description": "Your organization's gateways. Requires the organization API key.",
"inputSchema": {
"properties": {},
"title": "gateway_listArguments",
"type": "object"
},
"name": "gateway_list"
},
{
"description": "Turn Privi Guard on for every tool result that passes through your gateway: tag adds the verdict and a receipt\nid in result._meta['privi/guard']; block also replaces injected results with an error before your agents see\nthem. Each result is one Guard check (free allowance, then credits). Requires the organization API key.",
"inputSchema": {
"properties": {
"gw_id": {
"description": "gw_... ID",
"title": "Gw Id",
"type": "string"
},
"mode": {
"description": "off | tag | block",
"title": "Mode",
"type": "string"
}
},
"required": [
"gw_id",
"mode"
],
"title": "gateway_set_guardArguments",
"type": "object"
},
"name": "gateway_set_guard"
},
{
"description": "Calls, errors, denials and x402 payment prompts per tool and per day for one of your gateways, plus your monthly quota.\nRequires the organization API key.",
"inputSchema": {
"properties": {
"gw_id": {
"description": "gw_... ID",
"title": "Gw Id",
"type": "string"
}
},
"required": [
"gw_id"
],
"title": "gateway_statsArguments",
"type": "object"
},
"name": "gateway_stats"
},
{
"description": "Your agency's AI use case inventory: the current version of each record. Requires the organization API key.",
"inputSchema": {
"properties": {
"use_case_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "One use case; omit for all",
"title": "Use Case Id"
}
},
"title": "gov_ai_inventoryArguments",
"type": "object"
},
"name": "gov_ai_inventory"
},
{
"description": "Flags what an OMB M-25-21 review would flag before you submit: missing required fields, PII without a\nPrivacy Impact Assessment, and high-impact AI in pilot or deployment missing any minimum risk practice\n(testing, impact assessment, independent review, monitoring, operator training, fail-safe, appeals, public\nfeedback) or without a recently active activity log as monitoring evidence. Requires the organization API key.",
"inputSchema": {
"properties": {},
"title": "gov_ai_inventory_checkArguments",
"type": "object"
},
"name": "gov_ai_inventory_check"
},
{
"description": "Machine-readable CSV of your publicly releasable AI use cases (for publishing at agency.gov/ai), with its\nSHA-256 sealed on chain (Base, until the Privi chain mainnet) so the published file can be proven unaltered. Requires the\norganization API key.",
"inputSchema": {
"properties": {
"include_withheld": {
"default": false,
"description": "Include use cases marked withhold_from_public (internal copy)",
"title": "Include Withheld",
"type": "boolean"
}
},
"title": "gov_ai_inventory_exportArguments",
"type": "object"
},
"name": "gov_ai_inventory_export"
},
{
"description": "Add or update an entry in your agency's AI use case inventory (OMB M-25-21). Every change creates a\nnew version and is written to your tamper-evident 'ai-inventory' log. Requires the organization API key.",
"inputSchema": {
"properties": {
"actor": {
"description": "Who is making the change (person or agent)",
"title": "Actor",
"type": "string"
},
"merge": {
"default": true,
"description": "Merge into the existing record (true) or replace it (false)",
"title": "Merge",
"type": "boolean"
},
"use_case": {
"additionalProperties": true,
"description": "AI use case record in OMB M-25-21 reporting fields. Required: use_case_id, name, stage (pre_deployment|pilot|deployed|retired), high_impact, purpose, outputs, sourcing (in_house|vendor|both), involves_pii, custom_code. Optional: bureau, contact_email, topic_area, ai_classification, withhold_from_public, expected_benefits, start_date, vendor_name, ato_system_name, data_description, open_data_link, pia_link, demographic_features, code_link, monitoring_streams (Ledger stream IDs), waivers [{practice, justification}], practices {name: {done, evidence, date}} with names: pre_deployment_testing, impact_assessment, independent_review, ongoing_monitoring, operator_training, fail_safe, appeal_process, public_feedback",
"title": "Use Case",
"type": "object"
}
},
"required": [
"use_case",
"actor"
],
"title": "gov_ai_usecase_saveArguments",
"type": "object"
},
"name": "gov_ai_usecase_save"
},
{
"description": "Check that a published AI inventory file is exactly what the agency exported from Privi Ledger, and\nreturn its on-chain seal. Free; no key needed.",
"inputSchema": {
"properties": {
"csv_text": {
"description": "The exact CSV file contents as published",
"title": "Csv Text",
"type": "string"
}
},
"required": [
"csv_text"
],
"title": "gov_ai_verify_exportArguments",
"type": "object"
},
"name": "gov_ai_verify_export"
},
{
"description": "Classify cryptographic algorithms as quantum-vulnerable (RSA, ECDH, ECDSA, EdDSA, DH, DSA, MQV),\npost-quantum (ML-KEM, ML-DSA, SLH-DSA), hybrid, symmetric/hash, or unknown. Free.",
"inputSchema": {
"properties": {
"algorithms": {
"description": "Algorithm or cipher-suite names, e.g. 'RSA-2048', 'ECDHE-RSA-AES256-GCM', 'X25519MLKEM768'",
"items": {
"type": "string"
},
"title": "Algorithms",
"type": "array"
}
},
"required": [
"algorithms"
],
"title": "gov_pqc_classifyArguments",
"type": "object"
},
"name": "gov_pqc_classify"
},
{
"description": "Export the full cryptographic inventory (CBOM) and migration plan as one JSON document for OMB, the\nCIO or auditors, with its SHA-256 sealed on chain (Base, until the Privi chain mainnet). Requires the organization API key.",
"inputSchema": {
"properties": {},
"title": "gov_pqc_exportArguments",
"type": "object"
},
"name": "gov_pqc_export"
},
{
"description": "Current cryptographic inventory of your systems. Requires the organization API key.",
"inputSchema": {
"properties": {
"system_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "One system; omit for all",
"title": "System Id"
}
},
"title": "gov_pqc_inventoryArguments",
"type": "object"
},
"name": "gov_pqc_inventory"
},
{
"description": "Prioritized post-quantum migration plan: every quantum-vulnerable asset ranked (High Value Assets,\nhigh-impact systems and long-lived sensitive data first; key establishment before signatures), with its\ndeadline (key establishment Dec 31 2030, signatures Dec 31 2031), recommended NIST replacement, progress\nmetrics, and findings (missed deadlines, TLS below 1.3, no target dates, unrecognized algorithms).\nRequires the organization API key.",
"inputSchema": {
"properties": {},
"title": "gov_pqc_planArguments",
"type": "object"
},
"name": "gov_pqc_plan"
},
{
"description": "Record the cryptographic inventory (CBOM) of one system for post-quantum migration. Every change creates\na new version and is written to the agency's tamper-evident 'pqc-inventory' log. Scanners and agents can\nsubmit results directly. Requires the organization API key.",
"inputSchema": {
"properties": {
"actor": {
"description": "Who made the change (person, scanner or agent)",
"title": "Actor",
"type": "string"
},
"system": {
"additionalProperties": true,
"description": "System record: system_id, name, bureau, owner, high_value_asset, high_impact, sensitive_until_year, fedramp_cloud, notes, assets [{asset_id, kind (key_establishment|signature|encryption|symmetric|hash|protocol|certificate), algorithm, key_size, protocol, location, product, vendor, status (not_started|planned|in_progress|hybrid|migrated), target_date (YYYY-MM-DD), replacement, evidence}]. Replaces the system's previous inventory.",
"title": "System",
"type": "object"
}
},
"required": [
"system",
"actor"
],
"title": "gov_pqc_system_saveArguments",
"type": "object"
},
"name": "gov_pqc_system_save"
},
{
"description": "Check that a CBOM and migration-plan document is exactly what was exported from Privi Ledger and return\nits on-chain seal. Free; no key needed.",
"inputSchema": {
"properties": {
"document": {
"additionalProperties": true,
"description": "The 'document' object exactly as exported",
"title": "Document",
"type": "object"
}
},
"required": [
"document"
],
"title": "gov_pqc_verify_exportArguments",
"type": "object"
},
"name": "gov_pqc_verify_export"
},
{
"description": "Your free checks left this month and your prepaid credits. Needs the organization key.",
"inputSchema": {
"properties": {},
"title": "guard_balanceArguments",
"type": "object"
},
"name": "guard_balance"
},
{
"description": "Buy prepaid Privi Guard checks in USDC on Base via x402. Credits never expire and are used after the free\nmonthly allowance. Needs the organization key.",
"inputSchema": {
"properties": {
"pack": {
"description": "1k = 1,000 checks for 7 USDC; 10k = 10,000 for 50 USDC; 100k = 100,000 for 300 USDC",
"enum": [
"1k",
"10k",
"100k"
],
"title": "Pack",
"type": "string"
}
},
"required": [
"pack"
],
"title": "guard_buy_creditsArguments",
"type": "object"
},
"name": "guard_buy_credits"
},
{
"description": "Check content for prompt injection (inbound) or leaked secrets and personal data (outbound) before an\nagent acts on it or sends it. Returns allow / warn / block, the findings, a redacted copy for outbound\nsecrets, and an Ed25519-signed receipt anchored on-chain, which proves the check happened. Privi does\nnot store the text. Free for 1,000 checks a month with an organization key; otherwise 1 cent per check\nin USDC via x402.",
"inputSchema": {
"properties": {
"direction": {
"default": "inbound",
"description": "inbound = untrusted content coming in (prompt injection, hidden instructions); outbound = content going out (API keys, card numbers, data smuggled in URLs)",
"enum": [
"inbound",
"outbound"
],
"title": "Direction",
"type": "string"
},
"source": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional label for the receipt, e.g. the page URL or tool name",
"title": "Source"
},
"text": {
"description": "The content to check: a web page, email, document or tool result the agent is about to act on (inbound), or what the agent is about to send (outbound)",
"title": "Text",
"type": "string"
}
},
"required": [
"text"
],
"title": "guard_checkArguments",
"type": "object"
},
"name": "guard_check"
},
{
"description": "Check up to 50 texts in one call (for example every tool result in a step). Each item is billed as its\nown check against your free allowance or credits and gets its own receipt. Needs an organization key.",
"inputSchema": {
"properties": {
"items": {
"description": "Up to 50 items {\"text\": \"...\", \"direction\": \"inbound\"|\"outbound\", \"source\": \"optional label\"}",
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Items",
"type": "array"
}
},
"required": [
"items"
],
"title": "guard_check_manyArguments",
"type": "object"
},
"name": "guard_check_many"
},
{
"description": "What Privi Guard checks, what it costs, and how receipts work. Free.",
"inputSchema": {
"properties": {},
"title": "guard_pricingArguments",
"type": "object"
},
"name": "guard_pricing"
},
{
"description": "Verify a Privi Guard receipt: the signed body, signature validity and its Merkle proof into the anchored\ntransparency log. Free; anyone holding the id can verify it.",
"inputSchema": {
"properties": {
"check_id": {
"description": "gc_... id from a guard_check receipt",
"title": "Check Id",
"type": "string"
}
},
"required": [
"check_id"
],
"title": "guard_receiptArguments",
"type": "object"
},
"name": "guard_receipt"
},
{
"description": "Step 2: bind the wallet to your organization's Privi Passport so its transactions pass KYA checks. With a\nwallet signature the binding is *proven*; without one it is only *declared* (most checkers require proven).\nRequires the organization API key.",
"inputSchema": {
"properties": {
"address": {
"description": "0x wallet address",
"title": "Address",
"type": "string"
},
"challenge_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "From kya_challenge",
"title": "Challenge Id"
},
"label": {
"default": "",
"description": "Friendly name, e.g. 'treasury-agent hot wallet'",
"title": "Label",
"type": "string"
},
"signature": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "65-byte hex signature of the challenge message by the wallet",
"title": "Signature"
},
"stream_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The agent (stream) that uses this wallet; omit for the whole organization",
"title": "Stream Id"
}
},
"required": [
"address"
],
"title": "kya_bind_walletArguments",
"type": "object"
},
"name": "kya_bind_wallet"
},
{
"description": "Step 1 of binding a wallet to your Privi Passport: get a message to sign with that wallet (EIP-191\npersonal_sign). Valid 30 minutes. Requires the organization API key.",
"inputSchema": {
"properties": {
"address": {
"description": "0x wallet address your agent controls",
"title": "Address",
"type": "string"
}
},
"required": [
"address"
],
"title": "kya_challengeArguments",
"type": "object"
},
"name": "kya_challenge"
},
{
"description": "Know-Your-Agent for blockchains: is this wallet operated by an audited AI agent, and how trustworthy is it\nright now? Resolves the address to its organization and live Privi Passport and returns allow/deny with\nreasons, plus a Privi-signed attestation (valid 60 min) you can cache. For chains, DeFi protocols, exchanges,\nstablecoin issuers and x402 facilitators. Free; send your organization key to log the check as evidence.",
"inputSchema": {
"properties": {
"address": {
"description": "0x wallet address about to send or receive a transaction",
"title": "Address",
"type": "string"
},
"min_grade": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Minimum grade A-E",
"title": "Min Grade"
},
"min_score": {
"default": 550,
"description": "Minimum current Passport score 0-1000",
"maximum": 1000,
"minimum": 0,
"title": "Min Score",
"type": "integer"
},
"purpose": {
"default": "",
"description": "What the transaction is for (recorded in your log if you send your key)",
"title": "Purpose",
"type": "string"
},
"require_signed": {
"default": true,
"description": "Require wallet ownership proven by signature (not just declared)",
"title": "Require Signed",
"type": "boolean"
}
},
"required": [
"address"
],
"title": "kya_checkArguments",
"type": "object"
},
"name": "kya_check"
},
{
"description": "Remove a wallet from your Passport (rotated or compromised key). KYA checks deny it immediately. Requires the organization API key.",
"inputSchema": {
"properties": {
"address": {
"description": "0x wallet address",
"title": "Address",
"type": "string"
}
},
"required": [
"address"
],
"title": "kya_unbind_walletArguments",
"type": "object"
},
"name": "kya_unbind_wallet"
},
{
"description": "Wallets bound to your organization and how each was proven. Requires the organization API key.",
"inputSchema": {
"properties": {},
"title": "kya_walletsArguments",
"type": "object"
},
"name": "kya_wallets"
},
{
"description": "Check whether an agent's action log is intact: entry count, time span, action and failure\ncounts, head hash, and where tampering broke the chain if it did. Does not reveal the actions\nthemselves. Paid per call via x402.",
"inputSchema": {
"properties": {
"org_id": {
"description": "Organization ID, e.g. org_1a2b3c4d5e6f7a8b",
"title": "Org Id",
"type": "string"
},
"stream_id": {
"description": "Stream ID, usually the agent's name",
"title": "Stream Id",
"type": "string"
}
},
"required": [
"org_id",
"stream_id"
],
"title": "ledger_audit_streamArguments",
"type": "object"
},
"name": "ledger_audit_stream"
},
{
"description": "Confirm that an action receipt exists in the ledger and when it was recorded. Reveals no action contents. Free.",
"inputSchema": {
"properties": {
"entry_hash": {
"description": "64-character hex entry_hash returned when the action was recorded",
"title": "Entry Hash",
"type": "string"
}
},
"required": [
"entry_hash"
],
"title": "ledger_check_receiptArguments",
"type": "object"
},
"name": "ledger_check_receipt"
},
{
"description": "Audit-ready report of your AI agents' activity for a period (SOC 2 evidence, security\nquestionnaires, AI-regulation record keeping): actions by type, failures, human approvals,\nlog integrity, on-chain status, and findings. The report's hash is anchored on the Privi\nblockchain so it cannot be edited later without detection. Requires the organization API key.",
"inputSchema": {
"properties": {
"since": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Start of period, ISO 8601 UTC (e.g. 2026-10-01T00:00:00Z). Omit for all history",
"title": "Since"
},
"streams": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Only these streams; omit for all",
"title": "Streams"
},
"until": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "End of period, ISO 8601 UTC. Omit for now",
"title": "Until"
}
},
"title": "ledger_compliance_reportArguments",
"type": "object"
},
"name": "ledger_compliance_report"
},
{
"description": "Proof that Privi's log only grew between two signed tree heads: nothing recorded earlier was edited, removed\nor reordered (RFC 9162). Free.",
"inputSchema": {
"properties": {
"first": {
"description": "Older signed tree size",
"minimum": 1,
"title": "First",
"type": "integer"
},
"second": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Newer signed tree size; omit for latest",
"title": "Second"
}
},
"required": [
"first"
],
"title": "ledger_consistency_proofArguments",
"type": "object"
},
"name": "ledger_consistency_proof"
},
{
"description": "Export a self-contained evidence package for auditors, courts or air-gapped systems: every entry, the hash\nchain, an RFC 9162 inclusion proof, the signed tree head, on-chain checkpoint and Privi's keys, signed with\nEd25519 and ML-DSA-87. Verify offline with verify_bundle.py (GET /tools/verify_bundle.py). Requires the\norganization API key.",
"inputSchema": {
"properties": {
"stream_id": {
"description": "Stream to export",
"title": "Stream Id",
"type": "string"
}
},
"required": [
"stream_id"
],
"title": "ledger_evidence_bundleArguments",
"type": "object"
},
"name": "ledger_evidence_bundle"
},
{
"description": "Accept a handshake addressed to your organization: records the same terms in your log, confirms\nit in the other company's log, and seals the matched pair on chain (Base). Requires your\norganization API key. Read the terms first with ledger_handshake_inbox.",
"inputSchema": {
"properties": {
"actor": {
"description": "Who is accepting on your side",
"title": "Actor",
"type": "string"
},
"handshake_id": {
"description": "hs_... ID from the offer",
"title": "Handshake Id",
"type": "string"
},
"stream_id": {
"description": "Your stream to record it in",
"title": "Stream Id",
"type": "string"
}
},
"required": [
"handshake_id",
"stream_id",
"actor"
],
"title": "ledger_handshake_acceptArguments",
"type": "object"
},
"name": "ledger_handshake_accept"
},
{
"description": "Handshakes sent to and from your organization, newest first, with their terms and status.\nRequires your organization API key.",
"inputSchema": {
"properties": {},
"title": "ledger_handshake_inboxArguments",
"type": "object"
},
"name": "ledger_handshake_inbox"
},
{
"description": "Start a Privi Handshake: a two-sided record of a dealing with another company's agent\n(payment, data transfer, delivery, agreement). Recorded in your log now; when the other company\naccepts, both logs hold matching entries and the pair is sealed on chain (Base). Requires your\norganization API key; the other company must also use Privi Ledger.",
"inputSchema": {
"properties": {
"action_type": {
"description": "One of: tool_call, data_access, data_change, payment, message, decision, approval, error, other",
"title": "Action Type",
"type": "string"
},
"actor": {
"description": "Who is acting on your side",
"title": "Actor",
"type": "string"
},
"counterparty_org_id": {
"description": "org_id of the other company (must be on Privi Ledger)",
"title": "Counterparty Org Id",
"type": "string"
},
"details": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Terms as structured data (amounts, quantities, dates)",
"title": "Details"
},
"expires_hours": {
"default": 72,
"description": "Hours the other company has to respond",
"exclusiveMinimum": 0,
"maximum": 720,
"title": "Expires Hours",
"type": "number"
},
"resource": {
"default": "",
"description": "Invoice, order, dataset, contract or other reference",
"title": "Resource",
"type": "string"
},
"stream_id": {
"description": "Your stream to record it in, usually your agent's name",
"title": "Stream Id",
"type": "string"
},
"summary": {
"description": "What is being agreed or done between the two companies",
"title": "Summary",
"type": "string"
}
},
"required": [
"counterparty_org_id",
"stream_id",
"actor",
"action_type",
"summary"
],
"title": "ledger_handshake_offerArguments",
"type": "object"
},
"name": "ledger_handshake_offer"
},
{
"description": "Reject a handshake addressed to your organization; the other company's log records the rejection.\nRequires your organization API key.",
"inputSchema": {
"properties": {
"handshake_id": {
"description": "hs_... ID from the offer",
"title": "Handshake Id",
"type": "string"
},
"reason": {
"default": "",
"description": "Why it is rejected (shared with the other company)",
"title": "Reason",
"type": "string"
}
},
"required": [
"handshake_id"
],
"title": "ledger_handshake_rejectArguments",
"type": "object"
},
"name": "ledger_handshake_reject"
},
{
"description": "Public check of a handshake: both companies, status, whether both matching log entries still exist,\nand the on-chain seal. Never reveals the terms. Free; useful for disputes and audits.",
"inputSchema": {
"properties": {
"handshake_id": {
"description": "hs_... handshake ID",
"title": "Handshake Id",
"type": "string"
}
},
"required": [
"handshake_id"
],
"title": "ledger_handshake_verifyArguments",
"type": "object"
},
"name": "ledger_handshake_verify"
},
{
"description": "Merkle audit path proving an entry is in Privi's append-only transparency log (RFC 9162). Verifiable offline\nagainst the signed tree head. Reveals no entry contents. Free.",
"inputSchema": {
"properties": {
"entry_hash": {
"description": "64-hex entry_hash (an action receipt)",
"title": "Entry Hash",
"type": "string"
},
"tree_size": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Prove against this signed tree head size; omit for latest",
"title": "Tree Size"
}
},
"required": [
"entry_hash"
],
"title": "ledger_inclusion_proofArguments",
"type": "object"
},
"name": "ledger_inclusion_proof"
},
{
"description": "List your organization's streams with entry counts. Requires the organization API key.",
"inputSchema": {
"properties": {},
"title": "ledger_list_streamsArguments",
"type": "object"
},
"name": "ledger_list_streams"
},
{
"description": "Your plan, entries used this month, the limit, and when a Pro plan renews. Requires your organization API key.",
"inputSchema": {
"properties": {},
"title": "ledger_planArguments",
"type": "object"
},
"name": "ledger_plan"
},
{
"description": "List Privi Ledger tools, what each costs, and how to get an organization key.",
"inputSchema": {
"properties": {},
"title": "ledger_pricingArguments",
"type": "object"
},
"name": "ledger_pricing"
},
{
"description": "Read your organization's entries in a stream, oldest first, with an integrity check of the\nwhole stream. Requires the organization API key.",
"inputSchema": {
"properties": {
"after_seq": {
"default": 0,
"description": "Return entries after this sequence number",
"minimum": 0,
"title": "After Seq",
"type": "integer"
},
"limit": {
"default": 100,
"description": "Max entries to return",
"maximum": 500,
"minimum": 1,
"title": "Limit",
"type": "integer"
},
"stream_id": {
"description": "Stream ID",
"title": "Stream Id",
"type": "string"
}
},
"required": [
"stream_id"
],
"title": "ledger_read_streamArguments",
"type": "object"
},
"name": "ledger_read_stream"
},
{
"description": "Append an action to the organization's tamper-evident log. Returns the entry with its\nentry_hash receipt. Requires the organization API key.",
"inputSchema": {
"properties": {
"action_type": {
"description": "One of: tool_call, data_access, data_change, payment, message, decision, approval, error, other",
"title": "Action Type",
"type": "string"
},
"actor": {
"description": "Who acted: agent name, model, or user on whose behalf",
"title": "Actor",
"type": "string"
},
"details": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional structured details (JSON object, under 16 KB)",
"title": "Details"
},
"outcome": {
"default": "success",
"description": "One of: success, failure, pending, blocked",
"title": "Outcome",
"type": "string"
},
"resource": {
"default": "",
"description": "What was acted on: URL, file, record ID, account",
"title": "Resource",
"type": "string"
},
"stream_id": {
"description": "Stream to append to, usually the agent's name, e.g. 'billing-agent'",
"title": "Stream Id",
"type": "string"
},
"summary": {
"description": "One-line description of what was done",
"title": "Summary",
"type": "string"
}
},
"required": [
"stream_id",
"actor",
"action_type",
"summary"
],
"title": "ledger_record_actionArguments",
"type": "object"
},
"name": "ledger_record_action"
},
{
"description": "A finished PDF of a sealed compliance report, for auditors and customers. Returned as base64\n(pdf_base64) and as an embedded PDF resource; also downloadable at /reports/<report_id>.pdf with the\norganization key. Requires the organization API key.",
"inputSchema": {
"properties": {
"report_id": {
"description": "report_id returned by ledger_compliance_report",
"title": "Report Id",
"type": "string"
}
},
"required": [
"report_id"
],
"title": "ledger_report_pdfArguments",
"type": "object"
},
"name": "ledger_report_pdf"
},
{
"description": "Create a Privi Ledger organization on the free plan and get its API key (shown once; store it).\nFree plan: up to the monthly entry limit, all tools included. Upgrade any time with\nledger_upgrade_pro. No key needed to sign up.",
"inputSchema": {
"properties": {
"organization_name": {
"description": "Your company or project name",
"title": "Organization Name",
"type": "string"
}
},
"required": [
"organization_name"
],
"title": "ledger_signupArguments",
"type": "object"
},
"name": "ledger_signup"
},
{
"description": "The latest signed tree head of Privi's transparency log: an RFC 9162 Merkle root over every entry ever\nrecorded, signed with Ed25519 and ML-DSA-87, and periodically anchored on chain (Base). Free.",
"inputSchema": {
"properties": {},
"title": "ledger_tree_headArguments",
"type": "object"
},
"name": "ledger_tree_head"
},
{
"description": "Buy 30 days of Privi Ledger Pro (unlimited entries) for your organization, paid in USDC on Base\nvia x402. Each call adds 30 days. Requires your organization API key.",
"inputSchema": {
"properties": {},
"title": "ledger_upgrade_proArguments",
"type": "object"
},
"name": "ledger_upgrade_pro"
},
{
"description": "Check that a compliance report is unaltered: recomputes its hash, confirms Privi Ledger issued it,\nand checks the anchor on chain (Base, until the Privi chain mainnet). Free; no key needed.",
"inputSchema": {
"properties": {
"report": {
"additionalProperties": true,
"description": "The 'report' object exactly as received from ledger_compliance_report",
"title": "Report",
"type": "object"
}
},
"required": [
"report"
],
"title": "ledger_verify_reportArguments",
"type": "object"
},
"name": "ledger_verify_report"
},
{
"description": "Real-time Privi: WebSocket and server-sent-event streams (trust changes, your own audit tail, approvals), a\nkill switch, human approvals, a metered MCP gateway and paid agent-to-agent rooms. Returns the endpoints,\nchannels, frames and what each plan gets. Free; no key needed.",
"inputSchema": {
"properties": {},
"title": "live_infoArguments",
"type": "object"
},
"name": "live_info"
},
{
"description": "Stop an agent at once: mandate_spend, your gateways and your room messages are refused until live_resume.\nTakes effect on the next call, and is pushed to your live channel immediately. Audit logging keeps working.\nRequires the organization API key.",
"inputSchema": {
"properties": {
"reason": {
"default": "",
"description": "Why (shown in your log and on your live channel)",
"title": "Reason",
"type": "string"
},
"stream_id": {
"default": "*",
"description": "The agent (stream) to stop, or '*' for every agent in your organization",
"title": "Stream Id",
"type": "string"
}
},
"title": "live_killArguments",
"type": "object"
},
"name": "live_kill"
},
{
"description": "Lift a kill switch set with live_kill. Requires the organization API key.",
"inputSchema": {
"properties": {
"stream_id": {
"default": "*",
"description": "The agent to resume, or '*'",
"title": "Stream Id",
"type": "string"
}
},
"title": "live_resumeArguments",
"type": "object"
},
"name": "live_resume"
},
{
"description": "Your kill switches, live-approval thresholds, pending approvals, gateways, rooms and usage this month. Requires the\norganization API key.",
"inputSchema": {
"properties": {},
"title": "live_statusArguments",
"type": "object"
},
"name": "live_status"
},
{
"description": "For merchants, payment facilitators and counterparties: did a human authorize this AI agent to pay you this\namount? Verifies the human's wallet signature, status, expiry, per-payment cap, remaining budget and payee list,\nand returns allow/deny with reasons plus a Privi-signed attestation. Free; no key needed.",
"inputSchema": {
"properties": {
"amount_usdc": {
"description": "Payment amount in USDC",
"title": "Amount Usdc",
"type": "string"
},
"mandate_id": {
"description": "mdt_... ID the agent presented",
"title": "Mandate Id",
"type": "string"
},
"payee": {
"description": "Who is being paid: your 0x address or domain",
"title": "Payee",
"type": "string"
}
},
"required": [
"mandate_id",
"amount_usdc",
"payee"
],
"title": "mandate_checkArguments",
"type": "object"
},
"name": "mandate_check"
},
{
"description": "Draft a Privi Mandate: the human's signed permission for your agent to spend, with a budget, per-payment cap,\nallowed payees and expiry. Returns sign_url: send it to the human, who reads the plain-English terms and signs\nonce with their wallet (free, no transaction). Nothing can be spent until they sign. Requires the organization API key.",
"inputSchema": {
"properties": {
"agent_wallet": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "0x wallet the agent pays from (optional)",
"title": "Agent Wallet"
},
"days": {
"default": 30,
"description": "Days until the mandate expires (1-365)",
"maximum": 365,
"minimum": 1,
"title": "Days",
"type": "integer"
},
"max_per_payment_usdc": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Cap per payment; defaults to the total",
"title": "Max Per Payment Usdc"
},
"max_total_usdc": {
"description": "Total budget in USDC, e.g. '250'",
"title": "Max Total Usdc",
"type": "string"
},
"payees": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Allowed payees (0x addresses or domains); omit for any",
"title": "Payees"
},
"principal_wallet": {
"description": "0x wallet of the human who authorizes the spending",
"title": "Principal Wallet",
"type": "string"
},
"purpose": {
"description": "What the agent may spend on, in plain words",
"title": "Purpose",
"type": "string"
},
"stream_id": {
"description": "The agent (stream) that will spend, e.g. 'shopping-agent'",
"title": "Stream Id",
"type": "string"
}
},
"required": [
"stream_id",
"principal_wallet",
"max_total_usdc",
"purpose"
],
"title": "mandate_createArguments",
"type": "object"
},
"name": "mandate_create"
},
{
"description": "Public view of a mandate: terms, status, the human's signature, spent and remaining budget, and recent spends. Free.",
"inputSchema": {
"properties": {
"mandate_id": {
"description": "mdt_... ID",
"title": "Mandate Id",
"type": "string"
}
},
"required": [
"mandate_id"
],
"title": "mandate_getArguments",
"type": "object"
},
"name": "mandate_get"
},
{
"description": "Your organization's mandates with status and remaining budget. Requires the organization API key.",
"inputSchema": {
"properties": {},
"title": "mandate_listArguments",
"type": "object"
},
"name": "mandate_list"
},
{
"description": "Stop an agent from spending under a mandate (the human can also revoke from the sign_url page). Requires the\norganization API key.",
"inputSchema": {
"properties": {
"mandate_id": {
"description": "mdt_... ID",
"title": "Mandate Id",
"type": "string"
},
"reason": {
"default": "",
"description": "Why",
"title": "Reason",
"type": "string"
}
},
"required": [
"mandate_id"
],
"title": "mandate_revokeArguments",
"type": "object"
},
"name": "mandate_revoke"
},
{
"description": "Call before each payment: checks the mandate and, if allowed, deducts the amount from the budget and records the\npayment in the agent's tamper-evident log. Refused payments are logged as blocked. Refused at once if the kill switch is\non. Over the organization's live-approval threshold it returns approval_required with an approve_url for the human; call\nagain with approval_id once they approve. Requires the organization API key.",
"inputSchema": {
"properties": {
"amount_usdc": {
"description": "Payment amount in USDC",
"title": "Amount Usdc",
"type": "string"
},
"approval_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "apr_... : the human's live approval, if this payment is over the agent's approval threshold",
"title": "Approval Id"
},
"mandate_id": {
"description": "mdt_... ID",
"title": "Mandate Id",
"type": "string"
},
"payee": {
"description": "Who is being paid: 0x address or domain",
"title": "Payee",
"type": "string"
},
"reference": {
"default": "",
"description": "Order, invoice or transaction reference",
"title": "Reference",
"type": "string"
}
},
"required": [
"mandate_id",
"amount_usdc",
"payee"
],
"title": "mandate_spendArguments",
"type": "object"
},
"name": "mandate_spend"
},
{
"description": "Free safety check for any remote MCP server, before an agent connects to it or after it was approved. Privi\nreads the server's tool list (it never calls a tool) and returns a verdict: ok, caution, danger (tool poisoning:\nhidden instructions, concealment from the user, requests for keys or private files, tool shadowing, invisible\ncharacters), changed (tools differ from expected_tools_hash), unverified (tools behind auth) or unreachable. Also\nreturns the tools_hash to pin, a grade A-F and a link to the server's public history. Every first observation and\nchange is recorded in Privi's on-chain-anchored transparency log. No key needed.",
"inputSchema": {
"properties": {
"expected_tools_hash": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The tools_hash you approved earlier; Privi tells you if the tools changed since then (rug-pull check)",
"title": "Expected Tools Hash"
},
"url": {
"description": "The server's streamable-HTTP MCP endpoint, e.g. https://example.com/mcp",
"title": "Url",
"type": "string"
}
},
"required": [
"url"
],
"title": "mcp_server_checkArguments",
"type": "object"
},
"name": "mcp_server_check"
},
{
"description": "One-call allow/deny decision before transacting with another AI agent: verifies its Privi Passport and\napplies your minimums, returning the reasons. If you send your organization API key the decision is\nrecorded in your own tamper-evident log as due-diligence evidence. Free.",
"inputSchema": {
"properties": {
"min_grade": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Minimum grade A-E (alternative to min_score)",
"title": "Min Grade"
},
"min_score": {
"default": 550,
"description": "Minimum current score 0-1000",
"maximum": 1000,
"minimum": 0,
"title": "Min Score",
"type": "integer"
},
"passport_id": {
"description": "pp_... ID presented by the other agent",
"title": "Passport Id",
"type": "string"
},
"purpose": {
"default": "",
"description": "What you are about to do with this counterparty (recorded in your log if you send your key)",
"title": "Purpose",
"type": "string"
},
"require_anchored": {
"default": false,
"description": "Require the passport to be anchored on chain (Base)",
"title": "Require Anchored",
"type": "boolean"
}
},
"required": [
"passport_id"
],
"title": "passport_gateArguments",
"type": "object"
},
"name": "passport_gate"
},
{
"description": "Issue a Privi Passport: a signed, on-chain-anchored trust credential for your agent or organization,\nscored 0-1000 (grade A-E) from verified history, integrity, anchoring, reliability, human oversight,\ncompliance reports and confirmed handshakes. Show it to counterparties; they verify it free with\npassport_verify / passport_gate. Valid 30 days. Free on Pro/enterprise; free-plan organizations pay\nper passport via x402. Requires the organization API key.",
"inputSchema": {
"properties": {
"stream_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Issue for one agent (stream). Omit for the whole organization",
"title": "Stream Id"
}
},
"title": "passport_issueArguments",
"type": "object"
},
"name": "passport_issue"
},
{
"description": "Your organization's issued passports with score, grade, expiry and revocation. Requires the organization API key.",
"inputSchema": {
"properties": {},
"title": "passport_listArguments",
"type": "object"
},
"name": "passport_list"
},
{
"description": "Revoke one of your passports (e.g. an agent was retired or compromised). Verifiers see it immediately.\nRequires the organization API key.",
"inputSchema": {
"properties": {
"passport_id": {
"description": "pp_... ID",
"title": "Passport Id",
"type": "string"
},
"reason": {
"default": "",
"description": "Why (shown to verifiers)",
"title": "Reason",
"type": "string"
}
},
"required": [
"passport_id"
],
"title": "passport_revokeArguments",
"type": "object"
},
"name": "passport_revoke"
},
{
"description": "Check an AI agent's Privi Passport before trusting it: Privi signature, content unaltered, not expired or\nrevoked, anchor on chain (Base), and a live re-score of the agent right now (so tampering after issue\nis caught). Free; no key needed.",
"inputSchema": {
"properties": {
"passport": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "The 'passport' object exactly as issued",
"title": "Passport"
},
"passport_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "pp_... ID, or omit and pass the passport document",
"title": "Passport Id"
}
},
"title": "passport_verifyArguments",
"type": "object"
},
"name": "passport_verify"
},
{
"description": "See existing USDC/x402 service billing and separately gated valueless PRVI_TEST development mode.",
"inputSchema": {
"properties": {},
"title": "privi_payment_optionsArguments",
"type": "object"
},
"name": "privi_payment_options"
},
{
"description": "Off-chain PRVI_TEST quote. Requires organization key and explicit test mode. Never takes money.",
"inputSchema": {
"properties": {
"sku": {
"description": "Existing priced tool to model; NO service will be unlocked",
"enum": [
"ledger_upgrade_pro",
"ledger_audit_stream",
"guard_check"
],
"title": "Sku",
"type": "string"
}
},
"required": [
"sku"
],
"title": "privi_test_payment_quoteArguments",
"type": "object"
},
"name": "privi_test_payment_quote"
},
{
"description": "Consume a test quote once. Receipt is NOT payment, on-chain proof or entitlement.",
"inputSchema": {
"properties": {
"acknowledgement": {
"description": "Must equal VALUELESS TEST ONLY",
"title": "Acknowledgement",
"type": "string"
},
"quote_id": {
"description": "Short-lived PRVI_TEST quote ID",
"title": "Quote Id",
"type": "string"
}
},
"required": [
"quote_id",
"acknowledgement"
],
"title": "privi_test_payment_simulateArguments",
"type": "object"
},
"name": "privi_test_payment_simulate"
},
{
"description": "PRIVI on Base: price, how much PRIVI and USDC the Privi swap desk holds (so whether a swap can fill),\nany Uniswap v3 / Aerodrome pools, and optionally a swap quote. Every paid Privi tool also accepts PRIVI. Free.",
"inputSchema": {
"properties": {
"amount": {
"default": "",
"description": "Amount to swap in (USDC for buy, PRIVI for sell), e.g. '25'",
"title": "Amount",
"type": "string"
},
"side": {
"default": "",
"description": "Optional swap quote: 'buy' (USDC -> PRIVI) or 'sell' (PRIVI -> USDC)",
"title": "Side",
"type": "string"
}
},
"title": "privi_token_marketArguments",
"type": "object"
},
"name": "privi_token_market"
},
{
"description": "One quantum-sealed block with its signatures, settlement on chain and a validity check. Free.",
"inputSchema": {
"properties": {
"height": {
"description": "Block height (0 = genesis)",
"minimum": 0,
"title": "Height",
"type": "integer"
}
},
"required": [
"height"
],
"title": "qledger_blockArguments",
"type": "object"
},
"name": "qledger_block"
},
{
"description": "Prove an entry (by its receipt hash) is sealed in a quantum block: the block, its post-quantum signatures,\nits on-chain settlement and the Merkle inclusion proof. Reveals no entry contents. Free.",
"inputSchema": {
"properties": {
"entry_hash": {
"description": "entry_hash from ledger_record_action",
"title": "Entry Hash",
"type": "string"
}
},
"required": [
"entry_hash"
],
"title": "qledger_entry_proofArguments",
"type": "object"
},
"name": "qledger_entry_proof"
},
{
"description": "Seal your newest entries into a quantum block now instead of waiting for the next scheduled block (every\nfew minutes). Does nothing if no entries are waiting. Requires the organization API key.",
"inputSchema": {
"properties": {},
"title": "qledger_sealArguments",
"type": "object"
},
"name": "qledger_seal"
},
{
"description": "Privi Quantum Ledger: latest quantum-sealed block (SHA3-512, ML-DSA-87 + Ed25519), entries waiting for the\nnext block, the Privi Foundation chain it is fused with, and signing keys. Free.",
"inputSchema": {
"properties": {},
"title": "qledger_statusArguments",
"type": "object"
},
"name": "qledger_status"
},
{
"description": "Verify the whole Quantum Ledger: SHA3-512 block hashes, hash links, both signatures on every block, and for\nrecent blocks the log roots, entry roots and RFC 9162 consistency proofs. Free; anyone can run it.",
"inputSchema": {
"properties": {
"deep_last": {
"default": 50,
"description": "Re-derive log roots and consistency proofs for this many most recent blocks",
"maximum": 500,
"minimum": 0,
"title": "Deep Last",
"type": "integer"
}
},
"title": "qledger_verify_chainArguments",
"type": "object"
},
"name": "qledger_verify_chain"
},
{
"description": "Close a room and seal its transcript: the hash is signed (Ed25519 + ML-DSA-87), anchored on chain (Base) and written\nto both organizations' logs. Either party can close. Requires the organization API key.",
"inputSchema": {
"properties": {
"room_id": {
"description": "rm_... ID",
"title": "Room Id",
"type": "string"
}
},
"required": [
"room_id"
],
"title": "room_closeArguments",
"type": "object"
},
"name": "room_close"
},
{
"description": "Public facts about a room: parties, price, message count, head hash and its seal once closed. No message text. Free.",
"inputSchema": {
"properties": {
"room_id": {
"description": "rm_... ID",
"title": "Room Id",
"type": "string"
}
},
"required": [
"room_id"
],
"title": "room_infoArguments",
"type": "object"
},
"name": "room_info"
},
{
"description": "Rooms your organization owns or joined. Requires the organization API key.",
"inputSchema": {
"properties": {},
"title": "room_listArguments",
"type": "object"
},
"name": "room_list"
},
{
"description": "Open a live, hash-chained conversation room for two organizations' agents. Both connect over WebSocket\n(ws_url), authenticate with their API keys and talk in real time; closing the room seals the transcript on the Privi\nchain. Optionally charge per message, paid under the guest's human-signed Mandate. Requires the organization API key.",
"inputSchema": {
"properties": {
"counterparty_org_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "org_... that may join; omit to get a one-time join_code instead",
"title": "Counterparty Org Id"
},
"hours": {
"default": 24,
"description": "Hours the room stays open (1-168)",
"maximum": 168,
"minimum": 1,
"title": "Hours",
"type": "integer"
},
"max_messages": {
"default": 500,
"description": "Message cap (2-10000)",
"maximum": 10000,
"minimum": 2,
"title": "Max Messages",
"type": "integer"
},
"payee": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Who is paid for messages: 0x address or domain",
"title": "Payee"
},
"price_per_message_usdc": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Charge the guest this much per message (needs payee)",
"title": "Price Per Message Usdc"
},
"title": {
"description": "What the room is for, e.g. 'Negotiate delivery of lot 4471'",
"title": "Title",
"type": "string"
}
},
"required": [
"title"
],
"title": "room_openArguments",
"type": "object"
},
"name": "room_open"
},
{
"description": "Every message in a room you are part of, with the chain check. Requires the organization API key.",
"inputSchema": {
"properties": {
"room_id": {
"description": "rm_... ID",
"title": "Room Id",
"type": "string"
}
},
"required": [
"room_id"
],
"title": "room_transcriptArguments",
"type": "object"
},
"name": "room_transcript"
},
{
"description": "Check a closed room's seal (signature, on-chain anchor) and, if you pass the transcript, that it is complete and\nunaltered. Free; no key needed.",
"inputSchema": {
"properties": {
"messages": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "The transcript's 'messages' array exactly as room_transcript returned it",
"title": "Messages"
},
"room_id": {
"description": "rm_... ID",
"title": "Room Id",
"type": "string"
}
},
"required": [
"room_id"
],
"title": "room_verifyArguments",
"type": "object"
},
"name": "room_verify"
},
{
"description": "The latest MCP servers whose tool definitions changed after they were first observed (possible rug pulls),\nnewest first. Subscribe to the Live channel 'scan' for these as they happen. Free.",
"inputSchema": {
"properties": {
"limit": {
"default": 25,
"maximum": 100,
"minimum": 1,
"title": "Limit",
"type": "integer"
}
},
"title": "scan_changesArguments",
"type": "object"
},
"name": "scan_changes"
},
{
"description": "Start proving you operate an MCP server listed in Privi Scan. Returns a token to publish at\nhttps://<your host>/.well-known/privi-scan.txt. Verified owners get an owner-verified badge, unlimited rescans,\nchange alerts and control over the listing. Needs the org key (create_org is free).",
"inputSchema": {
"properties": {
"server": {
"description": "mcp_... id or endpoint URL",
"title": "Server",
"type": "string"
}
},
"required": [
"server"
],
"title": "scan_claim_startArguments",
"type": "object"
},
"name": "scan_claim_start"
},
{
"description": "Check the token at /.well-known/privi-scan.txt and mark your organization as the verified owner.",
"inputSchema": {
"properties": {
"server": {
"description": "mcp_... id or endpoint URL",
"title": "Server",
"type": "string"
}
},
"required": [
"server"
],
"title": "scan_claim_verifyArguments",
"type": "object"
},
"name": "scan_claim_verify"
},
{
"description": "Verified owners only: hide the server from the directory (opt-out) or show it again. History already in the\ntransparency log cannot be removed.",
"inputSchema": {
"properties": {
"listed": {
"title": "Listed",
"type": "boolean"
},
"server": {
"description": "mcp_... id or endpoint URL",
"title": "Server",
"type": "string"
}
},
"required": [
"server",
"listed"
],
"title": "scan_owner_listingArguments",
"type": "object"
},
"name": "scan_owner_listing"
},
{
"description": "Probe the server immediately instead of waiting for the next crawl (every ~6 hours). For the verified owner\nor Pro organizations.",
"inputSchema": {
"properties": {
"server": {
"description": "mcp_... id or endpoint URL",
"title": "Server",
"type": "string"
}
},
"required": [
"server"
],
"title": "scan_rescanArguments",
"type": "object"
},
"name": "scan_rescan"
},
{
"description": "Search Privi Scan, the public directory of remote MCP servers from the official MCP Registry, each with a\nsafety grade, verdict, tool count and change history. Use it to find a trustworthy server for a job. Free.",
"inputSchema": {
"properties": {
"grade": {
"default": "",
"description": "Only this grade: A, B, C, D or F",
"title": "Grade",
"type": "string"
},
"limit": {
"default": 20,
"maximum": 100,
"minimum": 1,
"title": "Limit",
"type": "integer"
},
"offset": {
"default": 0,
"minimum": 0,
"title": "Offset",
"type": "integer"
},
"query": {
"default": "",
"description": "Words to match in name, description or URL; empty lists everything",
"title": "Query",
"type": "string"
},
"sort": {
"default": "score",
"description": "name, score, risk, changed or new",
"title": "Sort",
"type": "string"
}
},
"title": "scan_searchArguments",
"type": "object"
},
"name": "scan_search"
},
{
"description": "Full report for one MCP server: every tool definition with its hash, all findings with evidence, the change\nhistory (what was added, removed or modified, and when) and the transparency-log proof. Free.",
"inputSchema": {
"properties": {
"include_history": {
"default": true,
"title": "Include History",
"type": "boolean"
},
"server_id": {
"description": "mcp_... id from scan_search or mcp_server_check, or the endpoint URL",
"title": "Server Id",
"type": "string"
}
},
"required": [
"server_id"
],
"title": "scan_serverArguments",
"type": "object"
},
"name": "scan_server"
},
{
"description": "How many MCP servers Privi Scan tracks, by status and grade, tools indexed, changes recorded and how to verify\nthe evidence. Free.",
"inputSchema": {
"properties": {},
"title": "scan_statsArguments",
"type": "object"
},
"name": "scan_stats"
},
{
"description": "Remove a server from your watchlist. Needs the org key.",
"inputSchema": {
"properties": {
"server": {
"description": "mcp_... id or endpoint URL",
"title": "Server",
"type": "string"
}
},
"required": [
"server"
],
"title": "scan_unwatchArguments",
"type": "object"
},
"name": "scan_unwatch"
},
{
"description": "Pin the server's current tools as approved and get a real-time event on your private Live 'org' channel the\nmoment they change, a risk appears or the server goes down. Free plan: 3 servers; Pro: 500. Needs the org key.",
"inputSchema": {
"properties": {
"repin": {
"default": true,
"description": "Pin the current tools_hash as approved (default true)",
"title": "Repin",
"type": "boolean"
},
"server": {
"description": "mcp_... id or endpoint URL",
"title": "Server",
"type": "string"
}
},
"required": [
"server"
],
"title": "scan_watchArguments",
"type": "object"
},
"name": "scan_watch"
},
{
"description": "Your watched servers with their pinned tools_hash and whether each has drifted since you pinned it. Needs the\norg key.",
"inputSchema": {
"properties": {},
"title": "scan_watchlistArguments",
"type": "object"
},
"name": "scan_watchlist"
},
{
"description": "Seal content your company publishes (documents, images, video, press releases, invoices, AI output)\nwith who made it and whether AI was involved. Each seal is anchored on chain; anyone can check a file\nfor free at the returned verify_url or with seal_verify. Counts toward your plan's monthly entries.\nRequires the organization API key.",
"inputSchema": {
"properties": {
"items": {
"description": "1-50 items: {sha256: '<64-hex of the file>' (or text: 'exact text'), origin: human|ai_assisted|ai_edited|ai_generated, ai_tool (required unless human), title, author, media_type, note}. Only the fingerprint is sent, never the file.",
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Items",
"type": "array"
}
},
"required": [
"items"
],
"title": "seal_contentArguments",
"type": "object"
},
"name": "seal_content"
},
{
"description": "Your most recent content seals. Requires the organization API key.",
"inputSchema": {
"properties": {
"limit": {
"default": 50,
"description": "1-200",
"title": "Limit",
"type": "integer"
}
},
"title": "seal_listArguments",
"type": "object"
},
"name": "seal_list"
},
{
"description": "Withdraw one of your seals (e.g. sealed by mistake). Checks then show it as revoked.\nRequires the organization API key.",
"inputSchema": {
"properties": {
"reason": {
"description": "Why it is revoked",
"title": "Reason",
"type": "string"
},
"seal_id": {
"description": "Seal ID (seal_...)",
"title": "Seal Id",
"type": "string"
}
},
"required": [
"seal_id",
"reason"
],
"title": "seal_revokeArguments",
"type": "object"
},
"name": "seal_revoke"
},
{
"description": "Is this exact file or text sealed, by whom, since when, and did they declare AI involvement? Any\nchange to the content (one pixel, one character) means no match. Free; no key needed.",
"inputSchema": {
"properties": {
"sha256": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "SHA-256 (64 hex) of the file",
"title": "Sha256"
},
"text": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Or the exact text",
"title": "Text"
}
},
"title": "seal_verifyArguments",
"type": "object"
},
"name": "seal_verify"
},
{
"description": "Revoke a certificate you issued (as the buyer). Verification shows it as revoked at once.\nRequires the organization API key.",
"inputSchema": {
"properties": {
"cert_id": {
"description": "Certificate ID (spc_...)",
"title": "Cert Id",
"type": "string"
},
"reason": {
"description": "Why it is revoked",
"title": "Reason",
"type": "string"
}
},
"required": [
"cert_id",
"reason"
],
"title": "supplier_cert_revokeArguments",
"type": "object"
},
"name": "supplier_cert_revoke"
},
{
"description": "Check a Privi supplier certificate: untampered, not revoked, not expired, which buyer approved which\nsupplier, and (optionally) whether a document is one it covers. Free; no key needed.",
"inputSchema": {
"properties": {
"cert_id": {
"description": "Certificate ID (spc_...)",
"title": "Cert Id",
"type": "string"
},
"document_sha256": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional: SHA-256 of a document to check it is the one the certificate covers",
"title": "Document Sha256"
}
},
"required": [
"cert_id"
],
"title": "supplier_cert_verifyArguments",
"type": "object"
},
"name": "supplier_cert_verify"
},
{
"description": "Certificates you issued (as buyer) or hold (as supplier). Requires the organization API key.",
"inputSchema": {
"properties": {},
"title": "supplier_certsArguments",
"type": "object"
},
"name": "supplier_certs"
},
{
"description": "Approve a supplier's proof (issues a certificate naming both companies and the evidence fingerprints,\nsealed on chain, with a public verify page and badge) or reject it with a reason. Requires the\norganization API key.",
"inputSchema": {
"properties": {
"approve": {
"description": "true issues the certificate; false rejects",
"title": "Approve",
"type": "boolean"
},
"reason": {
"default": "",
"description": "Required when rejecting, so the supplier can fix it",
"title": "Reason",
"type": "string"
},
"sub_id": {
"description": "Submission ID (sub_...)",
"title": "Sub Id",
"type": "string"
}
},
"required": [
"sub_id",
"approve"
],
"title": "supplier_proof_decideArguments",
"type": "object"
},
"name": "supplier_proof_decide"
},
{
"description": "Supplier submissions waiting for your decision (as the buyer). Requires the organization API key.",
"inputSchema": {
"properties": {
"status": {
"default": "pending",
"description": "pending | approved | rejected | superseded",
"title": "Status",
"type": "string"
}
},
"title": "supplier_proof_inboxArguments",
"type": "object"
},
"name": "supplier_proof_inbox"
},
{
"description": "Answer a buyer's supplier requirement with fingerprints of your evidence documents. The buyer reviews\nand, if approved, Privi issues a certificate sealed on chain. Requires your organization API key\n(sign up free with ledger_signup).",
"inputSchema": {
"properties": {
"evidence": {
"additionalProperties": true,
"description": "One entry per requirement item: {item_key: {sha256: '<64-hex of the document>', note: '...', valid_until: 'YYYY-MM-DD'}}. Only fingerprints are sent; keep the documents yourself.",
"title": "Evidence",
"type": "object"
},
"req_id": {
"description": "The buyer's requirement ID (req_...)",
"title": "Req Id",
"type": "string"
}
},
"required": [
"req_id",
"evidence"
],
"title": "supplier_proof_submitArguments",
"type": "object"
},
"name": "supplier_proof_submit"
},
{
"description": "Publish a requirement your suppliers must meet. Share the returned invite_url with them: they answer it\nfrom their own Privi organization (free sign-up) and you approve or reject in supplier_proof_inbox.\nRequires the organization API key.",
"inputSchema": {
"properties": {
"items": {
"description": "What each supplier must prove: [{key: 'iso_9001', label: 'ISO 9001 certificate', document_required: true}, {key: 'ai_act_register', label: 'Sealed Privi AI Act register'}]. 1-30 items.",
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Items",
"type": "array"
},
"title": {
"description": "e.g. 'Approved supplier 2027'",
"title": "Title",
"type": "string"
},
"valid_days": {
"default": 365,
"description": "How long an approved certificate lasts (1-1095 days)",
"title": "Valid Days",
"type": "integer"
}
},
"required": [
"title",
"items"
],
"title": "supplier_requirement_createArguments",
"type": "object"
},
"name": "supplier_requirement_create"
},
{
"description": "See what a buyer requires of its suppliers. Free; no key needed.",
"inputSchema": {
"properties": {
"req_id": {
"description": "Requirement ID (req_...)",
"title": "Req Id",
"type": "string"
}
},
"required": [
"req_id"
],
"title": "supplier_requirement_getArguments",
"type": "object"
},
"name": "supplier_requirement_get"
},
{
"description": "The latest trust-change events: passports issued, revoked or re-scored, wallets bound or unbound, mandates activated\nor revoked, transparency-log heads anchored. Without a Pro key the feed is delayed (see live_info); use the WebSocket or\nSSE stream for real time. Free.",
"inputSchema": {
"properties": {
"address": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Only events about this 0x wallet",
"title": "Address"
},
"limit": {
"default": 50,
"description": "1-200",
"maximum": 200,
"minimum": 1,
"title": "Limit",
"type": "integer"
},
"passport_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Only events about this passport",
"title": "Passport Id"
}
},
"title": "trust_eventsArguments",
"type": "object"
},
"name": "trust_events"
}
]
}What the leaf hashes
{"body":"1ae33f461928597462be8a403f443ce2808e8151cdf23a88645be70732f94746","id":723401,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793149403093109,"prev":null,"subject":"3438e17d-1132-4105-8128-dc6324bc37a1","subject_kind":"endpoint"}Proof
Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (231336 rows).
- 0x51b2e710f5b7eec8f4e823c679121b6efcd5fbfb2ef0802eafb8326de13e2011
- 0x8548a64981085f0e585e9644f4230efb1cae1cb54bb2b768980c25e310eb92c5
- 0x4f510a88e230966255c14408f624f4b05ea25e633c17b3f5e19d27d271266e95
- 0x63cfe94526bf7a67939feb381700b4acfa6ce8925b3b9e45fcb9ad0c816e2e21
- 0x66fa93ce93c0f060c1e2e0986d0416b3c3e3e05a09f3376a848ec39161081c5a
- 0x025dc7ac1620ea70f66adf2231b47d9655c107755db1079f143527bbe23bbaa6
- 0x814ecbb0c5597d22d6c7a0011483561dff9ef451cfe1fd5b6166b3c757647898
- 0x1caf2a8330dcd6776f3268b62a514f372af97f2843820fbaf943724c6e6a1821
- 0x91ba7c390a70d8dc560be6ed6685a919928ff6f7823a6f30e73fb543db10133e
- 0x1840e41fe2e9d3f93b8f0c86f8aaae4681f4c96d1f58b663b66496a573992a84
- 0x57987a04344d09cdb6007c2f4672b014321129b0665a379164f512c6d951cf20
- 0x662c7e71e8ba4e546062900a226f33f4ce7ef3171d00ac2fa46d87dc7702d462
- 0x902a2dbf47c33b77a0326d8eee14fb4f6ce8a9c74f1c79c2695723137f2064af
- 0x8dce5117e7908d42b8abe04939e957eaffbae76d0f0a9d9ca7bb199e561aecf3
- 0xd12637e9c035a4c3a66d0f0436dfc7bf3f13da4d17ea045b647d9e9beef1ef11
- 0xa99a40fe210d675bb6ab72d4bb72ab40eb44ac345773c457fbe58e67a47b03df
- 0x7a743a0a09057bae687051274e1d45bf973bd36a1a4ba16a191b5d29e3bdfa2a
- 0xe027395fafb7fc41921c42ca0542524ea22204cbd5908b70b27f3d5fb26f5d0f
- Day root
- 0x2c19037464cc4c493624565f01775d6446fc78eaa118fc6865bfe2bfca9ff78e
- Chained
- 0xd1d7dee8322ceff8f4c8d83aa1fe4a4466825c2af1c97dbde3d35db61234f7be
- Published
- On Arc Testnet, block 69584042: 0x8bae2b1d097834c8b458513862d70d29ee807e98dc2e863b27250131c15b35ae