Tool reference
The 106 tools OpZero exposes over MCP, grouped by what they are for. You will rarely name one directly — Claude picks them from what you ask — but this is the map of what is possible.
help.Orientation
Where to start when you are not sure what is possible, what you already have, or why a call was rejected.
helpread onlyThe full tool catalogue with usage notes. Pass a topic to narrow it to one area or a single tool.
helpread only| Parameter | Type | Description |
|---|---|---|
| topic | string | Optional filter: a section (e.g. "deploy", "assistants", "projects") or a tool name (e.g. "deploy_react_artifact"). Unknown topics return the list of valid topics. |
get_system_statusread onlyYour plan, usage, active projects, recent deployments, and how much of each per-plan cap is consumed. The cheapest way to confirm the connection works.
get_system_statusread onlyTakes no parameters.
ask_opzero_assistantread onlyAsk a question about your own account in plain language. Answers over your recent activity, and renders an adaptive view on hosts that support MCP Apps.
ask_opzero_assistantread only| Parameter | Type | Description |
|---|---|---|
| questionreq | string | Question to ask (e.g., 'What deployments are in progress?', 'Is my preview ready?', 'How many projects do I have?') |
| include_context | boolean | Include system context (projects, deployments, previews) automatically (default: true) |
diagnose_authread onlyYour token type, identity, roles, scopes, real session expiry, and the health of every OAuth discovery endpoint. Run this first on any auth error.
diagnose_authread onlyTakes no parameters.
link_identityProve your MCP client identity and your OpZero account are the same person. Returns a link URL to confirm in the browser. Required before a gateway backend may use an external connection.
link_identityTakes no parameters.
Publishing pages and apps
Getting something live. The four deploy tools differ in how much you write: markdown is the least, files is the most control.
deploy_markdownSend raw markdown, get a themed page. Full GitHub-flavoured markdown, light/dark toggle, title lifted from the first heading. The lowest-effort way to publish.
deploy_markdown| Parameter | Type | Description |
|---|---|---|
| markdownreq | string | Raw markdown content. Supports GitHub Flavored Markdown: headings, bold, italic, links, images, code blocks, tables, task lists, strikethrough, blockquotes. |
| title | string | Page title (auto-extracted from first heading if not provided) |
| theme | dark | light | auto | Color theme: auto (system preference, default), dark, or light |
| name | string | Site name for the URL (auto-generated if not provided) |
| target | cloudflare | netlify | vercel | Hosting provider: cloudflare (fastest, default), netlify, or vercel |
| force_new | boolean | When false (default), reuses an existing project with the same name and redeploys to it. Set true to always create a fresh project. |
deploy_themedSend body HTML, get it wrapped in the OpZero design system — glass nav, typography, colour palette. Standard HTML elements are styled for you.
deploy_themed| Parameter | Type | Description |
|---|---|---|
| title | string | Page title (shown in nav and browser tab) |
| contentreq | string | HTML content for the page body. Use OpZero CSS classes: oz-card (card container), oz-grid (auto grid), oz-btn-primary (cyan button), oz-btn-secondary (outline button), oz-gradient (gradient text), oz-hero (centered hero section), oz-glow (glow effect), oz-status (live indicator). Standard HTML (h1-h6, p, ul, table, pre/code, blockquote) is styled automatically. |
| theme | dark | light | auto | Color theme: auto (system preference, default), dark, or light |
| name | string | Site name for the URL (auto-generated if not provided) |
| style | landing | article | dashboard | Layout: article (800px centered, default), landing (hero-focused), dashboard (1200px wide) |
| target | cloudflare | netlify | vercel | Hosting provider: cloudflare (fastest, default), netlify, or vercel |
| force_new | boolean | When false (default), reuses an existing project with the same name and redeploys to it. Set true to always create a fresh project. |
deploy_htmlDeploy one complete HTML document. Tailwind utility classes are compiled automatically, so no CDN script or config is needed.
deploy_html| Parameter | Type | Description |
|---|---|---|
| htmlreq | string | HTML content to deploy (can include inline CSS/JS). Tailwind utility classes are auto-compiled — no CDN script needed. |
| name | string | Optional site name (auto-generated if not provided) |
| target | cloudflare | netlify | vercel | Hosting provider: cloudflare (fastest, default), netlify, or vercel |
| force_new | boolean | When false (default), reuses an existing project with the same name and redeploys to it. Set true to always create a fresh project. |
deploy_filesDeploy a multi-file site — HTML, CSS, JS, assets — with full file-level control. Tailwind is still compiled for you.
deploy_files| Parameter | Type | Description |
|---|---|---|
| projectId | string | Existing project ID to deploy to (optional - creates new if not provided) |
| name | string | Project name (auto-generated if not provided) |
| target | cloudflare | netlify | vercel | Hosting provider: cloudflare (fastest, default), netlify, or vercel |
| filesreq | object<string, string> | Object mapping file paths to contents. Tailwind utility classes in HTML files are auto-compiled. Example: {'index.html': '<html>...</html>', 'styles.css': '...'} |
| force_new | boolean | When false (default), reuses an existing project with the same name and redeploys to it. Set true to always create a fresh project. |
deploy_react_artifactDeploy a React component as a live site with zero build, via ESM.sh. React, Recharts, and Lucide are built in. Set ai and storage to turn it into a real application with a backend.
deploy_react_artifact| Parameter | Type | Description |
|---|---|---|
| codereq | string | React component code (JSX/TSX). Can use imports from react, recharts, lucide-react. Should export a default component. May call window.claude.complete(prompt) and window.storage when ai/storage are enabled. |
| name | string | Site name (auto-generated if not provided) |
| title | string | Page title (optional, defaults to 'React App') |
| dependencies | object<string, string> | Additional ESM.sh dependencies to include in import map. Format: { 'package-name': 'version' } |
| target | cloudflare | netlify | vercel | Hosting provider: cloudflare (fastest, default), netlify, or vercel. Must be cloudflare when ai/storage are enabled. |
| ai | boolean | Enable server-side AI: window.claude.complete / oz.ai stream through the Vercel AI Gateway (Haiku/GPT-mini default allowlist, owner-funded, hard-capped). Default false (plain static artifact). |
| storage | boolean | Enable persistence: window.storage / oz.storage give per-user (and shared) key-value storage, and oz.files / window.files give per-user file storage (bytes with a media type under a path, 3MB each) on the same store. Default false. |
| system_prompt | string | Pinned system prompt for the AI binding, set server-side; the client cannot override it. Optional. |
| force_new | boolean | When false (default), reuses an existing project with the same name and redeploys to it. Set true to always create a fresh project. |
get_templateread onlyReady-to-deploy starter files: the branded opzero theme (recommended), landing, portfolio, blog, static, vite-react, or react-esm.
get_templateread only| Parameter | Type | Description |
|---|---|---|
| templatereq | landing | portfolio | blog | static | vite-react | react-esm | opzero | Template type: opzero (branded theme with light/dark mode — RECOMMENDED), landing (marketing page), portfolio (personal site), blog (article site), static (basic HTML), vite-react (React app with Vite), react-esm (zero-build React via ESM.sh) |
update_deploymentPatch a live site by merging a partial file map into its latest deployment. Unmentioned files are preserved; an empty string deletes one.
update_deployment| Parameter | Type | Description |
|---|---|---|
| project_name | string | Project name to update |
| project_id | string | Project UUID to update (alternative to project_name) |
| filesreq | object<string, string> | Partial file map to merge. Keys are file paths, values are new contents. These overwrite matching files; unmentioned files are preserved. Set a value to empty string to delete a file. |
preview_pageread onlyRender one of your deployed pages inline in the conversation, on hosts that support MCP Apps. Identify it by URL, project ID, or project name.
preview_pageread only| Parameter | Type | Description |
|---|---|---|
| url | string | HTTPS URL of a page on opzero.sh (e.g. https://my-site.opzero.sh). Provide exactly one of url, project_id, or project_name. |
| project_id | string | Project UUID — its deployed URL is looked up automatically. Use this to disambiguate when several projects share a name. |
| project_name | string | Name of one of your projects — its deployed URL is looked up automatically. Errors if the name is ambiguous; use project_id then. |
live_canvasAn interactive widget showing your live site next to a prompt box. Edits typed there arrive back in the conversation, and the page hot-reloads once you apply them.
live_canvas| Parameter | Type | Description |
|---|---|---|
| html | string | HTML to deploy as the initial canvas content. Tailwind utility classes are auto-compiled. Provide exactly one of html, project_id, or project_name. |
| name | string | Optional project name when deploying html (reuses an existing project with the same name, else auto-generated). |
| project_id | string | Attach the canvas to this existing project (UUID). |
| project_name | string | Attach the canvas to the existing project with this name. Errors if ambiguous; use project_id then. |
Projects and domains
Managing the containers your deployments live in.
list_projectsread onlyEverything you have deployed, with URLs and status. Filter by status, hosting target, name, or staleness.
list_projectsread only| Parameter | Type | Description |
|---|---|---|
| status | active | archived | deleted | all | Filter by project status (default: active) |
| target | cloudflare | netlify | vercel | Filter by hosting provider |
| name_contains | string | Search projects by name (case-insensitive partial match) |
| sort_by | created | last_deploy | name | Sort order (default: last_deploy) |
| stale_days | number | Only show projects with no deploy in this many days |
| limit | number | Max results to return (default: 50, max: 100) |
get_project_detailsread onlyOne project by name or ID: metadata, current URLs, custom domain, status, and a summary of its latest deployment.
get_project_detailsread only| Parameter | Type | Description |
|---|---|---|
| name | string | Project name to look up |
| project_id | string | Project UUID to look up |
create_projectCreate an empty project container. Usually unnecessary — the deploy tools create one for you.
create_project| Parameter | Type | Description |
|---|---|---|
| namereq | string | Project name |
| description | string | What this project is about |
| target | cloudflare | netlify | vercel | Hosting provider (default: cloudflare) |
rename_projectChange a project name without touching its contents or deployment history.
rename_project| Parameter | Type | Description |
|---|---|---|
| name | string | Current project name (alternative to project_id) |
| project_id | string | Project UUID to rename |
| new_namereq | string | New project name |
project_archivedestructiveHide a project from default listings without deleting it. Reversible with the unarchive action.
project_archivedestructive| Parameter | Type | Description |
|---|---|---|
| name | string | Project name to archive/unarchive |
| project_id | string | Project UUID to archive/unarchive |
| names | string[] | Array of project names to bulk archive/unarchive (max 10) |
| action | archive | unarchive | Whether to archive or unarchive. Default: archive. Note that "archive" deletes a hosted MCP server's Worker and "unarchive" does not recreate it. |
project_cleanupread onlyAudit your account for duplicates, stale projects, and throwaway test deploys. Recommends, never deletes.
project_cleanupread onlyTakes no parameters.
project_deletedestructiveTake a project offline. Soft by default, with a seven-day window in which redeploying the name restores it; hard delete is immediate and permanent.
project_deletedestructive| Parameter | Type | Description |
|---|---|---|
| name | string | Project name to delete |
| project_id | string | Project UUID to delete |
| names | string[] | Array of project names to bulk delete (max 10) |
| hard | boolean | Permanently delete now (record + deployments) with no grace period. The live runtime is taken offline in both modes. Default false. |
set_custom_domaindestructivePoint your own domain at a project, or remove the current one. Requires Pro or Team, plus a CNAME record you add at your registrar.
set_custom_domaindestructive| Parameter | Type | Description |
|---|---|---|
| project_id | string | Project UUID to change the domain for (from list_projects) |
| name | string | Project name (alternative to project_id, from list_projects) |
| domain | string | Custom domain to set (e.g. "example.com" or "app.example.com"). Do not include protocol, path, or port. Mutually exclusive with `remove`. |
| remove | boolean | Set true to remove the project's current custom domain. This takes the site off that domain. Mutually exclusive with `domain`. |
Deployment history
Inspecting what shipped, and moving between versions.
list_deploymentsread onlyRecent deployments across all projects, or scoped to one.
list_deploymentsread only| Parameter | Type | Description |
|---|---|---|
| projectId | string | Filter by project (optional) |
| limit | number | How many to return (default: 10) |
get_deployment_detailsread onlyEverything about one deployment, including the full deployed file contents — the way to recover source a conversation has lost.
get_deployment_detailsread only| Parameter | Type | Description |
|---|---|---|
| deploymentIdreq | string | The deployment ID to inspect |
get_deployment_statusread onlyStatus, status detail, URL, file count, and size for a deployment, or the last five for a project.
get_deployment_statusread only| Parameter | Type | Description |
|---|---|---|
| deployment_id | string | Specific deployment ID to get details for |
| project_name | string | Project name to get the last 5 deployments for |
redeployRebuild a project from its stored source. MCP server projects go through the full pipeline again, preserving auth mode and runtime.
redeploy| Parameter | Type | Description |
|---|---|---|
| name | string | Project name to redeploy |
| project_id | string | Project UUID to redeploy |
| deployment_id | string | Optional: specific deployment ID to redeploy from (defaults to latest) |
| commit | string | Optional, MCP server projects only: a commit of the project repository (full hash or a unique prefix of at least 12 characters, as src_log returns) to deploy from instead of a stored record. Not combined with deployment_id. |
rollback_deploymentRepublish an older deployment’s files as a new deployment. Forward-only, so nothing is destroyed.
rollback_deployment| Parameter | Type | Description |
|---|---|---|
| deployment_idreq | string | The deployment ID to rollback to |
delete_deployment_recorddestructivePermanently remove one deployment record from history.
delete_deployment_recorddestructive| Parameter | Type | Description |
|---|---|---|
| deployment_idreq | string | The deployment ID to delete |
App runtime and file storage
The backend your deployed apps get for free — server-side inference, key-value records, and file storage you can also reach from the conversation.
configure_bindingsTurn AI or storage on or off for a running app without redeploying its code. Also where you change the pinned system prompt, widen the model allowlist, or adjust caps. Live within about a minute.
configure_bindings| Parameter | Type | Description |
|---|---|---|
| project_idreq | string | Project ID (from list_projects or a deploy response) |
| ai | object | AI binding settings; omitted fields keep their current values |
| storage | object | Storage binding settings. Gates both oz.storage (key/value records) and oz.files (file storage) — they are two halves of one binding. |
| inject_sdk | boolean | Serve the oz.js SDK for this app (default true when any binding is enabled) |
| webhook_url | string | HTTPS URL that receives a POST for every deployment of this project (event, project, deployment_id, status, url), signed when the platform has a signing secret. Private, loopback and non-443 hosts are refused. Pass an empty string to remove it. Omit to leave it unchanged. |
storage_list_filesread onlyList a project’s stored files. Metadata only, never content. Defaults to the shared scope; pass a user ID for one end user’s files.
storage_list_filesread only| Parameter | Type | Description |
|---|---|---|
| project_id | string | Project ID (from list_projects or a deploy response). Pass this or project. |
| project | string | Project name, if you do not have the id. |
| prefix | string | Only list paths starting with this prefix, e.g. "reports/". Case-sensitive. |
| user_id | string | Address one end user's personal scope instead of the project-wide shared scope. |
| after | string | Resume after this path (pass the previous page's cursor). |
| limit | number | Page size. Default 200, max 1000. |
| reverse | boolean | Scan in descending path order. |
storage_read_fileread onlyRead one file. Text by default, base64 for binary, or metadata only. Files over 256KB come back as metadata rather than inlined.
storage_read_fileread only| Parameter | Type | Description |
|---|---|---|
| project_id | string | Project ID. Pass this or project. |
| project | string | Project name, if you do not have the id. |
| pathreq | string | File path, e.g. "reports/q1.csv". |
| user_id | string | Read from one end user's personal scope instead of the shared scope. |
| encoding | text | base64 | none | How to return the content. Default 'text'. |
storage_write_fileWrite a file (3MB max) where the app and its MCP servers can read it. Publish it at a credential-free URL with public.
storage_write_file| Parameter | Type | Description |
|---|---|---|
| project_id | string | Project ID. Pass this or project. |
| project | string | Project name, if you do not have the id. |
| pathreq | string | File path, e.g. "reports/q1.csv". Printable ASCII only (transliterate non-ASCII names and put the display name in metadata). Slashes allowed; no "..", leading/trailing slash, whitespace, or % ? # < > | * characters. |
| content | string | Text content, stored as UTF-8. Pass exactly one of content or content_base64. |
| content_base64 | string | Base64-encoded bytes, for binary files. Pass exactly one of content or content_base64. |
| content_type | string | Media type to store and serve. Defaults to a guess from the path extension. |
| public | boolean | Publish at a credential-free URL. Writes to the shared scope; cannot be combined with user_id. |
| user_id | string | Write into one end user's personal scope instead of the shared scope. |
| metadata | object | Arbitrary JSON kept alongside the file (max 4KB serialized). |
storage_delete_filedestructiveDelete a file, and with it any public URL it was served from.
storage_delete_filedestructive| Parameter | Type | Description |
|---|---|---|
| project_id | string | Project ID. Pass this or project. |
| project | string | Project name, if you do not have the id. |
| pathreq | string | File path to delete. |
| user_id | string | Delete from one end user's personal scope instead of the shared scope. |
Assistants
Your own agent — model, pinned instructions, and tool backends — behind a chat endpoint.
deploy_assistantCreate an assistant from a model, a system prompt, and connections to MCP servers that already exist. Served from one of your app subdomains via oz.assistant(slug).
deploy_assistant| Parameter | Type | Description |
|---|---|---|
| namereq | string | Human-readable name for the assistant (e.g. "Support Bot") |
| slug | string | URL-safe identifier (lowercase, hyphens). Auto-generated from name if not provided. Used in oz.assistant(slug) and the /__oz/assistant/<slug>/chat endpoint. |
| model | string | Vercel AI Gateway model id in provider/model form. Default: anthropic/claude-sonnet-5. Any language model the gateway serves works; ids not in its catalogue are rejected at deploy time. Current Anthropic ids: anthropic/claude-sonnet-5 (default, 1M context, $2/$10 per 1M in/out), anthropic/claude-opus-5 ($5/$25), anthropic/claude-fable-5.1 ($10/$50), anthropic/claude-haiku-4.5 (200K context, $1/$5), plus anthropic/claude-sonnet-4.6 and anthropic/claude-opus-4.8. Other providers: openai/gpt-6-astra, openai/gpt-5.6-sol, google/gemini-3.8-flash, spacexai/grok-4.6, deepseek/deepseek-v4-pro, mistral/mistral-large-3, meta/llama-4-maverick, moonshotai/kimi-k3, zai/glm-5.3. Note the gateway spells versions with a dot (claude-haiku-4.5), never the Anthropic-API hyphen form (claude-haiku-4-5). Call list_assistant_models for the full live catalogue with context windows, prices, and capability tags. |
| system_prompt | string | System prompt that defines the assistant's behavior. Pinned server-side — clients cannot override it. |
| mcp_servers | object[] | MCP servers the assistant connects to and calls as tools — points at servers that ALREADY EXIST (one of OpZero's own mcps/* services, or any Streamable HTTP MCP server you already host elsewhere). This does not deploy or create a new MCP server for you; there is no deploy_* tool that turns arbitrary code into an MCP server. Each connected server's tools are discovered at request time and made available to the model. |
| max_tokens | number | Max output tokens per response (default: 2048) |
| max_steps | number | Max tool-use rounds per request (default: 8, max: 20). Higher values let the assistant chain more tool calls. |
| rate_limit_per_minute | number | Per-IP rate limit (default: 30 requests/minute) |
| daily_trigger_cap | number | Ceiling on unattended trigger-driven invocations per UTC day — cron firings, webhook deliveries, and ctx.assistants.ask calls all draw from the same budget (default: 100, max: 100000). 0 blocks every unattended run; there is no unlimited value. Interactive chat is not counted. |
| visibility | public | private | Who may call /__oz/assistant/<slug>/chat. "private" (default): only requests carrying an Authorization: Bearer with your OpZero token that has the deploy scope (the same authority chat_with_assistant needs); anonymous callers get 401, an owner token without deploy or a connection-grant workload token gets 403. "public": anyone with the URL can chat, gated only by rate_limit_per_minute per client IP — choose it deliberately for an assistant embedded in a public page, and treat its system prompt as public. chat_with_assistant and triggers are owner-authenticated either way. |
| triggers | object[] | Declarative triggers for the assistant — unattended invocations, no polling code. FULL REPLACE semantics: entries are upserted by name, existing triggers not named here are deleted; omit this param entirely to leave triggers untouched. Two kinds: cron ({ type, name, schedule, prompt }) runs the prompt on a UTC cron schedule (5-minute floor); webhook ({ type, name, auth }) gives an HTTPS endpoint at https://hooks.opzero.sh/t/<trigger-id> that verifies the sender's signature (HMAC presets for github/stripe/slack, or a static key) and invokes the assistant with the delivery payload. Webhook payloads are untrusted input to an assistant holding your MCP tools — use allowed_tools and max_steps to limit what a hooked run can do. |
list_assistantsread onlyYour assistants with their slugs, models, connected servers, and status.
list_assistantsread only| Parameter | Type | Description |
|---|---|---|
| status | active | archived | all | Filter by status (default: active) |
| limit | number | Max results (default: 50, max: 100) |
list_assistant_modelsread onlyEvery model an assistant can run on — the live Vercel AI Gateway catalogue with context windows, prices, and capability tags. The default is Claude Sonnet 5.
list_assistant_modelsread only| Parameter | Type | Description |
|---|---|---|
| provider | string | Only models from this provider, matched against the id prefix (anthropic, openai, google, spacexai, deepseek, mistral, meta, ...). |
| search | string | Case-insensitive substring of the model id or display name, e.g. "sonnet" or "flash". |
get_assistantread onlyOne assistant’s full config and its chat endpoint URL.
get_assistantread only| Parameter | Type | Description |
|---|---|---|
| slug | string | Assistant slug |
| assistant_id | string | Assistant UUID |
update_assistantChange the model, prompt, connected servers, or limits. Effective immediately, no redeploy.
update_assistant| Parameter | Type | Description |
|---|---|---|
| slug | string | Assistant slug to update |
| assistant_id | string | Assistant UUID to update |
| name | string | Updated name |
| model | string | Updated model ID. Vercel AI Gateway model id in provider/model form. Default: anthropic/claude-sonnet-5. Any language model the gateway serves works; ids not in its catalogue are rejected at deploy time. Current Anthropic ids: anthropic/claude-sonnet-5 (default, 1M context, $2/$10 per 1M in/out), anthropic/claude-opus-5 ($5/$25), anthropic/claude-fable-5.1 ($10/$50), anthropic/claude-haiku-4.5 (200K context, $1/$5), plus anthropic/claude-sonnet-4.6 and anthropic/claude-opus-4.8. Other providers: openai/gpt-6-astra, openai/gpt-5.6-sol, google/gemini-3.8-flash, spacexai/grok-4.6, deepseek/deepseek-v4-pro, mistral/mistral-large-3, meta/llama-4-maverick, moonshotai/kimi-k3, zai/glm-5.3. Note the gateway spells versions with a dot (claude-haiku-4.5), never the Anthropic-API hyphen form (claude-haiku-4-5). Call list_assistant_models for the full live catalogue with context windows, prices, and capability tags. |
| system_prompt | string | Updated system prompt |
| mcp_servers | object[] | Updated list of already-running MCP servers to connect to (replaces the full list). Points at existing Streamable HTTP servers, same as in deploy_assistant — does not create or deploy a new one. |
| max_tokens | number | Updated max output tokens |
| max_steps | number | Updated max tool-use rounds |
| rate_limit_per_minute | number | Updated rate limit |
| daily_trigger_cap | number | Updated daily cap on unattended trigger-driven invocations (0-100000; 0 blocks every unattended run) |
| visibility | public | private | Updated chat-endpoint visibility. "private": owner bearer with the deploy scope only. "public": anyone with the URL, rate limited per IP. Takes effect within 30 seconds (the runtime caches assistant config). |
| triggers | object[] | Declarative triggers for the assistant — unattended invocations, no polling code. FULL REPLACE semantics: entries are upserted by name, existing triggers not named here are deleted; omit this param entirely to leave triggers untouched. Two kinds: cron ({ type, name, schedule, prompt }) runs the prompt on a UTC cron schedule (5-minute floor); webhook ({ type, name, auth }) gives an HTTPS endpoint at https://hooks.opzero.sh/t/<trigger-id> that verifies the sender's signature (HMAC presets for github/stripe/slack, or a static key) and invokes the assistant with the delivery payload. Webhook payloads are untrusted input to an assistant holding your MCP tools — use allowed_tools and max_steps to limit what a hooked run can do. |
delete_assistantdestructiveDelete an assistant. Its chat endpoint stops responding at once.
delete_assistantdestructive| Parameter | Type | Description |
|---|---|---|
| slug | string | Assistant slug to delete |
| assistant_id | string | Assistant UUID to delete |
chat_with_assistantTalk to one of your assistants server-side — the way to test one before any app exists. Returns the whole reply plus a trace of each tool-use round.
chat_with_assistant| Parameter | Type | Description |
|---|---|---|
| slugreq | string | Slug of one of your deployed assistants (see list_assistants). Must be active. |
| prompt | string | Single-turn shorthand: one user message. Provide either prompt or messages. |
| messages | object[] | Conversation to send, oldest first (max 100). The assistant keeps no history of its own, so replay every turn it should see. Provide either messages or prompt. |
Hosted agents
Stateful code built on the Cloudflare Agents SDK: WebSocket sessions, synced state, schedules, and per-instance SQL. Not an assistant (no model loop) and not an MCP server (no tools surface).
get_agent_templateread onlyA known-good scaffold: minimal (synced state over HTTP and WebSocket), scheduler (cron and delayed callbacks), or chat (a broadcast room). Start here rather than from memory.
get_agent_templateread only| Parameter | Type | Description |
|---|---|---|
| kind | minimal | scheduler | chat | Template kind. Default minimal (synced state, HTTP + WebSocket commands). scheduler demonstrates a recurring cron registered in onStart plus one-off delayed callbacks; chat demonstrates a broadcast room with per-connection state. |
deploy_agentdestructiveBuild and deploy TypeScript that exports Agent classes. Each class becomes a stateful instance type at <endpoint>/agents/<class-name>/<instance>; the result carries the URLs and a connect block for clients.
deploy_agentdestructive| Parameter | Type | Description |
|---|---|---|
| name | string | Project name for the agent. Reuse a name to redeploy in place. |
| filesreq | object<string, string> | Source files keyed by path. Include agent.ts, index.ts, or main.ts as the entry and export every Agent class from it (export class Counter extends Agent<Env, State> { ... }). Only agents, zod, and cloudflare:workers may be imported; files ending in .html, .css, .svg, .txt, or .md bundle as importable strings. Deploy-time secrets arrive on this.env by key. |
| auth_mode | token | public | oauth | token (the default for new agents) requires the shared access token as Authorization: Bearer <token> or ?token=<token> on WebSocket URLs, stripped before agent code sees the request; oauth requires a per-user OpZero token issued for this agent as its resource and admits only you (the deployer), and the agent reads the caller with this.oz.caller(); public admits anyone with the URL. Omit on redeploy to keep the current mode. token stays the default because browser WebSocket clients cannot run the OAuth flow at connect time - an oauth agent needs a token obtained beforehand and passed as ?token= on the socket URL. |
| secrets | object<string, string> | Environment secrets exposed as this.env.KEY and stored encrypted. Must not share a name with an agent class. Keys beginning with OPZERO_ are reserved for platform runtime bindings and are rejected. |
| allowed_callers | string[] | auth_mode oauth only: additional callers admitted alongside you, as OpZero account emails and/or AuthKit subject ids (usr_...). This is the only way to widen an oauth agent beyond its deployer - the OPZERO_* environment namespace is reserved, so the allow-list cannot be set through secrets or set_agent_secret. Omit on redeploy to keep the current list; pass an empty array to clear it and go back to owner-only. Ignored in token and public mode. |
| project_id | string | Existing agent project ID to redeploy into. |
| force_new | boolean | Create a fresh project even if a matching name exists. |
| classes | string[] | Exported Agent class names to host as stateful instance types. Defaults to every class extending Agent found in the source; pass this when a class extends your own base class and is not discovered. |
| idle_archive_days | integer | Days of inactivity after which the agent is archived automatically (default 14). Activity is any deploy, successful verification, secret or token change, owner-token exchange, or edge traffic the Worker served without failing - a window of nothing but exceptions does not count. 0 disables idle archiving for this agent. Omit on redeploy to keep the current setting. |
list_agentsread onlyYour agents: project, endpoint, auth mode, classes, last verification.
list_agentsread onlyTakes no parameters.
get_agentread onlyOne agent in full: classes with URL templates, secret keys, last deployment, and the client wiring.
get_agentread only| Parameter | Type | Description |
|---|---|---|
| project_id | string | Agent project UUID. Provide exactly one of project_id or project_name. |
| project_name | string | Agent project name. |
set_agent_secretSet an encrypted environment secret, exposed to the agent as this.env.KEY. Hot-applied.
set_agent_secret| Parameter | Type | Description |
|---|---|---|
| project_idreq | string | The agent project ID. |
| keyreq | string | Environment variable name. Must not match an agent class name. |
| valuereq | string | Secret value. It is write-only and never returned. |
delete_agent_secretdestructiveRemove an environment secret.
delete_agent_secretdestructive| Parameter | Type | Description |
|---|---|---|
| project_idreq | string | The agent project ID. |
| keyreq | string | Secret key to delete. |
rotate_agent_tokendestructiveReplace the shared access token. Shown once; the old one stops working at once.
rotate_agent_tokendestructive| Parameter | Type | Description |
|---|---|---|
| project_idreq | string | The agent project ID. |
Hosted MCP servers
Write a server, hand it to OpZero, get a live endpoint that is verified to speak MCP.
get_mcp_server_templateread onlyA known-good scaffold to build from: browser, connected MCP, storage/files, MCP Apps, resources, sync/webhooks, closed-loop execution, Python, and the minimal HTTP starters. Start here rather than from memory.
get_mcp_server_templateread only| Parameter | Type | Description |
|---|---|---|
| kind | minimal | fetch-api | oauth1-api | browser | connected-mcp | storage | files | widget | component | resources | sync | webhook | signals | closed-loop | durable | python | Template kind. Default minimal. browser demonstrates metered, SSRF-guarded ctx.browser rendering and extraction; connected-mcp demonstrates OAuth-managed outbound MCP through ctx.connect and the deploy-then-grant lifecycle; storage and files demonstrate durable per-user KV and byte storage; widget and component demonstrate MCP Apps views; resources demonstrates resources/list + resources/read; sync demonstrates schedule + ingest + ranged scans; webhook demonstrates sender-authenticated ingest; signals demonstrates defineServer({ signals }) and ctx.signals - gated watches, an allowlisted action registry across the six action kinds, a deferred judge, and the required sweep schedule; closed-loop demonstrates defineServer({ closedLoop }), ctx.loop, internal capabilities, policy, ledger state, and the required recovery schedule; durable demonstrates per-server SQLite via ctx.durable (Cloudflare only, deploy with durable: true); python is the minimal opzero_mcp server. All non-python templates are hosted TypeScript; component and durable are Cloudflare-only, while browser, connected-mcp, and closed-loop support Cloudflare and entitled Vercel. |
deploy_mcp_serverBuild and deploy TypeScript or Python on a stable MCP endpoint. Hosted TypeScript includes ctx.browser, ctx.connect, ctx.signals, ctx.loop, storage/files, resources, ingest, MCP Apps, and an explicit cron schedule when the server must wake itself.
deploy_mcp_server| Parameter | Type | Description |
|---|---|---|
| name | string | Project name for the MCP server. |
| filesreq | object<string, string> | Source files keyed by path. TypeScript: include server.ts, index.ts, server.js, index.js, main.ts, main.js, or a .tsx/.jsx variant; only @opzero/mcp-runtime, zod, and the hono JSX runtimes (hono/jsx server-side, hono/jsx/dom client-side; vendored) may be imported; files ending in .html, .css, .svg, .txt, or .md bundle as importable strings (import html from './view.html') — author MCP Apps widget views as .html files and pass the import to widget({ html }), or author them as hono JSX components: import view from 'widget:./Signal.tsx' compiles the component into a client bundle and componentWidget({ name, view, render? }) wraps it in a runtime-generated document owning the handshake, tool-result wiring, and an oz.callTool bridge, with optional render for server-rendered results (get_mcp_server_template kind "component" shows the shape). A custom root-URL landing page ships as home.html passed to defineServer({ homepage }). Widget height is handled for you: the runtime reports the view's size to the host (hosts cannot measure a sandboxed iframe, and an unreported view is drawn at the host's default height with the rest clipped) and floors it at square, tunable with widget({ minHeight: 320 }) or widget({ minHeight: false }). Widgets are inline-only unless you ask for more: pass widget({ fullscreen: true }) to let the host present the view full-screen — it injects the fullscreen button hosts do not provide, and requires the view's own ui/initialize handshake to declare appCapabilities: { availableDisplayModes: ['inline', 'fullscreen'] } (the deploy fails with the exact snippet if it does not); displayModes: ['inline', 'fullscreen', 'pip'] is the explicit set, fullscreenButton: false drops the injected button while keeping the window.ozFullscreen client API (modes, mode, available, request, enter, exit, toggle, onChange) and the <html data-oz-display-mode> attribute it mirrors from the host, and an element marked data-oz-fullscreen-toggle is wired up as the control instead. componentWidget() takes the same knobs and generates the declaration. Python: include server.py, index.py, or main.py with a module-level server = define_server(...) from opzero_mcp; only the Python standard library, opzero_mcp, workers, js, and pyodide may be imported (get_mcp_server_template kind "python" shows the shape). |
| runtime | cloudflare | vercel | Runtime target. Default cloudflare. Vercel requires account entitlement. |
| auth_mode | token | public | oauth | oauth (the default for new servers) validates per-user tokens through OpZero's authorization server and scopes access to you (the deployer) with audience-bound tokens so other users cannot call your server; token requires a shared Bearer token; public is unauthenticated. Omit on redeploy to keep the server's current mode. Python servers do not support oauth yet and default to token. |
| secrets | object<string, string> | Environment secrets exposed as ctx.env.KEY and stored encrypted. |
| project_id | string | Existing MCP server project ID to redeploy into. |
| force_new | boolean | Create a fresh project even if a matching name exists. |
| allow_public_shared_storage | boolean | public auth_mode only: allow ctx.storage shared-scope operations (off by default because any anonymous caller could mutate shared state). |
| multi_tenant | boolean | oauth auth_mode only: admit ANY authenticated OpZero user, not just you. Off by default — an oauth server admits only its owner (and any allow-list), because every server has a public *.mcp.opzero.sh URL and the shared gateway will issue a valid token to any OpZero user. Turn it on for a server meant to serve other people: each caller then gets their own ctx.user, their own ctx.storage scope, and their own ctx.connect connections. Omit on redeploy to keep the current setting; pass false to close it again. Rejected on token/public servers, which have no per-caller identity to admit. |
| schedule | string | Cron expression (UTC, 5 fields, or @hourly/@daily/@weekly/@monthly) that runs the server's exported scheduled() handler — a deployed server cannot wake itself, so this is how sync/rollup servers run unattended. Minimum interval is 5 minutes (the scheduler tick). Omit to keep the current schedule on redeploy; pass an empty string to remove it. |
| durable | boolean | object | Opt-in per-server persistent SQLite database. When true, ctx.durable is configured: ctx.durable.sql.exec for queries, ctx.durable.transaction for atomic batches, ctx.durable.setAlarm/getAlarm/deleteAlarm for alarms, and ctx.durable.call(name, args) for the methods declared in defineServer({ durable: { schema, methods, alarm } }), which run inside the object on its single thread. An object mirroring that defineServer shape (schema statements, method names, alarm flag) is also accepted as the opt-in, with method names validated up front (^[a-z][a-z0-9_]*$); the source descriptor stays authoritative for behavior. Requires the Cloudflare runtime. Omit on redeploy to preserve whatever the server already has. A source that declares durable but a deploy that omits this flag is rejected with the fix named. |
| blobs | boolean | Opt-in shared R2 bucket through the platform blob broker. When true, ctx.blobs is configured under this server's own key prefix (servers/<server-id>/, fixed server-side from the server id; no bucket binding or credential reaches the Worker): put (up to 2 MiB) / get / head / delete / list, and presignPut(key, { sha256 }) for a 15 minute S3 presigned PUT that the bucket accepts only with the declared x-amz-checksum-sha256. Needs the storage binding. The source must also declare defineServer({ blobs: true }); a source that declares it but a deploy that omits this flag is rejected with the fix named. Requires the Cloudflare runtime. Omit on redeploy to preserve whatever the server already has. |
get_mcp_server_logsread onlyDeployment health, recent deploy records, and a live Cloudflare tail when one is available. The first stop when a server misbehaves.
get_mcp_server_logsread only| Parameter | Type | Description |
|---|---|---|
| project_id | string | MCP server project UUID. Provide this or project_name. |
| project_name | string | MCP server project name. Provide this or project_id. |
| limit | integer | Recent deployment record count. Default 10. |
| since | string | ISO timestamp lower bound for deployment records. |
list_mcp_app_widgetsread onlyWhich MCP Apps widgets your server exposes and which tools render into each — including tools pointing at a widget that does not exist.
list_mcp_app_widgetsread only| Parameter | Type | Description |
|---|---|---|
| project_id | string | MCP server project UUID. Provide this or project_name. |
| project_name | string | MCP server project name. Provide this or project_id. |
check_mcp_conformanceread onlyRun the cross-client matrix after deploy: protocol negotiation, auth discovery, CORS, catalogue limits, resources, and MCP Apps across Claude, OpenAI, xAI, IDE, and baseline profiles.
check_mcp_conformanceread only| Parameter | Type | Description |
|---|---|---|
| endpoint | string | Absolute https URL of the MCP endpoint. Provide exactly one of endpoint, project_id, project_name, or gateway_slug. |
| project_id | string | Hosted MCP server project UUID. |
| project_name | string | Hosted MCP server project name. |
| gateway_slug | string | Gateway slug from list_gateways. |
| credential | string | Bearer token to present. Optional: without it the unauthenticated surface (auth challenge, discovery documents, CORS) is still checked, which is the part every connector walks first. For a token-mode hosted server the stored token is used automatically. |
| clients | string[] | Restrict the run to these client profile ids. Omit to check every known client. |
| auth_mode | oauth | token | public | How an endpoint target authenticates, when you know it. OAuth discovery checks (the 401 challenge, protected-resource and authorization-server metadata, PKCE, CIMD) apply to oauth servers only; with public or token they are reported under skipped with reason auth_mode=<mode> and never count against a client verdict. Without the hint, an endpoint that serves an anonymous initialize is reported as unproven on those checks rather than failing - a valid public server and a broken oauth one look identical on the wire. Hosted servers and gateways use their stored mode; do not pass this for them. |
set_mcp_server_secretSet an encrypted environment secret, exposed to the server as ctx.env.KEY. Cloudflare picks it up immediately.
set_mcp_server_secret| Parameter | Type | Description |
|---|---|---|
| project_idreq | string | The MCP server project ID. |
| keyreq | string | Environment variable name. |
| valuereq | string | Secret value. It is write-only and never returned. |
list_mcp_server_secretsread onlyThe secret keys configured on a server. Values are never returned.
list_mcp_server_secretsread only| Parameter | Type | Description |
|---|---|---|
| project_idreq | string | The MCP server project ID. |
delete_mcp_server_secretdestructiveRemove an environment secret.
delete_mcp_server_secretdestructive| Parameter | Type | Description |
|---|---|---|
| project_idreq | string | The MCP server project ID. |
| keyreq | string | Secret key to delete. |
rotate_mcp_server_tokendestructiveReplace a token-mode server’s access token. The old one stops working immediately; the new one is shown exactly once.
rotate_mcp_server_tokendestructive| Parameter | Type | Description |
|---|---|---|
| project_idreq | string | The MCP server project ID. |
Gateways
One MCP endpoint fronting many backends, behind an exposure policy.
create_gatewayA federated endpoint at gw.opzero.sh/g/<slug>/mcp. Choose the exposure mode carefully — search is right for Claude.ai.
create_gateway| Parameter | Type | Description |
|---|---|---|
| namereq | string | Human-readable name for the gateway (e.g. "Support Bot Tools") |
| slug | string | URL-safe identifier (lowercase, hyphens). Auto-generated from name if not provided. The gateway endpoint is gw.opzero.sh/g/<slug>/mcp. "default" is reserved. |
| description | string | What this gateway is for |
| exposure_mode | auto | inline | search | pinned | How tools are exposed. search (recommended, and required for clients that snapshot tools/list like Claude.ai): a constant meta-tool surface (search_tools, invoke_read_tool for backend tools explicitly marked read-only, invoke_write_tool for everything else, plus list_resources and read_resource for federated resources) whose shape never changes, with live discovery at call time. inline (all tools merged into tools/list, namespaced <ns>_<tool>): only for clients that re-list every session (Claude Code, API mcp_servers) with small fixed toolsets — the surface changes whenever backends do, which strands snapshot caches. pinned: chosen tools inline + meta-tools for the rest. auto: resolves to search whenever track_all_deployed is true (open-ended tool population must not flip surface shape mid-lifecycle); otherwise inline until the tool count exceeds inline_tool_limit, then search. Default: auto. |
| inline_tool_limit | number | Tool-count threshold where auto mode flips from inline to search (default 40) |
| track_all_deployed | boolean | When true, every active deployed MCP server is federated automatically without explicit backend rows (default false; the default gateway has this on) |
list_gatewaysread onlyYour gateways with endpoints and backend counts. Materializes the default gateway on first call.
list_gatewaysread only| Parameter | Type | Description |
|---|---|---|
| limit | number | Max gateways to return (default 50) |
get_gatewayread onlyOne gateway in full: exposure policy, backend attachments with namespaces, and per-backend health.
get_gatewayread only| Parameter | Type | Description |
|---|---|---|
| slug | string | Gateway slug |
| gateway_id | string | Gateway UUID (alternative to slug) |
update_gatewayChange the name, exposure mode, inline limit, pinned tools, or tracking flag. Live within about thirty seconds.
update_gateway| Parameter | Type | Description |
|---|---|---|
| slug | string | Gateway slug |
| gateway_id | string | Gateway UUID (alternative to slug) |
| name | string | New name |
| description | string | New description |
| exposure_mode | auto | inline | search | pinned | New exposure mode. search is recommended for any gateway consumed by Claude.ai (constant meta-tool surface immune to tools/list snapshot caching); inline suits only re-listing clients with small fixed toolsets; auto resolves to search whenever track_all_deployed is true. |
| inline_tool_limit | number | New auto-mode threshold |
| pinned_tools | string[] | Qualified tool names (<namespace>_<tool>) shown inline in pinned mode |
| track_all_deployed | boolean | Automatically federate all deployed MCP servers |
add_gateway_backendAttach a hosted server, an external MCP server, or an assistant, under a namespace that prefixes its tool names. Use an external connection for third-party credentials.
add_gateway_backend| Parameter | Type | Description |
|---|---|---|
| gateway_slug | string | Gateway to attach to (or use gateway_id) |
| gateway_id | string | Gateway UUID (alternative to gateway_slug) |
| typereq | opzero_mcp | external_mcp | assistant | Backend type |
| namespacereq | string | Tool-name prefix, unique per gateway (lowercase alphanumeric + underscores, e.g. "shop") |
| server_id | string | opzero_mcp: the project id (UUID from list_projects) or the mcp_server id (from get_project_details). Both resolve to the project's current MCP endpoint. |
| assistant_slug | string | assistant: the assistant slug |
| assistant_id | string | assistant: the assistant UUID (alternative to assistant_slug) |
| url | string | external_mcp: the Streamable HTTP MCP endpoint URL. Optional when connection is given (the connection supplies its own server url); pass it anyway to point a connection at a self-hosted instance of the same service. |
| connection | string | external_mcp only: use one of your external connections (create_connection) as this backend's credential. Accepts the connection label, the provider slug, or the connection id from list_connections. The gateway fetches a fresh access token per call and refreshes it automatically, so this is the right choice for any OAuth service. Attaching also grants this backend access to the connection; remove_gateway_backend revokes that grant. Requires your MCP identity to be linked (link_identity) - external connections are never released to an identity matched only by an unverified email. Mutually exclusive with auth_bearer and use_caller_token. |
| auth_bearer | string | external_mcp only: bearer token the gateway sends to this backend. Stored encrypted; never returned. Mutually exclusive with use_caller_token. |
| use_caller_token | boolean | external_mcp only: forward each caller's own OpZero bearer token to the backend instead of a stored credential, so the backend sees the caller as themselves. Only allowed for OpZero service-owned endpoints (currently https://code.opzero.sh) — never tenant app subdomains or hosted MCP hosts, which run user-controlled code; the token is never sent anywhere else. Mutually exclusive with auth_bearer. Example: federate your CodeZ Hub machines through a gateway with url "https://code.opzero.sh/mcp", namespace "hub", use_caller_token true. |
| tool_allowlist | string[] | Backend-local tool names to expose (omit for all tools). REQUIRED when connection is the "opzero" platform connection: there the same list is also written to the connection grant, so it is what this backend may call as you, not merely what the gateway shows. |
| position | number | Sort order in listings (default 0) |
remove_gateway_backenddestructiveDetach a backend. The backend itself survives; any connection grant it held through this gateway is revoked.
remove_gateway_backenddestructive| Parameter | Type | Description |
|---|---|---|
| backend_idreq | string | The gateway backend attachment UUID |
delete_gatewaydestructiveDelete a gateway and its attachments. Backends are untouched. The default gateway cannot be deleted.
delete_gatewaydestructive| Parameter | Type | Description |
|---|---|---|
| slug | string | Gateway slug |
| gateway_id | string | Gateway UUID (alternative to slug) |
External connections
OAuth grants to third-party MCP servers, stored encrypted and released only to workloads you name.
create_connectionConnect Notion, Linear, Sentry, Neon, Vercel, or any RFC 9728 server. Returns a one-time authorize URL; the grant is stored encrypted and refreshed for you. The "opzero" provider connects OpZero itself, with no browser step, so a workload can run named deploy tools as you.
create_connection| Parameter | Type | Description |
|---|---|---|
| provider | string | Catalog provider slug (opzero, notion, linear, sentry, neon, vercel). Omit when passing an explicit url. "opzero" is the platform itself and takes no url, no browser step, and no inline grant - grant it with grant_connection and a tool_allowlist. |
| url | string | Streamable HTTP MCP endpoint of any external server. Required for servers not in the catalog; also overrides a catalog entry so you can point at a self-hosted instance. The server must publish RFC 9728 protected resource metadata. |
| label | string | Name for this connection, e.g. "Work Notion". Defaults to the provider name. Lets you hold several accounts with the same provider. |
| grant_to_kind | gateway_backend | assistant | mcp_server | agent | Optionally attach the resulting connection to a workload in the same step (otherwise use grant_connection later). Connections are never ambient: nothing can use one until it is granted. |
| grant_to_id | string | Id of the workload to grant. Required with grant_to_kind. |
list_connectionsread onlyYour connections with status, granted scope, and which workloads may use each. Status needs_reauth means the grant must be recreated.
list_connectionsread only| Parameter | Type | Description |
|---|---|---|
| limit | number | Max connections to return (default 50) |
grant_connectionLet one workload use one connection, or revoke that permission. This is the consent boundary — nothing is ambient. Granting the "opzero" connection, which lets a workload call these deploy tools as you, additionally requires a tool_allowlist.
grant_connection| Parameter | Type | Description |
|---|---|---|
| connection_idreq | string | Connection UUID from list_connections |
| subject_kindreq | gateway_backend | assistant | mcp_server | agent | What kind of workload is being granted access |
| subject_idreq | string | Id of the workload: gateway backend id (get_gateway), assistant id (list_assistants), mcp_server id (get_project_details), or agent id (get_agent). A hosted agent granted the "opzero" platform connection can exchange its own credential for an owner token via this.oz.owner() and call the tools in tool_allowlist as you. |
| note | string | Optional note recording why this grant exists |
| revoke | boolean | Remove the grant instead of creating it |
| tool_allowlist | string[] | Tool names this workload may call through the connection. REQUIRED for the "opzero" platform connection and rejected for any other provider. Every name must exist on this server; anything outside the list is refused before the tool runs, and before the scope check. Keep it to what the workload actually needs, e.g. ["deploy_markdown"] for a publisher, ["deploy_mcp_server","redeploy","rollback_deployment"] for a deployer. Re-running grant_connection with a new list replaces the old one. |
delete_connectiondestructiveRevoke at the provider where supported, delete the stored credential, and drop every grant on it.
delete_connectiondestructive| Parameter | Type | Description |
|---|---|---|
| connection_idreq | string | Connection UUID from list_connections |
Everything else
Tools the server exposes that this page has not yet written up by hand. The descriptions below come straight from the server.
get_skillread onlyRead one of the OpZero skill documents: the step-by-step workflow, ordering constraints, and failure modes for a multi-step task (assistants, gateways, mcp-servers, agents, src). Call it before deploying or debugging an assistant, gateway, hosted MCP server, agent, or project source, and whenever guidance points you at a skill:// URI — this tool returns the same markdown as resources/read, for clients that only speak tools.
get_skillread only| Parameter | Type | Description |
|---|---|---|
| skill | string | Which skill to read: a short name (assistants, gateways, connections, mcp-servers, agents, src), the frontmatter name (opzero-mcp-servers), or the full URI (skill://opzero/mcp-servers/SKILL.md). Also accepts the exact URI of any ref://, template://, or doc:// resource, such as ref://opzero/mcp-runtime/signals.d.ts or doc://opzero/errors.md. Omit to list the catalogue. |
update_mcp_serverdestructiveChange a deployed MCP server's settings without resending its source. This is the tool for flipping auth_mode, opening or closing multi-tenant admission, toggling public shared storage, or setting/clearing the cron schedule - deploy_mcp_server requires the full file map, and reading a server's source back just to change a setting is what this exists to avoid.
update_mcp_serverdestructive| Parameter | Type | Description |
|---|---|---|
| project_id | string | The MCP server project ID (from list_projects or a deploy response). |
| name | string | Project name, as an alternative to project_id. An ambiguous name is refused rather than guessed. |
| auth_mode | token | public | oauth | New auth mode. oauth validates per-user tokens through OpZero's authorization server and admits you (plus multi_tenant, if set); token requires the shared Bearer token, which is returned once when it is first minted (rotate_mcp_server_token replaces it); public is unauthenticated and requires confirm_public. Omit to keep the current mode. Python servers do not support oauth. |
| multi_tenant | boolean | oauth only: admit ANY authenticated OpZero user rather than only you. Omit to keep the current setting; false closes it again. Forced off whenever the effective auth mode is not oauth, so a server moved to token or public never carries a stale opt-in. |
| allow_public_shared_storage | boolean | public only: allow ctx.storage shared-scope writes, which any anonymous caller could then make. Omit to keep the current setting. Forced off whenever the effective auth mode is not public. |
| schedule | string | Cron expression (UTC, 5 fields, or @hourly/@daily/@weekly/@monthly) for the server's scheduled() handler. Minimum interval 5 minutes. Omit to keep the current schedule; pass an empty string to remove it. |
| confirm_public | boolean | Required to move an authenticated server to auth_mode "public". Without it that transition is refused, because every hosted server has a guessable *.mcp.opzero.sh URL and public admits anyone who has it. |
validate_candidatePlatform build evaluator for a proposal run: materializes the candidate tree the run would land (the merge result src_checkout_manifest returns for run), builds it as a hosted MCP server bundle exactly as deploy_mcp_server would, and records the outcome on the run as build evidence (class build, verdict pass or fail, evidence bundle_bytes or error) under the platform evaluator principal. This is the only way build evidence enters a repository: src_validation_record refuses direct callers.
validate_candidate| Parameter | Type | Description |
|---|---|---|
| projectreq | string | Project slug (its name) or project id. The repository id is the project id; you must own the project. |
| runreq | integer | Run id from src_propose or src_proposal_get. It must be evaluated (queued); a stale, conflicted, or merged run refuses. |
update_agentdestructiveChange a deployed agent's settings without resending its source. Covers auth_mode, the oauth allowed_callers list, and idle_archive_days - deploy_agent requires the full file map, so this is the tool for a settings-only change.
update_agentdestructive| Parameter | Type | Description |
|---|---|---|
| project_id | string | The agent project ID (from list_agents or a deploy response). |
| name | string | Project name, as an alternative to project_id. An ambiguous name is refused rather than guessed. |
| auth_mode | token | public | oauth | New auth mode. token requires the shared access token as Authorization: Bearer or ?token= on WebSocket URLs; oauth admits per-user OpZero tokens issued for this agent, scoped to you plus allowed_callers; public admits anyone with the URL and requires confirm_public. Omit to keep the current mode. Note that browser WebSocket clients cannot run the OAuth flow at connect time, so an oauth agent needs a token obtained beforehand. |
| allowed_callers | string[] | oauth only: callers admitted alongside you, as OpZero account emails and/or AuthKit subject ids (usr_...). Replaces the stored list; an empty array clears it and returns the agent to owner-only. Omit to keep the current list. This is the only way to set it - the OPZERO_* environment namespace is reserved, so it cannot go through set_agent_secret. |
| idle_archive_days | integer | Days of inactivity after which the agent is archived automatically (default 14). 0 disables idle archiving. Applied in place, with no redeploy, when nothing else changes in the same call. |
| confirm_public | boolean | Required to move an authenticated agent to auth_mode "public". Without it that transition is refused: public admits anyone with the URL to every agent instance the deployment hosts. |
mcp_diagnosticsread onlyDiagnose the MCP session from both ends. Reports what this server sees of the calling client (protocol era and version marker, client identity and capabilities from _meta, transport headers, resolved caller identity, scopes) and what is going on inside the server (implemented JSON-RPC methods, tool catalog with per-tool allow/deny for this caller, widgets, resources, runtime bindings and configuration).
mcp_diagnosticsread onlyTakes no parameters.
mcp_diagnostics_reportCompanion to mcp_diagnostics, called by its widget: stores the host-side findings it collected (client_report) in a short per-caller ring and returns the full diagnostics report with them under clientReports. Writes only diagnostic state for the calling identity; anonymous callers on a public server get the report back but nothing is kept.
mcp_diagnostics_report| Parameter | Type | Description |
|---|---|---|
| client_reportreq | object | The host-side findings the mcp-diagnostics widget collected: ui/initialize result, host capabilities and context, browser sandbox facts, bridge probe outcomes. |
src_viewread onlyOpen the repository view: branches, log, file tree, file contents, proposals, positions, conflicts and diff, as structured content. Pass path to show a file, proposal to inspect one, tab to choose the tab.
src_viewread only| Parameter | Type | Description |
|---|---|---|
| projectreq | string | Project slug (its name) or project id. The repository id is the project id; you must own the project. |
| ref | string | Branch name or commit hash prefix. Defaults to main. |
| path | string | null | File to show in the Browse tab. |
| proposal | integer | null | Proposal id to inspect in the Queue tab. |
| tab | browse | queue | Which tab to open. Defaults to browse, or queue when proposal is given. |
src_protectMark a branch protected so it moves only through merge finalization, or unprotect it, and set its validation policy: require_validation names the classes a run must carry a pass for before src_merge_finalize lands it; an empty array clears the requirement. Only classes a platform evaluator can produce are accepted (build today, through validate_candidate; the set grows as test, policy and review evaluators land), so a gate can never be configured that nothing can satisfy: another class is refused UNSUPPORTED_VALIDATION_CLASS.
src_protect| Parameter | Type | Description |
|---|---|---|
| projectreq | string | Project slug (its name) or project id. The repository id is the project id; you must own the project. |
| branchreq | string | — |
| protected | boolean | — |
| require_validation | build[] | Validation classes required before finalize, from the producible set. Omit to leave the requirement unchanged; [] clears it. Evidence is recorded by the platform evaluator (validate_candidate), never by the proposer. |
src_branchesread onlyList branches with heads, protection, and the validation policy (require_validation and its policy_hash) each enforces at finalize.
src_branchesread only| Parameter | Type | Description |
|---|---|---|
| projectreq | string | Project slug (its name) or project id. The repository id is the project id; you must own the project. |
| full_hashes | boolean | — |
src_listread onlyList a directory at a snapshot. Depth 1 by default; entries carry hash and size.
src_listread only| Parameter | Type | Description |
|---|---|---|
| projectreq | string | Project slug (its name) or project id. The repository id is the project id; you must own the project. |
| ref | object | Reference. Defaults to { branch: "main" }. A branch resolves to its current head; the response discloses the commit it resolved to. |
| prefix | string | Directory to list. Empty for the root. |
| depth | integer | — |
| limit | integer | — |
| full_hashes | boolean | — |
src_readread onlyRead a file at a snapshot. Returns lines with a range_hash for src_edit.
src_readread only| Parameter | Type | Description |
|---|---|---|
| projectreq | string | Project slug (its name) or project id. The repository id is the project id; you must own the project. |
| pathreq | string | — |
| ref | object | Reference. Defaults to { branch: "main" }. A branch resolves to its current head; the response discloses the commit it resolved to. |
| start_line | integer | — |
| end_line | integer | — |
| section | string | Markdown heading text, with or without the leading #s. Returns exactly the section body bytes: the heading line is not part of the body, blank lines on either side are. |
| symbol | string | Top level symbol name. Returns exactly the definition body through the newline ending its last line (regex outline, not tree-sitter). |
| max_bytes | integer | — |
| unchanged_since | string | Commit hash. If the blob at this path is identical there, returns unchanged: true and no content. |
| full_hashes | boolean | — |
src_read_manyread onlyRead several small files at one snapshot in one call. Pass run instead of ref to read from the candidate tree a run would land (the merge result, which has no commit until finalized).
src_read_manyread only| Parameter | Type | Description |
|---|---|---|
| projectreq | string | Project slug (its name) or project id. The repository id is the project id; you must own the project. |
| pathsreq | string[] | — |
| ref | object | Reference. Defaults to { branch: "main" }. A branch resolves to its current head; the response discloses the commit it resolved to. |
| run | integer | Run id whose candidate tree to read, as an alternative to ref. |
| max_total_bytes | integer | — |
src_outlineread onlyMarkdown headings or top level code symbols with line ranges. A symbol ends where the brackets opened on its first line close; an anonymous export default is listed under its callee name (export default defineServer({ is the symbol defineServer, kind default).
src_outlineread only| Parameter | Type | Description |
|---|---|---|
| projectreq | string | Project slug (its name) or project id. The repository id is the project id; you must own the project. |
| pathreq | string | — |
| ref | object | Reference. Defaults to { branch: "main" }. A branch resolves to its current head; the response discloses the commit it resolved to. |
src_logread onlyCommit history. first_parent defaults to true so a branch that receives merges reads as one entry per landed proposal.
src_logread only| Parameter | Type | Description |
|---|---|---|
| projectreq | string | Project slug (its name) or project id. The repository id is the project id; you must own the project. |
| ref | object | Reference. Defaults to { branch: "main" }. A branch resolves to its current head; the response discloses the commit it resolved to. |
| path | string | — |
| limit | integer | — |
| before | string | Commit hash; start after this commit. |
| first_parent | boolean | — |
src_diffread onlyCompare two snapshots. Default is per path added and removed line counts; text: true returns a unified diff.
src_diffread only| Parameter | Type | Description |
|---|---|---|
| projectreq | string | Project slug (its name) or project id. The repository id is the project id; you must own the project. |
| from | object | Reference. Defaults to { branch: "main" }. A branch resolves to its current head; the response discloses the commit it resolved to. |
| to | object | Reference. Defaults to { branch: "main" }. A branch resolves to its current head; the response discloses the commit it resolved to. |
| prefix | string | — |
| text | boolean | — |
| context_lines | integer | — |
| max_text_bytes | integer | — |
src_changed_pathsread onlyPaths that differ between two snapshots. Use after HEAD_MOVED to reread only what changed.
src_changed_pathsread only| Parameter | Type | Description |
|---|---|---|
| projectreq | string | Project slug (its name) or project id. The repository id is the project id; you must own the project. |
| from | object | Reference. Defaults to { branch: "main" }. A branch resolves to its current head; the response discloses the commit it resolved to. |
| to | object | Reference. Defaults to { branch: "main" }. A branch resolves to its current head; the response discloses the commit it resolved to. |
| prefix | string | — |
src_checkout_manifestread onlyExact manifest of a snapshot for materialization: commit, root, and every path with hash, mode and size. Write .src/HEAD in the checkout with the commit hash and use it as expect_head on ingest.
src_checkout_manifestread only| Parameter | Type | Description |
|---|---|---|
| projectreq | string | Project slug (its name) or project id. The repository id is the project id; you must own the project. |
| ref | object | Reference. Defaults to { branch: "main" }. A branch resolves to its current head; the response discloses the commit it resolved to. |
| run | integer | Run id whose candidate tree to flatten, as an alternative to ref. |
| prefix | string | — |
src_blob_missingread onlyWhich of these full blob hashes are neither stored inline nor verified in R2. A blob that was prepared but not yet uploaded counts as missing and is listed again under staged.
src_blob_missingread only| Parameter | Type | Description |
|---|---|---|
| projectreq | string | Project slug (its name) or project id. The repository id is the project id; you must own the project. |
| hashesreq | string[] | — |
src_upload_prepareStage blobs over 1 MB (INLINE_MAX) through R2: per blob, a 15 minute presigned PUT URL plus the headers to send, or already_present when the hash is stored. PUT the Git blob object (the frame "blob <size>\0" followed by the content, so its SHA-256 is the blob hash) with the headers verbatim; the bucket refuses a body whose digest differs.
src_upload_prepare| Parameter | Type | Description |
|---|---|---|
| projectreq | string | Project slug (its name) or project id. The repository id is the project id; you must own the project. |
| blobsreq | object[] | — |
src_proposalsread onlyList proposals (pull request equivalents) with each current run: candidate_root, projected_base_root (a tree root, not a commit), policy_hash and the validation verdicts per class. With target, entries come in queue order with positions.
src_proposalsread only| Parameter | Type | Description |
|---|---|---|
| projectreq | string | Project slug (its name) or project id. The repository id is the project id; you must own the project. |
| state | string | queued, conflict, rejected, or merged |
| target | string | — |
| mine | boolean | — |
src_proposal_getread onlyOne proposal with its current run, queue position, predecessor, projected_base_root and candidate_root (tree root hashes; source_head, target_head, and merge_base are commit hashes), and conflicts. A read: it reports the run the queue produced and never creates one.
src_proposal_getread only| Parameter | Type | Description |
|---|---|---|
| projectreq | string | Project slug (its name) or project id. The repository id is the project id; you must own the project. |
| proposalreq | integer | — |
src_quota_getread onlyObject counts, mutation and rebase metrics, queue depths, and limits.
src_quota_getread only| Parameter | Type | Description |
|---|---|---|
| projectreq | string | Project slug (its name) or project id. The repository id is the project id; you must own the project. |
src_writeWrite, replace, or delete whole files on a branch in one commit. Compare and swap on expect_head with path tier rebase by default.
src_write| Parameter | Type | Description |
|---|---|---|
| projectreq | string | Project slug (its name) or project id. The repository id is the project id; you must own the project. |
| branchreq | string | Branch to move. Protected branches refuse direct writes; open a proposal instead. |
| messagereq | string | Commit message. |
| mutation_idreq | string | Client generated unique id (a UUID). Retrying with the same id returns the original result verbatim. |
| expect_headreq | string | Commit hash the caller believes is the branch head. If the head has moved the server attempts a rebase per the rebase tier, otherwise it returns HEAD_MOVED. |
| trace_id | string | W3C trace id, 32 lowercase hex characters, recorded in the commit. |
| rebase | path | edit | boolean | Rebase tier when the head moved. path: apply if none of the touched paths changed. edit (src_edit only): also reanchor old/new, section and symbol edits against the current blob. false: never rebase. |
| filesreq | object[] | — |
src_editEdit one file with anchored edits: a unique old/new string, a line range with range_hash returned by src_read, a markdown section, or a symbol. Section and symbol edits replace exactly the anchor body bytes, byte for byte; pass the anchor_hash src_read returned so the edit is bound to the body you read.
src_edit| Parameter | Type | Description |
|---|---|---|
| projectreq | string | Project slug (its name) or project id. The repository id is the project id; you must own the project. |
| branchreq | string | Branch to move. Protected branches refuse direct writes; open a proposal instead. |
| messagereq | string | Commit message. |
| mutation_idreq | string | Client generated unique id (a UUID). Retrying with the same id returns the original result verbatim. |
| expect_headreq | string | Commit hash the caller believes is the branch head. If the head has moved the server attempts a rebase per the rebase tier, otherwise it returns HEAD_MOVED. |
| trace_id | string | W3C trace id, 32 lowercase hex characters, recorded in the commit. |
| pathreq | string | — |
| rebase | path | edit | boolean | Rebase tier when the head moved. path: apply if none of the touched paths changed. edit (src_edit only): also reanchor old/new, section and symbol edits against the current blob. false: never rebase. |
| editsreq | object[] | — |
src_branchCreate a branch (O(1)) pointing at an existing commit. Defaults to contrib/<you>/<n>.
src_branch| Parameter | Type | Description |
|---|---|---|
| projectreq | string | Project slug (its name) or project id. The repository id is the project id; you must own the project. |
| from | object | Reference. Defaults to { branch: "main" }. A branch resolves to its current head; the response discloses the commit it resolved to. |
| name | string | — |
src_restoreNew commit whose tree equals snapshot to. History is preserved.
src_restore| Parameter | Type | Description |
|---|---|---|
| projectreq | string | Project slug (its name) or project id. The repository id is the project id; you must own the project. |
| branchreq | string | Branch to move. Protected branches refuse direct writes; open a proposal instead. |
| messagereq | string | Commit message. |
| mutation_idreq | string | Client generated unique id (a UUID). Retrying with the same id returns the original result verbatim. |
| expect_headreq | string | Commit hash the caller believes is the branch head. If the head has moved the server attempts a rebase per the rebase tier, otherwise it returns HEAD_MOVED. |
| trace_id | string | W3C trace id, 32 lowercase hex characters, recorded in the commit. |
| toreq | string | Commit hash whose tree becomes the branch content. |
| rebase | path | edit | boolean | Rebase tier when the head moved. path: apply if none of the touched paths changed. edit (src_edit only): also reanchor old/new, section and symbol edits against the current blob. false: never rebase. |
src_rebaseMove a branch onto another snapshot by replaying its change set from the merge base as one new commit whose parent is onto (a squashing rebase, like git rebase --onto then squash). Resolves add/add conflicts that editing the source branch cannot: the merge base moves to onto.
src_rebase| Parameter | Type | Description |
|---|---|---|
| projectreq | string | Project slug (its name) or project id. The repository id is the project id; you must own the project. |
| branchreq | string | Branch to move. Protected branches refuse direct writes; open a proposal instead. |
| messagereq | string | Commit message. |
| mutation_idreq | string | Client generated unique id (a UUID). Retrying with the same id returns the original result verbatim. |
| expect_headreq | string | Commit hash the caller believes is the branch head. If the head has moved the server attempts a rebase per the rebase tier, otherwise it returns HEAD_MOVED. |
| trace_id | string | W3C trace id, 32 lowercase hex characters, recorded in the commit. |
| ontoreq | string | Commit hash (or unique prefix) to rebase onto, usually the target head. |
| overlap | fail | branch | onto | What to do with paths changed on both sides. fail (default): REBASE_CONFLICT with overlapping_paths and nothing written. branch: take the branch version. onto: take the onto version and drop the branch change; reapply it with src_edit on the new head. |
src_ingestCommit a checkout back as a change set: the manifest is diffed against the tree at expect_head and only differences apply. Paths absent under prefix are deleted only with prune: true.
src_ingest| Parameter | Type | Description |
|---|---|---|
| projectreq | string | Project slug (its name) or project id. The repository id is the project id; you must own the project. |
| branchreq | string | Branch to move. Protected branches refuse direct writes; open a proposal instead. |
| messagereq | string | Commit message. |
| mutation_idreq | string | Client generated unique id (a UUID). Retrying with the same id returns the original result verbatim. |
| expect_headreq | string | Commit hash the caller believes is the branch head. If the head has moved the server attempts a rebase per the rebase tier, otherwise it returns HEAD_MOVED. |
| trace_id | string | W3C trace id, 32 lowercase hex characters, recorded in the commit. |
| rebase | path | edit | boolean | Rebase tier when the head moved. path: apply if none of the touched paths changed. edit (src_edit only): also reanchor old/new, section and symbol edits against the current blob. false: never rebase. |
| prefix | string | Restrict the change set to this directory. |
| prune | boolean | Delete paths present at expect_head but absent in the manifest. |
| filesreq | object[] | Full manifest of the checkout under prefix. Reference unchanged blobs by blob_hash (a short hash is fine) to avoid resending bytes. |
src_commit_manifestCommit a manifest of paths that reference blobs by hash only: inline blobs already stored, R2 blobs staged with src_upload_prepare (verified before the commit; BLOB_NOT_STAGED lists any without an object), or unchanged blobs. Change set semantics like src_ingest: only differences from the tree at expect_head apply, and prune deletes paths absent from the manifest.
src_commit_manifest| Parameter | Type | Description |
|---|---|---|
| projectreq | string | Project slug (its name) or project id. The repository id is the project id; you must own the project. |
| branchreq | string | Branch to move. Protected branches refuse direct writes; open a proposal instead. |
| messagereq | string | Commit message. |
| mutation_idreq | string | Client generated unique id (a UUID). Retrying with the same id returns the original result verbatim. |
| expect_headreq | string | Commit hash the caller believes is the branch head. If the head has moved the server attempts a rebase per the rebase tier, otherwise it returns HEAD_MOVED. |
| trace_id | string | W3C trace id, 32 lowercase hex characters, recorded in the commit. |
| rebase | path | edit | boolean | Rebase tier when the head moved. path: apply if none of the touched paths changed. edit (src_edit only): also reanchor old/new, section and symbol edits against the current blob. false: never rebase. |
| prefix | string | Restrict the change set to this directory. |
| prune | boolean | Delete paths present at expect_head but absent in the manifest. |
| manifestreq | object[] | — |
src_proposeOpen a proposal (equivalent to a pull request) and enqueue it on the target. The dry merge runs against the projected base, which is the candidate of the entry ahead or the target head; the run reports it as projected_base_root (a tree root hash, unlike source_head, target_head, and merge_base, which are commit hashes).
src_propose| Parameter | Type | Description |
|---|---|---|
| projectreq | string | Project slug (its name) or project id. The repository id is the project id; you must own the project. |
| branchreq | string | Source branch. |
| target | string | Target branch, default main. |
| summaryreq | string | — |
src_rejectReject a proposal and remove it. Entries behind it repin, and conflicted proposals on the same target are re-evaluated against the new queue.
src_reject| Parameter | Type | Description |
|---|---|---|
| projectreq | string | Project slug (its name) or project id. The repository id is the project id; you must own the project. |
| proposalreq | integer | — |
| reasonreq | string | — |
src_merge_finalizeGate tool: land an evaluated run. Succeeds only at the head of its queue and only when the target root equals the run projected base.
src_merge_finalize| Parameter | Type | Description |
|---|---|---|
| projectreq | string | Project slug (its name) or project id. The repository id is the project id; you must own the project. |
| runreq | integer | — |
| mutation_idreq | string | — |
| expect_target_head | string | — |
| expect_candidate_root | string | The candidate root you validated or reviewed: full hash or a prefix of at least 12 characters. The call fails CANDIDATE_MISMATCH unless it names the run candidate. |
src_validation_recordRecord validation evidence on an evaluated run: one class (build, test, policy, review) with a pass or fail verdict, bound to the run candidate_root, projected base and policy hash at the moment of recording. Only the platform evaluator principal records, and never on a proposal it opened; the platform refuses direct calls with CAPABILITY_DENIED, because evidence comes from a platform owned evaluator such as validate_candidate, not from the caller.
src_validation_record| Parameter | Type | Description |
|---|---|---|
| projectreq | string | Project slug (its name) or project id. The repository id is the project id; you must own the project. |
| runreq | integer | Run id from src_proposal_get; it must be evaluated. |
| classreq | build | test | policy | review | Validation class. |
| verdictreq | pass | fail | pass or fail. |
| evidence | object<string, string> | Evaluator output to keep with the record (at most 16 KB serialized): bundle size, an error message, a report id. |
| mutation_idreq | string | Client generated unique id (a UUID). Retrying with the same id returns the original record verbatim. |
src_race_checkSerialization self test (spec R8): N concurrent src_write calls race one throwaway branch with the same expect_head, fanned out into the repository object at once. Exactly one must land and every other writer must see HEAD_MOVED at the winner.
src_race_check| Parameter | Type | Description |
|---|---|---|
| projectreq | string | Project slug (its name) or project id. The repository id is the project id; you must own the project. |
| writers | integer | Concurrent writers, default 8. |
src_exportread onlyRaw repository export for replay: refs with full heads, commits in sequence order with their stored objects (after and limit page them), and objects by full hash. Proposal, queue and mutation records are not exported.
src_exportread only| Parameter | Type | Description |
|---|---|---|
| projectreq | string | Project slug (its name) or project id. The repository id is the project id; you must own the project. |
| after | integer | Sequence index to start commits from (0 is the first commit). With limit, pages the commit list. |
| limit | integer | Commits per page, at most 500. |
| hashes | string[] | Objects (blobs, trees, commits) to return by hash. Entries past the response budget come back under pending; request them again. |
src_replayReplay a standalone src repository into this project repository (spec 1.1 section 4.5): the platform reads the source under your identity, walks its commits in sequence order, inserts blobs and trees by hash (R2 objects copied by key), re-encodes every commit and refuses with REPLAY_DIVERGENCE naming the commit if a hash differs (the target is left untouched), and recreates the refs at the same heads. Idempotent and resumable.
src_replay| Parameter | Type | Description |
|---|---|---|
| source_serverreq | string | The standalone server: its slug (for example src) or its MCP URL (https://<slug>.mcp.opzero.sh/mcp). Must be a hosted server this account owns. |
| source_reporeq | string | Repository id on the source server. |
| projectreq | string | Target project (slug or id). Its repository must be pristine (first touch only) or a previous replay of the same source. |
src_fpvread onlyOpen a first-person operational view of a project repository. Returns a bounded, read-only snapshot of branch/HEAD, recent commits and paths, proposals/runs/queues, quota pressure, metrics and audit activity.
src_fpvread only| Parameter | Type | Description |
|---|---|---|
| projectreq | string | Project slug (its name) or project id. The repository id is the project id; you must own the project. |
| ref | string | Optional branch name or snapshot/commit prefix. Defaults to main. |
src_ideread onlyOpen the project repository in an editor: file tree, branches, log, proposals, and the contents of one file, with syntax highlighting and editing in the view. Read-only itself - it returns a snapshot.
src_ideread only| Parameter | Type | Description |
|---|---|---|
| projectreq | string | Project slug (its name) or project id. The repository id is the project id; you must own the project. |
| path | string | Optional file to open. Omitted, the view opens on the tree with no file loaded. |
| ref | string | Optional branch name or commit prefix. Defaults to main. A commit opens the session read-only. |
src_reposread onlyList your projects as repositories: project id, slug, main_head (abbreviated; null until the repository is first touched), created, and each row's canonical repo identity { id, authority, uri }. Every project has one repository, created on first touch with a protected main; there is no create tool.
src_reposread only| Parameter | Type | Description |
|---|---|---|
| full_hashes | boolean | Return full 64 character heads instead of 12 character prefixes. |