Physical Capability Cloud
REMOTE · CAPABILITY.NETWORK
Discover, hire, and verify real-world physical capability through MCP.
Available components
Last scanned (8 hours ago)
Scores higher than 79% of remote servers
Reachable. Last reached 5 Nov 2026.
Category IoT and Hardware
Recent critical change
Authorization (1 Oct 2026). See the changelog before you install this server.
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security57
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (revoke_api_key). See how to fix → View diagnostics → Fail
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability85
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (good).Pass
- Tool/resource definitions use about 22909 tokens (~88/item across 260 items; 256 tools + 4 resources), lean.Pass
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management97
- Stability observed for 29 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage98
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 92% of tool parameters carry a description.Partial
- Structured output schemas are declared (3% of tools); any adoption earns full credit.Pass
Tool Safety97
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 13 of 15 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "get_transfer_graphs" implies "transfer" and declares readOnlyHint instead, contradicting what its own name says it does. See how to fix → Partial
- An AI judge read all 258 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
- Supports UI / widget rendering.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 5 Nov 26 −1
- Stability: pass → 0.97 functional
- 3 Nov 26 0
- Stability: fail → pass ▲ security
- 31 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 96 to 99.
- 29 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 89 to 93.
- 27 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 86.
- 25 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 76 to 79.
- 23 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 69 to 73.
- 20 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 59 to 63.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Probed https://capability.network/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=capability.network | CN=YE1,O=Let's Encrypt,C=US | 14 Sept 2026 | 13 Dec 2026 | ECDSA 256 | ECDSA-SHA384 | 61e79ee07e783aedc9770a1b1a54789ebd0 |
| SANs: *.capability.network, capability.network | ||||||
| CN=YE1,O=Let's Encrypt,C=US (CA) | CN=Root YE,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | ECDSA 384 | ECDSA-SHA384 | 5ddd70dd31f801c85c186a7a04b80afe |
| CN=Root YE,O=ISRG,C=US (CA) | CN=ISRG Root X2,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | ECDSA-SHA384 | 872165fc34b6e5fba8add5b3705fb53a |
| CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | SHA256-RSA | 6c8f1dc727c7117f7baf853ac980f9cd |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of capability.network. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| network. | present | 11416, 40414 | 8, 8 | Verified |
| capability.network. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://capability.network/mcp | Verified | 200 | |
| http (plaintext) | http://capability.network/mcp | HTTPS enforced | 301 | https://capability.network/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
pcc_chat_send ~75
Send a chat message to a kernel's operator or agent. Used for human-in-the-loop communication during job execution, troubleshooting, and escalation.
| Name | Type | Req | Description |
|---|---|---|---|
| kernelId | string | yes | Kernel ID to send the message to |
| message | string | yes | Message content |
| role | string | – | Sender role (default: user) |
No output schema declared.
No examples provided.
pcc_contributor_list ~78
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.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | Wallet address (0x + 40 hex chars) |
No output schema declared.
No examples provided.
pcc_contributor_register ~235
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.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | Wallet address (0x + 40 hex chars) |
| contributorNftTokenId | string | – | Optional ContributorNFT tokenId once minted on-chain |
| ipId | string | – | Optional Story Protocol IP Asset ID |
| metadataUri | string | – | Optional ipfs:// or https:// URI |
| role | string | yes | ContributorRole — 10 ADR-12 roles + deprecated 'designer' |
| scheduleHash | string | yes | 0x + 64 hex sha256 of a published RateSchedule |
No output schema declared.
No examples provided.
pcc_create_scope ~261
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).
| Name | Type | Req | Description |
|---|---|---|---|
| allowedPipettes | array | – | Which pipettes may be used (e.g. ['left']) |
| allowedSlots | array | – | Which deck slots may be accessed (e.g. [1, 2, 3, 9]) |
| allowedTools | array | yes | List of tool names allowed in this scope (e.g. ['ot2_protocol_upload', 'ot2_run_create', 'ot2_run_action']) |
| jobId | string | – | Job ID this scope is bound to (optional) |
| kernelId | string | yes | Kernel ID to create the scope for |
| maxCommands | number | – | Maximum tool calls allowed in this scope (default 100) |
| maxRetries | number | – | Maximum retries allowed (default 3) |
| protocolHash | string | – | SHA-256 hash of the approved protocol content. If set, protocol uploads are hash-verified. |
| ttlMinutes | number | – | Scope duration in minutes (default 30) |
No output schema declared.
No examples provided.
pcc_decompose_request ~52
Re-trigger decomposition of an existing capability request. Overwrites the existing capability DAG with a fresh decomposition. Useful after updating the description or budget.
| Name | Type | Req | Description |
|---|---|---|---|
| requestId | string | yes | Request ID to decompose |
No output schema declared.
No examples provided.
pcc_dht_announce ~81
Announce capabilities to the DHT network. Signs the announcement with your node's Ed25519 key and broadcasts to connected peers.
| Name | Type | Req | Description |
|---|---|---|---|
| capabilities | array | yes | Array of capability summaries to announce |
| kernelId | string | yes | Kernel ID announcing capabilities |
| ttlSeconds | number | – | How long the announcement is valid (default 300) |
No output schema declared.
No examples provided.
pcc_dht_metrics ~53
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
pcc_dht_peers ~33
List known DHT peers and their connection status. Shows which nodes are currently connected to the gossip network.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
pcc_dht_query ~127
Query the DHT for capabilities matching your requirements. Returns announcements from operators whose equipment matches the type, materials, and price range you specify.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | – | Maximum results to return (default 10) |
| materials | array | – | Materials you need (matches if operator supports ANY of these) |
| maxPrice | number | – | Maximum price per job — matches operators whose min price is at or below this |
| type | string | – | Capability type to search for (e.g. 'fdm_print', 'liquid-handler', 'cnc-3axis') |
No output schema declared.
No examples provided.
pcc_get_request ~53
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.
| Name | Type | Req | Description |
|---|---|---|---|
| requestId | string | yes | Request ID |
No output schema declared.
No examples provided.
pcc_get_request_critical_path ~70
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.
| Name | Type | Req | Description |
|---|---|---|---|
| requestId | string | yes | Request ID |
No output schema declared.
No examples provided.
pcc_get_request_dag ~58
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.
| Name | Type | Req | Description |
|---|---|---|---|
| requestId | string | yes | Request ID |
No output schema declared.
No examples provided.
pcc_get_tool_manifest ~67
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.
| Name | Type | Req | Description |
|---|---|---|---|
| kernelId | string | yes | Kernel ID |
No output schema declared.
No examples provided.
pcc_get_tool_result ~55
Get the result of a previously relayed tool call. Poll this endpoint until the executor has processed the call and posted results.
| Name | Type | Req | Description |
|---|---|---|---|
| callId | string | yes | Tool call ID returned from pcc_relay_tool_call |
No output schema declared.
No examples provided.
pcc_job_complete ~117
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").
| Name | Type | Req | Description |
|---|---|---|---|
| jobId | string | yes | Job ID to complete |
| message | string | – | Completion message or notes |
No output schema declared.
No examples provided.
pcc_job_settlement ~118
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.
| Name | Type | Req | Description |
|---|---|---|---|
| jobId | string | yes | Job ID |
No output schema declared.
No examples provided.
pcc_list_requests ~64
List all capability requests with optional filtering. Shows status, decomposed DAG summary, estimated costs, and timelines.
| Name | Type | Req | Description |
|---|---|---|---|
| requesterEmail | string | – | Filter by requester email |
| status | string | – | Filter by status |
| urgency | string | – | Filter by urgency |
No output schema declared.
No examples provided.
pcc_list_verdicts ~94
List recent capture verdicts, newest first. Optionally filter by jobId. Default limit is 50, capped at 200 server-side. Returns {verdicts, count, limit, jobId}.
| Name | Type | Req | Description |
|---|---|---|---|
| jobId | string | – | Filter by job ID. Omit for all verdicts across jobs. |
| limit | integer | – | Maximum rows returned (default 50, hard cap 200). |
No output schema declared.
No examples provided.
pcc_onboard_session_build_agent ~85
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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Session id returned by pcc_onboard_session_start. |
No output schema declared.
No examples provided.
pcc_onboard_session_ingest_docs ~101
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.
| Name | Type | Req | Description |
|---|---|---|---|
| doc_urls | array | yes | URLs of documents to ingest. Mix of local:// and https:// is fine. |
| id | string | yes | Session id returned by pcc_onboard_session_start. |
No output schema declared.
No examples provided.
pcc_onboard_session_live_data ~103
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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Session id returned by pcc_onboard_session_start. |
| since | number | – | Unix milliseconds cursor — returns only events with t > since. Use the 'cursor' field of the previous response for incremental polling. |
No output schema declared.
No examples provided.
pcc_onboard_session_scrape ~103
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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Session id returned by pcc_onboard_session_start. |
| url | string | yes | URL to scrape (e.g. company About page). |
No output schema declared.
No examples provided.
pcc_onboard_session_start ~86
Start a new physical-operator onboarding session. Returns a session_id used by every subsequent /api/onboard/* call. Auth-required.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | Operator / company name (e.g. 'Oakland Titanium Mills'). |
| url | string | – | Optional company website. If supplied, the orchestrator scrapes it on the next /scrape call. |
No output schema declared.
No examples provided.
pcc_onboard_session_status ~79
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.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | Session id returned by pcc_onboard_session_start. |
No output schema declared.
No examples provided.
pcc_oracle_status ~93
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
pcc_oracle_verify ~195
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.
| Name | Type | Req | Description |
|---|---|---|---|
| assuranceTier | integer | – | Evidence tier (0=none, 1=basic, 2=full, 3=ZK) |
| escrowAddress | string | yes | Escrow contract address |
| evidenceHash | string | yes | SHA-256 hash of evidence bundle |
| jobId | string | yes | PCC job ID |
| kernelId | string | yes | Operator kernel ID |
No output schema declared.
No examples provided.
pcc_orchestrator_list_templates ~72
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
pcc_orchestrator_match_capabilities ~97
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.
| Name | Type | Req | Description |
|---|---|---|---|
| input | string | yes | Free-text description of what you want to onboard. |
No output schema declared.
No examples provided.
pcc_protocol_fee ~52
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
pcc_publish_request ~57
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.
| Name | Type | Req | Description |
|---|---|---|---|
| requestId | string | yes | Request ID to publish |
No output schema declared.
No examples provided.
pcc_relay_generic_tool_call ~127
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.
| Name | Type | Req | Description |
|---|---|---|---|
| args | object | – | Tool arguments |
| kernelId | string | yes | Target kernel ID |
| scopeId | string | – | Execution scope ID (required for write operations) |
| toolName | string | yes | Tool name from the device manifest |
No output schema declared.
No examples provided.
pcc_relay_tool_call ~126
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.
| Name | Type | Req | Description |
|---|---|---|---|
| kernelId | string | yes | Kernel ID of the target device |
| scopeId | string | – | Execution scope ID (required for SCOPED WRITE tools) |
| toolArgs | object | yes | Arguments for the tool call |
| toolName | string | yes | Tool to execute (e.g. 'ot2_health', 'ot2_run_create') |
No output schema declared.
No examples provided.
pcc_report ~488
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.
| Name | Type | Req | Description |
|---|---|---|---|
| agentId | string | – | Which model/agent you are. Example: 'claude', 'gpt-4o', 'gemini'. Optional. |
| detail | string | – | Multi-line context: the full error body, what you tried, what you expected. Optional but recommended. |
| endpoint | string | – | The route you were on when you got stuck. From a 5xx `report_hint.send.endpoint`. Example: '/api/build/contract'. |
| errorCode | string | – | The machine error code from the response body, if any. From `report_hint.send.errorCode`. |
| logs | array | – | 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. |
| method | string | – | The HTTP method you used. From `report_hint.send.method`. Example: 'POST'. |
| severity | string | – | How badly this blocked you. Optional. |
| status | integer | – | The HTTP status you got. From `report_hint.send.status`. Example: 500. |
| summary | string | yes | 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 | string | – | 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. |
| type | string | – | 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. |
No output schema declared.
No examples provided.
pcc_report_attempt ~502
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.
| Name | Type | Req | Description |
|---|---|---|---|
| consent | object|null | – | – |
| contract | integer | – | – |
| detail | string|null | – | – |
| device | object|null | – | – |
| durationMs | integer|null | – | The phase's wall time; on session, the whole attempt |
| env | object|null | – | – |
| harness | object|null | – | – |
| ids | object|null | – | Only the ids known so far: each at most 200 characters of [A-Za-z0-9:._/-], or null |
| kind | string | yes | – |
| logs | array|null | – | The phase's step timeline, summaries only |
| outcome | – | yes | – |
| pack | object|null | – | – |
| phase | – | yes | – |
| phases | array|null | – | Only on phase "session": the roll-up |
| proposal | object|null | – | One improvement idea |
| seq | integer | yes | Per-session report counter |
| sessionId | string | yes | UUID v4, generated once at the start of the attempt |
| summary | string|null | – | One line, e.g. "register: failed, POST /api/kernels 400" |
| tokens | object|null | – | Never guess: send null with source "unknown" |
| traceId | string|null | – | x-pcc-trace-id of the last PCC call |
No output schema declared.
No examples provided.
pcc_revoke_scope ~60
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.
| Name | Type | Req | Description |
|---|---|---|---|
| scopeId | string | yes | Scope ID to revoke |
No output schema declared.
No examples provided.
pcc_schedule_evaluate ~160
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).
| Name | Type | Req | Description |
|---|---|---|---|
| jobValueCents | integer | – | Job value in cents (piecewise-value segments) |
| jobsPerDay | number | – | Rolling 24h job count (adoption-indexed segments) |
| now | integer | yes | Unix seconds at evaluation moment |
| scheduleHash | string | yes | 0x + 64 hex schedule hash |
No output schema declared.
No examples provided.
pcc_schedule_get ~63
Fetch a published RateSchedule by its content hash. Returns {schedule, publishedBy} with segments re-validated via Zod, or 404 if not found.
| Name | Type | Req | Description |
|---|---|---|---|
| scheduleHash | string | yes | 0x + 64 hex sha256 of the schedule |
No output schema declared.
No examples provided.
pcc_schedule_publish ~126
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}.
| Name | Type | Req | Description |
|---|---|---|---|
| publishedBy | string | yes | Address that publishes (0x + 40 hex chars) |
| schedule | object | yes | RateSchedule body — version, segments (constant/step/linear-decay/exponential-decay/adoption-indexed/piecewise-value), and optional notes |
No output schema declared.
No examples provided.
pcc_scope_audit ~49
Get the audit trail for an execution scope — every tool call made under this scope, with validation results, timestamps, and outcomes.
| Name | Type | Req | Description |
|---|---|---|---|
| scopeId | string | yes | Scope ID to audit |
No output schema declared.
No examples provided.
pcc_submit_paid_job ~163
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.
| Name | Type | Req | Description |
|---|---|---|---|
| capabilityType | string | yes | e.g. 'liquid-handler', 'fdm', 'cnc-3axis' |
| kernelId | string | yes | Target kernel ID (from DHT query) |
| parameters | object | – | Job parameters (protocolType, volume, materials, etc.) |
| paymentMethod | string | – | Payment method (testnet-mock for demo) |
| userAgentId | string | yes | Your agent/user ID |
No output schema declared.
No examples provided.
pcc_submit_request ~220
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'.
| Name | Type | Req | Description |
|---|---|---|---|
| budget | number | – | Total budget in USDC (default: 1000) |
| currency | string | – | Currency (default: USDC) |
| deadline | string | – | ISO 8601 deadline (default: 7 days from now) |
| description | string | yes | Full natural language description of what needs to be built or done |
| requesterEmail | string | – | Requester email for notifications |
| requesterWallet | string | – | Requester wallet address for payments |
| title | string | yes | Short title for the request |
| urgency | string | – | Urgency level — affects cost multipliers (emergency: 2x cost, 0.5x time) |
No output schema declared.
No examples provided.
pcc_training_manifest_get ~58
Fetch the TrainingManifest for a model IP. Returns the parsed datasets array + manifestHash + createdAt, or 404 if no manifest has been set.
| Name | Type | Req | Description |
|---|---|---|---|
| modelIpId | string | yes | Story IP Asset ID for the model |
No output schema declared.
No examples provided.
pcc_training_manifest_set ~161
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}.
| Name | Type | Req | Description |
|---|---|---|---|
| baseModelIpId | string | – | Optional parent ModelNFT IP if this was fine-tuned |
| datasetWeights | array | yes | DatasetIP entries with weightBps (sum ≤ 10000) |
| methodologyHash | string | – | Optional 0x + 64 hex reproducibility hash |
| modelIpId | string | yes | Story IP Asset ID for the model |
No output schema declared.
No examples provided.
pcc_trilobio_build_config ~528
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"`.
| Name | Type | Req | Description |
|---|---|---|---|
| allowArbitraryScripts | boolean | – | Permit customer-supplied tcode-api Python scripts (true) or only curated protocol IDs (false). Default: false. Set true only for trusted-counterparty deployments. |
| apiKey | string | – | Trilobio fleet-controller API key (from the trilobot admin UI). Either apiKey OR username+password is required unless mockMode=true. |
| deviceId | string | – | Logical device ID within the kernel (default: trilobio-fleet-01) |
| kernelId | string | – | Kernel ID this device belongs to (auto-generated as kernel_trilobio_<timestamp> if omitted) |
| maxScriptTimeoutSec | number | – | Maximum allowed wall-clock seconds for a single tcode script (range 30-86400). Default: 3600. |
| mockMode | boolean | – | Bypass real HTTP and simulate runs. Use for CI / floor demos. Default: false. |
| mockRunDurationMs | number | – | Mock-mode simulated run duration in ms. Default: 2000. |
| password | string | – | Fleet-controller account password (basic-auth mode only) |
| pollIntervalMs | number | – | Poll interval in ms for run status (range 500-60000). Default: 3000. |
| tcodeApiVersion | string | – | 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. |
| url | string | yes | Fleet-controller URL on the LAN (host[:port], no trailing slash, no path) — e.g. http://192.168.1.50 |
| username | string | – | Fleet-controller account username (basic-auth mode only) |
No output schema declared.
No examples provided.
pcc_trilobio_capability_template ~186
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"`.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
pcc_trilobio_validate_options ~263
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"`.
| Name | Type | Req | Description |
|---|---|---|---|
| allowArbitraryScripts | boolean | – | – |
| apiKey | string | – | Fleet-controller API key |
| deviceId | string | – | – |
| kernelId | string | – | – |
| maxScriptTimeoutSec | number | – | – |
| mockMode | boolean | – | – |
| mockRunDurationMs | number | – | – |
| password | string | – | Basic-auth password |
| pollIntervalMs | number | – | – |
| tcodeApiVersion | string | – | 'latest' or semver string |
| url | string | – | Fleet-controller URL |
| username | string | – | Basic-auth username |
No output schema declared.
No examples provided.
pcc_trilobio_validate_script ~205
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"`.
| Name | Type | Req | Description |
|---|---|---|---|
| source | string | yes | Full Python source of the tcode-api script to lint |
No output schema declared.
No examples provided.
pcc_update_node_status ~84
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.
| Name | Type | Req | Description |
|---|---|---|---|
| nodeId | string | yes | Capability node ID |
| requestId | string | yes | Request ID |
| status | string | yes | New status for the node |
No output schema declared.
No examples provided.
pcc_update_request ~110
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.
| Name | Type | Req | Description |
|---|---|---|---|
| budget | number | – | – |
| deadline | string | – | – |
| description | string | – | – |
| requestId | string | yes | Request ID |
| requesterEmail | string | – | – |
| requesterWallet | string | – | – |
| title | string | – | – |
| urgency | string | – | – |
No output schema declared.
No examples provided.
pcc_verifier_health ~76
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
How do I install the Physical Capability Cloud MCP server?
Physical Capability Cloud is a hosted endpoint at https://capability.network/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · capability.network
claude mcp add --transport http network-capability-physical-capability-cloud 'https://capability.network/mcp'
What is the Physical Capability Cloud MCP server?
Physical Capability Cloud is an MCP server listed in the public MCP registry as network.capability/physical-capability-cloud. Discover, hire, and verify real-world physical capability through MCP. This page covers its hosted endpoint (https://capability.network/mcp).
Is the Physical Capability Cloud MCP server safe to use?
Physical Capability Cloud scores 79 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Physical Capability Cloud MCP server expose?
Physical Capability Cloud exposes 256 tools: provision_api_key, list_api_keys, revoke_api_key, setup_detect, setup_generate_config, and 251 more. Their descriptions and schemas cost roughly 22,670 tokens of context every time the server is loaded.
Does the Physical Capability Cloud MCP server require authentication?
No. We connected to Physical Capability Cloud without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the Physical Capability Cloud MCP server still maintained?
Physical Capability Cloud is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.