Skip to content
Ocean Network logo

Ocean Network MCP server

Which MCP servers are Ocean Network's own, from the official registry and from asking its own domain, whether they answer, and what they offer. A program checked each of these, nobody copied them from a product page.

read 2026-10-09

← Back to Ocean Network

Whose server it is
  • Addresshttps://mcp.oncompute.ai/mcpnot in the official registry: answered when asked

No entry in the official MCP registry names this server. It answered on oncompute.ai when the Atlas asked at the address servers are usually mounted on, so it is the vendor's own. Clients and catalogues that list servers from the registry do not show it.

When we asked itchecked 2026-10-28
  • Stateanswerschecked 2026-10-28
  • Tools93
  • Server calls itselfocean-mcp
  • Server version0.1.0
  • Protocol version2025-06-18

On 2026-10-28 the server answered initialize and tools/list without a sign-in. First answer in 193 ms.

Should an agent connect itNot proven either way yet
  • Whether its tools do the product's job has not been judged yet.
  • Checked on 6 of the 7 days it takes to judge reliability.

Once connected

  • createPersistentStorageBucket, deletePersistentStorageFile, create_auth_token, upload_persistent_storage_file change data without a sign-in: anyone with the address can call them.
  • Its definitions take about 65427 tokens of context: enable only the tools a task needs.

Said by rules from the measurements above. The likely first call is a model's pick from the tool list; read its description before relying on it.

Measured dailydaily checks: 6, the first on 2026-10-28
  • INITE MCP scoreafter a weeka score needs 7 daily checks: 6 so far
  • Answeredmeasuring6 of the 7 daily checks it takes to print a share
  • Median first answer315 ms
  • Space in an agent's context≈ 65,427 tokensthe definitions of all its tools (93), which an agent carries on every turn
  • Tool definitionsB · 80 of 100
  • Typed results0 of 93 toolsdeclared outputSchema: results come typed, read once
  • Parameters without a description: in 20 of 93
  • Not saying whether it only reads or can destroy: 93 of 93

What an agent can do with it

  • can do · Run open-source language models on dedicated GPUs by the hour
  • not sure · Generate images and videos using templates on rented hardware
  • not sure · Earn income from idle GPUs by renting them to others

Each of the product's use cases, put to Jev against this server's tool list: can an agent do it with these tools?

Worth a look

  • Tools that change data, on a server that answers without a sign-in: createPersistentStorageBucket, deletePersistentStorageFile, create_auth_token, upload_persistent_storage_file

A program checks the server once a day: initialize and tools/list, no model. Tokens are the definitions' length at about four characters a token. The grade averages six checks of every tool's name, description, schema and annotations; it says how well the tools are described, not whether they work. The score weighs what was measured and nothing else: answering (25%), doing the product's job (25%), definitions (20%), context (10%), use (10%) and how readily a client connects (10%). A part that was not measured is left out, and a hidden instruction caps the score at 40. The state of vendors' MCP servers: method and numbers →

