Koskamo

Physical Capability Cloud MCP

An MCP server that enables AI agents to discover, hire, and verify real-world physical capabilities such as machine operations, human skills, and autonomous assets. It supports natural language discovery, price comparison, workflow orchestration, and settlement via on-chain milestone escrow with evidence verification.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Physical Capability Cloud MCP logo, by Physical Capability CloudVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-06Operated by Physical Capability Cloud
MCP endpoint (Streamable HTTP)
https://capability.network/mcp
Vendor documentation

What its tools do

256 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

Read-only (128)

Can change data (128)

256 of 256 have a description · 256 of 256 declare behavior hints · 208 of 218 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to capability.network ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Discover real-world physical capabilities using natural language or catalog search
  • Orchestrate multi-step physical workflows across different operators
  • Settle payments and verify completion using on-chain escrow and evidence
  • Render interactive dashboards for physical tasks within MCP hosts

Source and maintenance

Vendor evidenceRegistry 2.19.0
Maintenance checked

Protocol and capabilities

Server
Physical Capability Cloud 2.19.3+sha256.a93b6fab5a8a325daafb456917b722efa1823dfe6585acecd7d65029a67d4ec9
MCP protocol negotiated in check
2025-11-25
Tools
256 advertised
Resources
4 advertised
Resource templates
1 advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {},
  "resources": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Discover PCC capabilities before committing work. Use read-only catalog tools first, confirm configuration and pricing with the user before write operations, and verify job evidence before reporting physical work complete. Protected PCC API operations require a Bearer key provisioned through POST /api/auth/provision.

Tools

256 advertised

provision_api_key
Advertised by the server during the last successful anonymous check.

CALL THIS FIRST. Provisions an API key for the operator. Returns a pcc_live_* key that must be included as 'Authorization: Bearer <key>' on all subsequent requests. Accepts either email OR walletAddress. The key is shown once — save it. Without it, all other endpoints return 401.

provision_api_key input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "name": {
      "type": "string",
      "description": "Operator display name (optional)"
    },
    "email": {
      "type": "string",
      "description": "Operator email address (use this OR walletAddress)"
    },
    "capability": {
      "type": "string",
      "description": "What the operator does — e.g. 'FDM 3D printing', 'CNC milling', 'HPLC analysis'"
    },
    "walletAddress": {
      "type": "string",
      "description": "EVM wallet address (use this OR email)"
    }
  }
}
provision_api_key annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
list_api_keys
Advertised by the server during the last successful anonymous check.
Advertised read-only

List all active API keys for the authenticated operator. Returns key IDs, prefixes, scopes, rate limits, usage counts, and creation/expiry timestamps. Requires a valid API key or SIWE session.

list_api_keys input schema
{
  "type": "object",
  "required": [],
  "properties": {}
}
list_api_keys annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
revoke_api_key
Advertised by the server during the last successful anonymous check.
Advertised destructive

Revoke an API key permanently. The key will immediately stop working. You must own the key. Use list_api_keys to find the key ID.

revoke_api_key input schema
{
  "type": "object",
  "required": [
    "keyId"
  ],
  "properties": {
    "keyId": {
      "type": "string",
      "description": "Key ID to revoke (from list_api_keys)"
    }
  }
}
revoke_api_key annotations
{
  "readOnlyHint": false,
  "destructiveHint": true
}
setup_detect
Advertised by the server during the last successful anonymous check.
Advertised read-only

Auto-detect current setup state: env vars, database, adapters, chain connectivity, storage, identity. Use this to see what's configured and what's missing before onboarding.

setup_detect input schema
{
  "type": "object",
  "required": [],
  "properties": {}
}
setup_detect annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
setup_generate_config
Advertised by the server during the last successful anonymous check.

Generate a KERNEL_CONFIG JSON from device descriptions. Tell it what machines you have and it produces the config ready to paste into your environment.

setup_generate_config input schema
{
  "type": "object",
  "required": [
    "devices"
  ],
  "properties": {
    "devices": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "Array of device descriptions with type, model, and connection info"
    }
  }
}
setup_generate_config annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
setup_validate
Advertised by the server during the last successful anonymous check.

Validate a kernel config (20+ checks: JSON structure, device connectivity, adapter compatibility). Returns validation errors and warnings.

setup_validate input schema
{
  "type": "object",
  "required": [
    "config"
  ],
  "properties": {
    "config": {
      "type": "object",
      "description": "Kernel config JSON to validate"
    }
  }
}
setup_validate annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
setup_register_device
Advertised by the server during the last successful anonymous check.

Register a device in the database with adapter config and capabilities. Part of Step 3 in the onboarding flow. Required: kernelId, deviceId, type and adapterType (400 missing_required_fields otherwise).

setup_register_device input schema
{
  "type": "object",
  "required": [
    "kernelId",
    "deviceId",
    "type",
    "adapterType"
  ],
  "properties": {
    "type": {
      "type": "string",
      "description": "Device role: machine, sensor or camera (the values setup_generate_config and setup_validate accept)"
    },
    "model": {
      "type": "string",
      "description": "Device model identifier (optional; stored as \"unknown\" if absent)"
    },
    "deviceId": {
      "type": "string",
      "description": "Your ID for this device, unique within the kernel"
    },
    "kernelId": {
      "type": "string",
      "description": "Kernel ID to register the device under"
    },
    "adapterType": {
      "type": "string",
      "description": "One of octoprint, modbus, opcua, sila, ipp, generic-http or mock; the route refuses anything else (including opentrons)"
    },
    "capabilities": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Capability types this device serves"
    },
    "adapterConfig": {
      "type": "object",
      "description": "Adapter-specific configuration (host, port, auth, etc.)"
    }
  }
}
setup_register_device annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
setup_test_job
Advertised by the server during the last successful anonymous check.

Submit a test job to verify the full pipeline works end-to-end (Step 4 of onboarding). Returns job ID and result.

setup_test_job input schema
{
  "type": "object",
  "required": [
    "kernelId"
  ],
  "properties": {
    "deviceId": {
      "type": "string",
      "description": "Specific device ID to test (optional)"
    },
    "kernelId": {
      "type": "string",
      "description": "Kernel ID to test"
    }
  }
}
setup_test_job annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
setup_status
Advertised by the server during the last successful anonymous check.
Advertised read-only

Comprehensive setup status across 6 categories: gateway, database, adapters, chain, storage, identity. Use to confirm everything is green before going live.

setup_status input schema
{
  "type": "object",
  "required": [],
  "properties": {}
}
setup_status annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
list_capability_types
Advertised by the server during the last successful anonymous check.
Advertised read-only

List all capability types registered on the network (FDM, SLA, CNC, HPLC, etc.) with metadata.

list_capability_types input schema
{
  "type": "object",
  "required": [],
  "properties": {}
}
list_capability_types annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
search_capabilities
Advertised by the server during the last successful anonymous check.
Advertised read-only

Search capability templates by type or keyword. Returns templates with pricing, assurance tiers, and availability.

search_capabilities input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "description": "Search query (type name, material, process, etc.)"
    }
  }
}
search_capabilities annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
get_build_options
Advertised by the server during the last successful anonymous check.

Get configuration options for a capability type (materials, dimensions, tolerances, assurance tiers). Use before calling calculate_price.

get_build_options input schema
{
  "type": "object",
  "required": [
    "type"
  ],
  "properties": {
    "type": {
      "type": "string",
      "description": "Capability type (e.g. fdm, cnc-3axis, hplc)"
    },
    "profileId": {
      "type": "string",
      "description": "Optional capability profile ID"
    },
    "selections": {
      "type": "object",
      "description": "Current selections to refine available options"
    }
  }
}
get_build_options annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
calculate_price
Advertised by the server during the last successful anonymous check.

Calculate price for a capability configuration. Returns base price, tier premiums, and estimated total cost.

calculate_price input schema
{
  "type": "object",
  "required": [
    "type",
    "selections"
  ],
  "properties": {
    "type": {
      "type": "string",
      "description": "Capability type"
    },
    "profileId": {
      "type": "string",
      "description": "Optional capability profile ID"
    },
    "selections": {
      "type": "object",
      "description": "Configuration selections (material, dimensions, quantity, etc.)"
    }
  }
}
calculate_price annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
build_contract
Advertised by the server during the last successful anonymous check.

Build and submit a capability contract with on-chain milestone escrow. Returns job ID and escrow address.

build_contract input schema
{
  "type": "object",
  "required": [
    "type",
    "selections",
    "assuranceTier"
  ],
  "properties": {
    "type": {
      "type": "string",
      "description": "Capability type"
    },
    "profileId": {
      "type": "string",
      "description": "Optional capability profile ID"
    },
    "selections": {
      "type": "object",
      "description": "Configuration selections"
    },
    "assuranceTier": {
      "type": "number",
      "description": "Assurance tier 0-3 (0=self-reported, 3=ZK-proven+bonds)"
    }
  }
}
build_contract annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
list_kernels
Advertised by the server during the last successful anonymous check.
Advertised read-only

List all Shop Kernels on the network with status and capability types. Optionally filter by status.

list_kernels input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "status": {
      "type": "string",
      "description": "Filter by kernel status (online, offline, maintenance)"
    }
  }
}
list_kernels annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
get_kernel
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get kernel details including full capability objects, devices, and queue.

get_kernel input schema
{
  "type": "object",
  "required": [
    "kernelId"
  ],
  "properties": {
    "kernelId": {
      "type": "string",
      "description": "Kernel ID"
    }
  }
}
get_kernel annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
get_kernel_devices
Advertised by the server during the last successful anonymous check.
Advertised read-only

List all devices registered under a specific kernel, including adapter configs and device types.

get_kernel_devices input schema
{
  "type": "object",
  "required": [
    "kernelId"
  ],
  "properties": {
    "kernelId": {
      "type": "string",
      "description": "Kernel ID"
    }
  }
}
get_kernel_devices annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
get_kernel_jobs
Advertised by the server during the last successful anonymous check.
Advertised read-only

List all jobs submitted to a specific kernel, including job status and progress.

get_kernel_jobs input schema
{
  "type": "object",
  "required": [
    "kernelId"
  ],
  "properties": {
    "kernelId": {
      "type": "string",
      "description": "Kernel ID"
    }
  }
}
get_kernel_jobs annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
create_kernel
Advertised by the server during the last successful anonymous check.

Register a new Shop Kernel (physical site) on the PCC network. Part of Step 2 in the onboarding flow.

create_kernel input schema
{
  "type": "object",
  "required": [
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "description": "Kernel/site name (e.g. 'BioPunk Lab - Bay A')"
    },
    "config": {
      "type": "object",
      "description": "Kernel configuration JSON"
    },
    "location": {
      "type": "object",
      "description": "Location object with address and geo coordinates"
    },
    "description": {
      "type": "string",
      "description": "Description of the site and its capabilities"
    }
  }
}
create_kernel annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
list_jobs
Advertised by the server during the last successful anonymous check.
Advertised read-only

List all jobs with status. Optionally filter by kernelId or status.

list_jobs input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "status": {
      "type": "string",
      "description": "Filter by status (pending, queued, in_progress, paused, completed, failed, cancelled)"
    },
    "kernelId": {
      "type": "string",
      "description": "Filter by kernel ID"
    }
  }
}
list_jobs annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
get_job
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get job details including progress, evidence bundles, and milestones.

get_job input schema
{
  "type": "object",
  "required": [
    "jobId"
  ],
  "properties": {
    "jobId": {
      "type": "string",
      "description": "Job ID"
    }
  }
}
get_job annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
update_job_status
Advertised by the server during the last successful anonymous check.

Update a job's status and optional progress percentage. Used by kernels to report job progress.

update_job_status input schema
{
  "type": "object",
  "required": [
    "jobId",
    "status"
  ],
  "properties": {
    "jobId": {
      "type": "string",
      "description": "Job ID"
    },
    "status": {
      "type": "string",
      "description": "New status (pending, queued, in_progress, paused, completed, failed, cancelled). 'running' is accepted as a legacy alias for in_progress."
    },
    "progress": {
      "type": "number",
      "description": "Progress percentage 0-100 (optional)"
    }
  }
}
update_job_status annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
list_escrows
Advertised by the server during the last successful anonymous check.
Advertised read-only

List escrow contracts with milestones and bonds. Optionally filter by status.

list_escrows input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "status": {
      "type": "string",
      "description": "Filter by escrow status"
    }
  }
}
list_escrows annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
get_escrow
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get escrow details. Pass a DB ID for database record (with milestones and disputes), or an EVM address (0x...) to read directly from the blockchain.

get_escrow input schema
{
  "type": "object",
  "required": [
    "escrowId"
  ],
  "properties": {
    "escrowId": {
      "type": "string",
      "description": "DB escrow ID or on-chain contract address (0x...)"
    }
  }
}
get_escrow annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
get_escrow_chain_state
Advertised by the server during the last successful anonymous check.
Advertised read-only

Read full on-chain escrow state with all milestone details from the blockchain. More detailed than get_escrow for on-chain contracts.

get_escrow_chain_state input schema
{
  "type": "object",
  "required": [
    "address"
  ],
  "properties": {
    "address": {
      "type": "string",
      "description": "On-chain escrow contract address (0x...)"
    }
  }
}
get_escrow_chain_state annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
get_escrow_events
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get on-chain event history for an escrow contract. Returns funding, release, dispute, and bond events.

get_escrow_events input schema
{
  "type": "object",
  "required": [
    "address"
  ],
  "properties": {
    "address": {
      "type": "string",
      "description": "On-chain escrow contract address (0x...)"
    },
    "fromBlock": {
      "type": "string",
      "description": "Starting block number (optional)"
    }
  }
}
get_escrow_events annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
get_token_balance
Advertised by the server during the last successful anonymous check.
Advertised read-only

Read an ERC-20 token balance for an account address from the blockchain.

get_token_balance input schema
{
  "type": "object",
  "required": [
    "tokenAddress",
    "account"
  ],
  "properties": {
    "account": {
      "type": "string",
      "description": "Account address to check balance for (0x...)"
    },
    "tokenAddress": {
      "type": "string",
      "description": "ERC-20 token contract address (0x...)"
    }
  }
}
get_token_balance annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
get_token_allowance
Advertised by the server during the last successful anonymous check.
Advertised read-only

Read the ERC-20 token allowance granted by an owner to a spender from the blockchain.

get_token_allowance input schema
{
  "type": "object",
  "required": [
    "tokenAddress",
    "owner",
    "spender"
  ],
  "properties": {
    "owner": {
      "type": "string",
      "description": "Token owner address (0x...)"
    },
    "spender": {
      "type": "string",
      "description": "Spender address (0x...)"
    },
    "tokenAddress": {
      "type": "string",
      "description": "ERC-20 token contract address (0x...)"
    }
  }
}
get_token_allowance annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
get_escrow_dispute
Advertised by the server during the last successful anonymous check.
Advertised read-only

Read dispute state for a specific milestone from the blockchain.

get_escrow_dispute input schema
{
  "type": "object",
  "required": [
    "address",
    "milestoneIndex"
  ],
  "properties": {
    "address": {
      "type": "string",
      "description": "Escrow contract address (0x...)"
    },
    "milestoneIndex": {
      "type": "number",
      "description": "Milestone index (0-based)"
    }
  }
}
get_escrow_dispute annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
get_write_status
Advertised by the server during the last successful anonymous check.
Advertised read-only

Check if on-chain write operations are enabled (requires PCC_GATEWAY_PRIVATE_KEY to be configured). Returns write status and signer address.

get_write_status input schema
{
  "type": "object",
  "required": [],
  "properties": {}
}
get_write_status annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
fund_escrow
Advertised by the server during the last successful anonymous check.

Fund a protocol-created escrow on-chain. Approval is handled INTERNALLY by the gateway for protocol-created escrows (audit C-03 removed the public approve step) — do NOT call a separate approve first; fund directly. Returns transaction hash.

fund_escrow input schema
{
  "type": "object",
  "required": [
    "address"
  ],
  "properties": {
    "address": {
      "type": "string",
      "description": "Escrow contract address (0x...)"
    }
  }
}
fund_escrow annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
release_milestone
Advertised by the server during the last successful anonymous check.

Release a milestone payment on-chain after the challenge window has expired. Returns transaction hash.

release_milestone input schema
{
  "type": "object",
  "required": [
    "address",
    "milestoneIndex"
  ],
  "properties": {
    "address": {
      "type": "string",
      "description": "Escrow contract address (0x...)"
    },
    "milestoneIndex": {
      "type": "number",
      "description": "Milestone index to release (0-based)"
    }
  }
}
release_milestone annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
file_escrow_dispute
Advertised by the server during the last successful anonymous check.

File a dispute against a milestone on-chain. Challenger must post a bond and provide evidence hash. Returns transaction hash.

file_escrow_dispute input schema
{
  "type": "object",
  "required": [
    "address",
    "milestoneIndex",
    "challengerBond",
    "challengerEvidenceHash",
    "reason"
  ],
  "properties": {
    "reason": {
      "type": "string",
      "description": "Human-readable dispute reason"
    },
    "address": {
      "type": "string",
      "description": "Escrow contract address (0x...)"
    },
    "challengerBond": {
      "type": "string",
      "description": "Bond amount in wei (as string)"
    },
    "milestoneIndex": {
      "type": "number",
      "description": "Milestone index to dispute (0-based)"
    },
    "challengerEvidenceHash": {
      "type": "string",
      "description": "Evidence hash as 0x-prefixed hex bytes32"
    }
  }
}
file_escrow_dispute annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
deposit_bond
Advertised by the server during the last successful anonymous check.

Deposit an operator bond for a milestone on-chain. Required for Assurance Tier 3 jobs. Returns transaction hash.

deposit_bond input schema
{
  "type": "object",
  "required": [
    "address",
    "milestoneIndex"
  ],
  "properties": {
    "address": {
      "type": "string",
      "description": "Escrow contract address (0x...)"
    },
    "milestoneIndex": {
      "type": "number",
      "description": "Milestone index to post bond for (0-based)"
    }
  }
}
deposit_bond annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
submit_evidence_hash
Advertised by the server during the last successful anonymous check.

Submit an evidence bundle hash for a milestone on-chain. Links the physical evidence to the on-chain settlement record. Returns transaction hash.

submit_evidence_hash input schema
{
  "type": "object",
  "required": [
    "address",
    "milestoneIndex",
    "evidenceBundleHash"
  ],
  "properties": {
    "address": {
      "type": "string",
      "description": "Escrow contract address (0x...)"
    },
    "milestoneIndex": {
      "type": "number",
      "description": "Milestone index (0-based)"
    },
    "evidenceBundleHash": {
      "type": "string",
      "description": "Evidence bundle hash as 0x-prefixed hex bytes32"
    }
  }
}
submit_evidence_hash annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
submit_attestation
Advertised by the server during the last successful anonymous check.

Submit a verifier attestation for a milestone on-chain. Used by third-party verifiers (Bittensor subnet) to confirm evidence quality. Returns transaction hash.

submit_attestation input schema
{
  "type": "object",
  "required": [
    "address",
    "milestoneIndex",
    "attestationHash"
  ],
  "properties": {
    "address": {
      "type": "string",
      "description": "Escrow contract address (0x...)"
    },
    "milestoneIndex": {
      "type": "number",
      "description": "Milestone index (0-based)"
    },
    "attestationHash": {
      "type": "string",
      "description": "Attestation hash as 0x-prefixed hex bytes32"
    }
  }
}
submit_attestation annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
archive_evidence
Advertised by the server during the last successful anonymous check.

Archive an evidence bundle to IPFS/Storacha for permanent decentralized storage. Returns the content-addressed CID.

archive_evidence input schema
{
  "type": "object",
  "required": [
    "bundle"
  ],
  "properties": {
    "bundle": {
      "type": "object",
      "description": "Evidence bundle object to archive"
    }
  }
}
archive_evidence annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
get_evidence_bundle
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get an encrypted evidence bundle by its bundle ID. Returns the encrypted payload and key capsules.

get_evidence_bundle input schema
{
  "type": "object",
  "required": [
    "bundleId"
  ],
  "properties": {
    "bundleId": {
      "type": "string",
      "description": "Evidence bundle ID"
    }
  }
}
get_evidence_bundle annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
grant_evidence_access
Advertised by the server during the last successful anonymous check.

Grant a new recipient access to an encrypted evidence bundle. Creates a re-encrypted key capsule for the recipient.

grant_evidence_access input schema
{
  "type": "object",
  "required": [
    "bundleId",
    "recipientAddress"
  ],
  "properties": {
    "bundleId": {
      "type": "string",
      "description": "Evidence bundle ID"
    },
    "accessLevel": {
      "enum": [
        "full",
        "selective",
        "summary_only"
      ],
      "type": "string",
      "description": "Level of access to grant (default: full)"
    },
    "recipientAddress": {
      "type": "string",
      "description": "Recipient EVM address (0x...)"
    }
  }
}
grant_evidence_access annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
list_evidence_grants
Advertised by the server during the last successful anonymous check.
Advertised read-only

List all evidence access grants for an address. Returns bundles the address has been granted access to.

list_evidence_grants input schema
{
  "type": "object",
  "required": [
    "address"
  ],
  "properties": {
    "address": {
      "type": "string",
      "description": "EVM address to look up grants for (0x...)"
    }
  }
}
list_evidence_grants annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
archive_encrypted_bundle
Advertised by the server during the last successful anonymous check.

Archive an encrypted evidence bundle to IPFS and store the resulting CID in the database. Idempotent — returns existing CID if already archived.

archive_encrypted_bundle input schema
{
  "type": "object",
  "required": [
    "bundleId"
  ],
  "properties": {
    "bundleId": {
      "type": "string",
      "description": "Encrypted evidence bundle ID"
    }
  }
}
archive_encrypted_bundle annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
get_bundle_ipfs
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get IPFS CIDs for a bundle — returns the primary CID, metadata CID, and Filecoin deal ID if available.

get_bundle_ipfs input schema
{
  "type": "object",
  "required": [
    "bundleId"
  ],
  "properties": {
    "bundleId": {
      "type": "string",
      "description": "Evidence bundle ID"
    }
  }
}
get_bundle_ipfs annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
retrieve_ipfs
Advertised by the server during the last successful anonymous check.
Advertised read-only

Retrieve raw data from IPFS by CID. Used to fetch archived evidence bundles from decentralized storage.

retrieve_ipfs input schema
{
  "type": "object",
  "required": [
    "cid"
  ],
  "properties": {
    "cid": {
      "type": "string",
      "description": "IPFS content identifier (CID)"
    }
  }
}
retrieve_ipfs annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
get_lit_conditions
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get Lit Protocol access conditions for a Lit-encrypted evidence bundle. Returns the conditions that gate decryption.

get_lit_conditions input schema
{
  "type": "object",
  "required": [
    "bundleId"
  ],
  "properties": {
    "bundleId": {
      "type": "string",
      "description": "Evidence bundle ID (must be Lit-encrypted)"
    }
  }
}
get_lit_conditions annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
lit_decrypt
Advertised by the server during the last successful anonymous check.

Decrypt a Lit Protocol-encrypted evidence bundle using a Lit auth signature. Returns the decrypted bundle payload.

lit_decrypt input schema
{
  "type": "object",
  "required": [
    "bundleId",
    "authSig"
  ],
  "properties": {
    "authSig": {
      "type": "object",
      "properties": {
        "sig": {
          "type": "string"
        },
        "address": {
          "type": "string"
        },
        "derivedVia": {
          "type": "string"
        },
        "signedMessage": {
          "type": "string"
        }
      },
      "description": "Lit auth signature object with sig, derivedVia, signedMessage, and address fields"
    },
    "bundleId": {
      "type": "string",
      "description": "Evidence bundle ID (must be Lit-encrypted)"
    }
  }
}
lit_decrypt annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
verify_evidence_zk
Advertised by the server during the last successful anonymous check.

Verify a ZK proof by its proof ID. Checks the proof against its verification key and public inputs.

