{"command":{"effect":"write","timeoutSeconds":30,"inputSchema":{"type":"object","description":"Registers a remote MCP server for your team, using the streamable HTTP transport. The server starts with `syncStatus` pending and no tools: discover its tools with `POST .../mcp-servers/{server_ref}/resync`, then choose which to enable with `PUT .../mcp-servers/{server_ref}/tools`. The endpoint must be HTTPS and resolve only to public IP addresses. The number of servers per team is limited (10 by default); registering beyond it returns 429. Returns 409 when `serverRef` is already in use.","properties":{"body":{"$ref":"#/definitions/mcp_server_create","examples":[{"serverRef":"docs","endpoint":"https://mcp.example.com/mcp","credentialRefSource":"secret","api_key":"sk_live_example","description":"Internal documentation search."}]}},"required":["body"],"additionalProperties":false,"definitions":{"mcp_server_create":{"type":"object","required":["serverRef","endpoint"],"properties":{"serverRef":{"type":"string","pattern":"^[a-z][a-z0-9-]{0,63}$","description":"Identifier for the server, unique within your team. Must match `^`[a-z]``[a-z0-9-]`{0,63}$`.","examples":["docs"]},"endpoint":{"type":"string","description":"HTTPS URL of the server's MCP endpoint. Its host must resolve only to public IP addresses. Required.","examples":["https://mcp.example.com/mcp"]},"transport":{"type":"string","enum":["streamable_http"],"default":"streamable_http","description":"Optional. `streamable_http`, the default and only accepted value.","examples":["streamable_http"]},"credentialRefSource":{"type":"string","enum":["none","secret","connection"],"default":"none","description":"How requests to the server authenticate: none (the default), secret, or connection. With secret, the value from `credentialRef` or `api_key` is sent in the Authorization header, prefixed with \"Bearer \" unless it already contains a space.","examples":["secret"]},"description":{"type":"string","maxLength":1024,"description":"Optional description shown on the server's catalog card. At most 1024 characters.","examples":["Internal documentation search."]},"credentialRef":{"type":"string","description":"For `credentialRefSource` secret: a reference to a secret your team stores with DigitalOcean. Must match `^`[A-Za-z0-9]``[A-Za-z0-9:/_.-]`{0,254}$`. Set exactly one of `credentialRef` and `api_key`.","examples":[""]},"api_key":{"type":"string","description":"For `credentialRefSource` secret: the key or token itself. DigitalOcean stores it; it is write-only and no response returns it. Set exactly one of `credentialRef` and `api_key`.","examples":["sk_live_example"]},"oauth_client_id":{"type":"string","description":"Required for `credentialRefSource` connection: the client ID of your team's OAuth client for the server. Each user of the server then authorizes individually.","examples":[""]},"oauth_client_secret":{"type":"string","description":"Required for `credentialRefSource` connection. Write-only; no response returns it.","examples":[""]},"oauth_authorize_url":{"type":"string","description":"Required for `credentialRefSource` connection: the OAuth authorization endpoint. It must use the endpoint's scheme and port, on the endpoint's host or another host under the same registrable domain.","examples":[""]},"oauth_token_url":{"type":"string","description":"Required for `credentialRefSource` connection: the OAuth token endpoint, under the same rules as `oauth_authorize_url`.","examples":[""]},"oauth_scopes":{"type":"array","items":{"type":"string"},"description":"Required for `credentialRefSource` connection: the scopes to request from each user, 1 to 64 of them.","examples":[[]]},"oauth_authorization_ttl_seconds":{"type":"string","description":"How long, in seconds, a user's authorization may be reused before they must consent again. Optional;\n0 means 30 days, and the maximum is 100 years.\n\nAuthorizations are not refreshed automatically, so this window, not the provider's token lifetime,\ndecides how often a user is sent back through consent. Set it no longer than the provider's own\ntoken lifetime, so the prompt arrives before a tool call fails against an expired token.","examples":["86400"]}},"description":"Describes an MCP server to register."}}},"name":"Register an MCP Server","id":"digitalocean.mcpservers_create","example":{"body":{"serverRef":"docs","endpoint":"https://mcp.example.com/mcp"}},"maxRequests":1,"summary":false}}