Tools it offers93 tools · read 2026-10-28
  • mcp_server_peers

    Gets all peers connected to this MCP Server (libp2p peer store).

  • node_status

    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…

  • find_compute_providers

    Typed compute-provider discovery over the DHT (`ProviderInstance.findComputeProviders`). Pass ordinary resource values — no hand-built search string, no bucket math. Provide **free** (true = free tier, false = paid) and one or more…

  • find_provider

    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…

  • getComputeEnvironments

    Calls P2pProvider.getComputeEnvironments — lists compute environments exposed by the target node (no auth). ## Default node targets If the user has not specified a `nodeId` / `multiaddress`, default to Ocean's recommended compute nodes by…

  • get_node_metrics

    Live per-node resource snapshot (`getNodeMetrics`): CPU, memory, storage, GPU and per-environment usage collected at `collectedAt`. No auth. **Returns:** a `NodeMetricsSnapshot`, or `null` if the target node does not expose this feature…

  • get_node_metrics_history

    Hourly-averaged node resource metrics over a time window (`getNodeMetricsHistory`). No auth. **Returns:** a `NodeMetricsHistoryResult` with an `buckets` array, or `null` if the target node does not expose this feature (older ocean-node).

  • resolveDdo

    Fetches a DDO by DID from a target ocean-node over libp2p (`P2pProvider.resolveDdo`). No consumer signature. **Returns:** Raw node response for `getDDO` (typically the DDO JSON object or node-specific envelope).

  • validateDdo

    Runs `validateDDO` on the node with a full DDO payload. Requires auth. ## Identity modes for an agent An agent acting for a user proves identity in one of two ways: (1) it **holds a private key** and signs locally (mint a token via…

  • getNodeJobs

    Calls `jobs` on the node (`P2pProvider.getNodeJobs`). No auth. **Inputs:** optional `fromTimestamp` filters jobs (Unix ms) when supported by the node. **Returns:** Array of `NodeComputeJob` objects (jobId, status, environment, payment…

  • getNonce

    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). **Returns:**…

  • getFileInfo

    Resolves file metadata via `fileInfo` (`P2pProvider.getFileInfo`). No consumer signature. ## fileObject shape (required fields per `type`) - `{ "type": "url", "url": "...", "method": "get" | "post", "headers"?: {...} }` — **`method` is…

  • initializeCompute

    Pricing/validation for compute (`initializeCompute`). No auth required. **Always call before `computeStart` to learn the real cost.** ## Duration vs escrow lock — different things - **maxJobDuration** / **validUntil**: container run time…

  • computeStart

    Starts a paid compute job (`startCompute`). Requires auth. **Paid jobs need on-chain escrow deposit + authorization.** This tool runs an escrow **preflight gate**: it resolves your consumer address (from `authToken` /…

  • freeComputeStart

    Starts a free compute job (`freeStartCompute`). Requires auth. **Need auth?** Pass an existing JWT as `authToken`, or call `create_auth_token` first (ephemeral or own key) and pass the returned JWT. Ephemeral works on open free envs…

  • computeStop

    Stops a running job (`stopCompute`). Requires auth. ## Identity modes for an agent An agent acting for a user proves identity in one of two ways: (1) it **holds a private key** and signs locally (mint a token via create_auth_token, or…

  • computeStatus

    Queries job status (`getComputeStatus`). Requires auth. ## After starting: poll to completion, fetch output — do NOT ask between polls Call **computeStatus** every ~5–10s until terminal, then fetch the result without asking. Status…

  • getComputeResult

    Streams a compute result file and returns it as base64 (`getComputeResult`). Requires auth. ## Identity modes for an agent An agent acting for a user proves identity in one of two ways: (1) it **holds a private key** and signs locally…

  • downloadNodeLogs

    Fetches operator logs from the node (`getLogs`). Requires auth. ## Identity modes for an agent An agent acting for a user proves identity in one of two ways: (1) it **holds a private key** and signs locally (mint a token via…

  • createPersistentStorageBucket

    Creates a bucket (`persistentStorageCreateBucket`). Requires auth. ## Node capability check (required first) Before **createPersistentStorageBucket**, **getPersistentStorageBuckets**, **listPersistentStorageFiles**…

  • getPersistentStorageBuckets

    Lists buckets for an owner (`persistentStorageGetBuckets`). Requires auth. ## Node capability check (required first) Before **createPersistentStorageBucket**, **getPersistentStorageBuckets**, **listPersistentStorageFiles**…

  • listPersistentStorageFiles

    Lists files in a bucket (`persistentStorageListFiles`). Requires auth. ## Node capability check (required first) Before **createPersistentStorageBucket**, **getPersistentStorageBuckets**, **listPersistentStorageFiles**…

  • getPersistentStorageFileObject

    Returns the node's `PersistentStorageObject` descriptor for a bucket file (`persistentStorageGetFileObject`). Requires auth. **This is the intended way to obtain the `fileObject` for a persistent-storage dataset in a compute job:** call…

  • deletePersistentStorageFile

    Deletes a file from a bucket (`persistentStorageDeleteFile`). Requires auth. ## Node capability check (required first) Before **createPersistentStorageBucket**, **getPersistentStorageBuckets**, **listPersistentStorageFiles**…

  • get_download_fees

    Runs `initialize` / `getFees` for a dataset service file. **No auth.** Returns provider pricing / validation (`ProviderInitialize`) before download. **Returns:** Node-dependent fee / initialization object.

  • download_asset_file

    Streams a file over P2P (`download` / `getDownloadUrl`). Requires auth. Returns **base64** of file bytes plus length (large assets → large JSON). ## Identity modes for an agent An agent acting for a user proves identity in one of two…

  • p2p_encrypt

    Encrypts data via the node (`encrypt`). Requires auth. ## Identity modes for an agent An agent acting for a user proves identity in one of two ways: (1) it **holds a private key** and signs locally (mint a token via create_auth_token, or…

  • check_did_files

    Lists file entries for a DID + service (`checkDidFiles` / `fileInfo`). **No auth.** **Returns:** `FileInfo[]`.

  • create_auth_token

    Mints a node JWT via `createAuthToken`. The token's identity is the **consumer** for later compute calls. **Mint once per session, reuse the JWT.** Buckets/jobs/results are owned by the consumer address; re-minting (especially…

  • policy_server_passthrough

    Forwards a policy-server request over P2P (`PolicyServerPassthrough`). Shape is node- and integration-specific. **Returns:** Node response object.

  • policy_server_initialize_verification

    Initializes policy-server verification (`initializePSVerification`, `PolicyServerPassthrough`). **Returns:** Node response object.

  • compute_streamable_logs

    Fetches streamable job logs (`getComputeStreamableLogs`) and returns **base64** of the collected bytes (same framing as compute result streaming). ## Identity modes for an agent An agent acting for a user proves identity in one of two…

  • upload_persistent_storage_file

    Uploads file bytes to a bucket (`persistentStorageUploadFile`). Requires auth. Body is sent as one LP chunk from **contentBase64**. ## Node capability check (required first) Before **createPersistentStorageBucket**…

  • fetch_node_config

    Calls `fetchConfig`. **Operator-only:** Misuse can break or leak node configuration. Payload must match ocean-node signing expectations for `fetchConfig` / `pushConfig`. **Returns:** Node-dependent (often encrypted or signed config blob).

  • push_node_config

    Calls `pushConfig`. **Operator-only:** Misuse can break or leak node configuration. Payload must match ocean-node signing expectations for `fetchConfig` / `pushConfig`.

  • is_valid_provider

    Returns whether the peer responds to STATUS with a provider address (`isValidProvider`). **No auth.**

  • resolve_peer_multiaddr

    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.

  • list_discovered_peers

    Returns peers from the local peer store (`getDiscoveredNodes`). **No remote node target.** Requires P2P initialized on this MCP process.

  • cid_from_raw_string

    SHA-256 raw CID for a UTF-8 string (`cidFromRawString`) — same hashing as **find_provider** content keys. **No network call.**

  • findServiceEnvironments

    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.** Beyond the…

  • findServiceNodes

    Fans `findServiceEnvironments` out across several peers and returns those with at least one service-capable environment. **No auth.** Use this to answer "which node can run my service?". #1408 adds **no DHT advertise string for…

  • getServiceTemplates

    Returns the node's service template catalogue (`serviceGetTemplates`). **No auth.** **These are informational.** The catalogue is **curated by the node owner** — a suggested, explicitly **non-exhaustive** set of services known to run…

  • estimateServiceCost

    Client-side cost **estimate** for a service, plus a ready-made `payment` object you can hand straight to **escrow_preflight**. **No auth**, no chain writes. **There is no server-side quote for services** (no `initializeService`), so this…

  • serviceStart

    Starts a **paid, long-running container service** (`serviceStart`). Requires auth. **This returns before the service is up.** You get a `serviceId` and status `Starting (10)` immediately; escrow lock → image pull/build + vulnerability…

  • serviceStatus

    Owner-scoped status for one service or all of yours (`serviceGetStatus`). Requires auth. Omit `serviceId` for every service you own on this node. Decorates each job with a human `statusLabel` (including `45 Restarting`), `expiresAtIso`…

  • getServices

    Lists services on the node (`serviceList`). Requires auth. 🚩 **This is authenticated but NOT owner-scoped.** Any consumer identity sees **every owner's** services. **Do not present these as the user's own services** — use `serviceStatus`…

  • serviceExtend

    Extends a service's paid window (`serviceExtend`). Requires auth. Takes a **new escrow lock + claim** for the additional window. **Pricing matches the node exactly:** it bills `additionalDuration` **alone** (not the new total), priced off…

  • serviceRestart

    Restarts a service (`serviceRestart`). Requires auth. **Free** — no new escrow lock — but needs a **claimed** start payment (check `paymentClaimed` on `serviceStatus`; a service whose start payment was never claimed cannot be restarted…

  • serviceStop

    Stops a service's container (`serviceStop`). Requires auth, owner-gated. ⚠️ **This does not save money and does not free capacity.** The cpu/ram/gpu and host ports stay **reserved until `expiresAt`**; only `Expired (75)` releases them…

  • serviceLogs

    Collects a service container's logs (`serviceGetStreamableLogs`). Requires auth, owner-scoped. Only available while the service is `Running (40)` or `Error (99)` — otherwise the node returns `404`. Returns **decoded text** when the…

  • get_balance

    Gets the native ETH balance of an EVM account.

  • get_transaction_count

    Gets the transaction count (nonce) for an EVM account.

  • get_transaction

    Gets an EVM transaction by hash (if available on the connected RPC).

  • get_transaction_receipt

    Gets an EVM transaction receipt by hash (if mined).

  • broadcast_transaction

    Broadcasts a raw signed EVM transaction to the configured chain provider and returns the resulting transaction response.

  • get_erc20_token_info

    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…

  • escrow_get_funds

    Reads total escrowed funds for a payment token from an Escrow contract (read-only).

  • escrow_get_user_funds

    Reads escrowed funds for a payer and token from Escrow.getUserFunds (read-only).

  • escrow_get_user_tokens

    Reads payment token addresses for which the payer has escrow records via Escrow.getUserTokens (read-only).

  • escrow_get_locks

    Reads escrow locks for token + payer + payee via Escrow.getLocks (read-only).

The first 60 of 93, as the server listed them.

How to connect

Add the server to your MCP client config. Claude Desktop, Cursor and most other clients read this shape:

{
  "mcpServers": {
    "oncompute": {
      "type": "http",
      "url": "https://mcp.oncompute.ai/mcp"
    }
  }
}

Add it

Claude Code, in a terminal

claude mcp add --transport http oncompute https://mcp.oncompute.ai/mcp

Add to CursorAdd to VS Code

claude.ai, ChatGPT and other clients: add https://mcp.oncompute.ai/mcp as a custom connector in the settings.

Each line is something a program found when it went looking: the registry entry, the server's own answer, a spec that parses. A missing line means we did not find it, not that it does not exist.