verify_evidence_zk input schema
{
  "type": "object",
  "required": [
    "proofId"
  ],
  "properties": {
    "proofId": {
      "type": "string",
      "description": "ID of the ZK proof to verify"
    }
  }
}
verify_evidence_zk annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
commit_evidence
Advertised by the server during the last successful anonymous check.

Create a Merkle commitment for an evidence bundle hash. Used as the first step in ZK proof generation for Tier 3 assurance.

commit_evidence input schema
{
  "type": "object",
  "required": [
    "bundleHash"
  ],
  "properties": {
    "bundleHash": {
      "type": "string",
      "description": "SHA-256 hash of the evidence bundle"
    }
  }
}
commit_evidence annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
get_telemetry_stats
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get aggregate pipeline telemetry statistics including phase timings, success rates, and throughput metrics across all jobs.

get_telemetry_stats input schema
{
  "type": "object",
  "required": [],
  "properties": {}
}
get_telemetry_stats annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
get_active_telemetry
Advertised by the server during the last successful anonymous check.
Advertised read-only

List currently active jobs with their current pipeline phase and telemetry status.

get_active_telemetry input schema
{
  "type": "object",
  "required": [],
  "properties": {}
}
get_active_telemetry annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
get_job_telemetry
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get full event timeline for a specific job — all pipeline phase transitions with timings and metadata.

get_job_telemetry input schema
{
  "type": "object",
  "required": [
    "jobId"
  ],
  "properties": {
    "jobId": {
      "type": "string",
      "description": "Job ID to get pipeline timeline for"
    }
  }
}
get_job_telemetry annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
get_telemetry_logs
Advertised by the server during the last successful anonymous check.
Advertised read-only

Query structured logs with filters for level, source, jobId, kernelId, time range, and full-text search.

get_telemetry_logs input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "after": {
      "type": "string",
      "description": "Return logs after this ISO timestamp"
    },
    "jobId": {
      "type": "string",
      "description": "Filter by job ID"
    },
    "level": {
      "enum": [
        "debug",
        "info",
        "warn",
        "error"
      ],
      "type": "string",
      "description": "Filter by log level"
    },
    "limit": {
      "type": "number",
      "description": "Max entries to return (default 200)"
    },
    "before": {
      "type": "string",
      "description": "Return logs before this ISO timestamp"
    },
    "search": {
      "type": "string",
      "description": "Full-text search query"
    },
    "source": {
      "type": "string",
      "description": "Filter by source module"
    },
    "kernelId": {
      "type": "string",
      "description": "Filter by kernel ID"
    }
  }
}
get_telemetry_logs annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
emit_telemetry
Advertised by the server during the last successful anonymous check.

Manually emit a telemetry event for a job pipeline phase. Used by kernels and agents to report execution progress.

emit_telemetry input schema
{
  "type": "object",
  "required": [
    "jobId",
    "phase",
    "status"
  ],
  "properties": {
    "jobId": {
      "type": "string",
      "description": "Job ID"
    },
    "level": {
      "enum": [
        "info",
        "warn",
        "error",
        "debug"
      ],
      "type": "string",
      "description": "Log level for this event"
    },
    "phase": {
      "type": "string",
      "description": "Pipeline phase name (e.g. intake, binding, execution, evidence, settlement)"
    },
    "source": {
      "type": "string",
      "description": "Source module or component"
    },
    "status": {
      "enum": [
        "started",
        "completed",
        "failed",
        "skipped"
      ],
      "type": "string",
      "description": "Phase status"
    },
    "metadata": {
      "type": "object",
      "description": "Additional event metadata"
    },
    "duration_ms": {
      "type": "number",
      "description": "Phase duration in milliseconds"
    }
  }
}
emit_telemetry annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
submit_for_human_verification
Advertised by the server during the last successful anonymous check.

Submit an evidence bundle for human verification. Selects a panel of verifiers from the network and returns assigned verifier IDs.

submit_for_human_verification input schema
{
  "type": "object",
  "required": [
    "bundleHash",
    "photoRef",
    "referenceRef"
  ],
  "properties": {
    "photoRef": {
      "type": "string",
      "description": "Reference to the photo evidence (CID or URL)"
    },
    "bundleHash": {
      "type": "string",
      "description": "SHA-256 hash of the evidence bundle"
    },
    "referenceRef": {
      "type": "string",
      "description": "Reference to the reference/spec document"
    },
    "verifierCount": {
      "type": "number",
      "description": "Number of verifiers to assign (default 5)"
    },
    "comparisonScore": {
      "type": "number",
      "description": "Pre-computed comparison score 0-1 (optional)"
    }
  }
}
submit_for_human_verification annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
get_verification_assignments
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get pending verification assignments for a verifier node. Returns requests this verifier has been assigned but not yet responded to.

get_verification_assignments input schema
{
  "type": "object",
  "required": [
    "verifierId"
  ],
  "properties": {
    "verifierId": {
      "type": "string",
      "description": "Verifier node ID"
    }
  }
}
get_verification_assignments annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
get_verification_status
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get verification status for a request. Returns vote tally, consensus state, dispute list, and pending response count.

get_verification_status input schema
{
  "type": "object",
  "required": [
    "requestId"
  ],
  "properties": {
    "requestId": {
      "type": "string",
      "description": "Verification request ID (hvreq_...)"
    }
  }
}
get_verification_status annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
respond_to_verification
Advertised by the server during the last successful anonymous check.

Submit a verifier's verdict for a verification request. Returns consensus state after this vote.

respond_to_verification input schema
{
  "type": "object",
  "required": [
    "requestId",
    "verifierId",
    "verdict",
    "signature"
  ],
  "properties": {
    "notes": {
      "type": "string",
      "description": "Optional notes explaining the verdict"
    },
    "verdict": {
      "enum": [
        "match",
        "no_match",
        "inconclusive"
      ],
      "type": "string",
      "description": "Verifier's verdict"
    },
    "requestId": {
      "type": "string",
      "description": "Verification request ID (hvreq_...)"
    },
    "signature": {
      "type": "string",
      "description": "Cryptographic signature of the verdict"
    },
    "verifierId": {
      "type": "string",
      "description": "Verifier node ID"
    }
  }
}
respond_to_verification annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
dispute_verification
Advertised by the server during the last successful anonymous check.

File a dispute against the consensus verdict. Only verifiers who submitted a response can dispute. Requires additional evidence CID.

dispute_verification input schema
{
  "type": "object",
  "required": [
    "requestId",
    "disputerId",
    "reason",
    "evidenceCid"
  ],
  "properties": {
    "reason": {
      "type": "string",
      "description": "Reason for disputing the consensus"
    },
    "requestId": {
      "type": "string",
      "description": "Verification request ID (hvreq_...)"
    },
    "disputerId": {
      "type": "string",
      "description": "Verifier node ID filing the dispute"
    },
    "evidenceCid": {
      "type": "string",
      "description": "IPFS CID of the counter-evidence"
    }
  }
}
dispute_verification annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
register_capability_ip
Advertised by the server during the last successful anonymous check.

Register a capability as a Story Protocol IP Asset. Returns an ipId and NFT token. The designer earns royalties whenever this capability is used.

register_capability_ip input schema
{
  "type": "object",
  "required": [
    "capability",
    "designerAddress",
    "designerName"
  ],
  "properties": {
    "ipfsCid": {
      "type": "string",
      "description": "IPFS CID of the capability spec document (optional)"
    },
    "capability": {
      "type": "object",
      "required": [
        "id",
        "name",
        "type",
        "kernelId"
      ],
      "properties": {
        "id": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "type": {
          "type": "string"
        },
        "kernelId": {
          "type": "string"
        },
        "description": {
          "type": "string"
        }
      },
      "description": "Capability object"
    },
    "designerName": {
      "type": "string",
      "description": "Display name of the designer"
    },
    "designerAddress": {
      "type": "string",
      "description": "EVM address of the capability designer"
    },
    "commercialRevShare": {
      "type": "number",
      "description": "Revenue share percentage for commercial use (0-100)"
    }
  }
}
register_capability_ip annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
register_job_evidence_ip
Advertised by the server during the last successful anonymous check.

Register job evidence as a derivative IP asset on Story Protocol, linking it to the parent capability's IP. Operators earn royalties from derivative use.

register_job_evidence_ip input schema
{
  "type": "object",
  "required": [
    "parentIpId",
    "jobId",
    "evidenceBundleHash",
    "operatorAddress",
    "operatorName"
  ],
  "properties": {
    "jobId": {
      "type": "string",
      "description": "Job ID whose evidence is being registered"
    },
    "ipfsCid": {
      "type": "string",
      "description": "IPFS CID of the evidence bundle (optional)"
    },
    "parentIpId": {
      "type": "string",
      "description": "IP ID of the parent capability"
    },
    "operatorName": {
      "type": "string",
      "description": "Display name of the operator"
    },
    "operatorAddress": {
      "type": "string",
      "description": "EVM address of the operator"
    },
    "evidenceBundleHash": {
      "type": "string",
      "description": "Hash of the evidence bundle"
    }
  }
}
register_job_evidence_ip annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
distribute_royalties
Advertised by the server during the last successful anonymous check.

Set revenue splits for an IP asset among stakeholders (designer, operator, verifier, assembler, curator). Splits must sum to 100.

distribute_royalties input schema
{
  "type": "object",
  "required": [
    "ipId",
    "splits"
  ],
  "properties": {
    "ipId": {
      "type": "string",
      "description": "IP asset ID"
    },
    "splits": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "address",
          "role",
          "percentage",
          "label"
        ],
        "properties": {
          "role": {
            "enum": [
              "designer",
              "operator",
              "verifier",
              "assembler",
              "curator"
            ],
            "type": "string"
          },
          "label": {
            "type": "string",
            "description": "Human-readable label"
          },
          "address": {
            "type": "string",
            "description": "Recipient EVM address"
          },
          "percentage": {
            "type": "number",
            "description": "Percentage share (0-100)"
          }
        }
      },
      "description": "Revenue splits — must sum to 100"
    }
  }
}
distribute_royalties annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
pay_ip_royalty
Advertised by the server during the last successful anonymous check.

Pay royalties to an IP asset vault. The payer sends tokens that flow to stakeholders via the royalty splits.

pay_ip_royalty input schema
{
  "type": "object",
  "required": [
    "ipId",
    "amount",
    "payerAddress"
  ],
  "properties": {
    "ipId": {
      "type": "string",
      "description": "IP asset ID"
    },
    "amount": {
      "type": "string",
      "description": "Amount to pay in wei (as string)"
    },
    "payerAddress": {
      "type": "string",
      "description": "EVM address of the payer"
    }
  }
}
pay_ip_royalty annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
claim_ip_revenue
Advertised by the server during the last successful anonymous check.

Claim earned revenue from an IP asset vault. Returns the claimed amount and transaction hash.

claim_ip_revenue input schema
{
  "type": "object",
  "required": [
    "ipId"
  ],
  "properties": {
    "ipId": {
      "type": "string",
      "description": "IP asset ID"
    },
    "tokenIds": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Specific royalty token IDs to claim (optional — claims all if omitted)"
    }
  }
}
claim_ip_revenue annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
get_ip_revenue
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get a revenue snapshot for an IP asset — total earned, pending claims, and recent payments.

get_ip_revenue input schema
{
  "type": "object",
  "required": [
    "ipId"
  ],
  "properties": {
    "ipId": {
      "type": "string",
      "description": "IP asset ID"
    }
  }
}
get_ip_revenue annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
get_ip_lineage
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get the full IP lineage chain for an asset — parent capabilities and all derivative job registrations.

get_ip_lineage input schema
{
  "type": "object",
  "required": [
    "ipId"
  ],
  "properties": {
    "ipId": {
      "type": "string",
      "description": "IP asset ID"
    }
  }
}
get_ip_lineage annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
get_capability_ip
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get the Story Protocol IP registration for a capability by its capability ID.

get_capability_ip input schema
{
  "type": "object",
  "required": [
    "capabilityId"
  ],
  "properties": {
    "capabilityId": {
      "type": "string",
      "description": "Capability ID to look up IP registration for"
    }
  }
}
get_capability_ip annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
raise_ip_dispute
Advertised by the server during the last successful anonymous check.

Raise a Story Protocol IP dispute against an asset. Provide evidence hash and reason.

raise_ip_dispute input schema
{
  "type": "object",
  "required": [
    "ipId",
    "evidenceHash",
    "reason"
  ],
  "properties": {
    "ipId": {
      "type": "string",
      "description": "IP asset ID to dispute"
    },
    "reason": {
      "type": "string",
      "description": "Reason for the dispute"
    },
    "evidenceHash": {
      "type": "string",
      "description": "Hash of the dispute evidence"
    }
  }
}
raise_ip_dispute annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
list_protocols
Advertised by the server during the last successful anonymous check.
Advertised read-only

List protocol templates in the library. Filter by tags, required capabilities, search query, or status.

list_protocols input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "tags": {
      "type": "string",
      "description": "Comma-separated tag filter (e.g. 'biotech,protein')"
    },
    "search": {
      "type": "string",
      "description": "Full-text search query"
    },
    "status": {
      "enum": [
        "draft",
        "published",
        "archived"
      ],
      "type": "string",
      "description": "Filter by template status"
    },
    "capabilities": {
      "type": "string",
      "description": "Comma-separated required capability filter (e.g. 'hplc,centrifuge')"
    }
  }
}
list_protocols annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
get_protocol
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get protocol template details by ID. Returns steps, transfers, parameters, and metadata.

get_protocol input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Protocol template ID"
    }
  }
}
get_protocol annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
create_protocol
Advertised by the server during the last successful anonymous check.

Create a new protocol template draft. Returns the new template ID.

create_protocol input schema
{
  "type": "object",
  "required": [
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "description": "Protocol name"
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Tags for discovery"
    },
    "steps": {
      "type": "array",
      "description": "Array of protocol step objects"
    },
    "transfers": {
      "type": "array",
      "description": "Array of transfer objects between steps"
    },
    "parameters": {
      "type": "array",
      "description": "Array of parameter definitions"
    },
    "description": {
      "type": "string",
      "description": "Protocol description"
    },
    "requiredCapabilities": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Required capability types"
    }
  }
}
create_protocol annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
update_protocol
Advertised by the server during the last successful anonymous check.

Update an existing protocol template (must be in draft status). Returns updated name and version.

update_protocol input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Protocol template ID"
    },
    "name": {
      "type": "string",
      "description": "Updated name"
    },
    "steps": {
      "type": "array",
      "description": "Updated steps array"
    },
    "version": {
      "type": "string",
      "description": "New version string (semver)"
    },
    "parameters": {
      "type": "array",
      "description": "Updated parameters array"
    },
    "description": {
      "type": "string",
      "description": "Updated description"
    }
  }
}
update_protocol annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
publish_protocol
Advertised by the server during the last successful anonymous check.

Publish a draft protocol template, making it visible in the protocol library for others to discover and use.

publish_protocol input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Protocol template ID to publish"
    }
  }
}
publish_protocol annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
fork_protocol
Advertised by the server during the last successful anonymous check.

Fork a protocol template to create your own version with parameter overrides. Returns the new fork ID.

fork_protocol input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Protocol template ID to fork"
    },
    "name": {
      "type": "string",
      "description": "Name for the forked protocol"
    },
    "parameterOverrides": {
      "type": "object",
      "description": "Parameter values to override from the source template"
    }
  }
}
fork_protocol annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
get_protocol_forks
Advertised by the server during the last successful anonymous check.
Advertised read-only

List all forks of a protocol template. Shows who forked it and what parameters they changed.

get_protocol_forks input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Protocol template ID"
    }
  }
}
get_protocol_forks annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
validate_protocol
Advertised by the server during the last successful anonymous check.

Validate a protocol template against a specific kernel — checks capability availability, transfer compatibility, and automation level feasibility.

validate_protocol input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Protocol template ID"
    },
    "kernelId": {
      "type": "string",
      "description": "Kernel ID to validate against (optional)"
    }
  }
}
validate_protocol annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
list_protocol_runs
Advertised by the server during the last successful anonymous check.
Advertised read-only

List protocol runs. Filter by status or kernelId.

list_protocol_runs input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "status": {
      "enum": [
        "binding",
        "ready",
        "running",
        "paused",
        "completed",
        "cancelled",
        "failed"
      ],
      "type": "string",
      "description": "Filter by run status"
    },
    "kernelId": {
      "type": "string",
      "description": "Filter by kernel ID"
    }
  }
}
list_protocol_runs annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
get_protocol_run
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get protocol run status including step progress, transfer status, current phase, and evidence hashes.

get_protocol_run input schema
{
  "type": "object",
  "required": [
    "runId"
  ],
  "properties": {
    "runId": {
      "type": "string",
      "description": "Protocol run ID"
    }
  }
}
get_protocol_run annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
create_protocol_run
Advertised by the server during the last successful anonymous check.

Instantiate a protocol template as a run on a specific kernel with given parameter values.

create_protocol_run input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Protocol template ID"
    },
    "kernelId": {
      "type": "string",
      "description": "Kernel ID to run the protocol on"
    },
    "sampleIds": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Sample IDs being processed in this run"
    },
    "parameterValues": {
      "type": "object",
      "description": "Runtime parameter values (overrides template defaults)"
    }
  }
}
create_protocol_run annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
start_protocol_run
Advertised by the server during the last successful anonymous check.

Start execution of a protocol run that is in 'ready' or 'binding' state.

start_protocol_run input schema
{
  "type": "object",
  "required": [
    "runId"
  ],
  "properties": {
    "runId": {
      "type": "string",
      "description": "Protocol run ID to start"
    }
  }
}
start_protocol_run annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
pause_protocol_run
Advertised by the server during the last successful anonymous check.

Pause a running protocol run. Use resume_protocol_run to continue.

pause_protocol_run input schema
{
  "type": "object",
  "required": [
    "runId"
  ],
  "properties": {
    "runId": {
      "type": "string",
      "description": "Protocol run ID to pause"
    }
  }
}
pause_protocol_run annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
resume_protocol_run
Advertised by the server during the last successful anonymous check.

Resume a paused protocol run from where it stopped.

resume_protocol_run input schema
{
  "type": "object",
  "required": [
    "runId"
  ],
  "properties": {
    "runId": {
      "type": "string",
      "description": "Protocol run ID to resume"
    }
  }
}
resume_protocol_run annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
cancel_protocol_run
Advertised by the server during the last successful anonymous check.

Cancel a protocol run. Cannot be cancelled once completed or already cancelled.

cancel_protocol_run input schema
{
  "type": "object",
  "required": [
    "runId"
  ],
  "properties": {
    "runId": {
      "type": "string",
      "description": "Protocol run ID to cancel"
    }
  }
}
cancel_protocol_run annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
get_workflows
Advertised by the server during the last successful anonymous check.
Advertised read-only

List active instrument workflows in the orchestrator. Optionally filter by status.

get_workflows input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "status": {
      "type": "string",
      "description": "Filter by workflow status (e.g. running, completed)"
    }
  }
}
get_workflows annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
get_workflow
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get detailed workflow information including steps, node assignments, and progress.

get_workflow input schema
{
  "type": "object",
  "required": [
    "workflowId"
  ],
  "properties": {
    "workflowId": {
      "type": "string",
      "description": "Workflow ID"
    }
  }
}
get_workflow annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
get_transfer_graphs
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get resource transfer graphs showing instrument topology, transfer edges, and mechanisms for all kernels.

get_transfer_graphs input schema
{
  "type": "object",
  "required": [],
  "properties": {}
}
get_transfer_graphs annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
list_automation_status
Advertised by the server during the last successful anonymous check.
Advertised read-only

List automation status for all instrument transfer pairs. Shows current automation level, episode count, and training readiness. Filter by kernelId.

list_automation_status input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "kernelId": {
      "type": "string",
      "description": "Filter by kernel ID"
    }
  }
}
list_automation_status annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
get_automation_status
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get automation status for a specific instrument-to-instrument transfer pair.

get_automation_status input schema
{
  "type": "object",
  "required": [
    "fromNodeId",
    "toNodeId"
  ],
  "properties": {
    "toNodeId": {
      "type": "string",
      "description": "Destination instrument node ID"
    },
    "fromNodeId": {
      "type": "string",
      "description": "Source instrument node ID"
    }
  }
}
get_automation_status annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
record_episode
Advertised by the server during the last successful anonymous check.

Record a transfer episode for a node pair. Increments episode count toward VLA training threshold.

record_episode input schema
{
  "type": "object",
  "required": [
    "fromNodeId",
    "toNodeId"
  ],
  "properties": {
    "success": {
      "type": "boolean",
      "description": "Whether the episode succeeded"
    },
    "toNodeId": {
      "type": "string",
      "description": "Destination instrument node ID"
    },
    "episodeId": {
      "type": "string",
      "description": "Episode ID (optional)"
    },
    "fromNodeId": {
      "type": "string",
      "description": "Source instrument node ID"
    }
  }
}
record_episode annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
advance_automation
Advertised by the server during the last successful anonymous check.

Advance the automation level for a transfer pair (manual → teleoperated → pilot_operated → vla_assisted → fully_autonomous). Requires sufficient training episodes.

advance_automation input schema
{
  "type": "object",
  "required": [
    "fromNodeId",
    "toNodeId"
  ],
  "properties": {
    "toNodeId": {
      "type": "string",
      "description": "Destination instrument node ID"
    },
    "fromNodeId": {
      "type": "string",
      "description": "Source instrument node ID"
    }
  }
}
advance_automation annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
list_transfer_agents
Advertised by the server during the last successful anonymous check.
Advertised read-only

List all transfer agents (robots and human operators) available for instrument-to-instrument transfers.

list_transfer_agents input schema
{
  "type": "object",
  "required": [],
  "properties": {}
}
list_transfer_agents annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
get_logistics_overview
Advertised by the server during the last successful anonymous check.
Advertised read-only

Logistics hub overview: active shipments, pending installations, and upcoming bookings.

get_logistics_overview input schema
{
  "type": "object",
  "required": [],
  "properties": {}
}
get_logistics_overview annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
get_shipments
Advertised by the server during the last successful anonymous check.
Advertised read-only

List equipment shipments with tracking status. Optionally filter by status.

get_shipments input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "status": {
      "type": "string",
      "description": "Filter by shipment status (in_transit, delivered, pickup_scheduled, etc.)"
    }
  }
}
get_shipments annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
create_shipment
Advertised by the server during the last successful anonymous check.

Create a new equipment shipment with origin, destination, package details, and provider.

create_shipment input schema
{
  "type": "object",
  "required": [
    "equipmentDescription"
  ],
  "properties": {
    "origin": {
      "type": "object",
      "description": "Origin location with label, address, geo coordinates"
    },
    "package": {
      "type": "object",
      "description": "Package details (weightKg, dimensions, fragile, etc.)"
    },
    "providerId": {
      "type": "string",
      "description": "Logistics provider ID"
    },
    "destination": {
      "type": "object",
      "description": "Destination location with label, address, geo coordinates"
    },
    "equipmentDescription": {
      "type": "string",
      "description": "Description of equipment being shipped"
    }
  }
}
create_shipment annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
get_shipment_quote
Advertised by the server during the last successful anonymous check.

Get shipping quotes from logistics providers based on origin, destination, weight, and priority.

get_shipment_quote input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "priority": {
      "enum": [
        "standard",
        "expedited",
        "rush"
      ],
      "type": "string",
      "description": "Shipping priority level"
    },
    "weightKg": {
      "type": "number",
      "description": "Package weight in kg"
    },
    "originZip": {
      "type": "string",
      "description": "Origin ZIP code"
    },
    "destinationZip": {
      "type": "string",
      "description": "Destination ZIP code"
    }
  }
}
get_shipment_quote annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
get_installations
Advertised by the server during the last successful anonymous check.
Advertised read-only

List equipment installation orders with step progress and status.

