zuplo 7.8.8 → 7.8.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/docs/ai-gateway/azure-ai.mdx +132 -0
  2. package/docs/ai-gateway/cookbooks/sdk-path-shim.mdx +457 -0
  3. package/docs/ai-gateway/integrations/ai-sdk.mdx +127 -1
  4. package/docs/ai-gateway/integrations/claude-code.mdx +82 -180
  5. package/docs/ai-gateway/integrations/claude-desktop.mdx +61 -99
  6. package/docs/ai-gateway/integrations/codex.mdx +63 -57
  7. package/docs/ai-gateway/vertex-ai.mdx +32 -0
  8. package/docs/articles/custom-domains.mdx +3 -2
  9. package/docs/articles/source-control.mdx +4 -3
  10. package/docs/articles/testing.mdx +5 -5
  11. package/docs/articles/upstream-iam-auth.mdx +2 -2
  12. package/docs/concepts/how-zuplo-works.mdx +2 -1
  13. package/docs/dev-portal/migration.mdx +2 -2
  14. package/docs/getting-started/dev-portal/index.mdx +2 -2
  15. package/docs/getting-started/gateway/add-api-key-auth/index.mdx +3 -0
  16. package/docs/getting-started/gateway/add-api-key-auth/local.mdx +3 -0
  17. package/docs/getting-started/gateway/add-rate-limiting/index.mdx +3 -0
  18. package/docs/getting-started/gateway/add-rate-limiting/local.mdx +3 -0
  19. package/docs/getting-started/gateway/agent.mdx +2 -1
  20. package/docs/getting-started/gateway/deploy-to-the-edge/index.mdx +3 -0
  21. package/docs/getting-started/gateway/deploy-to-the-edge/local.mdx +3 -0
  22. package/docs/getting-started/gateway/dynamic-rate-limiting/index.mdx +3 -0
  23. package/docs/getting-started/gateway/dynamic-rate-limiting/local.mdx +3 -0
  24. package/docs/getting-started/gateway/setup-a-basic-gateway/index.mdx +4 -1
  25. package/docs/getting-started/gateway/setup-a-basic-gateway/local.mdx +4 -1
  26. package/docs/getting-started/mcp-gateway/local.mdx +31 -9
  27. package/docs/getting-started/mcp-gateway/portal.mdx +8 -7
  28. package/docs/getting-started/mcp-server/local.mdx +2 -2
  29. package/docs/getting-started/migrate/index.mdx +2 -2
  30. package/docs/mcp-gateway/connect-clients/claude-desktop.mdx +21 -19
  31. package/docs/mcp-gateway/connect-clients/overview.mdx +2 -1
  32. package/docs/policies/ai-gateway-auth-v2-inbound/doc.md +10 -0
  33. package/package.json +5 -5
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  category: API Management
3
+ disablePager: true
3
4
  showLastModified: false
4
5
  suggestEdit: false
5
6
  title: Dynamic rate limiting - Editor
@@ -187,3 +188,5 @@ less than an hour.
187
188
  questions answered
188
189
  - Start generating revenue from your new API with our
189
190
  [Monetization tutorial](../../../articles/monetization/index.mdx)
191
+
192
+ <TutorialPager build="gateway" method="local" step="dynamic-rate-limiting" />
@@ -1,8 +1,9 @@
1
1
  ---
2
2
  category: API Management
3
+ disablePager: true
3
4
  showLastModified: false
4
5
  suggestEdit: false
5
- title: Setup a basic gateway - Portal
6
+ title: Set up a basic gateway - Portal
6
7
  description:
7
8
  Proxy an origin API through a managed Zuplo gateway, add your first route, and
8
9
  see traffic flowing end to end in the Zuplo Portal.
@@ -123,3 +124,5 @@ Note - Zuplo also supports building and running your API locally. To learn more
123
124
  response from Step 2.
124
125
 
125
126
  </Stepper>
127
+
128
+ <TutorialPager build="gateway" method="portal" step="setup-a-basic-gateway" />
@@ -1,8 +1,9 @@
1
1
  ---
2
2
  category: API Management
3
+ disablePager: true
3
4
  showLastModified: false
4
5
  suggestEdit: false
5
- title: Setup a basic gateway - Editor
6
+ title: Set up a basic gateway - Editor
6
7
  description:
7
8
  Proxy an origin API through a managed Zuplo gateway, add your first route, and
8
9
  see traffic flowing end to end with the Zuplo CLI and your editor.
@@ -116,3 +117,5 @@ project template, which ships with a working todo API.
116
117
  gateway is now serving traffic locally.
