diff --git a/.speakeasy/gen.lock b/.speakeasy/gen.lock
index 0e064af6d..72343a75d 100644
--- a/.speakeasy/gen.lock
+++ b/.speakeasy/gen.lock
@@ -1,19 +1,19 @@
lockVersion: ""
id: ""
management:
- docChecksum: 1a57ba8663bff56b84e58cd70c6afd7c
+ docChecksum: 20cefb4f74de3dbc4da43b8ea1154bfb
docVersion: 1.0.0
speakeasyVersion: 1.763.2
generationVersion: 2.884.4
- releaseVersion: 0.13.28
- configChecksum: d7b58d2e40c5b5709162e6cf6e5dd65e
+ releaseVersion: 0.13.29
+ configChecksum: dd459f600a9ebcb6910a849e590b09f0
repoURL: https://github.com/OpenRouterTeam/typescript-sdk.git
installationURL: https://github.com/OpenRouterTeam/typescript-sdk
published: true
persistentEdits:
- generation_id: 65f6ab08-cc04-4c8e-9092-2b1c060f99c1
- pristine_commit_hash: 565f74d31f4b796d1d13973952ccadd9aa156f8e
- pristine_tree_hash: 95dc95a551697c2a0d583e2734010a48650d7e5d
+ generation_id: d06a8169-5e97-44ce-a8ec-7568d3f332ea
+ pristine_commit_hash: a31b7c4e33000aee4a76cbf61eafe7e03c6fc264
+ pristine_tree_hash: 13522672f0615caea1f0575178f67c37629c952a
features:
typescript:
acceptHeaders: 2.81.2
@@ -1759,8 +1759,8 @@ trackedFiles:
deleted: true
docs/models/chatfunctiontool.mdx:
id: e28b59b74948
- last_write_checksum: sha1:2a3c8dc2c81c7e32fbb80d941f38fc87aa1cd1ff
- pristine_git_object: fb6f97d158d66186edfe45ce84e00fce764959ff
+ last_write_checksum: sha1:6cb20085bc78661d82a94fb4bf0a4e4e5d4050b8
+ pristine_git_object: 493488ea9e5dfddbd8e2a5f641d3906d0b6dce3c
docs/models/chatfunctiontoolfunction.md:
id: 65b6def5d64c
last_write_checksum: sha1:81df3aaa4027a07024ea00917b0efd6e03bfe23a
@@ -4026,8 +4026,12 @@ trackedFiles:
deleted: true
docs/models/fusionservertoolopenrouter.mdx:
id: c11761c11056
- last_write_checksum: sha1:2962902d3cd265dbe512429aeae198c75464b102
- pristine_git_object: d03fbf496751ea42ceeb6bcd32fc858ba9b70a3d
+ last_write_checksum: sha1:ebf450ede7b88d6206562311304389d32a94f220
+ pristine_git_object: 91d1545ad992008a4a0469e20ee4796149d2fd1d
+ docs/models/fusionservertoolopenroutertype.mdx:
+ id: a708fee8d1ae
+ last_write_checksum: sha1:c83f5724e221956284152d25dff8d9d42816abf7
+ pristine_git_object: a980b2ac432fd6c85bf3b2d7bd15a0a825bc8c46
docs/models/fusionsource.md:
id: bb7d98b85302
last_write_checksum: sha1:288a75eed2f247aa31279077a9b2c423151f03f7
@@ -12128,12 +12132,12 @@ trackedFiles:
pristine_git_object: 410efafd6a7f50d91ccb87131fedbe0c3d47e15a
jsr.json:
id: 7f6ab7767282
- last_write_checksum: sha1:097d6ae93ed4a6195ff5133f160e0be922af99fe
- pristine_git_object: 8f7254e1fd295e730e9dc654e64d1bd739c36668
+ last_write_checksum: sha1:df14da06c80788f9808b32031508c0296b46414d
+ pristine_git_object: 29ce32a2ae24c97c6d3cb2cab6ad5e75fd763331
package.json:
id: 7030d0b2f71b
- last_write_checksum: sha1:89c242673393c12fe7eaccd2228d21ffc3e577c9
- pristine_git_object: c7058b79798893f7e856038c6c814d6cae243496
+ last_write_checksum: sha1:9bcdede4e82e0d29e5baaf1cbf6b7e0dc9f41d86
+ pristine_git_object: 34864d948b6f002c8f94af490f57a4a222a212f6
src/core.ts:
id: f431fdbcd144
last_write_checksum: sha1:5aa66b0b6a5964f3eea7f3098c2eb3c0ee9c0131
@@ -12508,8 +12512,8 @@ trackedFiles:
pristine_git_object: a187e58707bdb726ca2aff74941efe7493422d4e
src/lib/config.ts:
id: 320761608fb3
- last_write_checksum: sha1:3b6a61c4011ea5dfe871e7d5ccb745a18471f3ce
- pristine_git_object: c550996e218ff881e9fef33367ae17815283b46b
+ last_write_checksum: sha1:09a0570c082c0fba4fdf285de9ef934f50eaee5c
+ pristine_git_object: 1c480b16af24e15af269daf76c598df4cd8ded06
src/lib/dlv.ts:
id: b1988214835a
last_write_checksum: sha1:eaac763b22717206a6199104e0403ed17a4e2711
@@ -12980,8 +12984,8 @@ trackedFiles:
pristine_git_object: d082d241abf206468fe635e7c47dca140e3bfd90
src/models/chatfunctiontool.ts:
id: 400104319b29
- last_write_checksum: sha1:957c436c4f563e763e5d001d12e0352cea479856
- pristine_git_object: 7d36ed69505cef9467c072e06aff9cec9c3c68cb
+ last_write_checksum: sha1:b11ec65ff58826a92f6c3189c77f7e0456c2eaab
+ pristine_git_object: 340f8b5fd7c72ff2da4700b0cd068a5d1900924d
src/models/chatjsonschemaconfig.ts:
id: 1ad0e5d930fb
last_write_checksum: sha1:9af3223f14c0c9d62046de826a737544b86d222e
@@ -13508,8 +13512,8 @@ trackedFiles:
pristine_git_object: f57120b07a4a34ef4e29347c5b9ceef74c344f3f
src/models/fusionservertoolopenrouter.ts:
id: 01d346f44f6d
- last_write_checksum: sha1:4c457a429fb12cb9e6d41fc188ff590f19ccdb35
- pristine_git_object: 38c9b62ddc7d74ad74b243a8d55391e4ee7da7cb
+ last_write_checksum: sha1:d2b7f3537702d2045b9c482be8d20445fccec521
+ pristine_git_object: e5f0bd84e515abddb61d716ceb208e9e5bf11f8c
src/models/fusionsource.ts:
id: 36747573906e
last_write_checksum: sha1:c42536e207e17dcf5e6aa2fece823ccb6d0ac672
@@ -14740,8 +14744,8 @@ trackedFiles:
pristine_git_object: 584f66cd23f2e112b14f8d0b23aea1cd4532c412
src/models/responsesrequest.ts:
id: 39799702f982
- last_write_checksum: sha1:585c43bff7aad1022e82b8a85fbf9150b152265d
- pristine_git_object: 642ff9bae5061ed9f1af68a0c21d830a4f39b502
+ last_write_checksum: sha1:7ca19ab773af4d724d6005d458bca6b1feb18ce5
+ pristine_git_object: 63e71f2ec198e47d97fdf9350373f8d440781f3f
src/models/responsesstreamingresponse.ts:
id: 69284d63df45
last_write_checksum: sha1:14c843dba32fef31c8684c4f363bf32b17d9dc97
@@ -16833,4 +16837,4 @@ examples:
"500":
application/json: {"error": {"code": 500, "message": "Internal Server Error"}}
examplesVersion: 1.0.2
-releaseNotes: "## Typescript SDK Changes:\n* `openrouter.stt.createTranscription()`: \n * `request.sttRequest` **Changed**\n * `response` **Changed**\n* `openrouter.stt.createTranscriptionMultipart()`: \n * `request.requestBody` **Changed**\n * `response` **Changed**\n* `openrouter.datasets.getRankingsDaily()`: `request` **Changed**\n"
+releaseNotes: "## Typescript SDK Changes:\n* `openrouter.beta.responses.send()`: \n * `request.responsesRequest.tools[].union(openrouter:fusion).type` **Changed** (Breaking ⚠️)\n* `openrouter.presets.createPresetsResponses()`: \n * `request.responsesRequest.tools[].union(openrouter:fusion).type` **Changed** (Breaking ⚠️)\n* `openrouter.chat.send()`: \n * `request.chatRequest.tools[].union(FusionServerTool_OpenRouter)` **Added**\n* `openrouter.presets.createPresetsChatCompletions()`: \n * `request.chatRequest.tools[].union(FusionServerTool_OpenRouter)` **Added**\n"
diff --git a/.speakeasy/gen.yaml b/.speakeasy/gen.yaml
index 747052521..20c509d79 100644
--- a/.speakeasy/gen.yaml
+++ b/.speakeasy/gen.yaml
@@ -37,7 +37,7 @@ generation:
documentation: mintlify
preApplyUnionDiscriminators: true
typescript:
- version: 0.13.28
+ version: 0.13.29
acceptHeaderEnum: false
additionalDependencies:
dependencies:
diff --git a/.speakeasy/out.openapi.yaml b/.speakeasy/out.openapi.yaml
index dd4c5854b..c3612a781 100644
--- a/.speakeasy/out.openapi.yaml
+++ b/.speakeasy/out.openapi.yaml
@@ -4542,6 +4542,7 @@ components:
- $ref: '#/components/schemas/BashServerTool'
- $ref: '#/components/schemas/DatetimeServerTool'
- $ref: '#/components/schemas/FilesServerTool'
+ - $ref: '#/components/schemas/FusionServerTool_OpenRouter'
- $ref: '#/components/schemas/ImageGenerationServerTool_OpenRouter'
- $ref: '#/components/schemas/ChatSearchModelsServerTool'
- $ref: '#/components/schemas/SubagentServerTool_OpenRouter'
diff --git a/.speakeasy/workflow.lock b/.speakeasy/workflow.lock
index c1211b72b..0a6013a2c 100644
--- a/.speakeasy/workflow.lock
+++ b/.speakeasy/workflow.lock
@@ -2,8 +2,8 @@ speakeasyVersion: 1.763.2
sources:
OpenRouter API:
sourceNamespace: open-router-chat-completions-api
- sourceRevisionDigest: sha256:4ffc9fdd0407af4d86e8e3a5bbbc96102772248af9f12b6fe6ac66c4455b46f3
- sourceBlobDigest: sha256:052977af275318cfdcbbc6cb8c36cef93812c28d93ada67f06074ea8c54dd1b9
+ sourceRevisionDigest: sha256:05154633bcc5482eadf69f4b83381f1eb5626a28baa0b11ef7b4308044895afd
+ sourceBlobDigest: sha256:d4bd918ae4190759162b760ff6264e25784adb9336e6af31b0a435b557ff5e14
tags:
- latest
- 1.0.0
@@ -11,10 +11,10 @@ targets:
openrouter:
source: OpenRouter API
sourceNamespace: open-router-chat-completions-api
- sourceRevisionDigest: sha256:4ffc9fdd0407af4d86e8e3a5bbbc96102772248af9f12b6fe6ac66c4455b46f3
- sourceBlobDigest: sha256:052977af275318cfdcbbc6cb8c36cef93812c28d93ada67f06074ea8c54dd1b9
+ sourceRevisionDigest: sha256:05154633bcc5482eadf69f4b83381f1eb5626a28baa0b11ef7b4308044895afd
+ sourceBlobDigest: sha256:d4bd918ae4190759162b760ff6264e25784adb9336e6af31b0a435b557ff5e14
codeSamplesNamespace: open-router-chat-completions-api-typescript-code-samples
- codeSamplesRevisionDigest: sha256:f1d13a7ce3aaac022623ed8e85172e23c394a581805aec99e7dffd0211f59145
+ codeSamplesRevisionDigest: sha256:b2fcac27aa277c3d6a70138d74952826fad6e461e85387fa5e9da85f32c0ff33
workflow:
workflowVersion: 1.0.0
speakeasyVersion: 1.763.2
diff --git a/RELEASES.md b/RELEASES.md
index 7d1c80375..3c81b7876 100644
--- a/RELEASES.md
+++ b/RELEASES.md
@@ -1516,4 +1516,14 @@ Based on:
### Generated
- [typescript v0.13.28] .
### Releases
-- [NPM v0.13.28] https://www.npmjs.com/package/@openrouter/sdk/v/0.13.28 - .
\ No newline at end of file
+- [NPM v0.13.28] https://www.npmjs.com/package/@openrouter/sdk/v/0.13.28 - .
+
+## 2026-07-08 03:28:57
+### Changes
+Based on:
+- OpenAPI Doc
+- Speakeasy CLI 1.763.2 (2.884.4) https://github.com/speakeasy-api/speakeasy
+### Generated
+- [typescript v0.13.29] .
+### Releases
+- [NPM v0.13.29] https://www.npmjs.com/package/@openrouter/sdk/v/0.13.29 - .
\ No newline at end of file
diff --git a/docs/models/chatfunctiontool.mdx b/docs/models/chatfunctiontool.mdx
index fb6f97d15..493488ea9 100644
--- a/docs/models/chatfunctiontool.mdx
+++ b/docs/models/chatfunctiontool.mdx
@@ -50,6 +50,14 @@ const value: models.FilesServerTool = {
};
```
+### `models.FusionServerToolOpenRouter`
+
+```typescript
+const value: models.FusionServerToolOpenRouter = {
+ type: "openrouter:fusion",
+};
+```
+
### `models.ImageGenerationServerToolOpenRouter`
```typescript
diff --git a/docs/models/fusionservertoolopenrouter.mdx b/docs/models/fusionservertoolopenrouter.mdx
index d03fbf496..91d1545ad 100644
--- a/docs/models/fusionservertoolopenrouter.mdx
+++ b/docs/models/fusionservertoolopenrouter.mdx
@@ -19,4 +19,4 @@ let value: FusionServerToolOpenRouter = {
| Field | Type | Required | Description | Example |
| ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
| `parameters` | [models.FusionServerToolConfig](../models/fusionservertoolconfig.mdx) | :heavy_minus_sign: | Configuration for the openrouter:fusion server tool. | \{
"analysis_models": [
"~anthropic/claude-opus-latest",
"~openai/gpt-latest",
"~google/gemini-pro-latest"
]
} |
-| `type` | *"openrouter:fusion"* | :heavy_check_mark: | N/A | |
\ No newline at end of file
+| `type` | [models.FusionServerToolOpenRouterType](../models/fusionservertoolopenroutertype.mdx) | :heavy_check_mark: | N/A | |
\ No newline at end of file
diff --git a/docs/models/fusionservertoolopenroutertype.mdx b/docs/models/fusionservertoolopenroutertype.mdx
new file mode 100644
index 000000000..a980b2ac4
--- /dev/null
+++ b/docs/models/fusionservertoolopenroutertype.mdx
@@ -0,0 +1,17 @@
+---
+title: "FusionServerToolOpenRouterType"
+---
+
+## Example Usage
+
+```typescript
+import { FusionServerToolOpenRouterType } from "@openrouter/sdk/models";
+
+let value: FusionServerToolOpenRouterType = "openrouter:fusion";
+```
+
+## Values
+
+```typescript
+"openrouter:fusion"
+```
\ No newline at end of file
diff --git a/jsr.json b/jsr.json
index 8f7254e1f..29ce32a2a 100644
--- a/jsr.json
+++ b/jsr.json
@@ -2,7 +2,7 @@
{
"name": "@openrouter/sdk",
- "version": "0.13.28",
+ "version": "0.13.29",
"exports": {
".": "./src/index.ts",
"./models/errors": "./src/models/errors/index.ts",
diff --git a/package.json b/package.json
index 7a8cb17ce..0a1208073 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@openrouter/sdk",
- "version": "0.13.28",
+ "version": "0.13.29",
"author": "OpenRouter",
"description": "The OpenRouter TypeScript SDK is a type-safe toolkit for building AI applications with access to 400+ language models through a unified API.",
"keywords": [
@@ -73,15 +73,15 @@
"lint": "eslint --cache --max-warnings=0 src",
"build": "tsc",
"prepublishOnly": "npm run build",
- "prepare": "npm run build",
- "test:transit": "exit 0",
- "typecheck": "tsc --noEmit",
"compile": "tsc",
"postinstall": "node scripts/check-types.js || true",
"test": "vitest --run --project unit",
"test:e2e": "vitest --run --project e2e",
- "test:watch": "vitest --watch --project unit",
- "typecheck:transit": "exit 0"
+ "typecheck": "tsc --noEmit",
+ "typecheck:transit": "exit 0",
+ "prepare": "npm run build",
+ "test:transit": "exit 0",
+ "test:watch": "vitest --watch --project unit"
},
"peerDependencies": {},
"devDependencies": {
diff --git a/src/lib/config.ts b/src/lib/config.ts
index c550996e2..1c480b16a 100644
--- a/src/lib/config.ts
+++ b/src/lib/config.ts
@@ -75,7 +75,7 @@ export function serverURLFromOptions(options: SDKOptions): URL | null {
export const SDK_METADATA = {
language: "typescript",
openapiDocVersion: "1.0.0",
- sdkVersion: "0.13.28",
+ sdkVersion: "0.13.29",
genVersion: "2.884.4",
- userAgent: "speakeasy-sdk/typescript 0.13.28 2.884.4 1.0.0 @openrouter/sdk",
+ userAgent: "speakeasy-sdk/typescript 0.13.29 2.884.4 1.0.0 @openrouter/sdk",
} as const;
diff --git a/src/models/chatfunctiontool.ts b/src/models/chatfunctiontool.ts
index 7d36ed695..340f8b5fd 100644
--- a/src/models/chatfunctiontool.ts
+++ b/src/models/chatfunctiontool.ts
@@ -41,6 +41,11 @@ import {
FilesServerTool$Outbound,
FilesServerTool$outboundSchema,
} from "./filesservertool.js";
+import {
+ FusionServerToolOpenRouter,
+ FusionServerToolOpenRouter$Outbound,
+ FusionServerToolOpenRouter$outboundSchema,
+} from "./fusionservertoolopenrouter.js";
import {
ImageGenerationServerToolOpenRouter,
ImageGenerationServerToolOpenRouter$Outbound,
@@ -110,6 +115,7 @@ export type ChatFunctionTool =
| BashServerTool
| DatetimeServerTool
| FilesServerTool
+ | FusionServerToolOpenRouter
| ImageGenerationServerToolOpenRouter
| ChatSearchModelsServerTool
| SubagentServerToolOpenRouter
@@ -187,6 +193,7 @@ export type ChatFunctionTool$Outbound =
| BashServerTool$Outbound
| DatetimeServerTool$Outbound
| FilesServerTool$Outbound
+ | FusionServerToolOpenRouter$Outbound
| ImageGenerationServerToolOpenRouter$Outbound
| ChatSearchModelsServerTool$Outbound
| SubagentServerToolOpenRouter$Outbound
@@ -204,6 +211,7 @@ export const ChatFunctionTool$outboundSchema: z.ZodType<
BashServerTool$outboundSchema,
DatetimeServerTool$outboundSchema,
FilesServerTool$outboundSchema,
+ FusionServerToolOpenRouter$outboundSchema,
ImageGenerationServerToolOpenRouter$outboundSchema,
ChatSearchModelsServerTool$outboundSchema,
SubagentServerToolOpenRouter$outboundSchema,
diff --git a/src/models/fusionservertoolopenrouter.ts b/src/models/fusionservertoolopenrouter.ts
index 38c9b62dd..e5f0bd84e 100644
--- a/src/models/fusionservertoolopenrouter.ts
+++ b/src/models/fusionservertoolopenrouter.ts
@@ -4,12 +4,20 @@
*/
import * as z from "zod/v4";
+import { ClosedEnum } from "../types/enums.js";
import {
FusionServerToolConfig,
FusionServerToolConfig$Outbound,
FusionServerToolConfig$outboundSchema,
} from "./fusionservertoolconfig.js";
+export const FusionServerToolOpenRouterType = {
+ OpenrouterFusion: "openrouter:fusion",
+} as const;
+export type FusionServerToolOpenRouterType = ClosedEnum<
+ typeof FusionServerToolOpenRouterType
+>;
+
/**
* OpenRouter built-in server tool: fans out the user prompt to a panel of analysis models, then asks a judge model to summarize their collective output as structured JSON the outer model can synthesize from.
*/
@@ -18,13 +26,18 @@ export type FusionServerToolOpenRouter = {
* Configuration for the openrouter:fusion server tool.
*/
parameters?: FusionServerToolConfig | undefined;
- type: "openrouter:fusion";
+ type: FusionServerToolOpenRouterType;
};
+/** @internal */
+export const FusionServerToolOpenRouterType$outboundSchema: z.ZodEnum<
+ typeof FusionServerToolOpenRouterType
+> = z.enum(FusionServerToolOpenRouterType);
+
/** @internal */
export type FusionServerToolOpenRouter$Outbound = {
parameters?: FusionServerToolConfig$Outbound | undefined;
- type: "openrouter:fusion";
+ type: string;
};
/** @internal */
@@ -33,7 +46,7 @@ export const FusionServerToolOpenRouter$outboundSchema: z.ZodType<
FusionServerToolOpenRouter
> = z.object({
parameters: FusionServerToolConfig$outboundSchema.optional(),
- type: z.literal("openrouter:fusion"),
+ type: FusionServerToolOpenRouterType$outboundSchema,
});
export function fusionServerToolOpenRouterToJSON(
diff --git a/src/models/responsesrequest.ts b/src/models/responsesrequest.ts
index 642ff9bae..63e71f2ec 100644
--- a/src/models/responsesrequest.ts
+++ b/src/models/responsesrequest.ts
@@ -297,7 +297,7 @@ export type ResponsesRequestToolUnion =
| (SubagentServerToolOpenRouter & { type: "openrouter:subagent" })
| (DatetimeServerTool & { type: "openrouter:datetime" })
| (FilesServerTool & { type: "openrouter:files" })
- | FusionServerToolOpenRouter
+ | (FusionServerToolOpenRouter & { type: "openrouter:fusion" })
| (ImageGenerationServerToolOpenRouter & {
type: "openrouter:image_generation";
})
@@ -413,7 +413,7 @@ export type ResponsesRequest = {
| (SubagentServerToolOpenRouter & { type: "openrouter:subagent" })
| (DatetimeServerTool & { type: "openrouter:datetime" })
| (FilesServerTool & { type: "openrouter:files" })
- | FusionServerToolOpenRouter
+ | (FusionServerToolOpenRouter & { type: "openrouter:fusion" })
| (ImageGenerationServerToolOpenRouter & {
type: "openrouter:image_generation";
})
@@ -534,7 +534,7 @@ export type ResponsesRequestToolUnion$Outbound =
| (SubagentServerToolOpenRouter$Outbound & { type: "openrouter:subagent" })
| (DatetimeServerTool$Outbound & { type: "openrouter:datetime" })
| (FilesServerTool$Outbound & { type: "openrouter:files" })
- | FusionServerToolOpenRouter$Outbound
+ | (FusionServerToolOpenRouter$Outbound & { type: "openrouter:fusion" })
| (ImageGenerationServerToolOpenRouter$Outbound & {
type: "openrouter:image_generation";
})
@@ -578,7 +578,9 @@ export const ResponsesRequestToolUnion$outboundSchema: z.ZodType<
FilesServerTool$outboundSchema.and(
z.object({ type: z.literal("openrouter:files") }),
),
- FusionServerToolOpenRouter$outboundSchema,
+ FusionServerToolOpenRouter$outboundSchema.and(
+ z.object({ type: z.literal("openrouter:fusion") }),
+ ),
ImageGenerationServerToolOpenRouter$outboundSchema.and(
z.object({ type: z.literal("openrouter:image_generation") }),
),
@@ -673,7 +675,7 @@ export type ResponsesRequest$Outbound = {
})
| (DatetimeServerTool$Outbound & { type: "openrouter:datetime" })
| (FilesServerTool$Outbound & { type: "openrouter:files" })
- | FusionServerToolOpenRouter$Outbound
+ | (FusionServerToolOpenRouter$Outbound & { type: "openrouter:fusion" })
| (ImageGenerationServerToolOpenRouter$Outbound & {
type: "openrouter:image_generation";
})
@@ -774,7 +776,9 @@ export const ResponsesRequest$outboundSchema: z.ZodType<
FilesServerTool$outboundSchema.and(
z.object({ type: z.literal("openrouter:files") }),
),
- FusionServerToolOpenRouter$outboundSchema,
+ FusionServerToolOpenRouter$outboundSchema.and(
+ z.object({ type: z.literal("openrouter:fusion") }),
+ ),
ImageGenerationServerToolOpenRouter$outboundSchema.and(
z.object({ type: z.literal("openrouter:image_generation") }),
),