get_installations input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "status": {
      "type": "string",
      "description": "Filter by installation status (draft, scheduled, in_progress, completed)"
    }
  }
}
get_installations annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
get_space_bookings
Advertised by the server during the last successful anonymous check.
Advertised read-only

List space bookings for hosting equipment. Optionally filter by status or space.

get_space_bookings input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "status": {
      "type": "string",
      "description": "Filter by booking status"
    },
    "spaceId": {
      "type": "string",
      "description": "Filter by space ID"
    }
  }
}
get_space_bookings annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
search_spaces
Advertised by the server during the last successful anonymous check.
Advertised read-only

Search for lab/workshop hosting spaces. Filter by size, access schedule, and other requirements.

search_spaces input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "access": {
      "type": "string",
      "description": "Access schedule (24/7, business-hours, all)"
    },
    "maxSqft": {
      "type": "number",
      "description": "Maximum square footage"
    }
  }
}
search_spaces annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
get_space
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get detailed information about a hosting space including power, amenities, safety features, and pricing.

get_space input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Space ID"
    }
  }
}
get_space annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
match_spaces
Advertised by the server during the last successful anonymous check.

Find hosting spaces that match specific machine requirements (voltage, area, etc.). Returns scored matches.

match_spaces input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "minArea": {
      "type": "number",
      "description": "Minimum floor area in square feet"
    },
    "voltage": {
      "type": "number",
      "description": "Required voltage (e.g. 208, 480)"
    }
  }
}
match_spaces annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
get_marketplace_overview
Advertised by the server during the last successful anonymous check.
Advertised read-only

Equipment marketplace overview with demand/supply metrics across all capability types.

get_marketplace_overview input schema
{
  "type": "object",
  "required": [],
  "properties": {}
}
get_marketplace_overview annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
get_equipment_classes
Advertised by the server during the last successful anonymous check.
Advertised read-only

List equipment classes (FDM printers, CNC mills, etc.) with market snapshot data including utilization, demand, and pricing.

get_equipment_classes input schema
{
  "type": "object",
  "required": [],
  "properties": {}
}
get_equipment_classes annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
get_demand_supply
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get network-wide demand vs supply timeline data for capacity planning and market analysis.

get_demand_supply input schema
{
  "type": "object",
  "required": [],
  "properties": {}
}
get_demand_supply annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
calculate_roi
Advertised by the server during the last successful anonymous check.

Calculate ROI projection for onboarding equipment. Returns month-by-month revenue, cost, and break-even analysis.

calculate_roi input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "avgJobValue": {
      "type": "number",
      "description": "Average revenue per job in USD"
    },
    "monthlyCost": {
      "type": "number",
      "description": "Monthly operating cost in USD"
    },
    "utilization": {
      "type": "number",
      "description": "Expected utilization percentage (0-100)"
    }
  }
}
calculate_roi annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
get_operator_dashboard
Advertised by the server during the last successful anonymous check.
Advertised read-only

Not available: no route answers GET /api/operator on this gateway. The operator's real kernels, devices and in-flight jobs are at GET /api/agent/me.

get_operator_dashboard input schema
{
  "type": "object",
  "required": [],
  "properties": {}
}
get_operator_dashboard annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
get_operator_machines
Advertised by the server during the last successful anonymous check.
Advertised read-only

Answers 501 not_available: operator machines with utilization and uptime are not recorded on this gateway. The operator's real kernels, devices and in-flight jobs are at GET /api/agent/me.

get_operator_machines input schema
{
  "type": "object",
  "required": [],
  "properties": {}
}
get_operator_machines annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
get_operator_earnings
Advertised by the server during the last successful anonymous check.
Advertised read-only

Answers 501 not_available: operator earnings history is not recorded on this gateway. Per-job payment state is at GET /api/jobs/:jobId/execution.

get_operator_earnings input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "period": {
      "enum": [
        "7d",
        "30d",
        "90d",
        "1y"
      ],
      "type": "string",
      "description": "Time period for earnings data"
    }
  }
}
get_operator_earnings annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
get_operator_certs
Advertised by the server during the last successful anonymous check.
Advertised read-only

Answers 501 not_available: operator certifications are not recorded on this gateway (there is no certification store; certifications typed at registration are the operator's own claim and are not checked).

get_operator_certs input schema
{
  "type": "object",
  "required": [],
  "properties": {}
}
get_operator_certs annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
get_sensor_channels
Advertised by the server during the last successful anonymous check.
Advertised read-only

List all registered sensor channels across kernels. Returns channel descriptors with units and ranges.

get_sensor_channels input schema
{
  "type": "object",
  "required": [],
  "properties": {}
}
get_sensor_channels annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
get_kernel_sensors
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get sensor channels for a specific kernel. Returns live channel descriptors.

get_kernel_sensors input schema
{
  "type": "object",
  "required": [
    "kernelId"
  ],
  "properties": {
    "kernelId": {
      "type": "string",
      "description": "Kernel ID to get sensors for"
    }
  }
}
get_kernel_sensors annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
get_settlement_status
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get settlement pipeline status including pending operations count, total value queued, and smart account address.

get_settlement_status input schema
{
  "type": "object",
  "required": [],
  "properties": {}
}
get_settlement_status annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
get_settlement_epochs
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get settlement epoch history showing past batch settlements with timing and operation counts.

get_settlement_epochs input schema
{
  "type": "object",
  "required": [],
  "properties": {}
}
get_settlement_epochs annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
get_depin_stats
Advertised by the server during the last successful anonymous check.
Advertised read-only

DePIN treasury, soulbound capability certificates, and current reward epoch stats.

get_depin_stats input schema
{
  "type": "object",
  "required": [],
  "properties": {}
}
get_depin_stats annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
mint_certificate
Advertised by the server during the last successful anonymous check.

Mint a soulbound capability certificate (cNFT via Metaplex Core) for a kernel. Proves a verified capability on-chain as an immutable credential. Step 5 of onboarding.

mint_certificate input schema
{
  "type": "object",
  "required": [
    "kernelDid",
    "capabilityType"
  ],
  "properties": {
    "metadata": {
      "type": "object",
      "description": "Additional metadata (tolerances, materials, calibration proof CID)"
    },
    "kernelDid": {
      "type": "string",
      "description": "DID of the kernel (e.g. did:pcc:kernel:biolab-01)"
    },
    "assuranceTier": {
      "type": "number",
      "description": "Assurance tier (0-3)"
    },
    "capabilityType": {
      "type": "string",
      "description": "Capability type (e.g. fdm, cnc-3axis, hplc)"
    }
  }
}
mint_certificate annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
onboard_machine
Advertised by the server during the last successful anonymous check.

Register a new machine on the PCC network. Provide machine details to create a registration record. Include `operator` ({walletAddress, displayName, email}): without it the registration is recorded as operator 0x0000000000000000000000000000000000000000 / "Unknown", and prove cannot match it to you.

onboard_machine input schema
{
  "type": "object",
  "required": [
    "name",
    "category"
  ],
  "properties": {
    "name": {
      "type": "string",
      "description": "Machine name"
    },
    "model": {
      "type": "string",
      "description": "Model identifier"
    },
    "category": {
      "type": "string",
      "description": "Machine category (e.g. fdm, cnc, laser-cut, hplc)"
    },
    "operator": {
      "type": "object",
      "properties": {
        "email": {
          "type": "string"
        },
        "displayName": {
          "type": "string"
        },
        "walletAddress": {
          "type": "string",
          "description": "0x… address"
        }
      },
      "description": "Who owns this machine. prove and activate match the caller against operator.walletAddress (or operator.email)."
    },
    "description": {
      "type": "string",
      "description": "Machine description"
    },
    "capabilities": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "Array of capability objects"
    },
    "manufacturer": {
      "type": "string",
      "description": "Manufacturer name"
    }
  }
}
onboard_machine annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
analyze_machine_docs
Advertised by the server during the last successful anonymous check.

AI analysis of machine documentation. Upload docs to get suggested capabilities, extracted specs, materials, and tolerances.

analyze_machine_docs input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "document": {
      "type": "string",
      "description": "Document content or reference to analyze"
    }
  }
}
analyze_machine_docs annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
redeem_invite
Advertised by the server during the last successful anonymous check.

One-click agent onboarding with an invite code. Provisions wallet, identity, LLM access, and PCC tools in a single call.

redeem_invite input schema
{
  "type": "object",
  "required": [
    "inviteCode",
    "email",
    "password"
  ],
  "properties": {
    "name": {
      "type": "string",
      "description": "Display name (optional)"
    },
    "email": {
      "type": "string",
      "description": "Email address for the account"
    },
    "password": {
      "type": "string",
      "description": "Password for the account"
    },
    "inviteCode": {
      "type": "string",
      "description": "Invite code to redeem"
    }
  }
}
redeem_invite annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
check_invite
Advertised by the server during the last successful anonymous check.
Advertised read-only

Validate an invite code before redeeming it. Returns whether the code is valid and what it includes.

check_invite input schema
{
  "type": "object",
  "required": [
    "code"
  ],
  "properties": {
    "code": {
      "type": "string",
      "description": "Invite code to check"
    }
  }
}
check_invite annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
list_batches
Advertised by the server during the last successful anonymous check.
Advertised read-only

List active and completed settlement batches.

list_batches input schema
{
  "type": "object",
  "required": [],
  "properties": {}
}
list_batches annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
list_evidence
Advertised by the server during the last successful anonymous check.
Advertised read-only

List encrypted evidence bundles stored in the gateway.

list_evidence input schema
{
  "type": "object",
  "required": [],
  "properties": {}
}
list_evidence annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
submit_demand
Advertised by the server during the last successful anonymous check.

Signal that you want a capability that doesn't exist on the network yet. Creates a demand signal and may auto-create a bounty if enough demand accumulates.

submit_demand input schema
{
  "type": "object",
  "required": [
    "requesterId",
    "capabilityType",
    "description"
  ],
  "properties": {
    "description": {
      "type": "string",
      "description": "Description of what you need"
    },
    "requesterId": {
      "type": "string",
      "description": "ID of the requester"
    },
    "assuranceTier": {
      "type": "number",
      "description": "Required assurance tier (0-3)"
    },
    "capabilityType": {
      "type": "string",
      "description": "Type of capability wanted (e.g. electron-beam-welding, cryo-em)"
    },
    "estimatedJobValue": {
      "type": "number",
      "description": "Estimated payment per job in USD"
    },
    "estimatedFrequency": {
      "enum": [
        "one-time",
        "weekly",
        "monthly",
        "daily"
      ],
      "type": "string",
      "description": "How often you would use this capability"
    }
  }
}
submit_demand annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
list_bounties
Advertised by the server during the last successful anonymous check.
Advertised read-only

List open bounties for capabilities the network needs. Operators can claim these to earn rewards by onboarding new capabilities.

list_bounties input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "status": {
      "enum": [
        "open",
        "claimed",
        "verified",
        "paid",
        "expired"
      ],
      "type": "string",
      "description": "Filter by bounty status"
    },
    "capabilityType": {
      "type": "string",
      "description": "Filter by capability type"
    }
  }
}
list_bounties annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
claim_bounty
Advertised by the server during the last successful anonymous check.

Claim a bounty to onboard a new capability. The operator commits to registering the capability and completing verification.

claim_bounty input schema
{
  "type": "object",
  "required": [
    "bountyId",
    "operatorId"
  ],
  "properties": {
    "bountyId": {
      "type": "string",
      "description": "ID of the bounty to claim"
    },
    "operatorId": {
      "type": "string",
      "description": "ID of the operator claiming the bounty"
    }
  }
}
claim_bounty annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
verify_bounty
Advertised by the server during the last successful anonymous check.

Verify bounty completion by scoring the delivered capability against requirements.

verify_bounty input schema
{
  "type": "object",
  "required": [
    "bountyId",
    "jobId",
    "score"
  ],
  "properties": {
    "jobId": {
      "type": "string",
      "description": "Job ID that fulfilled the bounty"
    },
    "score": {
      "type": "number",
      "description": "Verification score (0-1)"
    },
    "bountyId": {
      "type": "string",
      "description": "Bounty ID to verify"
    }
  }
}
verify_bounty annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
get_top_demand
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get top demand signals aggregated by capability type. Shows which capabilities are most wanted on the network.

get_top_demand input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "limit": {
      "type": "number",
      "description": "Number of top demand entries to return (default 10)"
    }
  }
}
get_top_demand annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
get_bounty_leaderboard
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get the bounty hunter leaderboard showing top operators by bounties claimed and verified.

get_bounty_leaderboard input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "limit": {
      "type": "number",
      "description": "Number of entries to return (default 10)"
    }
  }
}
get_bounty_leaderboard annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
create_investment_pool
Advertised by the server during the last successful anonymous check.

Create an investment pool for a capability bounty. Stakers earn future protocol fees when the capability goes live.

create_investment_pool input schema
{
  "type": "object",
  "required": [
    "capabilityType",
    "description"
  ],
  "properties": {
    "currency": {
      "enum": [
        "USDC",
        "CREDITS"
      ],
      "type": "string",
      "description": "Currency for the pool"
    },
    "description": {
      "type": "string",
      "description": "Description of the capability pool"
    },
    "targetAmount": {
      "type": "number",
      "description": "Funding target amount"
    },
    "capabilityType": {
      "type": "string",
      "description": "Type of capability to invest in (e.g. cnc-milling, sla-printing)"
    }
  }
}
create_investment_pool annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
stake_in_pool
Advertised by the server during the last successful anonymous check.

Stake USDC or credits into a capability investment pool.

stake_in_pool input schema
{
  "type": "object",
  "required": [
    "poolId",
    "staker",
    "amount"
  ],
  "properties": {
    "amount": {
      "type": "number",
      "description": "Amount to stake"
    },
    "poolId": {
      "type": "string",
      "description": "Investment pool ID"
    },
    "staker": {
      "type": "string",
      "description": "Address or DID of the staker"
    }
  }
}
stake_in_pool annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
get_pool_earnings
Advertised by the server during the last successful anonymous check.
Advertised read-only

Check earnings from capability investment pools for a staker address.

get_pool_earnings input schema
{
  "type": "object",
  "required": [
    "staker"
  ],
  "properties": {
    "staker": {
      "type": "string",
      "description": "Address or DID of the staker"
    }
  }
}
get_pool_earnings annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
get_pool
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get details of a specific investment pool including stakes, status, and revenue share terms.

get_pool input schema
{
  "type": "object",
  "required": [
    "poolId"
  ],
  "properties": {
    "poolId": {
      "type": "string",
      "description": "Investment pool ID"
    }
  }
}
get_pool annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
list_pools
Advertised by the server during the last successful anonymous check.
Advertised read-only

List all investment pools. Optionally filter by status or capability type.

list_pools input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "status": {
      "enum": [
        "open",
        "funded",
        "active",
        "sunset",
        "cancelled"
      ],
      "type": "string",
      "description": "Filter by pool status"
    },
    "capabilityType": {
      "type": "string",
      "description": "Filter by capability type"
    }
  }
}
list_pools annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
close_pool
Advertised by the server during the last successful anonymous check.

Close an investment pool to new stakes. Pool enters sunset phase.

close_pool input schema
{
  "type": "object",
  "required": [
    "poolId"
  ],
  "properties": {
    "poolId": {
      "type": "string",
      "description": "Pool ID to close"
    }
  }
}
close_pool annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
claim_pool
Advertised by the server during the last successful anonymous check.

Operator claims an investment pool reward after capability verification.

claim_pool input schema
{
  "type": "object",
  "required": [
    "poolId",
    "operatorId"
  ],
  "properties": {
    "poolId": {
      "type": "string",
      "description": "Pool ID to claim"
    },
    "operatorId": {
      "type": "string",
      "description": "Operator ID making the claim"
    }
  }
}
claim_pool annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
convert_bounty_to_pool
Advertised by the server during the last successful anonymous check.

Convert an existing bounty into an investment pool. Allows community staking toward the bounty's capability.

convert_bounty_to_pool input schema
{
  "type": "object",
  "required": [
    "bountyId"
  ],
  "properties": {
    "bountyId": {
      "type": "string",
      "description": "Bounty ID to convert to a pool"
    }
  }
}
convert_bounty_to_pool annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
get_subnet_status
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get Bittensor verification subnet health, agent bridge status, and network connectivity.

get_subnet_status input schema
{
  "type": "object",
  "required": [],
  "properties": {}
}
get_subnet_status annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
get_subnet_miners
Advertised by the server during the last successful anonymous check.
Advertised read-only

List verification subnet miners on the Bittensor network. Returns miner addresses, scores, and leaderboard positions.

get_subnet_miners input schema
{
  "type": "object",
  "required": [],
  "properties": {}
}
get_subnet_miners annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
list_conversations
Advertised by the server during the last successful anonymous check.
Advertised read-only

List agent-to-agent conversations showing topic, participants, message count, and status.

list_conversations input schema
{
  "type": "object",
  "required": [],
  "properties": {}
}
list_conversations annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
submit_feedback
Advertised by the server during the last successful anonymous check.

Submit a bug report, suggestion, or general feedback about the PCC network.

submit_feedback input schema
{
  "type": "object",
  "required": [
    "message"
  ],
  "properties": {
    "page": {
      "type": "string",
      "description": "Page or feature the feedback relates to"
    },
    "type": {
      "enum": [
        "bug",
        "comment",
        "difficulty",
        "suggestion"
      ],
      "type": "string",
      "description": "Feedback type"
    },
    "message": {
      "type": "string",
      "description": "Feedback message (max 5000 chars)"
    }
  }
}
submit_feedback annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
report_anomaly
Advertised by the server during the last successful anonymous check.

Report a detected anomaly — protocol failure, evidence mismatch, stuck job, or suspicious behavior. All agents on the network are notified.

report_anomaly input schema
{
  "type": "object",
  "required": [
    "severity",
    "category",
    "description"
  ],
  "properties": {
    "jobId": {
      "type": "string",
      "description": "Related job ID (optional)"
    },
    "category": {
      "enum": [
        "protocol_failure",
        "evidence_mismatch",
        "consensus_failure",
        "timeout",
        "rate_anomaly",
        "trust_violation"
      ],
      "type": "string",
      "description": "Anomaly category"
    },
    "severity": {
      "enum": [
        "info",
        "warning",
        "critical"
      ],
      "type": "string",
      "description": "Anomaly severity"
    },
    "description": {
      "type": "string",
      "description": "Human-readable description of what went wrong"
    },
    "targetAgentId": {
      "type": "string",
      "description": "Agent or kernel ID being reported (optional)"
    }
  }
}
report_anomaly annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
get_unresolved_anomalies
Advertised by the server during the last successful anonymous check.
Advertised read-only

List all unresolved anomalies on the network. Filter by severity, category, or target agent.

get_unresolved_anomalies input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "category": {
      "type": "string",
      "description": "Filter by category"
    },
    "severity": {
      "type": "string",
      "description": "Filter by severity: info, warning, critical"
    },
    "targetId": {
      "type": "string",
      "description": "Filter by target agent/kernel ID"
    }
  }
}
get_unresolved_anomalies annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
get_agent_anomalies
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get anomalies involving a specific agent, plus their trust impact score.

get_agent_anomalies input schema
{
  "type": "object",
  "required": [
    "agentId"
  ],
  "properties": {
    "agentId": {
      "type": "string",
      "description": "Agent or kernel ID"
    }
  }
}
get_agent_anomalies annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
resolve_anomaly
Advertised by the server during the last successful anonymous check.

Mark an anomaly as resolved with a resolution note.

resolve_anomaly input schema
{
  "type": "object",
  "required": [
    "anomalyId",
    "resolution"
  ],
  "properties": {
    "anomalyId": {
      "type": "string",
      "description": "Anomaly ID to resolve"
    },
    "resolution": {
      "type": "string",
      "description": "How the anomaly was resolved"
    }
  }
}
resolve_anomaly annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
get_anomaly_stats
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get aggregate anomaly statistics — total, unresolved, by severity, by category.

get_anomaly_stats input schema
{
  "type": "object",
  "required": [],
  "properties": {}
}
get_anomaly_stats annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
report_protocol_failure
Advertised by the server during the last successful anonymous check.

Report a protocol failure — when a step in the evidence/escrow/verification pipeline breaks. System may auto-recover.

report_protocol_failure input schema
{
  "type": "object",
  "required": [
    "protocol",
    "errorCode",
    "errorMessage",
    "involvedAgents"
  ],
  "properties": {
    "jobId": {
      "type": "string",
      "description": "Related job ID"
    },
    "protocol": {
      "type": "string",
      "description": "Which protocol failed: evidence_submission, escrow_release, verification_consensus, settlement"
    },
    "errorCode": {
      "type": "string",
      "description": "Error code"
    },
    "errorMessage": {
      "type": "string",
      "description": "Error description"
    },
    "involvedAgents": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Agent IDs involved"
    },
    "recoveryAction": {
      "enum": [
        "retry",
        "escalate",
        "rollback",
        "ignore"
      ],
      "type": "string",
      "description": "Suggested recovery"
    }
  }
}
report_protocol_failure annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
pcc_dht_query
Advertised by the server during the last successful anonymous check.

Query the DHT for capabilities matching your requirements. Returns announcements from operators whose equipment matches the type, materials, and price range you specify.

pcc_dht_query input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "type": {
      "type": "string",
      "description": "Capability type to search for (e.g. 'fdm_print', 'liquid-handler', 'cnc-3axis')"
    },
    "limit": {
      "type": "number",
      "description": "Maximum results to return (default 10)"
    },
    "maxPrice": {
      "type": "number",
      "description": "Maximum price per job — matches operators whose min price is at or below this"
    },
    "materials": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Materials you need (matches if operator supports ANY of these)"
    }
  }
}
pcc_dht_query annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
pcc_dht_announce
Advertised by the server during the last successful anonymous check.

Announce capabilities to the DHT network. Signs the announcement with your node's Ed25519 key and broadcasts to connected peers.

pcc_dht_announce input schema
{
  "type": "object",
  "required": [
    "kernelId",
    "capabilities"
  ],
  "properties": {
    "kernelId": {
      "type": "string",
      "description": "Kernel ID announcing capabilities"
    },
    "ttlSeconds": {
      "type": "number",
      "description": "How long the announcement is valid (default 300)"
    },
    "capabilities": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "description": "Capability type"
          },
          "materials": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "priceRange": {
            "type": "object",
            "properties": {
              "max": {
                "type": "number"
              },
              "min": {
                "type": "number"
              },
              "currency": {
                "type": "string"
              }
            }
          },
          "queueDepth": {
            "type": "number"
          }
        }
      },
      "description": "Array of capability summaries to announce"
    }
  }
}
pcc_dht_announce annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
pcc_dht_peers
Advertised by the server during the last successful anonymous check.
Advertised read-only

List known DHT peers and their connection status. Shows which nodes are currently connected to the gossip network.

pcc_dht_peers input schema
{
  "type": "object",
  "required": [],
  "properties": {}
}
pcc_dht_peers annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
pcc_create_scope
Advertised by the server during the last successful anonymous check.

Create an execution scope for a job. Scopes define exactly which tool calls are allowed on a kernel during a job, with command budgets, retry limits, and time-to-live. Required before issuing SCOPED WRITE operations (protocol upload, run create, run action).

pcc_create_scope input schema
{
  "type": "object",
  "required": [
    "kernelId",
    "allowedTools"
  ],
  "properties": {
    "jobId": {
      "type": "string",
      "description": "Job ID this scope is bound to (optional)"
    },
    "kernelId": {
      "type": "string",
      "description": "Kernel ID to create the scope for"
    },
    "maxRetries": {
      "type": "number",
      "description": "Maximum retries allowed (default 3)"
    },
    "ttlMinutes": {
      "type": "number",
      "description": "Scope duration in minutes (default 30)"
    },
    "maxCommands": {
      "type": "number",
      "description": "Maximum tool calls allowed in this scope (default 100)"
    },
    "allowedSlots": {
      "type": "array",
      "items": {
        "type": "number"
      },
      "description": "Which deck slots may be accessed (e.g. [1, 2, 3, 9])"
    },
    "allowedTools": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "List of tool names allowed in this scope (e.g. ['ot2_protocol_upload', 'ot2_run_create', 'ot2_run_action'])"
    },
    "protocolHash": {
      "type": "string",
      "description": "SHA-256 hash of the approved protocol content. If set, protocol uploads are hash-verified."
    },
    "allowedPipettes": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Which pipettes may be used (e.g. ['left'])"
    }
  }
}
pcc_create_scope annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
pcc_revoke_scope
Advertised by the server during the last successful anonymous check.