117
118
 
118
119
  </Stepper>
120
+
121
+ <TutorialPager build="gateway" method="local" step="setup-a-basic-gateway" />
@@ -4,8 +4,8 @@ showLastModified: false
4
4
  suggestEdit: false
5
5
  title: Getting Started with MCP Gateway - Editor
6
6
  description:
7
- A step-by-step guide to building a mcp gateway with Zuplo using local
8
- development.
7
+ Build an MCP Gateway locally with the Zuplo CLI, connect an upstream MCP
8
+ server, and test its tools with a local MCP client.
9
9
  ---
10
10
 
11
11
  <WizardSteps build="mcp-gateway" method="local" />
@@ -222,11 +222,33 @@ older project and the build complains about the compatibility date, see
222
222
 
223
223
  6. **Connect Claude Desktop**
224
224
 
225
- Open Claude Desktop, go to **Settings → Connectors**, scroll to the bottom,
226
- and click **Add custom connector**. Paste
227
- `http://127.0.0.1:9000/mcp/linear-v1` and click **Add**.
225
+ Use a local stdio bridge so Claude Desktop can reach your local gateway.
226
+ Native remote connectors connect from Anthropic's servers and cannot reach
227
+ `127.0.0.1` on your computer.
228
228
 
229
- Claude Desktop opens the gateway's OAuth flow in a browser:
229
+ In Claude Desktop, open **Settings → Developer → Edit Config** and add this
230
+ entry to `claude_desktop_config.json`, preserving any existing servers:
231
+
232
+ ```json title="claude_desktop_config.json"
233
+ {
234
+ "mcpServers": {
235
+ "Zuplo MCP": {
236
+ "command": "npx",
237
+ "args": [
238
+ "-y",
239
+ "mcp-remote",
240
+ "http://127.0.0.1:9000/mcp/linear-v1",
241
+ "--allow-http"
242
+ ]
243
+ }
244
+ }
245
+ }
246
+ ```
247
+
248
+ Save the file and restart Claude Desktop. The bridge opens the gateway's
249
+ OAuth flow on first connection.
250
+
251
+ In the browser:
230
252
  1. The dev-login shortcut signs you in without any IdP prompt.
231
253
  2. The gateway's consent page lists Linear with a **Connect** button.
232
254
  3. Click **Connect**, complete Linear's OAuth flow, then click **Authorize**
@@ -234,9 +256,9 @@ older project and the build complains about the compatibility date, see
234
256
 
235
257
  :::tip{title="Checkpoint: Claude is connected"}
236
258
 
237
- Back in Claude Desktop, the new connector appears in **Settings →
238
- Connectors** marked as connected. Subsequent requests reuse the tokens the
239
- gateway just issued.
259
+ Back in Claude Desktop, the **Zuplo MCP** server appears under **Settings →
260
+ Developer**. Its tools are available in chat. Subsequent requests reuse the
261
+ tokens the gateway just issued.
240
262
 
241
263
  :::
242
264
 
@@ -4,7 +4,8 @@ showLastModified: false
4
4
  suggestEdit: false
5
5
  title: Getting Started with MCP Gateway - Portal
6
6
  description:
7
- A step-by-step guide to building a mcp gateway with Zuplo using Zuplo Portal.
7
+ Connect an MCP client to Linear through a Zuplo MCP Gateway in the Portal,
8
+ then sign in and call a Linear tool through the gateway.
8
9
  ---
9
10
 
10
11
  <WizardSteps build="mcp-gateway" method="portal" />
@@ -155,9 +156,9 @@ your machine.
155
156
 
156
157
  :::tip{title="Upstream doesn't use OAuth?"}
157
158
 
158
- Pick **None** to forward directly. The user's token is then either forwarded
159
- to the upstream or removed at the point of login, depending on the upstream's
160
- needs.
159
+ Pick **None** when the upstream doesn't require authentication. If gateway
160
+ OAuth is enabled, the gateway validates and removes its access token before
161
+ forwarding the request. It doesn't use that token to authenticate upstream.
161
162
 
162
163
  :::
163
164
 
@@ -240,8 +241,8 @@ your machine.
240
241
  Your route is live at `https://<your-gateway>/mcp/linear-v1`. Find the public
241
242
  URL via the **Gateway deployed** button in the toolbar.
242
243
 
243
- Open Claude Desktop, go to **Settings → Connectors**, scroll to the bottom,
244
- and click **Add custom connector**. Paste the route URL and click **Add**.
244
+ Open Claude Desktop, go to **Customize → Connectors**, click **+**, then
245
+ **Add custom connector**. Paste the route URL and click **Add**.
245
246
 
