{"apiVersion":"v1","directorySlug":"oncompute-mcp-6390987aa4","title":"GPU Inference by the Hour | Ocean Network","description":"Ocean Network is a peer to peer GPU cloud for AI inference. Serve any open model behind an OpenAI-compatible endpoint on a dedicated H200 from $2.16 an hour.","pageUrl":"https://www.mcpbundles.com/skills/oncompute-mcp-6390987aa4","connectPath":"importable","connectAction":"import_server","catalogListing":false,"bundleSlug":null,"listingKind":"remote_mcp","kind":"provider","transportUrl":"https://mcp.oncompute.ai/mcp","hostedMcpUrl":null,"toolCount":93,"toolInventoryStatus":"observed","refreshedAt":"2026-11-03T13:26:00.516172+00:00","registryName":"ai.oncompute/oncompute-mcp-6390987aa4","registryVersion":"2026.11.3","registryEligible":true,"tools":[{"name":"mcp_server_peers","description":"Gets all peers connected to this MCP Server (libp2p peer store).","inputSchema":{"type":"object","properties":{}},"title":"Get all peers for MCP Server","logicalName":"mcp_server_peers","displayName":"Get all peers for MCP Server","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"node_status","description":"Gets ocean-node status via the P2P **status** command. Use **nodeId** and/or **multiaddress** to target the peer. The payload may include **persistentStorage** (object, optionally with **accessLists**) only when the node has persistent storage configured—agents must use this to decide if persistent storage bucket/file tools are allowed for that node.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"nodeId":{"type":"string"},"timeout":{"type":"number"},"multiaddress":{"type":"array","items":{"type":"string"}}}},"title":"Get node status","logicalName":"node_status","displayName":"Get node status","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"find_compute_providers","description":"Typed compute-provider discovery over the DHT (`ProviderInstance.findComputeProviders`). Pass ordinary resource values — no hand-built search string, no bucket math.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["free","resources"],"properties":{"free":{"type":"boolean"},"models":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"timeout":{"type":"number"},"resources":{"type":"array","items":{"type":"object","required":["resource","value"],"properties":{"value":{"type":"number"},"resource":{"type":"string"}}},"minItems":1}}},"title":"Find compute (C2D) providers by resources","logicalName":"find_compute_providers","displayName":"Find compute (C2D) providers by resources","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"find_provider","description":"DHT lookup: hashes content (SHA-256) and returns peers that provided that exact string (e.g. a DID). Results are `{ id, multiaddrs, partial?, error? }` per peer — `partial` marks a walk that ended early. For compute (C2D) capacity discovery use **find_compute_providers** (typed resource search with verification) instead of hand-building a key here.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["content"],"properties":{"content":{"type":"string"},"timeout":{"type":"number"}}},"title":"Find provider for specific string","logicalName":"find_provider","displayName":"Find provider for specific string","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getComputeEnvironments","description":"Calls P2pProvider.getComputeEnvironments — lists compute environments exposed by the target node (no auth).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"nodeId":{"type":"string"},"timeout":{"type":"number"},"multiaddress":{"type":"array","items":{"type":"string"}}}},"title":"Get compute environments for a specific node","logicalName":"getComputeEnvironments","displayName":"Get compute environments for a specific node","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_node_metrics","description":"Live per-node resource snapshot (`getNodeMetrics`): CPU, memory, storage, GPU and per-environment usage collected at `collectedAt`. No auth.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"nodeId":{"type":"string"},"timeout":{"type":"number"},"multiaddress":{"type":"array","items":{"type":"string"}}}},"title":"Get node resource metrics (live)","logicalName":"get_node_metrics","displayName":"Get node resource metrics (live)","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_node_metrics_history","description":"Hourly-averaged node resource metrics over a time window (`getNodeMetricsHistory`). No auth.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"nodeId":{"type":"string"},"timeout":{"type":"number"},"stopTime":{"type":"number"},"startTime":{"type":"number"},"multiaddress":{"type":"array","items":{"type":"string"}}}},"title":"Get node resource metrics (hourly history)","logicalName":"get_node_metrics_history","displayName":"Get node resource metrics (hourly history)","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"resolveDdo","description":"Fetches a DDO by DID from a target ocean-node over libp2p (`P2pProvider.resolveDdo`). No consumer signature.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["did"],"properties":{"did":{"type":"string"},"nodeId":{"type":"string"},"timeout":{"type":"number"},"multiaddress":{"type":"array","items":{"type":"string"}}}},"title":"P2P resolve DDO (getDDO)","logicalName":"resolveDdo","displayName":"P2P resolve DDO (getDDO)","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"validateDdo","description":"Runs `validateDDO` on the node with a full DDO payload. Requires auth.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["ddo"],"properties":{"ddo":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"nodeId":{"type":"string"},"timeout":{"type":"number"},"authToken":{"type":"string"},"multiaddress":{"type":"array","items":{"type":"string"}},"completeSignature":{"type":"object","required":["consumerAddress","nonce","signature"],"properties":{"nonce":{"type":"string"},"signature":{"type":"string"},"consumerAddress":{"type":"string"}}}}},"title":"P2P validate DDO","logicalName":"validateDdo","displayName":"P2P validate DDO","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getNodeJobs","description":"Calls `jobs` on the node (`P2pProvider.getNodeJobs`). No auth.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"nodeId":{"type":"string"},"timeout":{"type":"number"},"multiaddress":{"type":"array","items":{"type":"string"}},"fromTimestamp":{"type":"number"}}},"title":"P2P list node compute jobs","logicalName":"getNodeJobs","displayName":"P2P list node compute jobs","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getNonce","description":"Returns the node’s current nonce for an address (`P2pProvider.getNonce`). **No auth.** Use this before building a `completeSignature`: the value you sign with must use **nonce = String(returnedNonce + 1)** (see auth guide).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["consumerAddress"],"properties":{"nodeId":{"type":"string"},"timeout":{"type":"number"},"multiaddress":{"type":"array","items":{"type":"string"}},"consumerAddress":{"type":"string"}}},"title":"P2P get consumer nonce","logicalName":"getNonce","displayName":"P2P get consumer nonce","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getFileInfo","description":"Resolves file metadata via `fileInfo` (`P2pProvider.getFileInfo`). No consumer signature.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["file"],"properties":{"file":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"nodeId":{"type":"string"},"timeout":{"type":"number"},"multiaddress":{"type":"array","items":{"type":"string"}},"withChecksum":{"type":"boolean"}}},"title":"P2P get file info","logicalName":"getFileInfo","displayName":"P2P get file info","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"computeStop","description":"Stops a running job (`stopCompute`). Requires auth.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["jobId"],"properties":{"jobId":{"type":"string"},"nodeId":{"type":"string"},"timeout":{"type":"number"},"authToken":{"type":"string"},"agreementId":{"type":"string"},"multiaddress":{"type":"array","items":{"type":"string"}},"completeSignature":{"type":"object","required":["consumerAddress","nonce","signature"],"properties":{"nonce":{"type":"string"},"signature":{"type":"string"},"consumerAddress":{"type":"string"}}}}},"title":"P2P stop compute job","logicalName":"computeStop","displayName":"P2P stop compute job","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"computeStatus","description":"Queries job status (`getComputeStatus`). Requires auth.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"jobId":{"type":"string"},"nodeId":{"type":"string"},"timeout":{"type":"number"},"authToken":{"type":"string"},"agreementId":{"type":"string"},"multiaddress":{"type":"array","items":{"type":"string"}},"completeSignature":{"type":"object","required":["consumerAddress","nonce","signature"],"properties":{"nonce":{"type":"string"},"signature":{"type":"string"},"consumerAddress":{"type":"string"}}}}},"title":"P2P compute status","logicalName":"computeStatus","displayName":"P2P compute status","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getComputeResult","description":"Streams a compute result file and returns it as base64 (`getComputeResult`). Requires auth.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["jobId","index"],"properties":{"index":{"type":"number"},"jobId":{"type":"string"},"nodeId":{"type":"string"},"offset":{"type":"number"},"timeout":{"type":"number"},"authToken":{"type":"string"},"multiaddress":{"type":"array","items":{"type":"string"}},"completeSignature":{"type":"object","required":["consumerAddress","nonce","signature"],"properties":{"nonce":{"type":"string"},"signature":{"type":"string"},"consumerAddress":{"type":"string"}}}}},"title":"P2P get compute result (binary)","logicalName":"getComputeResult","displayName":"P2P get compute result (binary)","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"downloadNodeLogs","description":"Fetches operator logs from the node (`getLogs`). Requires auth.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["startTime","endTime"],"properties":{"page":{"type":"number"},"level":{"type":"string"},"nodeId":{"type":"string"},"endTime":{"type":"string"},"maxLogs":{"type":"number"},"timeout":{"type":"number"},"authToken":{"type":"string"},"startTime":{"type":"string"},"moduleName":{"type":"string"},"multiaddress":{"type":"array","items":{"type":"string"}},"completeSignature":{"type":"object","required":["consumerAddress","nonce","signature"],"properties":{"nonce":{"type":"string"},"signature":{"type":"string"},"consumerAddress":{"type":"string"}}}}},"title":"P2P download node logs","logicalName":"downloadNodeLogs","displayName":"P2P download node logs","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"createPersistentStorageBucket","description":"Creates a bucket (`persistentStorageCreateBucket`). Requires auth.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"nodeId":{"type":"string"},"timeout":{"type":"number"},"authToken":{"type":"string"},"accessLists":{"type":"array","items":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"multiaddress":{"type":"array","items":{"type":"string"}},"completeSignature":{"type":"object","required":["consumerAddress","nonce","signature"],"properties":{"nonce":{"type":"string"},"signature":{"type":"string"},"consumerAddress":{"type":"string"}}}}},"title":"P2P create persistent storage bucket","logicalName":"createPersistentStorageBucket","displayName":"P2P create persistent storage bucket","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getPersistentStorageBuckets","description":"Lists buckets for an owner (`persistentStorageGetBuckets`). Requires auth.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["owner"],"properties":{"owner":{"type":"string"},"nodeId":{"type":"string"},"timeout":{"type":"number"},"authToken":{"type":"string"},"multiaddress":{"type":"array","items":{"type":"string"}},"completeSignature":{"type":"object","required":["consumerAddress","nonce","signature"],"properties":{"nonce":{"type":"string"},"signature":{"type":"string"},"consumerAddress":{"type":"string"}}}}},"title":"P2P list persistent storage buckets","logicalName":"getPersistentStorageBuckets","displayName":"P2P list persistent storage buckets","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"listPersistentStorageFiles","description":"Lists files in a bucket (`persistentStorageListFiles`). Requires auth.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["bucketId"],"properties":{"nodeId":{"type":"string"},"timeout":{"type":"number"},"bucketId":{"type":"string"},"authToken":{"type":"string"},"multiaddress":{"type":"array","items":{"type":"string"}},"completeSignature":{"type":"object","required":["consumerAddress","nonce","signature"],"properties":{"nonce":{"type":"string"},"signature":{"type":"string"},"consumerAddress":{"type":"string"}}}}},"title":"P2P list persistent storage files","logicalName":"listPersistentStorageFiles","displayName":"P2P list persistent storage files","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getPersistentStorageFileObject","description":"Returns the node's `PersistentStorageObject` descriptor for a bucket file (`persistentStorageGetFileObject`). Requires auth.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["bucketId","fileName"],"properties":{"nodeId":{"type":"string"},"timeout":{"type":"number"},"bucketId":{"type":"string"},"fileName":{"type":"string"},"authToken":{"type":"string"},"multiaddress":{"type":"array","items":{"type":"string"}},"completeSignature":{"type":"object","required":["consumerAddress","nonce","signature"],"properties":{"nonce":{"type":"string"},"signature":{"type":"string"},"consumerAddress":{"type":"string"}}}}},"title":"P2P get persistent storage file object","logicalName":"getPersistentStorageFileObject","displayName":"P2P get persistent storage file object","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"deletePersistentStorageFile","description":"Deletes a file from a bucket (`persistentStorageDeleteFile`). Requires auth.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["bucketId","fileName"],"properties":{"nodeId":{"type":"string"},"timeout":{"type":"number"},"bucketId":{"type":"string"},"fileName":{"type":"string"},"authToken":{"type":"string"},"multiaddress":{"type":"array","items":{"type":"string"}},"completeSignature":{"type":"object","required":["consumerAddress","nonce","signature"],"properties":{"nonce":{"type":"string"},"signature":{"type":"string"},"consumerAddress":{"type":"string"}}}}},"title":"P2P delete persistent storage file","logicalName":"deletePersistentStorageFile","displayName":"P2P delete persistent storage file","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_download_fees","description":"Runs `initialize` / `getFees` for a dataset service file. **No auth.** Returns provider pricing / validation (`ProviderInitialize`) before download.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["did","serviceId","fileIndex","consumerAddress"],"properties":{"did":{"type":"string"},"nodeId":{"type":"string"},"timeout":{"type":"number"},"fileIndex":{"type":"integer","maximum":9007199254740991,"minimum":0},"serviceId":{"type":"string"},"computeEnv":{"type":"string"},"validUntil":{"type":"number"},"multiaddress":{"type":"array","items":{"type":"string"}},"consumerAddress":{"type":"string"},"userCustomParameters":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}}},"title":"P2P get download fees (initialize)","logicalName":"get_download_fees","displayName":"P2P get download fees (initialize)","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"p2p_encrypt","description":"Encrypts data via the node (`encrypt`). Requires auth.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["chainId","blob"],"properties":{"blob":{"type":"string"},"nodeId":{"type":"string"},"chainId":{"type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"timeout":{"type":"number"},"authToken":{"type":"string"},"multiaddress":{"type":"array","items":{"type":"string"}},"policyServer":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"completeSignature":{"type":"object","required":["consumerAddress","nonce","signature"],"properties":{"nonce":{"type":"string"},"signature":{"type":"string"},"consumerAddress":{"type":"string"}}}}},"title":"P2P encrypt blob","logicalName":"p2p_encrypt","displayName":"P2P encrypt blob","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"check_did_files","description":"Lists file entries for a DID + service (`checkDidFiles` / `fileInfo`). **No auth.**","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["did","serviceId"],"properties":{"did":{"type":"string"},"nodeId":{"type":"string"},"timeout":{"type":"number"},"serviceId":{"type":"string"},"multiaddress":{"type":"array","items":{"type":"string"}},"withChecksum":{"type":"boolean"}}},"title":"P2P list files for DID service","logicalName":"check_did_files","displayName":"P2P list files for DID service","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"create_auth_token","description":"Mints a node JWT via `createAuthToken`. The token's identity is the **consumer** for later compute calls.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"nodeId":{"type":"string"},"timeout":{"type":"number"},"ephemeral":{"type":"boolean"},"privateKey":{"type":"string"},"multiaddress":{"type":"array","items":{"type":"string"}}}},"title":"P2P create auth token","logicalName":"create_auth_token","displayName":"P2P create auth token","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"policy_server_passthrough","description":"Forwards a policy-server request over P2P (`PolicyServerPassthrough`). Shape is node- and integration-specific.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["request"],"properties":{"nodeId":{"type":"string"},"request":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"timeout":{"type":"number"},"multiaddress":{"type":"array","items":{"type":"string"}}}},"title":"P2P policy server passthrough","logicalName":"policy_server_passthrough","displayName":"P2P policy server passthrough","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"policy_server_initialize_verification","description":"Initializes policy-server verification (`initializePSVerification`, `PolicyServerPassthrough`).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["request"],"properties":{"nodeId":{"type":"string"},"request":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"timeout":{"type":"number"},"multiaddress":{"type":"array","items":{"type":"string"}}}},"title":"P2P policy server initialize verification","logicalName":"policy_server_initialize_verification","displayName":"P2P policy server initialize verification","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"compute_streamable_logs","description":"Fetches streamable job logs (`getComputeStreamableLogs`) and returns **base64** of the collected bytes (same framing as compute result streaming).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["jobId"],"properties":{"jobId":{"type":"string"},"nodeId":{"type":"string"},"timeout":{"type":"number"},"authToken":{"type":"string"},"multiaddress":{"type":"array","items":{"type":"string"}},"completeSignature":{"type":"object","required":["consumerAddress","nonce","signature"],"properties":{"nonce":{"type":"string"},"signature":{"type":"string"},"consumerAddress":{"type":"string"}}}}},"title":"P2P compute streamable logs","logicalName":"compute_streamable_logs","displayName":"P2P compute streamable logs","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"upload_persistent_storage_file","description":"Uploads file bytes to a bucket (`persistentStorageUploadFile`). Requires auth. Body is sent as one LP chunk from **contentBase64**.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["bucketId","fileName","contentBase64"],"properties":{"nodeId":{"type":"string"},"timeout":{"type":"number"},"bucketId":{"type":"string"},"fileName":{"type":"string"},"authToken":{"type":"string"},"multiaddress":{"type":"array","items":{"type":"string"}},"contentBase64":{"type":"string"},"completeSignature":{"type":"object","required":["consumerAddress","nonce","signature"],"properties":{"nonce":{"type":"string"},"signature":{"type":"string"},"consumerAddress":{"type":"string"}}}}},"title":"P2P upload persistent storage file","logicalName":"upload_persistent_storage_file","displayName":"P2P upload persistent storage file","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"fetch_node_config","description":"Calls `fetchConfig`. **Operator-only:** Misuse can break or leak node configuration. Payload must match ocean-node signing expectations for `fetchConfig` / `pushConfig`.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["payload"],"properties":{"nodeId":{"type":"string"},"payload":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"timeout":{"type":"number"},"multiaddress":{"type":"array","items":{"type":"string"}}}},"title":"P2P fetch node config","logicalName":"fetch_node_config","displayName":"P2P fetch node config","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"push_node_config","description":"Calls `pushConfig`. **Operator-only:** Misuse can break or leak node configuration. Payload must match ocean-node signing expectations for `fetchConfig` / `pushConfig`.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["payload"],"properties":{"nodeId":{"type":"string"},"payload":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"timeout":{"type":"number"},"multiaddress":{"type":"array","items":{"type":"string"}}}},"title":"P2P push node config","logicalName":"push_node_config","displayName":"P2P push node config","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"is_valid_provider","description":"Returns whether the peer responds to STATUS with a provider address (`isValidProvider`). **No auth.**","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"nodeId":{"type":"string"},"timeout":{"type":"number"},"multiaddress":{"type":"array","items":{"type":"string"}}}},"title":"P2P check node reachable","logicalName":"is_valid_provider","displayName":"P2P check node reachable","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"resolve_peer_multiaddr","description":"Looks up a dialable multiaddr for a libp2p peer id (connections, peer store, then DHT). Uses the MCP server’s local P2P stack — **not** a remote ocean-node call.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["peerId"],"properties":{"peerId":{"type":"string"}}},"title":"Resolve peer multiaddr from id","logicalName":"resolve_peer_multiaddr","displayName":"Resolve peer multiaddr from id","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"list_discovered_peers","description":"Returns peers from the local peer store (`getDiscoveredNodes`). **No remote node target.** Requires P2P initialized on this MCP process.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"title":"List discovered libp2p peers","logicalName":"list_discovered_peers","displayName":"List discovered libp2p peers","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"cid_from_raw_string","description":"SHA-256 raw CID for a UTF-8 string (`cidFromRawString`) — same hashing as **find_provider** content keys. **No network call.**","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["data"],"properties":{"data":{"type":"string"}}},"title":"CID from raw string (DHT key)","logicalName":"cid_from_raw_string","displayName":"CID from raw string (DHT key)","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"findServiceEnvironments","description":"Lists a node's compute environments and reports which can actually host a **service** (`getComputeEnvironments` → `features.services !== false`, plus the practical filters that turn \"advertised\" into \"startable\"). **No auth.**","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"token":{"type":"string"},"nodeId":{"type":"string"},"chainId":{"type":"integer","maximum":9007199254740991,"exclusiveMinimum":0},"timeout":{"type":"number"},"resources":{"type":"array","items":{"type":"object","required":["id","amount"],"properties":{"id":{"type":"string"},"amount":{"type":"number"}}}},"multiaddress":{"type":"array","items":{"type":"string"}}}},"title":"Services: find service-capable compute environments on a node","logicalName":"findServiceEnvironments","displayName":"Services: find service-capable compute environments on a node","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"findServiceNodes","description":"Fans `findServiceEnvironments` out across several peers and returns those with at least one service-capable environment. **No auth.**","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"token":{"type":"string"},"chainId":{"type":"integer","maximum":9007199254740991,"exclusiveMinimum":0},"peerIds":{"type":"array","items":{"type":"string"}},"timeout":{"type":"number"},"maxPeers":{"type":"integer","maximum":9007199254740991,"exclusiveMinimum":0},"resources":{"type":"array","items":{"type":"object","required":["id","amount"],"properties":{"id":{"type":"string"},"amount":{"type":"number"}}}}}},"title":"Services: find nodes that can host a service","logicalName":"findServiceNodes","displayName":"Services: find nodes that can host a service","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getServiceTemplates","description":"Returns the node's service template catalogue (`serviceGetTemplates`). **No auth.**","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"nodeId":{"type":"string"},"chainId":{"type":"integer","maximum":9007199254740991,"exclusiveMinimum":0},"timeout":{"type":"number"},"multiaddress":{"type":"array","items":{"type":"string"}}}},"title":"Services: list a node operator's service templates","logicalName":"getServiceTemplates","displayName":"Services: list a node operator's service templates","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"serviceStatus","description":"Owner-scoped status for one service or all of yours (`serviceGetStatus`). Requires auth. Omit `serviceId` for every service you own on this node.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"nodeId":{"type":"string"},"timeout":{"type":"number"},"authToken":{"type":"string"},"serviceId":{"type":"string"},"waitTimeout":{"type":"integer","maximum":9007199254740991,"exclusiveMinimum":0},"multiaddress":{"type":"array","items":{"type":"string"}},"waitForRunning":{"type":"boolean"},"completeSignature":{"type":"object","required":["consumerAddress","nonce","signature"],"properties":{"nonce":{"type":"string"},"signature":{"type":"string"},"consumerAddress":{"type":"string"}}}}},"title":"Services: get your services' status and endpoints","logicalName":"serviceStatus","displayName":"Services: get your services' status and endpoints","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"getServices","description":"Lists services on the node (`serviceList`). Requires auth.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"nodeId":{"type":"string"},"status":{"type":"integer","maximum":9007199254740991,"minimum":-9007199254740991},"timeout":{"type":"number"},"authToken":{"type":"string"},"multiaddress":{"type":"array","items":{"type":"string"}},"updatedSince":{"type":"string"},"fromTimestamp":{"type":"string"},"completeSignature":{"type":"object","required":["consumerAddress","nonce","signature"],"properties":{"nonce":{"type":"string"},"signature":{"type":"string"},"consumerAddress":{"type":"string"}}},"includeAllStatuses":{"type":"boolean"}}},"title":"Services: list services on a node (NODE-WIDE, not just yours)","logicalName":"getServices","displayName":"Services: list services on a node (NODE-WIDE, not just yours)","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"serviceStop","description":"Stops a service's container (`serviceStop`). Requires auth, owner-gated.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["serviceId"],"properties":{"nodeId":{"type":"string"},"timeout":{"type":"number"},"authToken":{"type":"string"},"serviceId":{"type":"string"},"multiaddress":{"type":"array","items":{"type":"string"}},"completeSignature":{"type":"object","required":["consumerAddress","nonce","signature"],"properties":{"nonce":{"type":"string"},"signature":{"type":"string"},"consumerAddress":{"type":"string"}}}}},"title":"Services: stop a service (does NOT release the paid reservation)","logicalName":"serviceStop","displayName":"Services: stop a service (does NOT release the paid reservation)","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_balance","description":"Gets the native ETH balance of an EVM account.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["chainId","address"],"properties":{"address":{"type":"string"},"chainId":{"type":"integer","maximum":9007199254740991,"exclusiveMinimum":0}}},"title":"Get ETH balance","logicalName":"get_balance","displayName":"Get ETH balance","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_transaction_count","description":"Gets the transaction count (nonce) for an EVM account.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["chainId","address"],"properties":{"address":{"type":"string"},"chainId":{"type":"integer","maximum":9007199254740991,"exclusiveMinimum":0}}},"title":"Get transaction count","logicalName":"get_transaction_count","displayName":"Get transaction count","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_transaction","description":"Gets an EVM transaction by hash (if available on the connected RPC).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["chainId","txHash"],"properties":{"txHash":{"type":"string"},"chainId":{"type":"integer","maximum":9007199254740991,"exclusiveMinimum":0}}},"title":"Get transaction","logicalName":"get_transaction","displayName":"Get transaction","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_transaction_receipt","description":"Gets an EVM transaction receipt by hash (if mined).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["chainId","txHash"],"properties":{"txHash":{"type":"string"},"chainId":{"type":"integer","maximum":9007199254740991,"exclusiveMinimum":0}}},"title":"Get transaction receipt","logicalName":"get_transaction_receipt","displayName":"Get transaction receipt","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"broadcast_transaction","description":"Broadcasts a raw signed EVM transaction to the configured chain provider and returns the resulting transaction response.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["chainId","txRaw"],"properties":{"txRaw":{"type":"string"},"chainId":{"type":"integer","maximum":9007199254740991,"exclusiveMinimum":0}}},"title":"Broadcast raw EVM transaction","logicalName":"broadcast_transaction","displayName":"Broadcast raw EVM transaction","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_erc20_token_info","description":"Reads `decimals`, `symbol`, and `name` from an ERC-20 token contract (read-only). Use this to denominate raw amounts (e.g. `payment.amount` from initializeCompute, `escrow_get_user_funds`) into human-readable units before showing them to the user. Optionally pass `rawAmount` to get back the human-readable string as well.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["chainId","tokenAddress"],"properties":{"chainId":{"type":"integer","maximum":9007199254740991,"exclusiveMinimum":0},"rawAmount":{"type":"string"},"tokenAddress":{"type":"string"}}},"title":"Get ERC-20 token info (decimals, symbol, name)","logicalName":"get_erc20_token_info","displayName":"Get ERC-20 token info (decimals, symbol, name)","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"escrow_get_funds","description":"Reads total escrowed funds for a payment token from an Escrow contract (read-only).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["chainId","contractAddress","token"],"properties":{"token":{"type":"string"},"chainId":{"type":"integer","maximum":9007199254740991,"exclusiveMinimum":0},"contractAddress":{"type":"string"}}},"title":"Escrow: get token funds","logicalName":"escrow_get_funds","displayName":"Escrow: get token funds","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"escrow_get_user_funds","description":"Reads escrowed funds for a payer and token from Escrow.getUserFunds (read-only).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["chainId","contractAddress","payer","token"],"properties":{"payer":{"type":"string"},"token":{"type":"string"},"chainId":{"type":"integer","maximum":9007199254740991,"exclusiveMinimum":0},"contractAddress":{"type":"string"}}},"title":"Escrow: get user funds","logicalName":"escrow_get_user_funds","displayName":"Escrow: get user funds","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"escrow_get_user_tokens","description":"Reads payment token addresses for which the payer has escrow records via Escrow.getUserTokens (read-only).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["chainId","contractAddress","payer"],"properties":{"payer":{"type":"string"},"chainId":{"type":"integer","maximum":9007199254740991,"exclusiveMinimum":0},"contractAddress":{"type":"string"}}},"title":"Escrow: get user tokens","logicalName":"escrow_get_user_tokens","displayName":"Escrow: get user tokens","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"escrow_get_locks","description":"Reads escrow locks for token + payer + payee via Escrow.getLocks (read-only).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["chainId","contractAddress","token","payer","payee"],"properties":{"payee":{"type":"string"},"payer":{"type":"string"},"token":{"type":"string"},"chainId":{"type":"integer","maximum":9007199254740991,"exclusiveMinimum":0},"contractAddress":{"type":"string"}}},"title":"Escrow: get locks","logicalName":"escrow_get_locks","displayName":"Escrow: get locks","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"escrow_get_authorizations","description":"Reads escrow authorizations for token + payer + payee via Escrow.getAuthorizations (read-only).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["chainId","contractAddress","token","payer","payee"],"properties":{"payee":{"type":"string"},"payer":{"type":"string"},"token":{"type":"string"},"chainId":{"type":"integer","maximum":9007199254740991,"exclusiveMinimum":0},"contractAddress":{"type":"string"}}},"title":"Escrow: get authorizations","logicalName":"escrow_get_authorizations","displayName":"Escrow: get authorizations","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"escrow_deposit","description":"Builds an unsigned transaction for Escrow.deposit.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["chainId","contractAddress","from","token","amount"],"properties":{"from":{"type":"string"},"token":{"type":"string"},"amount":{"type":"string"},"chainId":{"type":"integer","maximum":9007199254740991,"exclusiveMinimum":0},"tokenDecimals":{"type":"integer","maximum":9007199254740991,"exclusiveMinimum":0},"contractAddress":{"type":"string"}}},"title":"Escrow: deposit funds","logicalName":"escrow_deposit","displayName":"Escrow: deposit funds","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"escrow_withdraw","description":"Builds an unsigned transaction for Escrow.withdraw(tokens, amounts).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["chainId","contractAddress","from","tokens","amounts"],"properties":{"from":{"type":"string"},"tokens":{"type":"array","items":{"type":"string"}},"amounts":{"type":"array","items":{"type":"string"}},"chainId":{"type":"integer","maximum":9007199254740991,"exclusiveMinimum":0},"tokenDecimals":{"type":"integer","maximum":9007199254740991,"exclusiveMinimum":0},"contractAddress":{"type":"string"}}},"title":"Escrow: withdraw funds","logicalName":"escrow_withdraw","displayName":"Escrow: withdraw funds","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"escrow_authorize","description":"Builds an unsigned transaction for Escrow.authorize(token, payee, maxLockedAmount, maxLockSeconds, maxLockCounts).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["chainId","contractAddress","from","token","payee","maxLockedAmount","maxLockSeconds","maxLockCounts"],"properties":{"from":{"type":"string"},"payee":{"type":"string"},"token":{"type":"string"},"chainId":{"type":"integer","maximum":9007199254740991,"exclusiveMinimum":0},"maxLockCounts":{"type":"string"},"tokenDecimals":{"type":"integer","maximum":9007199254740991,"exclusiveMinimum":0},"maxLockSeconds":{"type":"string"},"contractAddress":{"type":"string"},"maxLockedAmount":{"type":"string"}}},"title":"Escrow: authorize payee","logicalName":"escrow_authorize","displayName":"Escrow: authorize payee","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"accesslist_get_details","description":"Reads core AccessList metadata: id, owner, name, and symbol from an AccessList contract (read-only).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["chainId","contractAddress"],"properties":{"chainId":{"type":"integer","maximum":9007199254740991,"exclusiveMinimum":0},"contractAddress":{"type":"string"}}},"title":"AccessList: get details","logicalName":"accesslist_get_details","displayName":"AccessList: get details","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"accesslist_get_token_uri","description":"Reads tokenURI(tokenId) from an AccessList contract (read-only).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["chainId","contractAddress","tokenId"],"properties":{"chainId":{"type":"integer","maximum":9007199254740991,"exclusiveMinimum":0},"tokenId":{"type":"integer","maximum":9007199254740991,"minimum":0},"contractAddress":{"type":"string"}}},"title":"AccessList: get token URI","logicalName":"accesslist_get_token_uri","displayName":"AccessList: get token URI","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"accesslist_mint","description":"Builds an unsigned transaction for AccessList.mint(user, tokenUri).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["chainId","contractAddress","from","user","tokenUri"],"properties":{"from":{"type":"string"},"user":{"type":"string"},"chainId":{"type":"integer","maximum":9007199254740991,"exclusiveMinimum":0},"tokenUri":{"type":"string"},"contractAddress":{"type":"string"}}},"title":"AccessList: mint","logicalName":"accesslist_mint","displayName":"AccessList: mint","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"accesslist_factory_is_deployed","description":"Checks AccessListFactory.isDeployed(contractAddress) for an AccessList contract (read-only).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["chainId","contractAddress","listAddress"],"properties":{"chainId":{"type":"integer","maximum":9007199254740991,"exclusiveMinimum":0},"listAddress":{"type":"string"},"contractAddress":{"type":"string"}}},"title":"AccessListFactory: is deployed","logicalName":"accesslist_factory_is_deployed","displayName":"AccessListFactory: is deployed","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"accesslist_factory_deploy","description":"Builds an unsigned transaction for AccessListFactory.deployAccessListContract.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["chainId","contractAddress","from","nameAccessList","symbolAccessList","tokenURI","owner","user"],"properties":{"from":{"type":"string"},"user":{"type":"array","items":{"type":"string"}},"owner":{"type":"string"},"chainId":{"type":"integer","maximum":9007199254740991,"exclusiveMinimum":0},"tokenURI":{"type":"array","items":{"type":"string"}},"transferable":{"type":"boolean"},"nameAccessList":{"type":"string"},"contractAddress":{"type":"string"},"symbolAccessList":{"type":"string"}}},"title":"AccessListFactory: deploy access list","logicalName":"accesslist_factory_deploy","displayName":"AccessListFactory: deploy access list","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"incentives_list_nodes","description":"Lists incentive-monitor nodes from the incentives API, including optional node lookup, search, filters, sort, and pagination.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"page":{"type":"integer","default":1,"maximum":9007199254740991,"exclusiveMinimum":0},"size":{"type":"integer","default":10,"maximum":9007199254740991,"exclusiveMinimum":0},"sort":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"enum":["asc","desc"],"type":"string"}},"nodeId":{"type":"string"},"search":{"type":"string"},"filters":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"useScroll":{"type":"boolean","default":false}}},"title":"List incentive nodes","logicalName":"incentives_list_nodes","displayName":"List incentive nodes","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"incentives_run_query","description":"Runs the raw incentives `POST /query` Elasticsearch proxy. Use only when the higher-level incentives tools are not sufficient.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["query"],"properties":{"query":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}}},"title":"Run incentives Elasticsearch query","logicalName":"incentives_run_query","displayName":"Run incentives Elasticsearch query","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"incentives_get_node_system_stats","description":"Returns aggregate CPU, OS, and architecture counts for incentive nodes.","inputSchema":{"type":"object","properties":{}},"title":"Get node system stats","logicalName":"incentives_get_node_system_stats","displayName":"Get node system stats","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"incentives_get_node_benchmark_history","description":"Returns benchmark history for a specific node, with optional filters, search, sort, and pagination.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["nodeId"],"properties":{"page":{"type":"integer","default":1,"maximum":9007199254740991,"exclusiveMinimum":0},"size":{"type":"integer","default":10,"maximum":9007199254740991,"exclusiveMinimum":0},"sort":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"enum":["asc","desc"],"type":"string"}},"nodeId":{"type":"string"},"search":{"type":"string"},"filters":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"useScroll":{"type":"boolean","default":false}}},"title":"Get node benchmark history","logicalName":"incentives_get_node_benchmark_history","displayName":"Get node benchmark history","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"incentives_get_ban_status","description":"Returns whether a specific node is currently banned and any associated ban info.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["nodeId"],"properties":{"nodeId":{"type":"string"}}},"title":"Get node ban status","logicalName":"incentives_get_ban_status","displayName":"Get node ban status","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"incentives_request_unban","description":"Submits a signed unban request for a banned or suspended node via the incentives API.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["nodeId","signature","expiryTimestamp","address"],"properties":{"nodeId":{"type":"string"},"address":{"type":"string"},"signature":{"type":"string"},"expiryTimestamp":{"type":"number","exclusiveMinimum":0}}},"title":"Request node unban","logicalName":"incentives_request_unban","displayName":"Request node unban","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"incentives_list_unban_requests","description":"Lists recent unban requests for a specific node.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["nodeId"],"properties":{"page":{"type":"integer","default":1,"maximum":9007199254740991,"exclusiveMinimum":0},"size":{"type":"integer","default":5,"maximum":9007199254740991,"exclusiveMinimum":0},"nodeId":{"type":"string"}}},"title":"List node unban requests","logicalName":"incentives_list_unban_requests","displayName":"List node unban requests","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"incentives_get_node_benchmark","description":"Returns the latest benchmark scores for a node together with current network min and max values.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["nodeId"],"properties":{"nodeId":{"type":"string"}}},"title":"Get node benchmark summary","logicalName":"incentives_get_node_benchmark","displayName":"Get node benchmark summary","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"incentives_list_owner_compute_jobs","description":"Lists compute jobs for an owner, with optional search, filters, sort, scroll flag, and pagination.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["owner"],"properties":{"page":{"type":"integer","default":1,"maximum":9007199254740991,"exclusiveMinimum":0},"size":{"type":"integer","default":10,"maximum":9007199254740991,"exclusiveMinimum":0},"sort":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"enum":["asc","desc"],"type":"string"}},"owner":{"type":"string"},"search":{"type":"string"},"filters":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"useScroll":{"type":"boolean","default":false}}},"title":"List owner compute jobs","logicalName":"incentives_list_owner_compute_jobs","displayName":"List owner compute jobs","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"incentives_get_owner_env_info","description":"Returns unique compute environment definitions observed for an owner.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["owner"],"properties":{"owner":{"type":"string"}}},"title":"Get owner environment info","logicalName":"incentives_get_owner_env_info","displayName":"Get owner environment info","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"incentives_get_owner_nodes_stats","description":"Returns active, inactive, and total node counts for an owner/admin identifier.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["owner"],"properties":{"owner":{"type":"string"}}},"title":"Get owner node stats","logicalName":"incentives_get_owner_nodes_stats","displayName":"Get owner node stats","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"incentives_get_consumer_jobs_success_rate","description":"Returns total, successful, and failed job counts for a consumer identifier.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["consumer"],"properties":{"consumer":{"type":"string"}}},"title":"Get consumer jobs success rate","logicalName":"incentives_get_consumer_jobs_success_rate","displayName":"Get consumer jobs success rate","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"incentives_list_admin_nodes","description":"Lists nodes for a given admin address, with optional search, filters, sort, scroll flag, and pagination.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["admin"],"properties":{"page":{"type":"integer","default":1,"maximum":9007199254740991,"exclusiveMinimum":0},"size":{"type":"integer","default":10,"maximum":9007199254740991,"exclusiveMinimum":0},"sort":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"enum":["asc","desc"],"type":"string"}},"admin":{"type":"string"},"search":{"type":"string"},"filters":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"useScroll":{"type":"boolean","default":false}}},"title":"List admin nodes","logicalName":"incentives_list_admin_nodes","displayName":"List admin nodes","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"incentives_list_envs","description":"Lists flattened compute environments from the incentives API, with optional filters, sort, scroll flag, and pagination.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"page":{"type":"integer","default":1,"maximum":9007199254740991,"exclusiveMinimum":0},"size":{"type":"integer","default":10,"maximum":9007199254740991,"exclusiveMinimum":0},"sort":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"enum":["asc","desc"],"type":"string"}},"filters":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"useScroll":{"type":"boolean","default":false}}},"title":"List incentive environments","logicalName":"incentives_list_envs","displayName":"List incentive environments","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"list_resources","description":"Lists all MCP resources exposed by on-mcp (useful for clients that only surface tools).","inputSchema":{"type":"object","properties":{}},"title":"List MCP resources (on-mcp)","logicalName":"list_resources","displayName":"List MCP resources (on-mcp)","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_resource","description":"Returns the content for a given resource URI. This mirrors MCP resources for clients that only surface tools.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["uri"],"properties":{"uri":{"type":"string"}}},"title":"Get MCP resource content (on-mcp)","logicalName":"get_resource","displayName":"Get MCP resource content (on-mcp)","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"search_docs","description":"Search Ocean Network documentation by keyword or question across the indexed docs repositories.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["query"],"properties":{"query":{"type":"string"},"section":{"enum":["guide","ocean-node","dashboard","incentives-monitor","vscode-extension","ocean-contracts","ocean-js","ocean-cli","all"],"type":"string","default":"all"},"fileType":{"enum":["md","ts","js","json","sol","all"],"type":"string","default":"all"}}},"title":"Search Ocean docs","logicalName":"search_docs","displayName":"Search Ocean docs","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_doc","description":"Retrieve the full content of a specific documentation file by its URI. Use list_topics to discover available URIs.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["uri"],"properties":{"uri":{"type":"string"}}},"title":"Get Ocean doc by URI","logicalName":"get_doc","displayName":"Get Ocean doc by URI","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"list_topics","description":"List all available documentation topics grouped by section. Defaults to markdown files only to keep output manageable.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"section":{"enum":["guide","ocean-node","dashboard","incentives-monitor","vscode-extension","ocean-contracts","ocean-js","ocean-cli","all"],"type":"string","default":"all"},"fileType":{"enum":["md","ts","js","json","all"],"type":"string","default":"md"}}},"title":"List Ocean doc topics","logicalName":"list_topics","displayName":"List Ocean doc topics","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_workflow","description":"Get a step-by-step guide for a specific Ocean Network task across node operators, algorithm writers, and demand-side users.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["task"],"properties":{"task":{"enum":["run_node","configure_node_for_incentives","troubleshoot_node","write_c2d_algo","publish_algorithm","publish_dataset","run_compute_job_cli","run_compute_job_vscode","run_compute_job_dashboard","fund_wallet"],"type":"string"}}},"title":"Get Ocean workflow guide","logicalName":"get_workflow","displayName":"Get Ocean workflow guide","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"validate_algo_structure","description":"Validate an Ocean Compute-to-Data algorithm for common mistakes before submission.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["code","filename"],"properties":{"code":{"type":"string"},"filename":{"type":"string"},"dockerfile":{"type":"string"}}},"title":"Validate C2D algorithm structure","logicalName":"validate_algo_structure","displayName":"Validate C2D algorithm structure","annotations":{"untrustedContentHint":true,"readOnlyHint":true}}],"toolSource":"directory_preview","agentAction":"both","installLinks":[{"id":"cursor","label":"Cursor","href":"cursor://anysphere.cursor-deeplink/mcp/install?name=GPU-Inference-by-the-Hour-Ocean-Network&config=eyJ1cmwiOiAiaHR0cHM6Ly9tY3Aub25jb21wdXRlLmFpL21jcCJ9"},{"id":"vscode","label":"VS Code","href":"vscode:mcp/install?%7B%22name%22%3A%22GPU-Inference-by-the-Hour-Ocean-Network%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.oncompute.ai%2Fmcp%22%7D"},{"id":"vscode-insiders","label":"VS Code Insiders","href":"vscode-insiders:mcp/install?%7B%22name%22%3A%22GPU-Inference-by-the-Hour-Ocean-Network%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.oncompute.ai%2Fmcp%22%7D"},{"id":"claude-web","label":"Claude.ai","href":"https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=GPU+Inference+by+the+Hour+%7C+Ocean+Network&connectorUrl=https%3A%2F%2Fmcp.oncompute.ai%2Fmcp"},{"id":"codex","label":"Codex","copyText":"codex mcp add \"GPU-Inference-by-the-Hour-Ocean-Network\" --url \"https://mcp.oncompute.ai/mcp\""},{"id":"chatgpt","label":"ChatGPT","href":"https://www.mcpbundles.com/docs/integrations/chatgpt"}],"catalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/oncompute-mcp-6390987aa4","callUrl":"https://www.mcpbundles.com/api/directory/v1/servers/oncompute-mcp-6390987aa4/tools/{tool}","mcpServerUrl":"https://mcp.oncompute.ai/mcp","liveCatalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/oncompute-mcp-6390987aa4?live=1"}