Revoke an execution scope immediately (emergency stop). All pending tool calls under this scope are rejected. The kernel enters a stopped state. A new scope must be created to resume.

pcc_revoke_scope input schema
{
  "type": "object",
  "required": [
    "scopeId"
  ],
  "properties": {
    "scopeId": {
      "type": "string",
      "description": "Scope ID to revoke"
    }
  }
}
pcc_revoke_scope annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
pcc_scope_audit
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get the audit trail for an execution scope — every tool call made under this scope, with validation results, timestamps, and outcomes.

pcc_scope_audit input schema
{
  "type": "object",
  "required": [
    "scopeId"
  ],
  "properties": {
    "scopeId": {
      "type": "string",
      "description": "Scope ID to audit"
    }
  }
}
pcc_scope_audit annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
pcc_relay_tool_call
Advertised by the server during the last successful anonymous check.

Relay a tool call to a device executor. The brain (LLM) posts tool calls here; the executor (on the device) polls for them and executes locally. Used for the brain/executor split architecture.

pcc_relay_tool_call input schema
{
  "type": "object",
  "required": [
    "kernelId",
    "toolName",
    "toolArgs"
  ],
  "properties": {
    "scopeId": {
      "type": "string",
      "description": "Execution scope ID (required for SCOPED WRITE tools)"
    },
    "kernelId": {
      "type": "string",
      "description": "Kernel ID of the target device"
    },
    "toolArgs": {
      "type": "object",
      "description": "Arguments for the tool call"
    },
    "toolName": {
      "type": "string",
      "description": "Tool to execute (e.g. 'ot2_health', 'ot2_run_create')"
    }
  }
}
pcc_relay_tool_call annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
pcc_get_tool_result
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get the result of a previously relayed tool call. Poll this endpoint until the executor has processed the call and posted results.

pcc_get_tool_result input schema
{
  "type": "object",
  "required": [
    "callId"
  ],
  "properties": {
    "callId": {
      "type": "string",
      "description": "Tool call ID returned from pcc_relay_tool_call"
    }
  }
}
pcc_get_tool_result annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
pcc_camera_latest
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get the latest camera frame from a kernel as a JSON snapshot (base64 JPEG + metadata). For raw JPEG image, use GET /api/ot2/camera/latest directly.

pcc_camera_latest input schema
{
  "type": "object",
  "required": [
    "kernelId"
  ],
  "properties": {
    "kernelId": {
      "type": "string",
      "description": "Kernel ID to get camera frame from"
    }
  }
}
pcc_camera_latest annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
pcc_chat_send
Advertised by the server during the last successful anonymous check.

Send a chat message to a kernel's operator or agent. Used for human-in-the-loop communication during job execution, troubleshooting, and escalation.

pcc_chat_send input schema
{
  "type": "object",
  "required": [
    "kernelId",
    "message"
  ],
  "properties": {
    "role": {
      "enum": [
        "user",
        "agent",
        "operator",
        "system"
      ],
      "type": "string",
      "description": "Sender role (default: user)"
    },
    "message": {
      "type": "string",
      "description": "Message content"
    },
    "kernelId": {
      "type": "string",
      "description": "Kernel ID to send the message to"
    }
  }
}
pcc_chat_send annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
pcc_chat_history
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get chat history with a kernel. Returns messages between agents, operators, and users for a specific kernel.

pcc_chat_history input schema
{
  "type": "object",
  "required": [
    "kernelId"
  ],
  "properties": {
    "limit": {
      "type": "number",
      "description": "Maximum messages to return (default 50)"
    },
    "kernelId": {
      "type": "string",
      "description": "Kernel ID to get chat history for"
    }
  }
}
pcc_chat_history annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
approve_registration
Advertised by the server during the last successful anonymous check.

Approve a submitted machine registration. Moves it from 'submitted' to 'approved' status, enabling the operator to activate and start accepting jobs.

approve_registration input schema
{
  "type": "object",
  "required": [
    "registrationId"
  ],
  "properties": {
    "registrationId": {
      "type": "string",
      "description": "Registration ID (e.g. 'reg-1234567890')"
    }
  }
}
approve_registration annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
reject_registration
Advertised by the server during the last successful anonymous check.

Reject a machine registration with a reason. The operator can see the rejection reason and resubmit.

reject_registration input schema
{
  "type": "object",
  "required": [
    "registrationId"
  ],
  "properties": {
    "reason": {
      "type": "string",
      "description": "Reason for rejection"
    },
    "registrationId": {
      "type": "string",
      "description": "Registration ID"
    }
  }
}
reject_registration annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
activate_registration
Advertised by the server during the last successful anonymous check.

Activate an approved registration, making the operator's equipment live on the network and ready to accept jobs.

activate_registration input schema
{
  "type": "object",
  "required": [
    "registrationId"
  ],
  "properties": {
    "registrationId": {
      "type": "string",
      "description": "Registration ID"
    }
  }
}
activate_registration annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
prove_registration
Advertised by the server during the last successful anonymous check.

Fast-track: submit evidence that your device works and get auto-approved + activated immediately. No manual review needed. Submit a photo of test output, device health snapshot, or a full evidence bundle with completion events. If evidence meets requirements, registration jumps straight to 'active'.

prove_registration input schema
{
  "type": "object",
  "required": [
    "registrationId",
    "evidence"
  ],
  "properties": {
    "evidence": {
      "type": "object",
      "properties": {
        "events": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string",
                "description": "Event type: execution_completed, camera_snapshot, power_profile_summary, etc."
              },
              "payload": {
                "type": "object",
                "description": "Event data"
              },
              "timestamp": {
                "type": "string",
                "description": "ISO timestamp"
              }
            }
          },
          "description": "Evidence events from a test job"
        },
        "ipfsCid": {
          "type": "string",
          "description": "IPFS CID if evidence was already uploaded"
        },
        "bundleHash": {
          "type": "string",
          "description": "SHA-256 hash of the evidence bundle"
        },
        "photoBase64": {
          "type": "string",
          "description": "Base64-encoded photo of test output (printed page, machined part, etc.)"
        },
        "deviceHealth": {
          "type": "object",
          "properties": {
            "model": {
              "type": "string",
              "description": "Device model name"
            },
            "status": {
              "type": "string",
              "description": "Device status (e.g. 'idle', 'ready')"
            },
            "firmware": {
              "type": "string",
              "description": "Firmware version"
            }
          },
          "description": "Live device health snapshot"
        }
      },
      "description": "Evidence proving the device works. Include at least one of: bundleHash+events, photoBase64, or deviceHealth."
    },
    "registrationId": {
      "type": "string",
      "description": "Registration ID to prove"
    }
  }
}
prove_registration annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
list_registrations
Advertised by the server during the last successful anonymous check.
Advertised read-only

List all machine registrations on the network. See pending, approved, active, and rejected registrations. Public endpoint — no auth required.

list_registrations input schema
{
  "type": "object",
  "required": [],
  "properties": {}
}
list_registrations annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
get_registration
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get details of a specific machine registration by ID, including capabilities, pricing, operator info, and current status.

get_registration input schema
{
  "type": "object",
  "required": [
    "registrationId"
  ],
  "properties": {
    "registrationId": {
      "type": "string",
      "description": "Registration ID"
    }
  }
}
get_registration annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
near_status
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get NEAR Protocol chain-abstraction integration status. Returns supported chains (near, eth, base, arbitrum, optimism, polygon), supported assets (USDC, USDT, NEAR, ETH, WBTC), and capability flags. Use this to confirm cross-chain settlement is available before requesting quotes.

near_status input schema
{
  "type": "object",
  "required": [],
  "properties": {}
}
near_status annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
near_quote
Advertised by the server during the last successful anonymous check.

Get a cross-chain payment quote from the NEAR 1Click solver network (chaindefuser.com). Provides optimal routing and fee estimates for funding PCC escrow contracts using any source asset on any supported chain. Call near_status first to confirm available chains/assets.

near_quote input schema
{
  "type": "object",
  "required": [
    "fromChain",
    "fromAsset",
    "toChain",
    "toAsset",
    "amount"
  ],
  "properties": {
    "amount": {
      "type": "string",
      "description": "Amount as an integer string in the smallest denomination (e.g. '1000000' for 1 USDC with 6 decimals)"
    },
    "toAsset": {
      "type": "string",
      "description": "Destination asset symbol (e.g. 'USDC')"
    },
    "toChain": {
      "type": "string",
      "description": "Destination chain (e.g. 'base', 'eth')"
    },
    "fromAsset": {
      "type": "string",
      "description": "Source asset symbol (e.g. 'USDC', 'ETH', 'NEAR')"
    },
    "fromChain": {
      "type": "string",
      "description": "Source chain (e.g. 'eth', 'base', 'near', 'arbitrum')"
    },
    "recipient": {
      "type": "string",
      "description": "Recipient address on the destination chain (optional)"
    }
  }
}
near_quote annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
near_intent
Advertised by the server during the last successful anonymous check.

Submit a cross-chain payment intent to the NEAR 1Click solver network. Creates a signed intent that routes the payment atomically across chains. Call near_quote first to obtain a quoteId. Intents typically settle within 30-60 seconds — poll near_intent_status to track progress.

near_intent input schema
{
  "type": "object",
  "required": [
    "quoteId",
    "workflowId"
  ],
  "properties": {
    "quoteId": {
      "type": "string",
      "description": "Quote ID returned from near_quote"
    },
    "recipient": {
      "type": "string",
      "description": "Recipient address on the destination chain (optional)"
    },
    "workflowId": {
      "type": "string",
      "description": "PCC workflow or job ID this payment is for"
    }
  }
}
near_intent annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
near_intent_status
Advertised by the server during the last successful anonymous check.
Advertised read-only

Check the settlement status of a submitted NEAR 1Click cross-chain payment intent. Statuses progress: pending → submitted → settled | failed. Returns txHash and explorerUrl when settled.

near_intent_status input schema
{
  "type": "object",
  "required": [
    "intentId"
  ],
  "properties": {
    "intentId": {
      "type": "string",
      "description": "Intent ID returned from near_intent"
    }
  }
}
near_intent_status annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
protocol_state
Advertised by the server during the last successful anonymous check.
Advertised read-only

Read the PCCProtocol root contract state: current fee rate, total protocol fees collected, total escrow count, and registry addresses. Requires PCC_PROTOCOL_ADDRESS to be configured on the gateway.

protocol_state input schema
{
  "type": "object",
  "required": [],
  "properties": {}
}
protocol_state annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
protocol_fee
Advertised by the server during the last successful anonymous check.
Advertised read-only

Calculate the protocol fee for a given USDC amount (6-decimal units). Returns the fee, the net amount after fee, and formatted versions of both. Use this before building escrow contracts to understand the true cost.

protocol_fee input schema
{
  "type": "object",
  "required": [
    "amount"
  ],
  "properties": {
    "amount": {
      "type": "string",
      "description": "Amount as a BigInt string in USDC 6-decimal units (e.g. '1000000000' = 1000 USDC)"
    }
  }
}
protocol_fee annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
protocol_token_fees
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get total protocol fees collected for a specific ERC-20 token address across all escrows. Returns raw wei amount and human-readable formatted value.

protocol_token_fees input schema
{
  "type": "object",
  "required": [
    "tokenAddress"
  ],
  "properties": {
    "tokenAddress": {
      "type": "string",
      "description": "ERC-20 token contract address (0x...)"
    }
  }
}
protocol_token_fees annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
protocol_escrow_fees
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get protocol fees collected from a specific escrow contract. Also returns whether the escrow was deployed via the protocol factory. Useful for auditing fee flows.

protocol_escrow_fees input schema
{
  "type": "object",
  "required": [
    "escrowAddress"
  ],
  "properties": {
    "escrowAddress": {
      "type": "string",
      "description": "Escrow contract address (0x...)"
    }
  }
}
protocol_escrow_fees annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
protocol_create_escrow
Advertised by the server during the last successful anonymous check.

Create a new MilestoneEscrow contract via the PCCProtocol factory on-chain. Protocol-deployed escrows have fee collection and registry tracking built in. Requires PCC_GATEWAY_PRIVATE_KEY write access.

protocol_create_escrow input schema
{
  "type": "object",
  "required": [
    "payer",
    "arbiter",
    "token",
    "cwmId"
  ],
  "properties": {
    "cwmId": {
      "type": "string",
      "description": "Capability Work Module ID as a 32-byte hex string (0x + 64 chars)"
    },
    "payer": {
      "type": "string",
      "description": "Payer EVM address (0x...)"
    },
    "token": {
      "type": "string",
      "description": "ERC-20 token address for payment (0x...)"
    },
    "arbiter": {
      "type": "string",
      "description": "Arbiter EVM address (0x...) — resolves disputes"
    }
  }
}
protocol_create_escrow annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
pcc_dht_metrics
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get a snapshot of DHT telemetry counters and recent events. Returns message counts, peer connection stats, query/announce rates, and a list of the last 50 metric events. Use for monitoring network health.

pcc_dht_metrics input schema
{
  "type": "object",
  "required": [],
  "properties": {}
}
pcc_dht_metrics annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
marketplace_categories
Advertised by the server during the last successful anonymous check.
Advertised read-only

List all supplies and materials marketplace categories with the count of active listings in each. Categories cover the full spectrum of physical production inputs: raw metals, plastics, lab reagents, consumables, electronics, tooling, and more.

marketplace_categories input schema
{
  "type": "object",
  "required": [],
  "properties": {}
}
marketplace_categories annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
marketplace_list_listings
Advertised by the server during the last successful anonymous check.
Advertised read-only

Search and filter supplies/materials marketplace listings. Operators buy raw materials here to fulfill capability contracts. Filter by category, in-stock status, location, or free-text query.

marketplace_list_listings input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "query": {
      "type": "string",
      "description": "Full-text search across name, description, and tags"
    },
    "inStock": {
      "enum": [
        "true",
        "false"
      ],
      "type": "string",
      "description": "Filter to only in-stock listings"
    },
    "category": {
      "type": "string",
      "description": "Filter by category: raw-metals, plastics-polymers, lab-reagents, lab-consumables, electronics, chemicals, biologicals, tooling, packaging, calibration, safety, other"
    },
    "location": {
      "type": "string",
      "description": "Filter by region (e.g. 'US-Midwest', 'EU-West', 'Asia-Pacific')"
    }
  }
}
marketplace_list_listings annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
marketplace_get_listing
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get full details of a specific supplies/materials marketplace listing by ID. Returns pricing, availability, lead time, location, and tags.

marketplace_get_listing input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Listing ID (e.g. 'lst-al6061-bar')"
    }
  }
}
marketplace_get_listing annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
marketplace_create_listing
Advertised by the server during the last successful anonymous check.

Create a new supplies/materials listing in the marketplace. Suppliers post available raw materials, lab reagents, tooling, or consumables for other operators to purchase.

marketplace_create_listing input schema
{
  "type": "object",
  "required": [
    "category",
    "name",
    "pricePerUnit",
    "unit"
  ],
  "properties": {
    "name": {
      "type": "string",
      "description": "Product name"
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Search tags"
    },
    "unit": {
      "type": "string",
      "description": "Unit of sale: kg, L, each, box, plate, etc."
    },
    "inStock": {
      "type": "boolean",
      "description": "Whether the item is currently available"
    },
    "category": {
      "type": "string",
      "description": "Category: raw-metals, plastics-polymers, lab-reagents, lab-consumables, electronics, chemicals, biologicals, tooling, packaging, calibration, safety, other"
    },
    "location": {
      "type": "string",
      "description": "Supplier region or country"
    },
    "maxOrder": {
      "type": "number",
      "description": "Maximum order quantity"
    },
    "minOrder": {
      "type": "number",
      "description": "Minimum order quantity"
    },
    "sellerId": {
      "type": "string",
      "description": "Supplier entity ID"
    },
    "description": {
      "type": "string",
      "description": "Detailed product description"
    },
    "leadTimeDays": {
      "type": "number",
      "description": "Estimated lead time in business days"
    },
    "pricePerUnit": {
      "type": "number",
      "description": "Price per unit in USDC"
    }
  }
}
marketplace_create_listing annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
marketplace_update_listing
Advertised by the server during the last successful anonymous check.

Update an existing supplies/materials listing (price, stock status, description, etc.). Pass only the fields you want to change.

marketplace_update_listing input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Listing ID to update"
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Updated search tags"
    },
    "inStock": {
      "type": "boolean",
      "description": "Stock availability"
    },
    "description": {
      "type": "string",
      "description": "Updated description"
    },
    "leadTimeDays": {
      "type": "number",
      "description": "Updated lead time in days"
    },
    "pricePerUnit": {
      "type": "number",
      "description": "New price per unit in USDC"
    }
  }
}
marketplace_update_listing annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
marketplace_delete_listing
Advertised by the server during the last successful anonymous check.
Advertised destructive

Remove a supplies/materials listing from the marketplace. The listing is immediately hidden from search results.

marketplace_delete_listing input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Listing ID to remove"
    }
  }
}
marketplace_delete_listing annotations
{
  "readOnlyHint": false,
  "destructiveHint": true
}
marketplace_place_order
Advertised by the server during the last successful anonymous check.

Place a purchase order for supplies or materials. Calculates total price automatically (quantity × pricePerUnit). Returns an order with 'pending' status. Optionally links to an on-chain escrow for trustless settlement.

marketplace_place_order input schema
{
  "type": "object",
  "required": [
    "listingId",
    "quantity"
  ],
  "properties": {
    "buyerId": {
      "type": "string",
      "description": "Buyer entity ID (operator kernel ID, etc.)"
    },
    "quantity": {
      "type": "number",
      "description": "Quantity to order (must meet listing minOrder/maxOrder)"
    },
    "listingId": {
      "type": "string",
      "description": "Listing ID to order from"
    },
    "escrowAddress": {
      "type": "string",
      "description": "Optional on-chain escrow address for trustless settlement"
    }
  }
}
marketplace_place_order annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
marketplace_list_orders
Advertised by the server during the last successful anonymous check.
Advertised read-only

List marketplace supply orders. Filter by buyerId, sellerId, or status. Returns order history with pricing and status.

marketplace_list_orders input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "status": {
      "enum": [
        "pending",
        "confirmed",
        "shipped",
        "delivered",
        "cancelled"
      ],
      "type": "string",
      "description": "Filter by order status"
    },
    "buyerId": {
      "type": "string",
      "description": "Filter to orders placed by this buyer"
    },
    "sellerId": {
      "type": "string",
      "description": "Filter to orders received by this seller"
    }
  }
}
marketplace_list_orders annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
marketplace_get_order
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get details of a specific supply order including the associated listing details, quantity, total price, status, and optional escrow address.

marketplace_get_order input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Order ID (e.g. 'ord-demo-001')"
    }
  }
}
marketplace_get_order annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
system_telemetry
Advertised by the server during the last successful anonymous check.
Advertised read-only

Raw system state dump — actual DB rows for kernels, devices, jobs, evidence, registrations, capabilities, agent conversations, audit log. No fake numbers, no summaries.

system_telemetry input schema
{
  "type": "object",
  "properties": {}
}
system_telemetry annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
operator_poll_jobs
Advertised by the server during the last successful anonymous check.
Advertised read-only

Operator polls jobs assigned to their kernel; status defaults to queued, and the route can filter any status. Requires operate authority for this kernel: its recorded operator identity (the caller that registered it), its proven operator wallet, or the gateway admin authority. Another identity gets 403; no credentials gets 401; an unregistered kernel gets 404 for a non-admin. Operator identity proof for operate is completed by WP-A (DECISIONS items 136 and 138). The pcc-node 0.1.1 daemon does not call it: it takes no jobs.

operator_poll_jobs input schema
{
  "type": "object",
  "required": [
    "kernelId"
  ],
  "properties": {
    "kernelId": {
      "type": "string",
      "description": "Kernel ID to poll jobs for"
    }
  }
}
operator_poll_jobs annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
operator_push_evidence
Advertised by the server during the last successful anonymous check.

Operator pushes evidence bundle from a completed job execution. Requires decide authority for the stored job's kernel: its proven operator wallet or the gateway admin authority. A matching claimed operator key gets 403 operator_proof_required. Evidence takes decide, per DECISIONS 2026-10-04 01:25 (N31c). Evidence is posted with the kernel's proven operator wallet authority (decide). The body's kernelId cannot choose the authorization target. No credentials gets 401 before the job read; a job without a kernel gets 403 for a non-admin. Contains device ID, execution timestamp, result payload, and event timeline. Success is a receipt with stored: true naming this jobId. HTTP 200 with stored: false means nothing was stored: never follow it with status completed.

operator_push_evidence input schema
{
  "type": "object",
  "required": [
    "jobId",
    "kernelId",
    "evidence"
  ],
  "properties": {
    "jobId": {
      "type": "string"
    },
    "evidence": {
      "type": "object"
    },
    "kernelId": {
      "type": "string"
    }
  }
}
operator_push_evidence annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
operator_heartbeat
Advertised by the server during the last successful anonymous check.

Operator sends heartbeat with capability re-announcement. Keeps the kernel alive on the network and updates its own capability rows. Requires operate authority for this kernel: its recorded operator identity (the caller that registered it), its proven operator wallet, or the gateway admin authority. Another identity gets 403; no credentials gets 401; an unregistered kernel gets 404 for a non-admin. Operator identity proof for operate is completed by WP-A (DECISIONS items 136 and 138).

operator_heartbeat input schema
{
  "type": "object",
  "required": [
    "kernelId"
  ],
  "properties": {
    "kernelId": {
      "type": "string"
    },
    "capabilities": {
      "type": "array",
      "items": {
        "type": "object"
      }
    }
  }
}
operator_heartbeat annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
operator_update_job_status
Advertised by the server during the last successful anonymous check.

Operator reports a job's status (in_progress, completed, failed). Requires operate authority for the stored job's kernel: its recorded operator identity (the caller that registered it), its proven operator wallet, or the gateway admin authority. The body's kernelId cannot choose the authorization target. Another identity gets 403; no credentials gets 401 before the job read; a job without a kernel gets 403 for a non-admin. Operator identity proof for operate is completed by WP-A (DECISIONS items 136 and 138). The node path finishes a job in two calls: submit its evidence (POST /api/operator/evidence, posted with the kernel's proven operator wallet authority, decide), and only if that receipt says stored: true for this jobId, set status completed here. HTTP 200 alone is not enough: the relay answers 200 with stored: false when it could not store the evidence (an unknown job, a storage failure); then set failed with the reason evidence_not_stored. On the current gateway, completed marks the job done and its timeline then says settled, but the escrow is not released yet (board G1). Do not call pcc_job_complete after this: it answers 409.

operator_update_job_status input schema
{
  "type": "object",
  "required": [
    "jobId",
    "kernelId",
    "status"
  ],
  "properties": {
    "jobId": {
      "type": "string"
    },
    "status": {
      "enum": [
        "in_progress",
        "completed",
        "failed"
      ],
      "type": "string"
    },
    "kernelId": {
      "type": "string"
    },
    "metadata": {
      "type": "object"
    }
  }
}
operator_update_job_status annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
pcc_submit_paid_job
Advertised by the server during the last successful anonymous check.

Fast-track paid job: one call from DHT discovery to funded escrow + active scope. Auto-negotiates, quotes, creates escrow with milestones, creates execution scope. Returns jobId, scopeId, escrowId, quote with pricing adjustments, contract terms. For testnet, escrow is mock-funded automatically.