246
247
  Claude Desktop opens the gateway's OAuth flow in a browser:
247
248
  1. Sign in with your identity provider (Auth0 in this example).
@@ -251,7 +252,7 @@ your machine.
251
252
 
252
253
  :::tip{title="Checkpoint: Claude is connected"}
253
254
 
254
- Back in Claude Desktop, the new connector appears in **Settings →
255
+ Back in Claude Desktop, the new connector appears in **Customize →
255
256
  Connectors** marked as connected. Subsequent requests reuse the tokens the
256
257
  gateway just issued.
257
258
 
@@ -4,8 +4,8 @@ showLastModified: false
4
4
  suggestEdit: false
5
5
  title: Getting Started with MCP Server - Editor
6
6
  description:
7
- A step-by-step guide to building a mcp server with Zuplo using local
8
- development.
7
+ Expose a sample API as an MCP server with the Zuplo CLI and your editor, then
8
+ connect an MCP client and call a tool locally.
9
9
  ---
10
10
 
11
11
  <WizardSteps build="mcp-server" method="local" />
@@ -8,8 +8,8 @@ centered: false
8
8
  toc: false
9
9
  title: Getting Started with API Migration
10
10
  description:
11
- Import an OpenAPI document and put Zuplo in front of what you have with Zuplo,
12
- in the Portal, locally with the CLI, or with an AI agent.
11
+ Import an OpenAPI document, route requests through Zuplo, and compare them
12
+ with your existing backend in the Portal, locally, or with an AI agent.
13
13
  ---
14
14
 
15
15
  <WizardSteps build="migrate" />
@@ -26,9 +26,13 @@ Claude's connector settings, then complete the browser-based OAuth flow.
26
26
  ## Get the route URL
27
27
 
28
28
  Each MCP route in `config/routes.oas.json` is reachable at
