Harness Runtime
Generated on 31 Oct 2026
This content is automatically generated from https://github.com/digitalocean-labs/mcp-digitalocean/blob/main/pkg/registry/harness-runtime/README.md.
Harness Runtime MCP Tools
Tools for discovering and managing Hosted Agents (Harness Runtime), backed by the public /v2/harness-runtime/* API.
Enable these tools with service name harness-runtime. Hosted URL: https://harness-runtime.mcp.digitalocean.com/mcp.
Supported Tools
Agent Configs (Environments)
Product name: In the DigitalOcean Console and documentation, Agent Configs are called Environments. The API path and field names still use “config”, but the concepts are identical — an “Environment” is an Agent Config. All five tools below work for both names interchangeably.
harness-runtime-list-agent-configs— List the active agent configs (Environments) for the team (id, name, content hash, creator, timestamps). SupportsPageSize(1-200, default 50),PageToken(cursor fromnext_page_token) andSearch(case-insensitive name substring, max 64 chars). Manifests are not returned.harness-runtime-get-agent-config— Get one agent config (Environment) byConfigID(UUID), including its sanitized manifest and redacted credential slot metadata. Secret values are never returned.harness-runtime-create-agent-config— Create a new agent config (Environment) from aName(required, 1-64 chars) andManifest(required, JSON object or YAML string with the agent environment spec — e.g.agent,size,env,permissions,egress,secrets). Optionally setManageModelAccessKeyto have the platform provision a serverless-inference key. Configs are immutable after creation. Returns the created config with its assigned UUID. SECURITY: any values under the manifest’s top-levelsecretsmap are write-only — extracted into Secrets Manager and never persisted or echoed back by this or any other tool. Never commit real secret values to files/source control; prefer environment variables or the DO Console over pasting them into a terminal that logs history.harness-runtime-delete-agent-config— Permanently delete an agent config (Environment) byConfigID(UUID). Destructive. Existing sessions that reference this config are retained.harness-runtime-list-config-sessions— List all sessions created from a specific agent config (Environment) byConfigID. SupportsPageSize,PageToken, andStatusfilter.
Sessions
harness-runtime-create-session— Provision a new session from an existing Agent Config (ConfigID+Namerequired). Returns the session row immediately; sandbox boot completes asynchronously. Optional:ResumeOnTopoff(auto-resume consent),WorkspaceID(persistent workspace).harness-runtime-get-session— Get the current snapshot of a session bySessionID(UUID), including status, agent kind, sandbox id, and lineage.harness-runtime-list-sessions— List sessions for the team (newest first). By default omits destroyed and failed sessions; passStatus=SESSION_STATUS_ALLto include every session. SupportsPageSize,PageToken,Status,Name(exact-match filter), andSearch(substring filter).harness-runtime-destroy-session— Permanently tear down a session’s sandbox. Destructive. Workspace contents are retained per tenant policy.harness-runtime-send-input— Deliver a user message into a READY or DETACHED session. RequiresSessionIDand at least one ofText(string) orInputs(structured dict). Returns therun_id.harness-runtime-pause-session— Freeze a READY/DETACHED session’s microVM sandbox. microvm-substrate only.harness-runtime-resume-session— Explicitly thaw a PAUSED session’s sandbox. Returns synchronously once ready.harness-runtime-patch-session— Update session-scoped settings. Currently supportsResumeOnTopoff(auto-resume consent toggle). Returns the updated session snapshot.harness-runtime-resolve-hitl— Record the user’s decision on a pending HITL request.Outcomemust be one ofHITL_OUTCOME_APPROVE,HITL_OUTCOME_REJECT, orHITL_OUTCOME_DEFER. Optional:Reason(audit trail text),Content(structured form answer).harness-runtime-fork-session— Create 1-4 child sessions from a checkpoint of an existing session.SessionIDrequired;FromCheckpointID(READY checkpoint UUID to fork from — omit to capture an implicit checkpoint of “now”) andCount(1-4, default 1) are optional. Returns the created child sessions withparent_session_idandfork_idset.harness-runtime-exec-in-sandbox— Run a one-shot command inside a session’s sandbox.SessionIDandArgv(non-empty string array) required. Optional:Workdir(default/workspace),Stdin(base64-encoded),TimeoutSeconds(max 240, server-enforced). Returnsexit_code,stdout,stderr, andduration_ms. A non-zero exit code is still a successful HTTP response — check the field.harness-runtime-get-ingress-url— Get (or provision on first call) the public HTTPS ingress URL for the session’s sandbox port 8000 (OpenHands Agent Server). Idempotent while the session runs; revoked on pause/lock/rollback — re-fetch after those operations. Poll untilstateisINGRESS_URL_STATE_READY. Only OpenHands sessions support ingress.harness-runtime-cancel-turn— Stop the turn currently running in a session (the Ctrl-C / Esc equivalent) and leave the session alive and idle.SessionIDrequired;RunIDoptional (fromsend-input’s response — names the specific turn to cancel; omit to cancel whatever is in flight). The outcome field tells you what happened:acked,no_turn, orunsupported.
Checkpoints
harness-runtime-list-checkpoints— List a session’s checkpoints newest first.SessionIDrequired. SupportsPageSize(1-200) andPageTokencursor.harness-runtime-get-checkpoint— Get the current snapshot of a checkpoint bySessionIDandCheckpointID. Poll untilstatusisREADYbefore forking or rolling back.harness-runtime-create-checkpoint— Capture a session’s live sandbox state as a durable checkpoint.SessionIDrequired; optionalLabel. Synchronous — blocks until the checkpoint is READY and returns it directly. The session must not have an active turn in flight (409 if busy). Returns 501 for agents/substrates that do not support checkpoints.harness-runtime-delete-checkpoint— Delete a checkpoint and its underlying machine-state capture.SessionIDandCheckpointIDrequired. Destructive. Idempotent: deleting an already-gone checkpoint still returns success.harness-runtime-rollback-checkpoint— Rewind a session to a READY checkpoint.SessionIDandCheckpointIDrequired. Destructive. In-place restore — samesession_id, newsandbox_id. The session must not have a workspace attached. The ingress URL is revoked — re-fetch after the session is READY.
Sandbox
harness-runtime-list-sandbox-sizes— List the available sandbox compute sizes (slug, vCPUs, memory, hourly and monthly pricing). The returned slugs are valid values for sandbox size fields in manifests.harness-runtime-validate-policy— Stateless preflight: check a manifest’s tool-permission policy against the agent’s capabilities without creating a session. TakesManifest(same JSON object as create-agent-config, must include apermissionsblock). Returns per-rule verdicts (exact,degraded,unsupported,unverified);ok=falsemeans CreateSession would reject this policy.
Templates
Custom sandbox templates let you layer an OCI image on a base template for a customized agent environment.
harness-runtime-list-templates— List the team’s custom sandbox templates (id, name, status, spec, timestamps). Keyset-paginated. Only READY templates can be referenced in agent configs.harness-runtime-get-template— Get a single custom sandbox template byTemplateID(UUID), including its spec (base template + OCI image source) and status.harness-runtime-create-template— Register a new custom sandbox template. RequiresName,BaseTemplate(key likecodex-base,opencode-base,claude-code-base,hermes-base,hermes-byoa-base,langgraph-base,coding-base,crewai), andSourceOCIRef(OCI image reference). The platform builds it asynchronously — poll untilTEMPLATE_STATUS_READY.harness-runtime-update-template— Update a template’sSourceOCIRefand/orBaseTemplatekey. Triggers a new build; poll until READY. Returns the updated template.harness-runtime-delete-template— Permanently delete a custom sandbox template byTemplateID(UUID). Destructive. Agent configs referencing this template can no longer create sessions.harness-runtime-list-template-builds— List builds for a template (newest first).TemplateIDrequired. SupportsPageSizeandPageTokencursor.harness-runtime-get-template-build— Get a single build byTemplateIDandBuildID(both UUIDs). Includes status (PENDING, BUILDING, SUCCEEDED, FAILED), error message on failure, and the spec.
Workspaces
Persistent workspaces are virtual disk volumes that survive across sessions.
harness-runtime-create-workspace— Provision a new persistent workspace.SizeGibibytes(1-100, integer) required. OptionalNamelabel. Size is fixed at creation.harness-runtime-list-workspaces— List the team’s workspaces. SupportsPageSize,PageToken, andStatefilter (AVAILABLE,ATTACHING,ATTACHED,RELEASING,FAILED,DELETING).harness-runtime-get-workspace— Get a single workspace byWorkspaceID(UUID), including state, attached session, size, bytes used, and timestamps.harness-runtime-delete-workspace— Permanently delete a workspace byWorkspaceID. Destructive. Must not be attached (409 if attached). All data is lost.
Workspace Transfers
Bulk file transfer to/from a session’s attached workspace via multipart upload or async download.
harness-runtime-create-workspace-transfer— Initiate a transfer (SessionID+Direction=upload|download). Uploads returntransfer_id,upload_id,part_size,expires_at. Downloads returntransfer_id— poll until completed.harness-runtime-get-workspace-transfer— Get transfer status. For downloads, poll untilcompletedto getdownload_urlandsha256. For uploads, checkbytes_written.harness-runtime-cancel-workspace-transfer— Abort an active transfer. Idempotent.harness-runtime-commit-workspace-upload— Finalize a multipart upload after all parts are PUT. Returnssize_bytes.harness-runtime-create-workspace-part-urls— Get presigned PUT URLs for a set of part numbers.PartNumbers(array of positive integers) required. URLs expire atexpires_at.
Connections
Connections link external provider accounts (GitHub, GitLab) to the team so agents can access repos.
harness-runtime-list-connections— List the team’s connections for an external provider.Provider(githuborgitlab) required. SupportsActorID,Status,Page, andPerPage(1-100, default 20).harness-runtime-create-connection— Create (or resume) a connection binding an actor to an external provider.ProviderandActorIDrequired. A still-pending connection comes back with an Authorization the user must complete in a browser. Optional:Scopes(omit for the provider’s full configured scope set).harness-runtime-get-connection— Get one connection byProviderandConnectionID, including its status and any pending authorization.harness-runtime-delete-connection— Revoke and delete one connection byProviderandConnectionID. Destructive. Connections withdeletion_protected=true(referenced by an active environment) will be refused.
Provider Auth
OAuth device-flow to connect the team to an external provider. The user opens the connect_url in a browser, enters the verification_code, and polls until the authorization is complete.
harness-runtime-start-provider-auth— Begin (or resume) the OAuth device-flow connect for an external provider.Provider(githuborgitlab) required. Returnsconnect_url,verification_code, andpoll_url. Status ispendingwhen the user must still authorize, orsuccesswhen already connected.harness-runtime-poll-provider-auth— Check whether a pending provider authorization has been completed.ProviderandPollURL(fromstart-provider-auth) required. Call repeatedly until status issuccess.
Triggers
Triggers automate agent session launches on a schedule (cron) or via webhook.
harness-runtime-list-triggers— List the team’s triggers. SupportsPageSize,PageToken, and optionalConfigIDfilter.harness-runtime-create-trigger— Create a new trigger.Name,Kind(webhookorcron),SessionMode(freshorreuse), andPromptTemplaterequired. Webhook triggers return a webhook URL and signing secret. Fresh mode requiresSessionTemplate; reuse mode requiresBoundSessionID. Optional:CronExpr,Timezone,OutputMode(none/email/slack),MaxConcurrency.harness-runtime-get-trigger— Get a trigger byTriggerID(UUID).harness-runtime-update-trigger— Update a trigger’s mutable fields (name, prompt, session mode, schedule, output, etc.). At least one field required. Returns the updated trigger.harness-runtime-delete-trigger— Permanently delete a trigger. Destructive.harness-runtime-pause-trigger— Pause an active trigger. In-flight executions continue to completion.harness-runtime-resume-trigger— Resume a paused trigger.harness-runtime-rotate-trigger-secret— Rotate the webhook signing secret for a webhook trigger. The old secret is immediately invalidated.harness-runtime-list-trigger-executions— List executions for a trigger. SupportsPageSizeandPageToken.harness-runtime-get-trigger-execution— Get a single execution byTriggerIDandExecutionID.harness-runtime-cancel-execution— Cancel a running trigger execution.TriggerIDandExecutionIDrequired.harness-runtime-get-trigger-by-session— Look up the trigger associated with a given session bySessionID.harness-runtime-list-reusable-sessions— List paused sessions available for reuse binding. SupportsPageSizeandPageToken.
Webhook Providers
harness-runtime-list-webhook-providers— List the supported webhook providers for trigger creation. Returns a static catalog (e.g. GitHub, GitLab, Custom) with display names, documentation URLs, paste hints, and signature verification schemes. No pagination.
Requires the agent_harness_session:read scope (read tools) and agent_harness_session:create / agent_harness_session:delete (write tools).
Example queries
- List my hosted agent configs.
- Show me the manifest of agent config 019fb39c-14d9-7080-933e-b9b90e25acda.
- Find the agent config named “support” so I can run a simulation against it.
- Create a new agent config from this manifest JSON.
- Delete agent config 019fb39c-14d9-7080-933e-b9b90e25acda.
- List all sessions created from config 019fb39c-14d9-7080-933e-b9b90e25acda.
- Create a new session from config 019fb39c-14d9-7080-933e-b9b90e25acda named “test-run-1”.
- List all my active sessions.
- What is the status of session 029ab39c-14d9-7080-933e-b9b90e25acda?
- Send a message to my session: “Summarize the latest GitHub issues.”
- Pause session 029ab39c-14d9-7080-933e-b9b90e25acda.
- Resume the paused session.
- Approve the HITL request on session 029ab39c-14d9-7080-933e-b9b90e25acda.
- Enable auto-resume on session 029ab39c-14d9-7080-933e-b9b90e25acda so it restarts automatically when the balance is restored.
- Destroy session 029ab39c-14d9-7080-933e-b9b90e25acda.
- Fork session 029ab39c-14d9-7080-933e-b9b90e25acda into 3 child sessions.
- Fork from checkpoint cp_9f2c1a4b of session 029ab39c-14d9-7080-933e-b9b90e25acda.
- Run
ls /workspacein session 029ab39c-14d9-7080-933e-b9b90e25acda. - Get the ingress URL for session 029ab39c-14d9-7080-933e-b9b90e25acda.
- Cancel the current turn in session 029ab39c-14d9-7080-933e-b9b90e25acda.
- List all checkpoints for session 029ab39c-14d9-7080-933e-b9b90e25acda.
- Create a checkpoint of session 029ab39c-14d9-7080-933e-b9b90e25acda labeled “before-refactor”.
- Roll back session 029ab39c-14d9-7080-933e-b9b90e25acda to checkpoint cp_9f2c1a4b.
- Delete checkpoint cp_9f2c1a4b from session 029ab39c-14d9-7080-933e-b9b90e25acda.
- What sandbox sizes are available?
- Validate this policy against session 029ab39c-14d9-7080-933e-b9b90e25acda.
- List my custom sandbox templates.
- Show me template 049fb39c-14d9-7080-933e-b9b90e25acdc.
- Create a new template “my-python-env” from codex-base with my OCI image.
- Update template 049fb39c-14d9-7080-933e-b9b90e25acdc to use a new image tag.
- Delete template 049fb39c-14d9-7080-933e-b9b90e25acdc.
- List builds for template 049fb39c-14d9-7080-933e-b9b90e25acdc.
- Show build details for template 049fb39c-14d9-7080-933e-b9b90e25acdc build 059fb39c-14d9-7080-933e-b9b90e25acdd.
- Create a 10 GiB workspace named “project-data”.
- List my workspaces.
- What’s the status of workspace 069fb39c-14d9-7080-933e-b9b90e25acde?
- Delete workspace 069fb39c-14d9-7080-933e-b9b90e25acde.
- Start an upload transfer on session 029ab39c-14d9-7080-933e-b9b90e25acda.
- Check the status of transfer xfer-abc123 on session 029ab39c-14d9-7080-933e-b9b90e25acda.
- Get upload URLs for parts 1, 2, and 3 of transfer xfer-abc123 on session 029ab39c-14d9-7080-933e-b9b90e25acda.
- Commit transfer xfer-abc123 on session 029ab39c-14d9-7080-933e-b9b90e25acda.
- Cancel transfer xfer-abc123 on session 029ab39c-14d9-7080-933e-b9b90e25acda.
- List my GitHub connections.
- Create a GitHub connection for actor user-123.
- Show connection conn-abc123 for GitHub.
- Delete GitLab connection conn-abc123.
- Connect my team to GitHub (start the OAuth device flow).
- Check if the GitHub authorization is complete (poll the auth flow).
- What webhook providers are supported for triggers?
- List my triggers.
- Create a webhook trigger named “pr-review” that sends “Review this PR” to a fresh codex session.
- Create a cron trigger that runs daily at 9 AM Eastern.
- Pause trigger 079fb39c-14d9-7080-933e-b9b90e25acdf.
- Resume trigger 079fb39c-14d9-7080-933e-b9b90e25acdf.
- Rotate the webhook secret for trigger 079fb39c-14d9-7080-933e-b9b90e25acdf.
- List executions for trigger 079fb39c-14d9-7080-933e-b9b90e25acdf.
- Cancel execution 089fb39c-14d9-7080-933e-b9b90e25ace0 on trigger 079fb39c-14d9-7080-933e-b9b90e25acdf.
- Which trigger launched session 029ab39c-14d9-7080-933e-b9b90e25acda?
- List reusable sessions I can bind to a trigger.
- List my environments (agent configs).