pcc_submit_paid_job input schema
{
  "type": "object",
  "required": [
    "kernelId",
    "capabilityType",
    "userAgentId"
  ],
  "properties": {
    "kernelId": {
      "type": "string",
      "description": "Target kernel ID (from DHT query)"
    },
    "parameters": {
      "type": "object",
      "description": "Job parameters (protocolType, volume, materials, etc.)"
    },
    "userAgentId": {
      "type": "string",
      "description": "Your agent/user ID"
    },
    "paymentMethod": {
      "enum": [
        "escrow",
        "testnet-mock"
      ],
      "type": "string",
      "description": "Payment method (testnet-mock for demo)"
    },
    "capabilityType": {
      "type": "string",
      "description": "e.g. 'liquid-handler', 'fdm', 'cnc-3axis'"
    }
  }
}
pcc_submit_paid_job annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
pcc_job_complete
Advertised by the server during the last successful anonymous check.

Complete a job: gathers tool call audit trail from execution scopes, builds evidence bundle with SHA-256 hash, stores evidence, revokes scopes, and settles escrow (mock or real). This is how a job run through execution scopes is finished. A node that submitted its evidence and set status completed (operator_update_job_status) must not call it: it then answers 409 ("Job already completed or completion in progress").

pcc_job_complete input schema
{
  "type": "object",
  "required": [
    "jobId"
  ],
  "properties": {
    "jobId": {
      "type": "string",
      "description": "Job ID to complete"
    },
    "message": {
      "type": "string",
      "description": "Completion message or notes"
    }
  }
}
pcc_job_complete annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
pcc_job_settlement
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get a job's settlement status from its own escrow records: status (settled only when a settlement read confirms the release; reported_released when the milestone record says released but nothing confirms it; simulated for a mock escrow; awaiting_settlement, no_settlement_record, unknown or unavailable otherwise), settled, payout, paidAmount (confirmed releases only), reportedReleasedAmount, quotedAmount, currency (recorded or null), escrow, milestones, the negotiation session, notices and asOf.

pcc_job_settlement input schema
{
  "type": "object",
  "required": [
    "jobId"
  ],
  "properties": {
    "jobId": {
      "type": "string",
      "description": "Job ID"
    }
  }
}
pcc_job_settlement annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
pcc_get_tool_manifest
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get the tool manifest for a kernel's device type. Lists all available tools with their safety classification (read, safe_control, scoped_write, privileged) and input schemas. Use to understand what tools are available before making tool calls.

pcc_get_tool_manifest input schema
{
  "type": "object",
  "required": [
    "kernelId"
  ],
  "properties": {
    "kernelId": {
      "type": "string",
      "description": "Kernel ID"
    }
  }
}
pcc_get_tool_manifest annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
pcc_relay_generic_tool_call
Advertised by the server during the last successful anonymous check.

Relay a tool call to any kernel's device executor via the generic relay (not OT-2 specific). Works with any device type. Safe tools (read/safe_control) don't need a scope. Scoped write tools require an active execution scope. Returns a call ID — poll pcc_get_tool_result for the response.

pcc_relay_generic_tool_call input schema
{
  "type": "object",
  "required": [
    "kernelId",
    "toolName"
  ],
  "properties": {
    "args": {
      "type": "object",
      "description": "Tool arguments"
    },
    "scopeId": {
      "type": "string",
      "description": "Execution scope ID (required for write operations)"
    },
    "kernelId": {
      "type": "string",
      "description": "Target kernel ID"
    },
    "toolName": {
      "type": "string",
      "description": "Tool name from the device manifest"
    }
  }
}
pcc_relay_generic_tool_call annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
pcc_submit_request
Advertised by the server during the last successful anonymous check.

Submit a high-level capability request in natural language. The system automatically decomposes it into a capability DAG with dependencies, timelines, and budget allocation across fabrication, design, assembly, electronics, software, logistics, and verification nodes. Returns the request with full decomposed DAG. Example: 'Build a cute animatronic plush desk robot with servo-driven animations'.

pcc_submit_request input schema
{
  "type": "object",
  "required": [
    "title",
    "description"
  ],
  "properties": {
    "title": {
      "type": "string",
      "description": "Short title for the request"
    },
    "budget": {
      "type": "number",
      "description": "Total budget in USDC (default: 1000)"
    },
    "urgency": {
      "enum": [
        "standard",
        "rush",
        "emergency"
      ],
      "type": "string",
      "description": "Urgency level — affects cost multipliers (emergency: 2x cost, 0.5x time)"
    },
    "currency": {
      "type": "string",
      "description": "Currency (default: USDC)"
    },
    "deadline": {
      "type": "string",
      "description": "ISO 8601 deadline (default: 7 days from now)"
    },
    "description": {
      "type": "string",
      "description": "Full natural language description of what needs to be built or done"
    },
    "requesterEmail": {
      "type": "string",
      "description": "Requester email for notifications"
    },
    "requesterWallet": {
      "type": "string",
      "description": "Requester wallet address for payments"
    }
  }
}
pcc_submit_request annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
pcc_list_requests
Advertised by the server during the last successful anonymous check.
Advertised read-only

List all capability requests with optional filtering. Shows status, decomposed DAG summary, estimated costs, and timelines.

pcc_list_requests input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "status": {
      "enum": [
        "draft",
        "decomposing",
        "published",
        "in_progress",
        "completed",
        "cancelled"
      ],
      "type": "string",
      "description": "Filter by status"
    },
    "urgency": {
      "enum": [
        "standard",
        "rush",
        "emergency"
      ],
      "type": "string",
      "description": "Filter by urgency"
    },
    "requesterEmail": {
      "type": "string",
      "description": "Filter by requester email"
    }
  }
}
pcc_list_requests annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
pcc_get_request
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get a capability request by ID with the full decomposed DAG — all capability nodes, their dependencies, estimated costs/hours, assigned operators, and linked bounty IDs.

pcc_get_request input schema
{
  "type": "object",
  "required": [
    "requestId"
  ],
  "properties": {
    "requestId": {
      "type": "string",
      "description": "Request ID"
    }
  }
}
pcc_get_request annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
pcc_decompose_request
Advertised by the server during the last successful anonymous check.

Re-trigger decomposition of an existing capability request. Overwrites the existing capability DAG with a fresh decomposition. Useful after updating the description or budget.

pcc_decompose_request input schema
{
  "type": "object",
  "required": [
    "requestId"
  ],
  "properties": {
    "requestId": {
      "type": "string",
      "description": "Request ID to decompose"
    }
  }
}
pcc_decompose_request annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
pcc_publish_request
Advertised by the server during the last successful anonymous check.

Publish all pending capability nodes in a request as bounties. Each node becomes a bidding opportunity for operators. Returns the list of created bounty IDs linked to each capability node.

pcc_publish_request input schema
{
  "type": "object",
  "required": [
    "requestId"
  ],
  "properties": {
    "requestId": {
      "type": "string",
      "description": "Request ID to publish"
    }
  }
}
pcc_publish_request annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
pcc_get_request_dag
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get the capability DAG (directed acyclic graph) for a request as adjacency data — nodes with all fields plus explicit edges showing dependency relationships. Useful for visualization or workflow planning.

pcc_get_request_dag input schema
{
  "type": "object",
  "required": [
    "requestId"
  ],
  "properties": {
    "requestId": {
      "type": "string",
      "description": "Request ID"
    }
  }
}
pcc_get_request_dag annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
pcc_get_request_critical_path
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get the critical path (longest dependency chain) for a capability request. The critical path determines the minimum calendar time to complete the request. Returns node IDs in order, the full node details, and total hours on the critical path.

pcc_get_request_critical_path input schema
{
  "type": "object",
  "required": [
    "requestId"
  ],
  "properties": {
    "requestId": {
      "type": "string",
      "description": "Request ID"
    }
  }
}
pcc_get_request_critical_path annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
pcc_assign_node_operator
Advertised by the server during the last successful anonymous check.

Assign an operator to a specific capability node within a request. The node status changes to 'assigned'. Operators claim nodes to indicate they will execute that capability.

pcc_assign_node_operator input schema
{
  "type": "object",
  "required": [
    "requestId",
    "nodeId",
    "operatorId"
  ],
  "properties": {
    "nodeId": {
      "type": "string",
      "description": "Capability node ID"
    },
    "requestId": {
      "type": "string",
      "description": "Request ID"
    },
    "operatorId": {
      "type": "string",
      "description": "Operator kernel ID or wallet address"
    }
  }
}
pcc_assign_node_operator annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
pcc_update_node_status
Advertised by the server during the last successful anonymous check.

Update the status of a capability node within a request. Valid transitions: pending → bidding → assigned → in_progress → completed (or failed). When all nodes complete, the request automatically moves to completed.

pcc_update_node_status input schema
{
  "type": "object",
  "required": [
    "requestId",
    "nodeId",
    "status"
  ],
  "properties": {
    "nodeId": {
      "type": "string",
      "description": "Capability node ID"
    },
    "status": {
      "enum": [
        "pending",
        "bidding",
        "assigned",
        "in_progress",
        "completed",
        "failed"
      ],
      "type": "string",
      "description": "New status for the node"
    },
    "requestId": {
      "type": "string",
      "description": "Request ID"
    }
  }
}
pcc_update_node_status annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
pcc_update_request
Advertised by the server during the last successful anonymous check.

Update a capability request's title, description, budget, deadline, urgency, or contact info. Does not re-decompose — call pcc_decompose_request afterwards if you want a fresh DAG.

pcc_update_request input schema
{
  "type": "object",
  "required": [
    "requestId"
  ],
  "properties": {
    "title": {
      "type": "string"
    },
    "budget": {
      "type": "number"
    },
    "urgency": {
      "enum": [
        "standard",
        "rush",
        "emergency"
      ],
      "type": "string"
    },
    "deadline": {
      "type": "string"
    },
    "requestId": {
      "type": "string",
      "description": "Request ID"
    },
    "description": {
      "type": "string"
    },
    "requesterEmail": {
      "type": "string"
    },
    "requesterWallet": {
      "type": "string"
    }
  }
}
pcc_update_request annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
pcc_cancel_request
Advertised by the server during the last successful anonymous check.
Advertised destructive

Cancel a capability request. Cancelled requests cannot be updated, decomposed, or published. This is a soft delete — the request remains visible with status 'cancelled'.

pcc_cancel_request input schema
{
  "type": "object",
  "required": [
    "requestId"
  ],
  "properties": {
    "requestId": {
      "type": "string",
      "description": "Request ID to cancel"
    }
  }
}
pcc_cancel_request annotations
{
  "readOnlyHint": false,
  "destructiveHint": true
}
pcc_oracle_status
Advertised by the server during the last successful anonymous check.
Advertised read-only

Not served by the PCC gateway: GET /api/oracle/health returns 404 there. PCC's verification oracle runs as a separate service, and this route answers only where a deployment fronts it. Agents never call the oracle to settle a job: settlement is the gateway's step after pcc_job_complete. Where it is served, it returns the oracle's EIP-712 signing address and chain ID.

pcc_oracle_status input schema
{
  "type": "object",
  "properties": {}
}
pcc_oracle_status annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
pcc_oracle_verify
Advertised by the server during the last successful anonymous check.

Not served by the PCC gateway: POST /api/oracle/verify returns 404 there. PCC's verification oracle runs as a separate service, and this route answers only where a deployment fronts it. Agents never call it to settle a job: settlement is the gateway's step after pcc_job_complete. Where it is served, it checks that the evidence exists, its hash matches, tier requirements are met, there is no replay and the operator identity is valid, and it returns a signed EIP-712 attestation.

pcc_oracle_verify input schema
{
  "type": "object",
  "required": [
    "escrowAddress",
    "jobId",
    "kernelId",
    "evidenceHash"
  ],
  "properties": {
    "jobId": {
      "type": "string",
      "description": "PCC job ID"
    },
    "kernelId": {
      "type": "string",
      "description": "Operator kernel ID"
    },
    "evidenceHash": {
      "type": "string",
      "description": "SHA-256 hash of evidence bundle"
    },
    "assuranceTier": {
      "enum": [
        0,
        1,
        2,
        3
      ],
      "type": "integer",
      "description": "Evidence tier (0=none, 1=basic, 2=full, 3=ZK)"
    },
    "escrowAddress": {
      "type": "string",
      "description": "Escrow contract address"
    }
  }
}
pcc_oracle_verify annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
pcc_protocol_fee
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get the current protocol fee rate (2.35%, immutable) and fee recipient address. The fee is hardcoded in the PCCProtocol smart contract — no admin, no governance, no upgrade can change it.

pcc_protocol_fee input schema
{
  "type": "object",
  "properties": {}
}
pcc_protocol_fee annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
create_capability
Advertised by the server during the last successful anonymous check.

Register a capability instance for a kernel. Required before submitting jobs — the gateway needs at least one capability per kernel. Creates a liquid-handler, fdm, cnc-3axis, or other capability type.

create_capability input schema
{
  "type": "object",
  "required": [
    "kernelId",
    "type"
  ],
  "properties": {
    "name": {
      "type": "string",
      "description": "Human-readable name for the capability"
    },
    "type": {
      "type": "string",
      "description": "Capability type (e.g. liquid-handler, fdm, cnc-3axis, laser-cut, document-printing)"
    },
    "kernelId": {
      "type": "string",
      "description": "Kernel ID to register capability for"
    },
    "description": {
      "type": "string",
      "description": "Description of what this capability does"
    }
  }
}
create_capability annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
kernel_heartbeat
Advertised by the server during the last successful anonymous check.

Send a per-kernel heartbeat to keep the kernel marked online. Used by pcc-node daemons as an alternative to the operator relay heartbeat.

kernel_heartbeat input schema
{
  "type": "object",
  "required": [
    "kernelId"
  ],
  "properties": {
    "status": {
      "type": "string",
      "default": "online",
      "description": "Kernel status (online/offline)"
    },
    "kernelId": {
      "type": "string",
      "description": "Kernel ID"
    },
    "capabilities": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "Optional capability announcements"
    }
  }
}
kernel_heartbeat annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
kernel_announce_capabilities
Advertised by the server during the last successful anonymous check.

Announce capabilities for a kernel. NOTE: the gateway currently acknowledges this call but stores nothing, so it does not put any capability on the network. To publish a capability, use create_capability (POST /api/capabilities).

kernel_announce_capabilities input schema
{
  "type": "object",
  "required": [
    "kernelId",
    "capabilities"
  ],
  "properties": {
    "devices": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Device IDs that back these capabilities"
    },
    "kernelId": {
      "type": "string",
      "description": "Kernel ID"
    },
    "signature": {
      "type": "string",
      "description": "Ed25519 signature of the announcement"
    },
    "capabilities": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "Capability objects to announce"
    }
  }
}
kernel_announce_capabilities annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
send_diagnostics
Advertised by the server during the last successful anonymous check.

Upload an encrypted diagnostic bundle when the operator's node has problems. The bundle is encrypted client-side with a retrieval code the operator must share with support before logs can be read. Use this when the operator reports errors, crashes, or misbehavior. The pcc-node CLI runs `pcc-node logs --send` locally to collect+encrypt; prefer that path when available. This tool is for agent-driven uploads when the bundle is already prepared.

send_diagnostics input schema
{
  "type": "object",
  "required": [
    "kernelId",
    "encrypted"
  ],
  "properties": {
    "kernelId": {
      "type": "string",
      "description": "Kernel ID the diagnostics came from"
    },
    "encrypted": {
      "type": "object",
      "required": [
        "ciphertext_b64",
        "iv_b64",
        "salt_b64",
        "tag_b64"
      ],
      "properties": {
        "iv_b64": {
          "type": "string"
        },
        "tag_b64": {
          "type": "string"
        },
        "salt_b64": {
          "type": "string"
        },
        "ciphertext_b64": {
          "type": "string"
        }
      },
      "description": "Encrypted bundle payload"
    },
    "bundleHash": {
      "type": "string",
      "description": "sha256 of plaintext bundle"
    },
    "bundleSize": {
      "type": "number",
      "description": "Size of encrypted payload in bytes"
    },
    "collectedAt": {
      "type": "string",
      "description": "ISO timestamp when bundle was collected"
    },
    "logLineCount": {
      "type": "number",
      "description": "How many log lines are in the bundle"
    },
    "systemPlatform": {
      "type": "string",
      "description": "e.g. Linux-5.15, Darwin-23, Windows-10"
    }
  }
}
send_diagnostics annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
send_support_message
Advertised by the server during the last successful anonymous check.

Send an operator support message to the PCC team. Creates a new support thread or appends to the operator's existing open thread. Can optionally attach a diagnostic retrieval code (from send_diagnostics) so support staff can decrypt logs. Discord webhook fires on every new message, so expect fast response. Use this whenever the operator says something is broken, confusing, or not behaving as expected.

send_support_message input schema
{
  "type": "object",
  "required": [
    "kernelId",
    "message"
  ],
  "properties": {
    "message": {
      "type": "string",
      "description": "The support message text — describe the problem concretely"
    },
    "subject": {
      "type": "string",
      "description": "Optional thread subject (auto-generated from message if omitted)"
    },
    "kernelId": {
      "type": "string",
      "description": "Operator's kernel ID"
    },
    "kernelName": {
      "type": "string",
      "description": "Human-readable kernel name"
    },
    "systemInfo": {
      "type": "object",
      "description": "Optional system context (platform, nodeVersion, daemonRunning, gatewayReachable)"
    },
    "retrievalCode": {
      "type": "string",
      "description": "Optional diagnostic retrieval code to attach (from send_diagnostics)"
    }
  }
}
send_support_message annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
check_support_replies
Advertised by the server during the last successful anonymous check.
Advertised read-only

Check for admin replies on the operator's support threads. Call this periodically or when the operator asks 'did they respond yet?'. Returns all threads for this kernel and a hasUnreadReplies boolean indicating new admin messages.

check_support_replies input schema
{
  "type": "object",
  "required": [
    "kernelId"
  ],
  "properties": {
    "kernelId": {
      "type": "string",
      "description": "Operator's kernel ID"
    }
  }
}
check_support_replies annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
reply_to_support_thread
Advertised by the server during the last successful anonymous check.

Reply to an existing support thread. Use when the operator wants to add information to a thread started earlier. Needs the threadId from check_support_replies or the original send_support_message response.

reply_to_support_thread input schema
{
  "type": "object",
  "required": [
    "threadId",
    "message"
  ],
  "properties": {
    "message": {
      "type": "string",
      "description": "Reply message"
    },
    "threadId": {
      "type": "string",
      "description": "Thread ID to reply to"
    },
    "retrievalCode": {
      "type": "string",
      "description": "Optional diagnostic retrieval code to attach"
    }
  }
}
reply_to_support_thread annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
pcc_capture_challenge
Advertised by the server during the last successful anonymous check.

Issue a fresh block-anchored CaptureNonceChallenge for a job. The operator's device must render this nonce into the captured media (QR code, audio tone, etc.) before calling pcc_capture_upload. The nonce is derived from (challengeId, latest blockHash, workOutputRoot) so captures cannot be pre-computed. Returns challengeId, 64-char hex nonce, blockNumber, maxAgeSeconds (clamped to 120).

pcc_capture_challenge input schema
{
  "type": "object",
  "required": [
    "jobId",
    "declaredClass"
  ],
  "properties": {
    "jobId": {
      "type": "string",
      "description": "PCC job ID the capture belongs to"
    },
    "declaredClass": {
      "enum": [
        "CC0",
        "CC1",
        "CC2",
        "CC3",
        "CC4",
        "CC5"
      ],
      "type": "string",
      "description": "Capture class the operator plans to claim. Determines which gates the verifier will run."
    },
    "requestedTtlSeconds": {
      "type": "integer",
      "description": "Requested challenge lifetime in seconds. Clamped to 120 server-side."
    }
  }
}
pcc_capture_challenge annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
pcc_capture_upload
Advertised by the server during the last successful anonymous check.

Upload a capture (photo / video / audio / sensor clip) with its CaptureManifest for G1..G6 verification. Bytes are base64-encoded inline; optional base64 C2PA manifest bytes can be supplied for CC3+ claims. The server runs the 6-gate CaptureVerifier and persists a PASS/PARTIAL/FAIL verdict. Returns {verdictId, verdict, verifiedClass, gatesPassed, gatesFailed, warnings, anchorCandidate, captureHash, manifestHash}.

pcc_capture_upload input schema
{
  "type": "object",
  "required": [
    "manifest",
    "captureBytesBase64"
  ],
  "properties": {
    "jobId": {
      "type": "string",
      "description": "Job ID for telemetry binding. Falls back to manifest.jobId if omitted."
    },
    "manifest": {
      "type": "object",
      "description": "CaptureManifest — ALCOA+-ready metadata: class, declaredAt (ISO-8601), deviceFingerprint, mediaHash (sha256:<hex>), optional challengeId. See CaptureManifestSchema in @pcc/spec."
    },
    "operatorId": {
      "type": "string",
      "description": "Explicit operator ID. Falls back to the authenticated session userId."
    },
    "challengeId": {
      "type": "string",
      "description": "Challenge UUID to re-bind to the in-memory challenge cache (G3 freshness gate)."
    },
    "submittedAt": {
      "type": "integer",
      "description": "Client-submitted timestamp (epoch ms). Used in drift detection."
    },
    "visualNonceEcho": {
      "type": "string",
      "description": "The visual nonce value the operator rendered in-scene (QR payload, audio tone id, etc.)."
    },
    "c2paManifestBase64": {
      "type": "string",
      "description": "Optional base64-encoded C2PA manifest JUMBF bytes. Required when manifest.class >= CC3."
    },
    "captureBytesBase64": {
      "type": "string",
      "description": "Base64-encoded capture bytes (image / video / audio / sensor clip). Hash must match manifest.mediaHash."
    }
  }
}
pcc_capture_upload annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
pcc_capture_anchor
Advertised by the server during the last successful anonymous check.

Anchor a PASS + anchor-candidate capture verdict to CaptureClassRegistry on-chain (Base Sepolia by default). Rejects FAIL/PARTIAL verdicts. Idempotent — re-submitting the same verdictId returns the existing anchor row. Returns 202 {status:'deferred'} if CaptureClassRegistry is not yet deployed (CAPTURE_REGISTRY_ADDRESS unset).

pcc_capture_anchor input schema
{
  "type": "object",
  "required": [
    "verdictId"
  ],
  "properties": {
    "verdictId": {
      "type": "string",
      "description": "The verdictId returned by pcc_capture_upload. Must be a PASS verdict with anchorCandidate=true."
    }
  }
}
pcc_capture_anchor annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
pcc_capture_status
Advertised by the server during the last successful anonymous check.
Advertised read-only

Fetch the combined verdict + on-chain anchor view for a single capture. Mirrors the verifier's DB shape plus the anchor tx metadata (txHash, blockNumber, gasUsed, explorerUrl). Anchor is null if the verdict was never anchored.

pcc_capture_status input schema
{
  "type": "object",
  "required": [
    "verdictId"
  ],
  "properties": {
    "verdictId": {
      "type": "string",
      "description": "Capture verdict UUID (from pcc_capture_upload)."
    }
  }
}
pcc_capture_status annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
pcc_list_verdicts
Advertised by the server during the last successful anonymous check.
Advertised read-only

List recent capture verdicts, newest first. Optionally filter by jobId. Default limit is 50, capped at 200 server-side. Returns {verdicts, count, limit, jobId}.

pcc_list_verdicts input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "jobId": {
      "type": "string",
      "description": "Filter by job ID. Omit for all verdicts across jobs."
    },
    "limit": {
      "type": "integer",
      "description": "Maximum rows returned (default 50, hard cap 200)."
    }
  }
}
pcc_list_verdicts annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
pcc_capture_class_registry
Advertised by the server during the last successful anonymous check.
Advertised read-only