29
- `https://{deploymentUrl}/{routePath}` once deployed (or
30
- `http://127.0.0.1:9000/{routePath}` when running locally with `zuplo dev`). The
31
- `{routePath}` is the path you set on the route — for example `/mcp/linear-v1`.
29
+ `https://{deploymentUrl}/{routePath}` once deployed. The `{routePath}` is the
30
+ path you set on the route — for example `/mcp/linear-v1`.
31
+
32
+ Native remote connectors connect from Anthropic's servers, so the gateway URL
33
+ must be reachable from those servers. For a gateway running locally with
34
+ `zuplo dev`, use the [manual configuration](#use-a-manual-config-file-advanced)
35
+ with `http://127.0.0.1:9000/{routePath}`.
32
36
 
33
37
  ## Add the connector in Claude
34
38
 
@@ -37,14 +41,12 @@ identical in each.
37
41
 
38
42
  <Stepper>
39
43
 
40
- 1. **Open connector settings.**
41
- - **Claude Desktop:** open **Settings** → **Connectors**.
42
- - **Claude.ai:** open **Settings** → **Connectors** in the web app.
44
+ 1. **Open connector settings.** In Claude Desktop or Claude.ai, open **Customize
45
+ → Connectors**.
43
46
 
44
47
  2. **Add a custom connector.**
45
48
 
46
- Scroll to the bottom of the Connectors list and click **Add custom
47
- connector**.
49
+ Click **+**, then **Add custom connector**.
48
50
 
49
51
  3. **Enter the gateway URL.**
50
52
 
@@ -76,7 +78,7 @@ identical in each.
76
78
  :::tip
77
79
 
78
80
  You can adjust which tools Claude is allowed to use per connector. Open the
79
- connector in Settings → Connectors and toggle individual tools on or off.
81
+ connector in Customize → Connectors and toggle individual tools on or off.
80
82
 
81
83
  :::
82
84
 
@@ -102,21 +104,22 @@ in addition to DCR.
102
104
  If you need to script the install or share the configuration with a team, Claude
103
105
  Desktop also reads `claude_desktop_config.json`. This approach uses
104
106
  [`mcp-remote`](https://www.npmjs.com/package/mcp-remote) as a stdio bridge to
105
- the remote gateway. Use it if your version of Claude Desktop doesn't yet support
106
- custom remote connectors natively, or if you want the connector to start
107
- automatically on every launch without going through the UI.
107
+ the gateway. Use it for a gateway running on your computer or when you need
108
+ file-based configuration. This approach requires Node.js and `npx`.
108
109
 
109
110
  1. In Claude Desktop, open **Settings** → **Developer** → **Edit Config**. This
110
111
  opens `claude_desktop_config.json` in your editor.
111
112
  2. Add or merge in the following entry, replacing `Zuplo MCP` with the name you
112
- want to show, and the URL with your route URL:
113
+ want to show, and the URL with your route URL. For local development, use
114
+ `http://127.0.0.1:9000/{routePath}` instead of the HTTPS URL and append
115
+ `"--allow-http"` to the `args` array:
113
116
 
114
117
  ```json title="claude_desktop_config.json"
115
118
  {
116
119
  "mcpServers": {
117
120
  "Zuplo MCP": {
118
121
  "command": "npx",
119
- "args": ["mcp-remote", "https://{deploymentUrl}/{routePath}"]
122
+ "args": ["-y", "mcp-remote", "https://{deploymentUrl}/{routePath}"]
120
123
  }
121
124
  }
122
125
  }
@@ -131,10 +134,9 @@ automatically on every launch without going through the UI.
131
134
 
132
135
  :::note
133
136
 
134
- The native custom-connector flow above is the recommended path because it
135
- supports all of Claude Desktop's MCP features out of the box and does not
136
- require Node.js. Use the `mcp-remote` bridge only when you specifically need the
137
- file-based configuration.
137
+ Use native custom connectors for a deployed gateway. They do not require
138
+ Node.js. Use the `mcp-remote` bridge for a local gateway or file-based
139
+ configuration.
138
140
 
139
141
  :::
140
142
 
@@ -148,7 +150,7 @@ file-based configuration.
148
150
  configured correctly and that browser cookies are enabled for the gateway
149
151
  origin.
150
152
  - **Tools do not appear after a successful authorization.** Open the connector
151
- in Settings → Connectors and check that each tool is enabled. Disabled tools
153
+ in Customize → Connectors and check that each tool is enabled. Disabled tools
152
154
  are hidden from the attachment menu.
153
155
 
154
156
  ## Related
@@ -119,7 +119,8 @@ tracks **what each client can consume**, not what the gateway forwards.
119
119
 
120
120
  ## Per-client guides
121
121
 
122
- - [Claude Desktop](./claude-desktop.mdx) — add via `claude_desktop_config.json`.
122
+ - [Claude Desktop and Claude.ai](./claude-desktop.mdx) — add a custom remote
123
+ connector. For a local gateway, use the Claude Desktop manual configuration.
123
124
  - [Claude Code](./claude-code.mdx) — add via the `claude mcp add` CLI command.
124
125
  - [ChatGPT](./chatgpt.mdx) — add via Settings → Connectors (Developer Mode
125
126
  required).
@@ -202,6 +202,16 @@ policies skip passthrough requests so a cache hit cannot bypass upstream
202
202
  authentication. ZuploDemo is excluded because it must continue to use the
203
203
  gateway's deployment credential.
204
204
 
205
+ When the primary provider is OpenAI and the passed-through credential is a
206
+ ChatGPT login token, such as the one Codex CLI sends after `codex login`, the
207
+ gateway sends `/v1/responses` requests to the ChatGPT Codex backend at
208
+ `https://chatgpt.com/backend-api/codex`. OpenAI only accepts those tokens there;
209
+ the public API rejects them. Requests that pass through an OpenAI platform API
210
+ key keep going to `https://api.openai.com`. The ChatGPT backend only speaks
211
+ streaming. For a request with `stream: false`, the gateway streams from the
212
+ backend and returns the completed response as one JSON body, the same shape
213
+ `https://api.openai.com` returns for a non-streaming request.
214
+
205
215
  A missing, empty, or invalid dedicated key fails authentication; the gateway
206
216
  never retries with `Authorization` as the Zuplo key. A missing or empty
207
217
  `Authorization` also returns 401 in this mode.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zuplo",
3
- "version": "7.8.8",
3
+ "version": "7.8.10",
4
4
  "type": "module",
5
5
  "description": "The official Zuplo CLI for local development and platform management",
6
6
  "homepage": "https://zuplo.com/docs/cli/overview",
@@ -32,9 +32,9 @@
32
32
  "zuplo": "zuplo.js"
33
33
  },
34
34
  "dependencies": {
35
- "@zuplo/cli": "7.8.8",
36
- "@zuplo/core": "7.8.8",
37
- "@zuplo/runtime": "7.8.8",
38
- "@zuplo/test": "7.8.8"
35
+ "@zuplo/cli": "7.8.10",
36
+ "@zuplo/core": "7.8.10",
37
+ "@zuplo/runtime": "7.8.10",
38
+ "@zuplo/test": "7.8.10"
39
39
  }
40
40
  }