# Network MCP

> Connect remote agents through Streamable HTTP and OAuth.

## Project connectors and tool-assisted design

In Settings, connect MCP, GitHub or Google Drive. In the editor, select project tools and source files, import snapshots, and grant each agent its own access. A connected account alone grants no agent authority. Tool-assisted design runs checkpoint each model/tool step, pause for exact human approval, and return a proposal for review before saving.

GitHub source files are pinned to a commit. React exports prepare a downloadable ZIP and file diff before creating a new branch and PR. Drive exports prepare real PDF/PPTX files or supported native Slides. Inspect partial remote IDs; uncertain writes are never replayed automatically. The reconciliation operation only checks an existing GitHub PR or Drive upload.

Use `dsa connectors --help` and `dsa connectors schema start-agent-run` with the current CLI build. Network MCP and WebMCP expose the same selected source, operation and run contracts. Setup, grants and approval remain human actions. Released older CLI packages may not include these experimental commands.

Connect a remote MCP client to the studio. Network tools work on persisted projects using your API key or an OAuth access token; they do not require an open editor tab.

Streamable HTTP endpoint `https://beta.studio.agentkit.best/mcp`Authenticated · POST

## Connect with an API key

In your client's remote-server configuration, choose HTTP/Streamable HTTP, enter the endpoint above, and configure `Authorization: Bearer` using your secure token input. Client configuration-file formats and environment interpolation vary; these are the connection parameters, not a universal import file.

```
URL: https://beta.studio.agentkit.best/mcp
Transport: Streamable HTTP
Authorization: Bearer <securely supplied DESIGN_STUDIO_API_KEY>
Protocol: 2025-11-25
```

```
curl "$DESIGN_STUDIO_URL/mcp" \
  -H "Authorization: Bearer $DESIGN_STUDIO_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "MCP-Protocol-Version: 2025-11-25" \
  --data '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"my-design-agent","version":"1.0.0"}}}'
```

Use `get_design_brief` and `update_design_brief` to interview the human with your own agent model. `interview_design_brief` instead invokes the owner's configured BYOK provider. `approve_design_brief` requires explicit human approval of the current answered scope and its independent brief revision. `inspect_design` reads deterministic preflight findings; it is not a visual-quality certification.

## Connect with OAuth

- Use the same remote URL and choose OAuth in a compatible client.
- The client discovers the protected resource and authorization server, registers its redirect URI, and requests the `studio` scope.
- Sign in to the studio and approve consent in the browser. Consent requires your account session.
- The client exchanges the one-use code with S256 PKCE for access/refresh tokens, bound to the canonical `/mcp` resource.

| Method | OAuth path | Purpose |
| --- | --- | --- |
| GET | /.well-known/oauth-protected-resource | Resource and authorization-server discovery |
| GET | /.well-known/oauth-protected-resource/mcp | Path-specific resource discovery |
| GET | /.well-known/oauth-authorization-server | Endpoints, grant types, PKCE, scope |
| POST | /oauth/register | JSON client_name and redirect_uris; returns client_id |
| GET / POST | /oauth/authorize | Browser consent; exact redirect, state, S256 challenge, resource |
| POST | /oauth/token | Form-encoded authorization_code or refresh_token grant |
| POST | /oauth/revoke | Form-encoded token and client_id; revokes its token family |

Use HTTPS redirects or HTTP loopback for local clients. Resource must equal the canonical MCP endpoint. Access tokens last one hour; refresh tokens rotate. OAuth tokens cannot create/manage permanent API keys or provider credentials. GET event streams and protocol sessions are not used. The endpoint serves the stateless `2026-07-28` revision (per-request `_meta`, `MCP-Protocol-Version`/`Mcp-Method`/`Mcp-Name` headers and `server/discover`) alongside `initialize` clients on 2025-11-25, 2025-06-18 and 2025-03-26. An unsupported version returns HTTP 400 with JSON-RPC error `-32022` listing the supported versions. Hosted connectors such as ChatGPT use the same OAuth flow.

## Observe and reconcile human edits

Use `get_design_changes` to observe saved revisions. Keep the exact document and revision you read as the base for `merge_design`; independent edits can merge, while overlapping changes return conflict paths. Resolve those changes explicitly. Never alter the base or invent a revision to bypass a conflict.

## Discover tools and resources

Call `tools/list` to get the live input schemas. Arguments whose schema is too large for hosted discovery, such as complete documents and operation lists, are listed as a typed placeholder whose description points to `get_tool_schema`; the server still validates them against the complete shared schema. Call `get_tool_schema` with a tool name and optional argument to read that complete JSON Schema. A schema larger than 16 KB is returned as an outline whose large parts carry a `$pointer`; pass that value as `pointer` to read one part, such as a single patch operation. Tool names below are implemented; their descriptions identify reads, writes, publication, and potentially paid provider calls.

### Projects

`list_projects``get_project``create_project``update_document``patch_document``delete_project`

### Collaboration

`get_design_changes``merge_design`

### Brief and scope

`get_design_brief``update_design_brief``interview_design_brief``approve_design_brief`

### Design resources

`inspect_design``list_themes``list_templates``list_components``apply_theme`

### Design-system libraries

`list_design_systems``get_design_system``list_design_system_versions``create_design_system``update_design_system``apply_design_system``insert_design_system_item``delete_design_system`

### Discovery

`get_tool_schema``list_google_fonts``list_provider_models`

### Assets and delivery

`upload_asset``list_assets``preview_project``unpreview_project``share_project``unshare_project``publish_project``unpublish_project``export_project`

### Generation

`generate_design``generate_media``get_media_job`

```
curl "$DESIGN_STUDIO_URL/mcp" \
  -H "Authorization: Bearer $DESIGN_STUDIO_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "MCP-Protocol-Version: 2025-11-25" \
  --data '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'
```

Resources: `studio://schema`, `studio://operations`, and `studio://projects/{projectId}`. Writes such as `update_document`, `patch_document`, and `apply_theme` require `expectedRevision`. Library updates use expectedVersion; apply/insert use the observed project expectedRevision and an optional saved library version. Discovery query matches names/IDs/categories and reports live/cache/fallback provenance; provider model discovery requires an API key rather than MCP OAuth. React ZIP and GLB/glTF are returned as base64 resources by export_project, which also accepts optional expectedRevision. Binary MCP responses are limited to 20 MB; use CLI export for larger files.

## YAML authoring

`create_project` and `update_document` accept a `documentYaml` string and `patch_document` accepts `operationsYaml` as alternatives to `document` and `operations` (send one, not both). The YAML is parsed first as a single YAML 1.2 document without tags, anchors or aliases, then validated by the same schemas, so it saves what the equivalent JSON saves. Invalid or unsafe YAML returns an error and never changes the project; revision, ownership and asset checks are unchanged. Responses and storage remain JSON. YAML is not guaranteed to be smaller than compact JSON.

[Configure agent access](https://beta.studio.agentkit.best/?settings=agents)