Look up a capture's on-chain anchor record in CaptureClassRegistry by its 32-byte captureHash. Returns the registry address, captureHash, and decoded anchor tuple (declaredClass, verifiedClass, manifestHash, submittedBy, jobId, challengeId, blockAnchor, capturedAt, attestationsRoot, attesterCount). onchain is null if the capture was never anchored. Returns 202 deferred when CaptureClassRegistry is not yet deployed.

pcc_capture_class_registry input schema
{
  "type": "object",
  "required": [
    "captureHash"
  ],
  "properties": {
    "captureHash": {
      "type": "string",
      "description": "Capture hash (32-byte). Accepts 0x-prefixed or unprefixed hex, or sha256:<hex> format. Padded server-side to bytes32."
    }
  }
}
pcc_capture_class_registry annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
pcc_verifier_health
Advertised by the server during the last successful anonymous check.
Advertised read-only

Report CaptureVerifier health: which adapters are loaded (c2pa, webauthn, appattest, playintegrity), their staleness status, in-memory challenge cache size, whether CaptureClassRegistry is deployed, and the active PCC_NETWORK. Use this to diagnose why a capture class is being rejected or degraded.

pcc_verifier_health input schema
{
  "type": "object",
  "required": [],
  "properties": {}
}
pcc_verifier_health annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
pcc_orchestrator_list_templates
Advertised by the server during the last successful anonymous check.
Advertised read-only

List the orchestrator templates the dashboard's chat console can drive. Each entry includes slug, display_name, description, produces_kind, capability_class (physical | digital), greeting, and api_base (the route prefix that serves the six session-driver routes for that template). Public — no auth required.

pcc_orchestrator_list_templates input schema
{
  "type": "object",
  "required": [],
  "properties": {}
}
pcc_orchestrator_list_templates annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
pcc_orchestrator_match_capabilities
Advertised by the server during the last successful anonymous check.

Heuristic template matcher. Pass a free-text description of what you want to onboard (e.g. 'I run a CNC milling shop' or 'I have a Postgres database with a GraphQL endpoint') and the matcher returns all templates ranked by keyword score with a 'reason' string per match. Public — no auth required.

pcc_orchestrator_match_capabilities input schema
{
  "type": "object",
  "required": [
    "input"
  ],
  "properties": {
    "input": {
      "type": "string",
      "description": "Free-text description of what you want to onboard."
    }
  }
}
pcc_orchestrator_match_capabilities annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
pcc_onboard_session_start
Advertised by the server during the last successful anonymous check.

Start a new physical-operator onboarding session. Returns a session_id used by every subsequent /api/onboard/* call. Auth-required.

pcc_onboard_session_start input schema
{
  "type": "object",
  "required": [
    "name"
  ],
  "properties": {
    "url": {
      "type": "string",
      "description": "Optional company website. If supplied, the orchestrator scrapes it on the next /scrape call."
    },
    "name": {
      "type": "string",
      "description": "Operator / company name (e.g. 'Oakland Titanium Mills')."
    }
  }
}
pcc_onboard_session_start annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
pcc_onboard_session_scrape
Advertised by the server during the last successful anonymous check.

Scrape a URL into the running physical-operator onboarding session. Triggers a stealth fetch + structured extraction (machines, hours, services, certifications). Returns a small JSON summary; full extraction is appended to the session's running profile and visible via /live-data. Auth-required.

pcc_onboard_session_scrape input schema
{
  "type": "object",
  "required": [
    "id",
    "url"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Session id returned by pcc_onboard_session_start."
    },
    "url": {
      "type": "string",
      "description": "URL to scrape (e.g. company About page)."
    }
  }
}
pcc_onboard_session_scrape annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
pcc_onboard_session_ingest_docs
Advertised by the server during the last successful anonymous check.

Queue documents (datasheets, SOPs, MOPs, certifications) for ingestion into a physical-operator onboarding session. Document URLs may be local:// for files dropped in the chat console or full https:// URLs. Auth-required.

pcc_onboard_session_ingest_docs input schema
{
  "type": "object",
  "required": [
    "id",
    "doc_urls"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Session id returned by pcc_onboard_session_start."
    },
    "doc_urls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "URLs of documents to ingest. Mix of local:// and https:// is fine."
    }
  }
}
pcc_onboard_session_ingest_docs annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
pcc_onboard_session_build_agent
Advertised by the server during the last successful anonymous check.

Finalise a physical-operator onboarding session: registers the operator on PCC, mints a wallet, writes the SEO mirror, returns the publication payload (capabilities, operator_id, discovery_url). Idempotent — safe to retry inside the same session_id. Auth-required.

pcc_onboard_session_build_agent input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Session id returned by pcc_onboard_session_start."
    }
  }
}
pcc_onboard_session_build_agent annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
pcc_onboard_session_status
Advertised by the server during the last successful anonymous check.
Advertised read-only

Coarse status snapshot for a physical-operator onboarding session: current state, 0-100 progress, scraped_count, ingested_count, last_event, publication payload (if built). Cheap — designed for polling from the chat header. Auth-required.

pcc_onboard_session_status input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Session id returned by pcc_onboard_session_start."
    }
  }
}
pcc_onboard_session_status annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
pcc_onboard_session_live_data
Advertised by the server during the last successful anonymous check.
Advertised read-only

Full event log for a physical-operator onboarding session — feeds the chat console's activity sidebar. Supports incremental polling via ?since=<unix-millis>. Returns the next cursor on every response. Auth-required.

pcc_onboard_session_live_data input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Session id returned by pcc_onboard_session_start."
    },
    "since": {
      "type": "number",
      "description": "Unix milliseconds cursor — returns only events with t > since. Use the 'cursor' field of the previous response for incremental polling."
    }
  }
}
pcc_onboard_session_live_data annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
pcc_contributor_register
Advertised by the server during the last successful anonymous check.

Register a contributor profile binding a wallet address to a role and a published RateSchedule. Body: address (0x40hex), role (10 ContributorRole values from ADR-12 §2.1 + legacy 'designer'), scheduleHash (0x64hex of a previously published schedule), optional ipId, metadataUri, contributorNftTokenId. Returns the persisted profile (composite id is address:role:tail). Idempotent on the composite id — re-posting the same (address, role, contributorNftTokenId) replaces the prior profile.

pcc_contributor_register input schema
{
  "type": "object",
  "required": [
    "address",
    "role",
    "scheduleHash"
  ],
  "properties": {
    "ipId": {
      "type": "string",
      "description": "Optional Story Protocol IP Asset ID"
    },
    "role": {
      "enum": [
        "operator",
        "verifier",
        "insurer",
        "integrator",
        "protocol-author",
        "model-author",
        "dataset-contributor",
        "curator",
        "assembler",
        "network-treasury",
        "designer"
      ],
      "type": "string",
      "description": "ContributorRole — 10 ADR-12 roles + deprecated 'designer'"
    },
    "address": {
      "type": "string",
      "description": "Wallet address (0x + 40 hex chars)"
    },
    "metadataUri": {
      "type": "string",
      "description": "Optional ipfs:// or https:// URI"
    },
    "scheduleHash": {
      "type": "string",
      "description": "0x + 64 hex sha256 of a published RateSchedule"
    },
    "contributorNftTokenId": {
      "type": "string",
      "description": "Optional ContributorNFT tokenId once minted on-chain"
    }
  }
}
pcc_contributor_register annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
pcc_contributor_list
Advertised by the server during the last successful anonymous check.
Advertised read-only

List all contributor profiles for an address across roles. Returns an array of {id, address, role, scheduleHash, ipId, contributorNftTokenId, metadataUri, registeredAt}. Returns empty array when no profiles exist for the address.

pcc_contributor_list input schema
{
  "type": "object",
  "required": [
    "address"
  ],
  "properties": {
    "address": {
      "type": "string",
      "description": "Wallet address (0x + 40 hex chars)"
    }
  }
}
pcc_contributor_list annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
pcc_schedule_publish
Advertised by the server during the last successful anonymous check.

Publish a sealed off-chain RateSchedule. Computes scheduleHash server-side via the canonical sha256-over-canonical-JSON algorithm (matching the on-chain RateScheduleRegistry.publish() invariant). Idempotent: re-publishing the same content returns alreadyPublished:true. Returns {scheduleHash, alreadyPublished}.

pcc_schedule_publish input schema
{
  "type": "object",
  "required": [
    "publishedBy",
    "schedule"
  ],
  "properties": {
    "schedule": {
      "type": "object",
      "required": [
        "version",
        "segments"
      ],
      "properties": {
        "notes": {
          "type": "string"
        },
        "version": {
          "type": "integer",
          "minimum": 1
        },
        "segments": {
          "type": "array",
          "items": {
            "type": "object"
          },
          "minItems": 1
        }
      },
      "description": "RateSchedule body — version, segments (constant/step/linear-decay/exponential-decay/adoption-indexed/piecewise-value), and optional notes"
    },
    "publishedBy": {
      "type": "string",
      "description": "Address that publishes (0x + 40 hex chars)"
    }
  }
}
pcc_schedule_publish annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
pcc_schedule_get
Advertised by the server during the last successful anonymous check.
Advertised read-only

Fetch a published RateSchedule by its content hash. Returns {schedule, publishedBy} with segments re-validated via Zod, or 404 if not found.

pcc_schedule_get input schema
{
  "type": "object",
  "required": [
    "scheduleHash"
  ],
  "properties": {
    "scheduleHash": {
      "type": "string",
      "description": "0x + 64 hex sha256 of the schedule"
    }
  }
}
pcc_schedule_get annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
pcc_schedule_evaluate
Advertised by the server during the last successful anonymous check.

Evaluate a published RateSchedule at a moment, returning the effective bps. Inputs: scheduleHash + now (unix seconds) + optional jobValueCents (piecewise-value) + optional jobsPerDay (adoption-indexed). Returns {scheduleHash, bps, segmentKind, segmentIndex}. segmentIndex=-1 + bps=0 when no segment covers the moment (silent gap).

pcc_schedule_evaluate input schema
{
  "type": "object",
  "required": [
    "scheduleHash",
    "now"
  ],
  "properties": {
    "now": {
      "type": "integer",
      "minimum": 0,
      "description": "Unix seconds at evaluation moment"
    },
    "jobsPerDay": {
      "type": "number",
      "minimum": 0,
      "description": "Rolling 24h job count (adoption-indexed segments)"
    },
    "scheduleHash": {
      "type": "string",
      "description": "0x + 64 hex schedule hash"
    },
    "jobValueCents": {
      "type": "integer",
      "minimum": 0,
      "description": "Job value in cents (piecewise-value segments)"
    }
  }
}
pcc_schedule_evaluate annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
pcc_training_manifest_set
Advertised by the server during the last successful anonymous check.

Set (insert-or-replace) the TrainingManifest for a model IP — the dataset weight map the LicensingEngine walks when distributing payouts to a 'model-author' entry in a CompositionManifest. Dataset weightBps must sum to ≤ 10000 (gateway accepts partial mixes; on-chain enforces exact 10000). Returns {modelIpId, manifestHash}.

pcc_training_manifest_set input schema
{
  "type": "object",
  "required": [
    "modelIpId",
    "datasetWeights"
  ],
  "properties": {
    "modelIpId": {
      "type": "string",
      "description": "Story IP Asset ID for the model"
    },
    "baseModelIpId": {
      "type": "string",
      "description": "Optional parent ModelNFT IP if this was fine-tuned"
    },
    "datasetWeights": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "datasetIpId",
          "weightBps"
        ],
        "properties": {
          "weightBps": {
            "type": "integer",
            "maximum": 10000,
            "minimum": 0
          },
          "datasetIpId": {
            "type": "string"
          },
          "dataPointCount": {
            "type": "integer",
            "minimum": 0
          }
        }
      },
      "minItems": 1,
      "description": "DatasetIP entries with weightBps (sum ≤ 10000)"
    },
    "methodologyHash": {
      "type": "string",
      "description": "Optional 0x + 64 hex reproducibility hash"
    }
  }
}
pcc_training_manifest_set annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
pcc_training_manifest_get
Advertised by the server during the last successful anonymous check.
Advertised read-only

Fetch the TrainingManifest for a model IP. Returns the parsed datasets array + manifestHash + createdAt, or 404 if no manifest has been set.

pcc_training_manifest_get input schema
{
  "type": "object",
  "required": [
    "modelIpId"
  ],
  "properties": {
    "modelIpId": {
      "type": "string",
      "description": "Story IP Asset ID for the model"
    }
  }
}
pcc_training_manifest_get annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
pcc_trilobio_build_config
Advertised by the server during the last successful anonymous check.

Generate a complete KERNEL_CONFIG JSON for a Trilobio (tcode-api) fleet controller. Wraps `buildTrilobioConfig()` from the @pcc/trilobio npm package. Returns a TrilobioKernelConfig with sensible defaults (pollIntervalMs=3000, maxScriptTimeoutSec=3600, allowArbitraryScripts=false). The result can be passed to `pcc-node start` via the KERNEL_CONFIG env var, or handed to setup_generate_config / setup_register_device for direct API-driven registration. Note: this is a TypeScript package helper (no HTTP call). For programmatic use, `import { buildTrilobioConfig } from "@pcc/trilobio"`.

pcc_trilobio_build_config input schema
{
  "type": "object",
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "description": "Fleet-controller URL on the LAN (host[:port], no trailing slash, no path) — e.g. http://192.168.1.50"
    },
    "apiKey": {
      "type": "string",
      "description": "Trilobio fleet-controller API key (from the trilobot admin UI). Either apiKey OR username+password is required unless mockMode=true."
    },
    "deviceId": {
      "type": "string",
      "description": "Logical device ID within the kernel (default: trilobio-fleet-01)"
    },
    "kernelId": {
      "type": "string",
      "description": "Kernel ID this device belongs to (auto-generated as kernel_trilobio_<timestamp> if omitted)"
    },
    "mockMode": {
      "type": "boolean",
      "description": "Bypass real HTTP and simulate runs. Use for CI / floor demos. Default: false."
    },
    "password": {
      "type": "string",
      "description": "Fleet-controller account password (basic-auth mode only)"
    },
    "username": {
      "type": "string",
      "description": "Fleet-controller account username (basic-auth mode only)"
    },
    "pollIntervalMs": {
      "type": "number",
      "description": "Poll interval in ms for run status (range 500-60000). Default: 3000."
    },
    "tcodeApiVersion": {
      "type": "string",
      "description": "Pinned tcode-api version on the fleet controller. Format: 'latest' or semver (e.g. 1.25.1). Default: latest. Surfaces in evidence bundles for reproducibility."
    },
    "mockRunDurationMs": {
      "type": "number",
      "description": "Mock-mode simulated run duration in ms. Default: 2000."
    },
    "maxScriptTimeoutSec": {
      "type": "number",
      "description": "Maximum allowed wall-clock seconds for a single tcode script (range 30-86400). Default: 3600."
    },
    "allowArbitraryScripts": {
      "type": "boolean",
      "description": "Permit customer-supplied tcode-api Python scripts (true) or only curated protocol IDs (false). Default: false. Set true only for trusted-counterparty deployments."
    }
  }
}
pcc_trilobio_build_config annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
pcc_trilobio_validate_options
Advertised by the server during the last successful anonymous check.

Sanity-check operator-supplied Trilobio options before generating a KERNEL_CONFIG. Wraps `validateTrilobioOptions()` from @pcc/trilobio. Catches the common mistakes (malformed URL, missing creds, out-of-range timeouts, invalid tcodeApiVersion semver) before they hit the gateway or the device. Returns { valid: boolean, errors: string[], warnings?: string[] }. Note: this is a TypeScript package helper (no HTTP call); for programmatic use, `import { validateTrilobioOptions } from "@pcc/trilobio"`.

pcc_trilobio_validate_options input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "url": {
      "type": "string",
      "description": "Fleet-controller URL"
    },
    "apiKey": {
      "type": "string",
      "description": "Fleet-controller API key"
    },
    "deviceId": {
      "type": "string"
    },
    "kernelId": {
      "type": "string"
    },
    "mockMode": {
      "type": "boolean"
    },
    "password": {
      "type": "string",
      "description": "Basic-auth password"
    },
    "username": {
      "type": "string",
      "description": "Basic-auth username"
    },
    "pollIntervalMs": {
      "type": "number"
    },
    "tcodeApiVersion": {
      "type": "string",
      "description": "'latest' or semver string"
    },
    "mockRunDurationMs": {
      "type": "number"
    },
    "maxScriptTimeoutSec": {
      "type": "number"
    },
    "allowArbitraryScripts": {
      "type": "boolean"
    }
  }
}
pcc_trilobio_validate_options annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
pcc_trilobio_validate_script
Advertised by the server during the last successful anonymous check.

Quick lint of a tcode-api Python script before submission to a Trilobio fleet controller. Wraps `validateTcodeScript()` from @pcc/trilobio. Surface check only — NOT a sandbox or sanitizer. Looks for: imports of `tcode_api` (presence required), obviously dangerous statements (subprocess, os.system, eval, exec, __import__, socket, urllib, requests, file writes), empty scripts, and missing top-level tcode commands. Returns { valid: boolean, errors: string[], warnings?: string[] }. Operators with `allowArbitraryScripts=true` should treat results as a hint — the fleet controller is the source of truth on safety. Note: TypeScript package helper (no HTTP call); for programmatic use, `import { validateTcodeScript } from "@pcc/trilobio"`.

pcc_trilobio_validate_script input schema
{
  "type": "object",
  "required": [
    "source"
  ],
  "properties": {
    "source": {
      "type": "string",
      "description": "Full Python source of the tcode-api script to lint"
    }
  }
}
pcc_trilobio_validate_script annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
pcc_trilobio_capability_template
Advertised by the server during the last successful anonymous check.
Advertised read-only

Return the `TRILOBIO_CAPABILITY` constant from @pcc/trilobio — a default capability template for a Trilobio fleet controller. Pass to POST /api/capabilities to publish a baseline liquid-handling capability for a kernel hosting a trilobot. Operators can extend the `materials` and `capabilities` arrays to advertise instrument-specific features (custom labware libraries, sample types). Notable: includes `tcode-script-execution` as an advertised capability, which is unique to Trilobio — operators who set `allowArbitraryScripts: true` can accept jobs that ship a full tcode-api Python script as the protocol payload. Note: TypeScript package helper (no HTTP call); for programmatic use, `import { TRILOBIO_CAPABILITY } from "@pcc/trilobio"`.

pcc_trilobio_capability_template input schema
{
  "type": "object",
  "required": [],
  "properties": {}
}
pcc_trilobio_capability_template annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
attach_operator_channel
Advertised by the server during the last successful anonymous check.

Attach a notification/dispatch channel to an operator so PCC knows how to ping them when a job lands. The operator's onboarding agent calls this AFTER the conversation that produced the channel record. Transport is a small stable enum (webhook|email|sms|voice|push|mqtt|file|manual) — vendor specifics live in the free-form `describe` field, written by the operator's agent. PCC the substrate stays neutral. Returns the channel record with a generated id.

attach_operator_channel input schema
{
  "type": "object",
  "required": [
    "slug",
    "label",
    "transport",
    "describe"
  ],
  "properties": {
    "slug": {
      "type": "string",
      "description": "Operator slug (typically the operator's address or unique identifier)."
    },
    "label": {
      "type": "string",
      "description": "Short human label shown to the operator and in admin UIs: 'Front counter printer', 'Owner's phone'."
    },
    "enabled": {
      "type": "boolean",
      "description": "Whether the channel is live (defaults to true)."
    },
    "describe": {
      "type": "string",
      "description": "Plain-English instructions for how PCC should talk to whatever is on the other end. Written by the operator's onboarding agent. Required, ≥4 chars. Example: 'POST JSON with keys order_id, line_items[], deadline_iso. I will POST back {order_id, status} to your reply URL.'"
    },
    "endpoint": {
      "type": "object",
      "description": "Transport-specific routing payload. webhook→{url}, email→{address}, sms/voice→{phoneE164}, push→{token,platform}, mqtt→{brokerUrl,topic}, file→{scheme,path}, manual→{}."
    },
    "direction": {
      "enum": [
        "out",
        "in-out",
        "in"
      ],
      "type": "string",
      "description": "out=PCC pushes only; in-out=operator's system also replies; in=operator pushes unsolicited."
    },
    "transport": {
      "enum": [
        "webhook",
        "email",
        "sms",
        "voice",
        "push",
        "mqtt",
        "file",
        "manual"
      ],
      "type": "string",
      "description": "Which wire does the message go over. `manual` = no machine endpoint (dashboard-only)."
    },
    "credentialRef": {
      "type": "string",
      "description": "Reference to a secret in the credential vault (not the secret itself). PCC resolves it at dispatch time."
    },
    "replyContract": {
      "type": "string",
      "description": "Optional operator-authored contract describing how the operator's system will respond to evidence requests, status pings, etc."
    }
  }
}
attach_operator_channel annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
list_operator_channels
Advertised by the server during the last successful anonymous check.
Advertised read-only

List every channel attached to an operator. Returns the full channel records (id, transport, direction, endpoint, describe, enabled flags). Useful for an operator's onboarding agent to confirm what is wired up, and for status dashboards.

list_operator_channels input schema
{
  "type": "object",
  "required": [
    "slug"
  ],
  "properties": {
    "slug": {
      "type": "string",
      "description": "Operator slug."
    }
  }
}
list_operator_channels annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
update_operator_channel
Advertised by the server during the last successful anonymous check.

Update an existing channel — toggle enabled, rewrite the describe contract, change the endpoint payload, etc. Merges into the existing record. The operator slug, id, and createdAt are immutable.

update_operator_channel input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Channel id (returned from attach_operator_channel)."
    },
    "label": {
      "type": "string"
    },
    "enabled": {
      "type": "boolean"
    },
    "describe": {
      "type": "string"
    },
    "endpoint": {
      "type": "object"
    },
    "direction": {
      "enum": [
        "out",
        "in-out",
        "in"
      ],
      "type": "string"
    },
    "credentialRef": {
      "type": "string"
    },
    "replyContract": {
      "type": "string"
    }
  }
}
update_operator_channel annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
delete_operator_channel
Advertised by the server during the last successful anonymous check.
Advertised destructive

Remove a channel from an operator. Future jobs will not dispatch to it. Use update_operator_channel with enabled=false to silence temporarily without losing the recipe in `describe`.

delete_operator_channel input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Channel id."
    }
  }
}
delete_operator_channel annotations
{
  "readOnlyHint": false,
  "destructiveHint": true
}
test_operator_channels
Advertised by the server during the last successful anonymous check.

Fire a synthetic job at every enabled channel for an operator so the onboarding agent (and the human watching) can confirm the integration end-to-end before a real job lands. Returns per-channel dispatch results (delivered, ref, warnings).

test_operator_channels input schema
{
  "type": "object",
  "required": [
    "slug"
  ],
  "properties": {
    "slug": {
      "type": "string",
      "description": "Operator slug."
    }
  }
}
test_operator_channels annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
suggest_csd_templates
Advertised by the server during the last successful anonymous check.
Advertised read-only

Bidirectional onboarding: the registry talks back. Describe in plain English what you are trying to set up — 'wood-fired pizza shop in SF', 'Opentrons OT-2 liquid handler', 'same-day SF courier' — and the registry returns N candidate Capability StructureDefinition (CSD) templates ranked by keyword-overlap relevance (name×3, tags×2, description×1; tie-break on usage). Empty query falls back to popularity-ordered top picks. After picking one, pass the chosen type to pcc-author-integration. Score-zero results are dropped.

suggest_csd_templates input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "q": {
      "type": "string",
      "description": "Plain-English description of the capability the user is trying to set up. Optional — empty falls back to popularity."
    },
    "kind": {
      "enum": [
        "base",
        "profile",
        "extension",
        "workflow"
      ],
      "type": "string",
      "description": "Filter by CSD kind."
    },
    "limit": {
      "type": "integer",
      "maximum": 20,
      "minimum": 1,
      "description": "Max results (1..20, default 5)."
    }
  }
}
suggest_csd_templates annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
get_popular_csd_templates
Advertised by the server during the last successful anonymous check.
Advertised read-only

Return CSDs sorted by adoption (usage-count descending). Useful for first-time operators who want to see what kind of capabilities others are publishing. Each entry includes the CSD record plus usage attribution: count, recent adopters (deduped, capped at 50), and lastUsedAt.

get_popular_csd_templates input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "limit": {
      "type": "integer",
      "maximum": 50,
      "minimum": 1,
      "description": "Max results (1..50, default 10)."
    }
  }
}
get_popular_csd_templates annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
get_operator_status
Advertised by the server during the last successful anonymous check.
Advertised read-only

Four-slot substrate view for an operator: kernels, capabilities (with sla + availability), notification channels, and the per-kernel A2A agent-card URLs. Returns totals and a `missing` list naming any of the four onboarding slots that are still empty. Use this from an onboarding agent's wrap-up step to confirm 'are all four slots wired before I go live?' status is `ready` | `partial` | `unconfigured`. Public — operator slug is non-secret and the response carries no credentials (channel `credentialRef` values are vault references, not secrets).

get_operator_status input schema
{
  "type": "object",
  "required": [
    "slug"
  ],
  "properties": {
    "slug": {
      "type": "string",
      "description": "Operator slug — typically the operator's wallet address used as `operatorAddress` on their kernels."
    }
  }
}
get_operator_status annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
propose_composition
Advertised by the server during the last successful anonymous check.

Propose a composition — a sequenced DAG of capability instances to satisfy a multi-step outcome under a budget + assurance tier. Accepts either a flat `steps` list or an outcome chain. Returns a candidate plan ranked by `optimizeFor` (price | speed | quality) with per-step assignments. The composition is persisted for ~30 minutes (proposed status) and can be executed once via execute_composition.

propose_composition input schema
{
  "type": "object",
  "required": [
    "outcomeType",
    "budgetUSD",
    "minAssuranceTier"
  ],
  "properties": {
    "steps": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Ordered list of capability types this composition needs (1..20). Use this OR `outcomeChain`."
    },
    "location": {
      "type": "object",
      "description": "Geographic constraint (lat/lng + radius, or country, etc)."
    },
    "budgetUSD": {
      "type": "number",
      "description": "Total budget the user is willing to spend across all steps."
    },
    "requester": {
      "type": "object",
      "description": "{agentId, did?} — the agent submitting the request."
    },
    "description": {
      "type": "string",
      "description": "Free-form natural-language description (≤4000 chars)."
    },
    "optimizeFor": {
      "enum": [
        "price",
        "speed",
        "quality"
      ],
      "type": "string",
      "description": "Ranking objective (default `price`)."
    },
    "outcomeType": {
      "type": "string",
      "description": "High-level outcome label, ≤120 chars. Example: 'desk-robot-prototype'."
    },
    "outcomeChain": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Alternative to `steps`: chain of named sub-outcomes. The planner expands each into capability types."
    },
    "minAssuranceTier": {
      "enum": [
        0,
        1,
        2,
        3
      ],
      "type": "integer",
      "description": "Minimum acceptable assurance tier on every step."
    }
  }
}
propose_composition annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
get_composition
Advertised by the server during the last successful anonymous check.
Advertised read-only

Retrieve a previously-proposed composition by id. Returns 404 if unknown, 410 if the 30-minute proposal window has expired. Use this to inspect a plan before executing, or to recover a plan id after a restart.

get_composition input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Composition id (returned from propose_composition)."
    }
  }
}
get_composition annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
execute_composition
Advertised by the server during the last successful anonymous check.

Commit a proposed composition: drives the DAG through the workflow engine, each step records a reputation outcome, the composition's reputation is finalized when the run ends. When `PCC_COMPOSE_EXECUTE_REAL=true` is set on the gateway, steps submit real jobs via JobFacade and the workflow run is durable (@pcc/workflow). When the flag is off, the NOOP runner returns synthetic success — useful in dev/test. Re-executing an already-run composition replays the stored result (idempotent — reputation deltas are applied exactly once).

execute_composition input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Composition id from propose_composition. Must be in `proposed` status and not expired."
    },
    "idempotencyKey": {
      "type": "string",
      "description": "Optional caller-supplied key (≤120 chars) to dedupe execute calls."
    }
  }
}
execute_composition annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
pcc_report
Advertised by the server during the last successful anonymous check.

Report a bug, friction, or dead-end you hit while using PCC. Call this the moment you get stuck and cannot recover: a 5xx (its response carries a `report_hint` with pre-filled fields), a 4xx you cannot fix from its message, the same step failing twice, or a misleading tool/description. PUBLIC — works before you provision an API key (cold agents are exactly who this is for). Persisted durably and reviewed by the PCC team. Report each distinct failure ONCE; never include an API key, token, or wallet secret. Rate-limited per IP.

pcc_report input schema
{
  "type": "object",
  "required": [
    "summary"
  ],
  "properties": {
    "logs": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "note": {
            "type": "string",
            "maxLength": 500,
            "description": "One line on what happened at this step."
          },
          "path": {
            "type": "string",
            "description": "Route, e.g. /api/build/price."
          },
          "step": {
            "type": "integer",
            "description": "1-based step index."
          },
          "method": {
            "type": "string",
            "description": "HTTP method, e.g. POST."
          },
          "status": {
            "type": "integer",
            "description": "HTTP status you got."
          }
        }
      },
      "maxItems": 20,
      "description": "Optional but valuable: your last few steps as SUMMARIES (never full request/response bodies) — the sequence that led to the failure. Secrets are never allowed in a note."
    },
    "type": {
      "enum": [
        "bug",
        "friction",
        "idea"
      ],
      "type": "string",
      "description": "bug = something is broken/wrong; friction = it works but was confusing/harder than it should be; idea = a suggestion or missing capability. Defaults to bug."
    },
    "detail": {
      "type": "string",
      "maxLength": 20000,
      "description": "Multi-line context: the full error body, what you tried, what you expected. Optional but recommended."
    },
    "method": {
      "type": "string",
      "description": "The HTTP method you used. From `report_hint.send.method`. Example: 'POST'."
    },
    "status": {
      "type": "integer",
      "description": "The HTTP status you got. From `report_hint.send.status`. Example: 500."
    },
    "agentId": {
      "type": "string",
      "description": "Which model/agent you are. Example: 'claude', 'gpt-4o', 'gemini'. Optional."
    },
    "summary": {
      "type": "string",
      "maxLength": 5000,
      "minLength": 4,
      "description": "1-line description of what you were doing and what went wrong. Example: 'POST /api/build/contract returned 500 with no hint about the missing field.'"
    },
    "traceId": {
      "type": "string",
      "description": "Your journey ID — returned by provision_api_key and on every response as `x-pcc-trace-id` (also in a 5xx `report_hint.traceId`). Lets PCC replay your full run."
    },
    "endpoint": {
      "type": "string",
      "description": "The route you were on when you got stuck. From a 5xx `report_hint.send.endpoint`. Example: '/api/build/contract'."
    },
    "severity": {
      "enum": [
        "low",
        "medium",
        "high",
        "critical"
      ],
      "type": "string",
      "description": "How badly this blocked you. Optional."
    },
    "errorCode": {
      "type": "string",
      "description": "The machine error code from the response body, if any. From `report_hint.send.errorCode`."
    }
  }
}
pcc_report annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
pcc_report_attempt
Advertised by the server during the last successful anonymous check.

Report one phase of an onboarding attempt, success or failure (attempt reporting contract v1). Send one report when each runbook phase ends, and a final report with phase "session" (with the `phases` roll-up), also when you stop early (outcome abandoned or budget_stop). Generate `sessionId` (UUID v4) once per attempt and increment `seq` with every report; a retried report with the same sessionId and seq is collapsed. Never guess: send null for what you do not know (tokens: source "unknown"). Redact keys, tokens, emails and wallet secrets before sending. Always include `summary`: contract v1 makes it optional, but until the gateway's attempt support lands it is the only field kept, and today's server refuses a report without it. The schema is contract v1: an unknown phase, outcome or harness name is accepted (the server stores it as other or unknown, with the raw value as a label), and budget-stop is a spelling of budget_stop. Never send a transcript; consent.transcript stays false until the operator decides. Unauthenticated.

pcc_report_attempt input schema
{
  "if": {
    "properties": {
      "phase": {
        "not": {
          "const": "session"
        }
      }
    }
  },
  "then": {
    "not": {
      "required": [
        "phases"
      ]
    }
  },
  "type": "object",
  "required": [
    "kind",
    "sessionId",
    "seq",
    "phase",
    "outcome"
  ],
  "properties": {
    "env": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "os": {
          "type": [
            "string",
            "null"
          ],
          "maxLength": 64
        },
        "python": {
          "type": [
            "string",
            "null"
          ],
          "maxLength": 64
        },
        "pccNode": {
          "type": [
            "string",
            "null"
          ],
          "maxLength": 64
        }
      },
      "additionalProperties": false
    },
    "ids": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "jobId": {
          "type": [
            "string",
            "null"
          ],
          "pattern": "^[A-Za-z0-9:._/-]+$",
          "maxLength": 200
        },
        "kitId": {
          "type": [
            "string",
            "null"
          ],
          "pattern": "^[A-Za-z0-9:._/-]+$",
          "maxLength": 200
        },
        "kernelId": {
          "type": [
            "string",
            "null"
          ],
          "pattern": "^[A-Za-z0-9:._/-]+$",
          "maxLength": 200
        },
        "capabilityId": {
          "type": [
            "string",
            "null"
          ],
          "pattern": "^[A-Za-z0-9:._/-]+$",
          "maxLength": 200
        }
      },
      "description": "Only the ids known so far: each at most 200 characters of [A-Za-z0-9:._/-], or null",
      "additionalProperties": false
    },
    "seq": {
      "type": "integer",
      "maximum": 10000,
      "minimum": 0,
      "description": "Per-session report counter"
    },
    "kind": {
      "enum": [
        "attempt"
      ],
      "type": "string"
    },
    "logs": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "properties": {
          "note": {
            "type": [
              "string",
              "null"
            ]
          },
          "path": {
            "type": [
              "string",
              "null"
            ]
          },
          "step": {
            "type": [
              "integer",
              "null"
            ],
            "minimum": 0
          },
          "method": {
            "type": [
              "string",
              "null"
            ]
          },
          "status": {
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "additionalProperties": false
      },
      "maxItems": 20,
      "description": "The phase's step timeline, summaries only"
    },
    "pack": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "digest": {
          "type": [
            "string",
            "null"
          ],
          "pattern": "^sha256:[0-9a-f]{64}$",
          "description": "sha256:<64 hex> of this package's bytes"
        },
        "version": {
          "type": [
            "string",
            "null"
          ],
          "maxLength": 64
        }
      },
      "additionalProperties": false
    },
    "phase": {
      "anyOf": [
        {
          "enum": [
            "prerequisites",
            "identify",
            "intake",
            "research",
            "build",
            "register",
            "verify",
            "operate",
            "publish",
            "session"
          ],
          "type": "string"
        },
        {
          "type": "string",
          "minLength": 1,
          "description": "Any other value: the server stores \"other\", with the raw value (clamped to 64 characters) as phaseLabel."
        }
      ]
    },
    "detail": {
      "type": [
        "string",
        "null"
      ],
      "maxLength": 20000
    },
    "device": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "make": {
          "type": [
            "string",
            "null"
          ],
          "maxLength": 128
        },
        "class": {
          "enum": [
            "lab_instrument",
            "robot",
            "printer",
            "process_agent",
            "other",
            null
          ],
          "type": [
            "string",
            "null"
          ]
        },
        "model": {
          "type": [
            "string",
            "null"
          ],
          "maxLength": 128
        }
      },
      "additionalProperties": false
    },
    "phases": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "object",
        "required": [
          "phase",
          "outcome"
        ],
        "properties": {
          "phase": {
            "anyOf": [
              {
                "enum": [
                  "prerequisites",
                  "identify",
                  "intake",
                  "research",
                  "build",
                  "register",
                  "verify",
                  "operate",
                  "publish",
                  "session"
                ],
                "type": "string"
              },
              {
                "type": "string",
                "minLength": 1,
                "description": "Any other value: the server stores \"other\", with the raw value (clamped to 64 characters) as phaseLabel."
              },
              {
                "type": "null"
              }
            ]
          },
          "outcome": {
            "anyOf": [
              {
                "enum": [
                  "ok",
                  "failed",
                  "blocked",
                  "skipped",
                  "budget_stop",
                  "abandoned",
                  "in_progress",
                  "budget-stop"
                ],
                "type": "string"
              },
              {
                "type": "string",
                "minLength": 1,
                "description": "Any other value: the server stores \"unknown\", with the raw value as outcomeLabel."
              },
              {
                "type": "null"
              }
            ]
          },
          "durationMs": {
            "type": [
              "integer",
              "null"
            ],
            "maximum": 86400000,
            "minimum": 0
          }
        },
        "additionalProperties": false
      },
      "maxItems": 16,
      "description": "Only on phase \"session\": the roll-up"
    },
    "tokens": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "in": {
          "type": [
            "integer",
            "null"
          ],
          "minimum": 0
        },
        "out": {
          "type": [
            "integer",
            "null"
          ],
          "minimum": 0
        },
        "source": {
          "enum": [
            "self_reported",
            "harness",
            "metered",
            "unknown",
            null
          ],
          "type": [
            "string",
            "null"
          ]
        }
      },
      "description": "Never guess: send null with source \"unknown\"",
      "additionalProperties": false
    },
    "consent": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "transcript": {
          "enum": [
            false
          ],
          "type": "boolean"
        }
      },
      "additionalProperties": false
    },
    "harness": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "name": {
          "anyOf": [
            {
              "enum": [
                "claude-code",
                "codex",
                "pcc-hosted",
                "other"
              ],
              "type": "string"
            },
            {
              "type": "string",
              "minLength": 1,
              "description": "Any other name: the server stores \"other\", with the raw name as label."
            },
            {
              "type": "null"
            }
          ]
        },
        "label": {
          "type": [
            "string",
            "null"
          ],
          "maxLength": 128
        },
        "model": {
          "type": [
            "string",
            "null"
          ],
          "maxLength": 128
        },
        "version": {
          "type": [
            "string",
            "null"
          ],
          "maxLength": 128
        }
      },
      "additionalProperties": false
    },
    "outcome": {
      "anyOf": [
        {
          "enum": [
            "ok",
            "failed",
            "blocked",
            "skipped",
            "budget_stop",
            "abandoned",
            "in_progress",
            "budget-stop"
          ],
          "type": "string"
        },
        {
          "type": "string",
          "minLength": 1,
          "description": "Any other value: the server stores \"unknown\", with the raw value as outcomeLabel."
        }
      ]
    },
    "summary": {
      "type": [
        "string",
        "null"
      ],
      "maxLength": 5000,
      "description": "One line, e.g. \"register: failed, POST /api/kernels 400\""
    },
    "traceId": {
      "type": [
        "string",
        "null"
      ],
      "maxLength": 200,
      "description": "x-pcc-trace-id of the last PCC call"
    },
    "contract": {
      "enum": [
        1
      ],
      "type": "integer"
    },
    "proposal": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "path": {
          "type": [
            "string",
            "null"
          ],
          "pattern": "^[^?]*$",
          "maxLength": 2000,
          "description": "No query string"
        },
        "text": {
          "type": [
            "string",
            "null"
          ],
          "maxLength": 5000
        },
        "target": {
          "enum": [
            "runbook",
            "agent-package",
            "docs",
            "code",
            "process",
            "other",
            null
          ],
          "type": [
            "string",
            "null"
          ]
        }
      },
      "description": "One improvement idea",
      "additionalProperties": false
    },
    "sessionId": {
      "type": "string",
      "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-4[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$",
      "description": "UUID v4, generated once at the start of the attempt"
    },
    "durationMs": {
      "type": [
        "integer",
        "null"
      ],
      "maximum": 86400000,
      "minimum": 0,
      "description": "The phase's wall time; on session, the whole attempt"
    }
  },
  "additionalProperties": false
}
pcc_report_attempt annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
save_dashboard
Advertised by the server during the last successful anonymous check.

Save a generated dashboard to the network so the user gets a live, shareable URL: https://capability.network/a/<slug>. Pass a `manifest` — a small declarative DashboardManifest (windows + live-data bindings + actions) conforming to the schema at https://capability.network/ui-kit/v1/manifest.schema.json; the shipped pcc-ui kit renders it identically everywhere (you compose the manifest, the kit renders it — never hand-rolled HTML). WHEN to call this: only when the task needs a surface to watch/approve/compare/reuse (a live job, a value chain, a settlement trail, a recurring order) — never for a one-line answer. RECALL FIRST: call search_dashboards before generating; reload or fork a match instead of duplicating. The manifest MUST NOT contain an API key (a shared artifact travels with its contents — the network rejects one that does). Returns the stored artifact incl. its slug. Defaults visibility to 'unlisted' (link-shareable, not listed).

save_dashboard input schema
{
  "type": "object",
  "required": [
    "name",
    "manifest"
  ],
  "properties": {
    "name": {
      "type": "string",
      "description": "Short human name for the dashboard, e.g. 'Watch my pizza + courier'. Used to mint the slug."
    },
    "manifest": {
      "type": "object",
      "description": "The DashboardManifest (2-6KB JSON) conforming to https://capability.network/ui-kit/v1/manifest.schema.json. Required top-level keys: `csd` (must be 'pcc://artifacts/dashboard/v1'), `title`, and `sections[]` (each section has `windows[]`). Window kinds: note, metric, capability, list, form, run, approval, receipt, chain, actions. Bindings point at live routes you already use (/api/jobs/:id, /api/escrow/:id, /sse/stream/job/:id). No API key anywhere in the manifest."
    },
    "visibility": {
      "enum": [
        "private",
        "unlisted",
        "public"
      ],
      "type": "string",
      "description": "Who can load it. Default 'unlisted' (anyone with the link; not in listings). 'public' appears in search_dashboards; 'private' is owner-only."
    },
    "composeRefs": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "Optional pinned, re-plannable ComposeRequest objects (value chains). Pin the request, never a compositionId (those expire in 30 min)."
    },
    "description": {
      "type": "string",
      "description": "One-line description of what the dashboard shows."
    },
    "renderedCid": {
      "type": "string",
      "description": "Optional CID of a rendered-HTML export saved via /api/storage."
    },
    "capabilityTypes": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Capability types this dashboard is about, e.g. ['pizza.order','courier.dispatch']. This is the discovery join — it's how search_dashboards finds this artifact later."
    }
  }
}
save_dashboard output schema
{
  "type": "object",
  "required": [
    "manifest"
  ],
  "properties": {
    "name": {
      "type": "string"
    },
    "slug": {
      "type": "string"
    },
    "manifest": {
      "type": "object"
    }
  },
  "additionalProperties": false
}
save_dashboard annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
get_dashboard
Advertised by the server during the last successful anonymous check.
Advertised read-only

Recall a saved dashboard by its id or slug. Returns the full artifact (manifest + metadata). Use this to reload a dashboard the user asks for again ('open my pizza dashboard') instead of regenerating it — a saved dashboard reloads with zero regeneration. Public for public/unlisted artifacts; owner-only for private ones. Increments the load counter (a popularity signal).

get_dashboard input schema
{
  "type": "object",
  "required": [
    "idOrSlug"
  ],
  "properties": {
    "idOrSlug": {
      "type": "string",
      "description": "The artifact id (ua_...) or its slug (e.g. 'watch-my-pizza-8k3f', the tail of the /a/<slug> URL)."
    }
  }
}
get_dashboard output schema
{
  "type": "object",
  "required": [
    "manifest"
  ],
  "properties": {
    "name": {
      "type": "string"
    },
    "slug": {
      "type": "string"
    },
    "manifest": {
      "type": "object"
    }
  },
  "additionalProperties": false
}
get_dashboard annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
search_dashboards
Advertised by the server during the last successful anonymous check.
Advertised read-only

Discover existing public dashboards before you generate a new one (recall-first — the library accrues; adopt > extend > build for UIs too). Filter by `capabilityType` (e.g. 'pizza.order'), free-text `q` over name/description/types, and `sort` by popularity or recency. Returns { entries, total, offset, limit }. Only public artifacts are listed; unlisted ones load by slug via get_dashboard but never appear here.

search_dashboards input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "q": {
      "type": "string",
      "description": "Free-text search over name, description, and capability types."
    },
    "sort": {
      "enum": [
        "popular",
        "recent"
      ],
      "type": "string",
      "description": "Ranking: 'popular' (by use+load+fork counts) or 'recent' (default)."
    },
    "limit": {
      "type": "integer",
      "maximum": 100,
      "minimum": 1,
      "description": "Max results (1..100, default 20)."
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "description": "Pagination offset (default 0)."
    },
    "capabilityType": {
      "type": "string",
      "description": "Filter to dashboards tagged with this capability type, e.g. 'pizza.order'."
    }
  }
}
search_dashboards output schema
{
  "type": "object",
  "required": [
    "entries"
  ],
  "properties": {
    "total": {
      "type": "number"
    },
    "entries": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "title": {
            "type": "string"
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false
}
search_dashboards annotations
{
  "readOnlyHint": true,
  "destructiveHint": false
}
fork_dashboard
Advertised by the server during the last successful anonymous check.

Fork an existing dashboard into a new artifact you own, preserving lineage back to the original (the social remix verb). Use this to adapt a popular dashboard rather than build from scratch — e.g. fork a 'watch pizza' dashboard and raise the budget or add a receipt window via update_dashboard. Increments the source's fork counter. You can fork any public/unlisted artifact, or a private one you own.

fork_dashboard input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "The id (ua_...) of the artifact to fork."
    },
    "name": {
      "type": "string",
      "description": "Optional name for the fork (defaults to '<original> (fork)')."
    },
    "visibility": {
      "enum": [
        "private",
        "unlisted",
        "public"
      ],
      "type": "string",
      "description": "Visibility of the fork (default 'unlisted')."
    }
  }
}
fork_dashboard output schema
{
  "type": "object",
  "required": [
    "manifest"
  ],
  "properties": {
    "name": {
      "type": "string"
    },
    "slug": {
      "type": "string"
    },
    "manifest": {
      "type": "object"
    }
  },
  "additionalProperties": false
}
fork_dashboard annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
update_dashboard
Advertised by the server during the last successful anonymous check.

Modify a dashboard you own (owner-only). Replace the manifest or any metadata field; the version increments. Use this to edit a saved surface meaningfully — 'raise budgetUSD to 40', 'add a receipt window', 'make it public'. A replaced manifest must still conform to the schema and must not contain an API key. Only send the fields you want to change.

update_dashboard input schema
{
  "type": "object",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "The id (ua_...) of the artifact to update."
    },
    "name": {
      "type": "string",
      "description": "New name."
    },
    "manifest": {
      "type": "object",
      "description": "Replacement DashboardManifest (must conform to the schema; no API key). Omit to leave the manifest unchanged."
    },
    "visibility": {
      "enum": [
        "private",
        "unlisted",
        "public"
      ],
      "type": "string",
      "description": "New visibility (e.g. flip 'unlisted' -> 'public' to list it)."
    },
    "composeRefs": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "Replacement pinned ComposeRequest objects."
    },
    "description": {
      "type": "string",
      "description": "New description."
    },
    "renderedCid": {
      "type": "string",
      "description": "New rendered-HTML export CID."
    },
    "capabilityTypes": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Replacement capability-type tags."
    }
  }
}
update_dashboard output schema
{
  "type": "object",
  "required": [
    "manifest"
  ],
  "properties": {
    "name": {
      "type": "string"
    },
    "slug": {
      "type": "string"
    },
    "manifest": {
      "type": "object"
    }
  },
  "additionalProperties": false
}
update_dashboard annotations
{
  "readOnlyHint": false,
  "destructiveHint": false
}
render_pcc_dashboard
Advertised by the server during the last successful anonymous check.
Advertised read-only

Compose a live PCC dashboard for a physical-capability task — pass a DashboardManifest (windows + live data bindings + actions) and it renders as an interactive MCP App.

render_pcc_dashboard input schema
{
  "$id": "https://capability.network/ui-kit/v1/manifest.schema.json",
  "type": "object",
  "title": "PCC Dashboard Manifest",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "csd",
    "title",
    "sections"
  ],
  "properties": {
    "csd": {
      "const": "pcc://artifacts/dashboard/v1",
      "description": "The builtin CSD URI this manifest conforms to."
    },
    "theme": {
      "enum": [
        "auto",
        "dark",
        "light"
      ]
    },
    "title": {
      "type": "string",
      "minLength": 1
    },
    "api_base": {
      "type": "string",
      "description": "Gateway base URL. Default https://capability.network."
    },
    "sections": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/Section"
      },
      "maxItems": 24
    },
    "description": {
      "type": "string"
    }
  },
  "definitions": {
    "Action": {
      "type": "object",
      "required": [
        "id",
        "label",
        "kind",
        "path",
        "confirm",
        "intentText"
      ],
      "properties": {
        "id": {
          "type": "string",
          "minLength": 1
        },
        "body": {
          "type": "object",
          "description": "Static body merged into the request."
        },
        "kind": {
          "enum": [
            "post",
            "patch"
          ]
        },
        "path": {
          "type": "string",
          "minLength": 1
        },
        "label": {
          "type": "string",
          "minLength": 1
        },
        "confirm": {
          "enum": [
            "inline",
            "approval"
          ],
          "description": "'inline' = button confirm; 'approval' = the kit's Approval window. NO 'none'."
        },
        "bodyFrom": {
          "type": "string",
          "description": "Form id whose collected values become the request body."
        },
        "arguments": {
          "type": "object",
          "description": "Bounded arguments for the typed operation (host mode only)."
        },
        "intentText": {
          "type": "string",
          "minLength": 1,
          "description": "Snapshot-mode chip text handed to the LLM (e.g. 'pcc: approve offer …')."
        },
        "operation_id": {
          "type": "string",
          "minLength": 1,
          "description": "R4 PR2 — typed host-mediated operation id. In an MCP-App host view the click routes to the registered pcc.op.<operation_id> tool via tools/call (server-authorized); the raw kind/path is inert in host mode. Standalone rendering ignores this."
        },
        "idempotencyFrom": {
          "type": "string",
          "description": "Field id supplying an idempotencyKey (required on offer-posting actions)."
        }
      },
      "description": "A write the surface can perform. Fires ONLY on a human click; nothing on load. confirm has NO 'none'. Money verbs use confirm:'approval'.",
      "additionalProperties": false
    },
    "Window": {
      "oneOf": [
        {
          "type": "object",
          "required": [
            "kind",
            "text"
          ],
          "properties": {
            "kind": {
              "const": "note"
            },
            "text": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "required": [
            "kind",
            "label",
            "binding"
          ],
          "properties": {
            "kind": {
              "const": "metric"
            },
            "label": {
              "type": "string",
              "minLength": 1
            },
            "format": {
              "enum": [
                "usd",
                "int",
                "pct",
                "ts"
              ]
            },
            "select": {
              "type": "string"
            },
            "binding": {
              "$ref": "#/definitions/Binding"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "required": [
            "kind",
            "binding"
          ],
          "properties": {
            "kind": {
              "const": "capability"
            },
            "binding": {
              "$ref": "#/definitions/Binding"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "required": [
            "kind",
            "binding",
            "item"
          ],
          "properties": {
            "item": {
              "$ref": "#/definitions/ListItem"
            },
            "kind": {
              "const": "list"
            },
            "limit": {
              "type": "integer",
              "maximum": 200,
              "exclusiveMinimum": 0
            },
            "binding": {
              "$ref": "#/definitions/Binding"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "required": [
            "kind",
            "schema",
            "submit"
          ],
          "properties": {
            "kind": {
              "const": "form"
            },
            "schema": {
              "type": "object",
              "description": "A JSON Schema whose properties become form fields."
            },
            "submit": {
              "$ref": "#/definitions/Action"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "required": [
            "kind",
            "binding",
            "statusFrom",
            "latestFrom"
          ],
          "properties": {
            "kind": {
              "const": "run"
            },
            "binding": {
              "$ref": "#/definitions/Binding"
            },
            "latestFrom": {
              "type": "string"
            },
            "statusFrom": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "required": [
            "kind",
            "binding",
            "approve"
          ],
          "properties": {
            "deny": {
              "$ref": "#/definitions/Action"
            },
            "kind": {
              "const": "approval"
            },
            "approve": {
              "$ref": "#/definitions/Action"
            },
            "binding": {
              "$ref": "#/definitions/Binding"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "required": [
            "kind",
            "binding"
          ],
          "properties": {
            "kind": {
              "const": "receipt"
            },
            "binding": {
              "$ref": "#/definitions/Binding"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "required": [
            "kind",
            "composeRef"
          ],
          "properties": {
            "kind": {
              "const": "chain"
            },
            "execute": {
              "$ref": "#/definitions/Action"
            },
            "composeRef": {
              "$ref": "#/definitions/ComposeRequest"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "required": [
            "kind",
            "actions"
          ],
          "properties": {
            "kind": {
              "const": "actions"
            },
            "actions": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/Action"
              },
              "maxItems": 24,
              "minItems": 1
            }
          },
          "additionalProperties": false
        }
      ]
    },
    "Binding": {
      "type": "object",
      "required": [
        "path"
      ],
      "properties": {
        "sse": {
          "type": "string",
          "minLength": 1,
          "description": "SSE stream '/sse/stream/…' (fetch-SSE with Bearer)."
        },
        "path": {
          "type": "string",
          "minLength": 1,
          "description": "'/api/…' route the window reads."
        },
        "query": {
          "type": "object",
          "description": "Query params merged onto the request."
        },
        "pollMs": {
          "type": "integer",
          "minimum": 2000,
          "description": "Poll cadence in ms (default ~30000; Zod floors at MIN_POLL_MS=2000 so a shared dashboard can't fast-poll authenticated endpoints)."
        },
        "select": {
          "type": "string",
          "description": "Dot-path into the response (e.g. 'data.jobs.0.status'). NOT JSONPath."
        }
      },
      "description": "A live-data binding: which route a window reads, how often, what to pluck.",
      "additionalProperties": false
    },
    "Section": {
      "type": "object",
      "required": [
        "windows"
      ],
      "properties": {
        "heading": {
          "type": "string"
        },
        "windows": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Window"
          },
          "maxItems": 24
        }
      },
      "additionalProperties": false
    },
    "ListItem": {
      "type": "object",
      "required": [
        "title"
      ],
      "properties": {
        "meta": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "default": [],
          "maxItems": 12,
          "description": "Dot-path fields for the row's meta line (capped at 12 — meta selectors loop per rendered row)."
        },
        "title": {
          "type": "string",
          "minLength": 1,
          "description": "Dot-path field for each row's title."
        },
        "statusFrom": {
          "type": "string",
          "description": "Dot-path field for the row's status pill."
        }
      },
      "additionalProperties": false
    },
    "ComposeRequest": {
      "type": "object",
      "required": [
        "outcomeType",
        "budgetUSD",
        "minAssuranceTier"
      ],
      "properties": {
        "steps": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 120,
            "minLength": 1
          },
          "maxItems": 20,
          "minItems": 1
        },
        "location": {
          "type": "object",
          "required": [
            "lat",
            "lng"
          ],
          "properties": {
            "lat": {
              "type": "number",
              "maximum": 90,
              "minimum": -90
            },
            "lng": {
              "type": "number",
              "maximum": 180,
              "minimum": -180
            },
            "radiusKm": {
              "type": "number",
              "maximum": 20000,
              "exclusiveMinimum": 0
            }
          },
          "additionalProperties": false
        },
        "budgetUSD": {
          "type": "number",
          "maximum": 1000000000,
          "exclusiveMinimum": 0
        },
        "requester": {
          "type": "object",
          "required": [
            "agentId"
          ],
          "properties": {
            "did": {
              "type": "string",
              "minLength": 1
            },
            "agentId": {
              "type": "string",
              "minLength": 1
            }
          },
          "additionalProperties": false
        },
        "description": {
          "type": "string",
          "maxLength": 4000,
          "minLength": 1
        },
        "optimizeFor": {
          "enum": [
            "price",
            "speed",
            "quality"
          ]
        },
        "outcomeType": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "outcomeChain": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 120,
            "minLength": 1
          },
          "maxItems": 20,
          "minItems": 1
        },
        "minAssuranceTier": {
          "enum": [
            0,
            1,
            2,
            3
          ]
        }
      },
      "description": "A re-plannable value-chain request (mirrors @pcc/spec ComposeRequestSchema). Pinned in a chain window, never a compositionId (30-min TTL).",
      "additionalProperties": false
    }
  },
  "description": "JSON-Schema mirror of @pcc/spec DashboardManifestSchema (packages/spec/src/types/ui-artifact.ts). The small declarative dashboard a person's LLM emits; the pcc-ui kit renders it. Windows are a closed set rendered textContent-only. Actions never carry confirm:\"none\" (a human click is the confirm step). A manifest must NOT contain an API key (pcc_live_/pcc_test_) anywhere — a shared artifact travels with its contents. This mirror now carries the Zod RESOURCE CAPS (sections/windows/actions maxItems 24, list.limit max 200, meta maxItems 12, pollMs minimum 2000) so a generator validating only against this schema does not emit manifests the gateway then rejects. TWO Zod guards are not expressible as JSON-Schema validation and are enforced only by the gateway's Zod (the authoritative gate): the 256KB byte cap (MAX_MANIFEST_BYTES) and the recursive no-credential refine (containsApiKey — rejects a baked pcc key / Bearer / JWT, raw, percent-encoded, or base64). Validate against the Zod DashboardManifestSchema for the full gate.",
  "additionalProperties": false
}
render_pcc_dashboard output schema
{
  "type": "object",
  "required": [
    "manifest"
  ],
  "properties": {
    "manifest": {
      "type": "object"
    }
  },
  "additionalProperties": false
}
render_pcc_dashboard annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
render_pcc_dashboard_ir
Advertised by the server during the last successful anonymous check.
Advertised read-only

Compose a live PCC dashboard rendered through the closed, PCC-owned IR (read-only). Pass a DashboardManifest; it renders as an interactive MCP App via the audited closed-IR render path.

render_pcc_dashboard_ir input schema
{
  "$id": "https://capability.network/ui-kit/v1/manifest.schema.json",
  "type": "object",
  "title": "PCC Dashboard Manifest",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "csd",
    "title",
    "sections"
  ],
  "properties": {
    "csd": {
      "const": "pcc://artifacts/dashboard/v1",
      "description": "The builtin CSD URI this manifest conforms to."
    },
    "theme": {
      "enum": [
        "auto",
        "dark",
        "light"
      ]
    },
    "title": {
      "type": "string",
      "minLength": 1
    },
    "api_base": {
      "type": "string",
      "description": "Gateway base URL. Default https://capability.network."
    },
    "sections": {
      "type": "array",
      "items": {
        "$ref": "#/definitions/Section"
      },
      "maxItems": 24
    },
    "description": {
      "type": "string"
    }
  },
  "definitions": {
    "Action": {
      "type": "object",
      "required": [
        "id",
        "label",
        "kind",
        "path",
        "confirm",
        "intentText"
      ],
      "properties": {
        "id": {
          "type": "string",
          "minLength": 1
        },
        "body": {
          "type": "object",
          "description": "Static body merged into the request."
        },
        "kind": {
          "enum": [
            "post",
            "patch"
          ]
        },
        "path": {
          "type": "string",
          "minLength": 1
        },
        "label": {
          "type": "string",
          "minLength": 1
        },
        "confirm": {
          "enum": [
            "inline",
            "approval"
          ],
          "description": "'inline' = button confirm; 'approval' = the kit's Approval window. NO 'none'."
        },
        "bodyFrom": {
          "type": "string",
          "description": "Form id whose collected values become the request body."
        },
        "arguments": {
          "type": "object",
          "description": "Bounded arguments for the typed operation (host mode only)."
        },
        "intentText": {
          "type": "string",
          "minLength": 1,
          "description": "Snapshot-mode chip text handed to the LLM (e.g. 'pcc: approve offer …')."
        },
        "operation_id": {
          "type": "string",
          "minLength": 1,
          "description": "R4 PR2 — typed host-mediated operation id. In an MCP-App host view the click routes to the registered pcc.op.<operation_id> tool via tools/call (server-authorized); the raw kind/path is inert in host mode. Standalone rendering ignores this."
        },
        "idempotencyFrom": {
          "type": "string",
          "description": "Field id supplying an idempotencyKey (required on offer-posting actions)."
        }
      },
      "description": "A write the surface can perform. Fires ONLY on a human click; nothing on load. confirm has NO 'none'. Money verbs use confirm:'approval'.",
      "additionalProperties": false
    },
    "Window": {
      "oneOf": [
        {
          "type": "object",
          "required": [
            "kind",
            "text"
          ],
          "properties": {
            "kind": {
              "const": "note"
            },
            "text": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "required": [
            "kind",
            "label",
            "binding"
          ],
          "properties": {
            "kind": {
              "const": "metric"
            },
            "label": {
              "type": "string",
              "minLength": 1
            },
            "format": {
              "enum": [
                "usd",
                "int",
                "pct",
                "ts"
              ]
            },
            "select": {
              "type": "string"
            },
            "binding": {
              "$ref": "#/definitions/Binding"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "required": [
            "kind",
            "binding"
          ],
          "properties": {
            "kind": {
              "const": "capability"
            },
            "binding": {
              "$ref": "#/definitions/Binding"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "required": [
            "kind",
            "binding",
            "item"
          ],
          "properties": {
            "item": {
              "$ref": "#/definitions/ListItem"
            },
            "kind": {
              "const": "list"
            },
            "limit": {
              "type": "integer",
              "maximum": 200,
              "exclusiveMinimum": 0
            },
            "binding": {
              "$ref": "#/definitions/Binding"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "required": [
            "kind",
            "schema",
            "submit"
          ],
          "properties": {
            "kind": {
              "const": "form"
            },
            "schema": {
              "type": "object",
              "description": "A JSON Schema whose properties become form fields."
            },
            "submit": {
              "$ref": "#/definitions/Action"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "required": [
            "kind",
            "binding",
            "statusFrom",
            "latestFrom"
          ],
          "properties": {
            "kind": {
              "const": "run"
            },
            "binding": {
              "$ref": "#/definitions/Binding"
            },
            "latestFrom": {
              "type": "string"
            },
            "statusFrom": {
              "type": "string"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "required": [
            "kind",
            "binding",
            "approve"
          ],
          "properties": {
            "deny": {
              "$ref": "#/definitions/Action"
            },
            "kind": {
              "const": "approval"
            },
            "approve": {
              "$ref": "#/definitions/Action"
            },
            "binding": {
              "$ref": "#/definitions/Binding"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "required": [
            "kind",
            "binding"
          ],
          "properties": {
            "kind": {
              "const": "receipt"
            },
            "binding": {
              "$ref": "#/definitions/Binding"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "required": [
            "kind",
            "composeRef"
          ],
          "properties": {
            "kind": {
              "const": "chain"
            },
            "execute": {
              "$ref": "#/definitions/Action"
            },
            "composeRef": {
              "$ref": "#/definitions/ComposeRequest"
            }
          },
          "additionalProperties": false
        },
        {
          "type": "object",
          "required": [
            "kind",
            "actions"
          ],
          "properties": {
            "kind": {
              "const": "actions"
            },
            "actions": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/Action"
              },
              "maxItems": 24,
              "minItems": 1
            }
          },
          "additionalProperties": false
        }
      ]
    },
    "Binding": {
      "type": "object",
      "required": [
        "path"
      ],
      "properties": {
        "sse": {
          "type": "string",
          "minLength": 1,
          "description": "SSE stream '/sse/stream/…' (fetch-SSE with Bearer)."
        },
        "path": {
          "type": "string",
          "minLength": 1,
          "description": "'/api/…' route the window reads."
        },
        "query": {
          "type": "object",
          "description": "Query params merged onto the request."
        },
        "pollMs": {
          "type": "integer",
          "minimum": 2000,
          "description": "Poll cadence in ms (default ~30000; Zod floors at MIN_POLL_MS=2000 so a shared dashboard can't fast-poll authenticated endpoints)."
        },
        "select": {
          "type": "string",
          "description": "Dot-path into the response (e.g. 'data.jobs.0.status'). NOT JSONPath."
        }
      },
      "description": "A live-data binding: which route a window reads, how often, what to pluck.",
      "additionalProperties": false
    },
    "Section": {
      "type": "object",
      "required": [
        "windows"
      ],
      "properties": {
        "heading": {
          "type": "string"
        },
        "windows": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/Window"
          },
          "maxItems": 24
        }
      },
      "additionalProperties": false
    },
    "ListItem": {
      "type": "object",
      "required": [
        "title"
      ],
      "properties": {
        "meta": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "default": [],
          "maxItems": 12,
          "description": "Dot-path fields for the row's meta line (capped at 12 — meta selectors loop per rendered row)."
        },
        "title": {
          "type": "string",
          "minLength": 1,
          "description": "Dot-path field for each row's title."
        },
        "statusFrom": {
          "type": "string",
          "description": "Dot-path field for the row's status pill."
        }
      },
      "additionalProperties": false
    },
    "ComposeRequest": {
      "type": "object",
      "required": [
        "outcomeType",
        "budgetUSD",
        "minAssuranceTier"
      ],
      "properties": {
        "steps": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 120,
            "minLength": 1
          },
          "maxItems": 20,
          "minItems": 1
        },
        "location": {
          "type": "object",
          "required": [
            "lat",
            "lng"
          ],
          "properties": {
            "lat": {
              "type": "number",
              "maximum": 90,
              "minimum": -90
            },
            "lng": {
              "type": "number",
              "maximum": 180,
              "minimum": -180
            },
            "radiusKm": {
              "type": "number",
              "maximum": 20000,
              "exclusiveMinimum": 0
            }
          },
          "additionalProperties": false
        },
        "budgetUSD": {
          "type": "number",
          "maximum": 1000000000,
          "exclusiveMinimum": 0
        },
        "requester": {
          "type": "object",
          "required": [
            "agentId"
          ],
          "properties": {
            "did": {
              "type": "string",
              "minLength": 1
            },
            "agentId": {
              "type": "string",
              "minLength": 1
            }
          },
          "additionalProperties": false
        },
        "description": {
          "type": "string",
          "maxLength": 4000,
          "minLength": 1
        },
        "optimizeFor": {
          "enum": [
            "price",
            "speed",
            "quality"
          ]
        },
        "outcomeType": {
          "type": "string",
          "maxLength": 120,
          "minLength": 1
        },
        "outcomeChain": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 120,
            "minLength": 1
          },
          "maxItems": 20,
          "minItems": 1
        },
        "minAssuranceTier": {
          "enum": [
            0,
            1,
            2,
            3
          ]
        }
      },
      "description": "A re-plannable value-chain request (mirrors @pcc/spec ComposeRequestSchema). Pinned in a chain window, never a compositionId (30-min TTL).",
      "additionalProperties": false
    }
  },
  "description": "JSON-Schema mirror of @pcc/spec DashboardManifestSchema (packages/spec/src/types/ui-artifact.ts). The small declarative dashboard a person's LLM emits; the pcc-ui kit renders it. Windows are a closed set rendered textContent-only. Actions never carry confirm:\"none\" (a human click is the confirm step). A manifest must NOT contain an API key (pcc_live_/pcc_test_) anywhere — a shared artifact travels with its contents. This mirror now carries the Zod RESOURCE CAPS (sections/windows/actions maxItems 24, list.limit max 200, meta maxItems 12, pollMs minimum 2000) so a generator validating only against this schema does not emit manifests the gateway then rejects. TWO Zod guards are not expressible as JSON-Schema validation and are enforced only by the gateway's Zod (the authoritative gate): the 256KB byte cap (MAX_MANIFEST_BYTES) and the recursive no-credential refine (containsApiKey — rejects a baked pcc key / Bearer / JWT, raw, percent-encoded, or base64). Validate against the Zod DashboardManifestSchema for the full gate.",
  "additionalProperties": false
}
render_pcc_dashboard_ir output schema
{
  "type": "object",
  "required": [
    "manifest"
  ],
  "properties": {
    "manifest": {
      "type": "object"
    }
  },
  "additionalProperties": false
}
render_pcc_dashboard_ir annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
pcc.op.capability.request_quote
Advertised by the server during the last successful anonymous check.
Advertised read-only

Price a configured PCC capability (typed operation). Returns the itemized quote for the given capability type + selections. Pure calculation — no funds move and nothing is created. Maps to POST /api/build/price.

pcc.op.capability.request_quote input schema
{
  "type": "object",
  "required": [
    "type",
    "selections"
  ],
  "properties": {
    "type": {
      "type": "string",
      "description": "Capability type, e.g. 'fdm'."
    },
    "profileId": {
      "type": "string"
    },
    "selections": {
      "type": "object",
      "description": "Parameter selections."
    },
    "capabilityId": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
pcc.op.capability.request_quote annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

4 advertised

pcc-dashboard-render — PCC Dashboard (MCP App)

Advertised by the server during the last successful anonymous check.

Interactive MCP App view for render_pcc_dashboard. Renders the composed DashboardManifest delivered in the tool result's structuredContent, using the shipped On-Ramp pcc-ui kit.

pcc-dashboard-render URI
ui://pcc/dashboard/render

MIME type: text/html;profile=mcp-app

pcc-dashboard-render-ir — PCC Dashboard — closed IR (MCP App, Phase B)

Advertised by the server during the last successful anonymous check.

Read-only closed-IR MCP App view. Renders the projected DashboardManifest from the tool result's structuredContent through the audited dashboard-ir adapter + validator + renderer (pcc-ir-kit.js, deterministically bundled from the audited TS). No host bridge; no write actions.

pcc-dashboard-render-ir URI
ui://pcc/dashboard/render-ir

MIME type: text/html;profile=mcp-app

pcc-dashboard-saved — PCC saved dashboard (MCP App)

Advertised by the server during the last successful anonymous check.

MCP App view for save/get/fork/update_dashboard. Renders the artifact's DashboardManifest delivered in the AUTHENTICATED tool result's structuredContent (never a second anonymous lookup).

pcc-dashboard-saved URI
ui://pcc/dashboard/saved

MIME type: text/html;profile=mcp-app

pcc-dashboard-gallery — PCC dashboard gallery (MCP App)

Advertised by the server during the last successful anonymous check.

MCP App view for search_dashboards. Renders the list of matching dashboards delivered in the tool result's structuredContent.

pcc-dashboard-gallery URI
ui://pcc/dashboard/gallery

MIME type: text/html;profile=mcp-app

pcc-dashboard-share — PCC shared dashboard (MCP App)

Advertised by the server during the last successful anonymous check.

Renders a PUBLIC or UNLISTED saved On-Ramp dashboard by slug as a self-contained MCP App view. Sharing surface only — private dashboards are never exposed here.

pcc-dashboard-share URI template
ui://pcc/dashboard/{slug}

MIME type: text/html;profile=mcp-app

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (3 of 3 answered).

  1. 2026-11-07: 2 of 2 checks answered
  2. 2026-11-09: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
720 ms
95th percentile latency
720 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 720 ms · metadata changed · 256 tool(s), 4 resource(s), 1 resource template(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http physical-capability-cloud-mcp https://capability.network/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add physical-capability-cloud-mcp --url https://capability.network/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable physical-capability-cloud-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "physical-capability-cloud-mcp": {
      "url": "https://capability.network/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "physical-capability-cloud-mcp": {
      "type": "streamableHttp",
      "url": "https://capability.network/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start physical-capability-cloud-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "physical-capability-cloud-mcp": {
      "type": "http",
      "url": "https://capability.network/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http physical-capability-cloud-mcp https://capability.network/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://capability.network/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "physical-capability-cloud-mcp": {
      "serverUrl": "https://capability.network/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Physical Capability Cloud MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run Physical Capability Cloud MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing