Skip to content

fix(gateway): /v1/responses tool schema should use flat Responses API format#57166

Merged
vincentkoc merged 7 commits into
openclaw:mainfrom
malaiwah:fix/responses-tool-schema-flat-format
Mar 30, 2026
Merged

fix(gateway): /v1/responses tool schema should use flat Responses API format#57166
vincentkoc merged 7 commits into
openclaw:mainfrom
malaiwah:fix/responses-tool-schema-flat-format

Conversation

@malaiwah

Copy link
Copy Markdown
Contributor

Summary

  • Problem: The /v1/responses endpoint validates tool definitions using the Chat Completions wrapped format (function: {...}) and .strict(), but the Responses API spec uses a flat format ({type, name, description, parameters} at top level). Any compliant Responses API client (e.g. OpenAI Codex CLI) fails with tools.0.function: Invalid input: expected object, received undefined.
  • Why it matters: This makes the endpoint incompatible with the spec it claims to implement, breaking all third-party Responses API clients that send tools.
  • What changed: FunctionToolDefinitionSchema now uses the flat Responses API shape. extractClientTools normalizes the flat format to the internal ClientToolDefinition wrapped format before passing to the agent pipeline.
  • What did NOT change: The internal ClientToolDefinition type and all downstream agent code remain on the wrapped format — only the HTTP boundary layer changed.

Change Type (select all)

  • Bug fix
  • Feature
  • Refactor required for the fix
  • Docs
  • Security hardening
  • Chore/infra

Scope (select all touched areas)

  • Gateway / orchestration
  • Skills / tool execution
  • Auth / tokens
  • Memory / storage
  • Integrations
  • API / contracts
  • UI / DX
  • CI/CD / infra

Linked Issue/PR

Root Cause / Regression History (if applicable)

  • Root cause: open-responses.schema.ts FunctionToolDefinitionSchema was written with the Chat Completions tool format (function: { name, ... } wrapper) instead of the Responses API flat format (name, description, parameters at top level alongside type). The .strict() Zod modifier then rejects any top-level keys not in the schema, causing the flat-format tools from spec-compliant clients to fail validation.
  • Missing detection / guardrail: The parity test used the (wrong) wrapped format, so it passed; no test exercised the spec-correct flat format.
  • Prior context: Likely the schema was initially copied from or written alongside the Chat Completions schema and the format difference was not caught.
  • Why this regressed now: Always broken for clients using the correct Responses API format.

Regression Test Plan (if applicable)

  • Coverage level that should have caught this:
    • Seam / integration test
  • Target test or file: src/gateway/openresponses-parity.test.ts — updated to test the flat format and to explicitly assert the wrapped format is rejected
  • Scenario the test should lock in: Flat format {type, name, description, parameters} parses successfully; wrapped {type, function: {...}} fails
  • Why this is the smallest reliable guardrail: Direct schema unit test on ToolDefinitionSchema
  • Existing test that already covers this (if any): Previous test used wrapped format and passed — now updated

User-visible / Behavior Changes

Any client sending tools to /v1/responses must now use the flat Responses API format:

{"type": "function", "name": "my_tool", "description": "...", "parameters": {...}}

The previously "working" workaround of sending the Chat Completions wrapped format (function: {...}) now correctly fails.

Diagram (if applicable)

Before:
[client sends flat format] -> [strict schema rejects] -> 422 error

After:
[client sends flat format] -> [schema accepts] -> [extractClientTools normalizes] -> agent pipeline

Security Impact (required)

  • New permissions/capabilities? No
  • Secrets/tokens handling changed? No
  • New/changed network calls? No
  • Command/tool execution surface changed? No — the set of tools that can be registered is unchanged; this only fixes format validation
  • Data access scope changed? No

Repro + Verification

Environment

  • OS: Ubuntu 24.04.4 LTS
  • Runtime: Node 22, OpenClaw v2026.3.28
  • Model: Qwen3.5-397B via vLLM

Steps

  1. Start gateway with responses: { enabled: true } and x-openclaw-scopes: operator.write
  2. POST to /v1/responses with tools: [{"type":"function","name":"crpc_respond",...}] (flat format)
  3. Before fix: 422 with tools.0.function: Invalid input: expected object, received undefined
  4. After fix: 200, agent returns function_call for the tool

Expected

HTTP 200 with function_call output items for the provided tools.

Actual (before fix)

HTTP 422 with tools.0.function: Invalid input: expected object, received undefined.

Evidence

  • The updated parity test (openresponses-parity.test.ts) now tests both the valid flat format and explicit rejection of the wrapped format

Human Verification (required)

  • Verified scenarios: curl with flat format succeeds; curl with wrapped format now returns 422; OpenAI Codex CLI (codex exec) successfully connects and delegates tools
  • Edge cases checked: tool_choice: {type:"function", name:"..."} — that is in ToolChoiceSchema which is a separate schema and unchanged
  • What you did not verify: streaming tool delegation

Compatibility / Migration

  • Backward compatible? No — clients using the incorrect wrapped format must switch to the flat format
  • Config/env changes? No
  • Migration needed? Update any client sending {"type":"function","function":{...}} to /v1/responses to use {"type":"function","name":"...","description":"...","parameters":{...}}

Risks and Mitigations

  • Risk: Clients relying on the wrong wrapped format will break.
    • Mitigation: The wrapped format was never correct for this endpoint per spec; any client using it was accidentally working around the bug. The error message is clear about the format mismatch.

@openclaw-barnacle openclaw-barnacle Bot added gateway Gateway runtime size: S labels Mar 29, 2026
@greptile-apps

greptile-apps Bot commented Mar 29, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR correctly fixes the /v1/responses endpoint by updating FunctionToolDefinitionSchema from the Chat Completions wrapped format (function: { name, ... }) to the Responses API flat format (name, description, parameters at the top level), and adds a normalization step in extractClientTools to convert the flat format back to the internal ClientToolDefinition wrapped format. The schema fix and the HTTP normalization logic are both correct.

However, two tests in openresponses-parity.test.ts were not updated and will fail:

  • \"should validate request with client tools\" (line 185) — still passes wrapped format tools and expects success: true
  • \"should validate complete turn-based tool flow\" (line 233) — turn1Request still uses wrapped format tools and expects success: true

These tests need to be updated to the flat Responses API format before merging.

Confidence Score: 4/5

Safe to merge after fixing two stale test cases in the CreateResponseBody Schema block that still use the old wrapped format.

The schema and HTTP normalization changes are correct and well-motivated. The only concrete defects are two test cases that were not updated alongside the schema change and will produce test failures on CI. These must be fixed before merging.

src/gateway/openresponses-parity.test.ts — the 'should validate request with client tools' and 'should validate complete turn-based tool flow' tests still use the wrapped format.

Important Files Changed

Filename Overview
src/gateway/open-responses.schema.ts FunctionToolDefinitionSchema correctly updated from Chat Completions wrapped format to flat Responses API format; adds optional strict field; .strict() modifier preserved to reject unknown keys.
src/gateway/openresponses-http.ts extractClientTools now correctly normalizes the flat Responses API format to the internal ClientToolDefinition wrapped format; downstream applyToolChoice and agent pipeline remain unaffected.
src/gateway/openresponses-parity.test.ts The Schema Validation block is correctly updated to flat format, but two tests in the CreateResponseBody Schema block still use the old wrapped format and will fail on CI.

Comments Outside Diff (2)

  1. src/gateway/openresponses-parity.test.ts, line 185-215 (link)

    P1 Stale wrapped-format tools will cause this test to fail

    This test still passes the old Chat Completions wrapped format (function: { name, ... }) inside the tools array and asserts result.success === true. However, CreateResponseBodySchema now delegates to ToolDefinitionSchemaFunctionToolDefinitionSchema, which uses .strict() and only accepts the flat format (name, description, parameters at the top level). Sending { type: "function", function: { ... } } will be rejected, so this test will fail after the PR is merged.

    The same stale format also appears at lines 243–255 inside the "should validate complete turn-based tool flow" test.

    Both need to be updated to the flat Responses API format — for example:

    Prompt To Fix With AI
    This is a comment left during a code review.
    Path: src/gateway/openresponses-parity.test.ts
    Line: 185-215
    
    Comment:
    **Stale wrapped-format tools will cause this test to fail**
    
    This test still passes the old Chat Completions wrapped format (`function: { name, ... }`) inside the `tools` array and asserts `result.success === true`. However, `CreateResponseBodySchema` now delegates to `ToolDefinitionSchema``FunctionToolDefinitionSchema`, which uses `.strict()` and only accepts the flat format (`name`, `description`, `parameters` at the top level). Sending `{ type: "function", function: { ... } }` will be rejected, so this test will fail after the PR is merged.
    
    The same stale format also appears at lines 243–255 inside the `"should validate complete turn-based tool flow"` test.
    
    Both need to be updated to the flat Responses API format — for example:
    
    
    
    How can I resolve this? If you propose a fix, please make it concise.
  2. src/gateway/openresponses-parity.test.ts, line 233-255 (link)

    P1 Stale wrapped-format tools in turn-based flow test

    The turn1Request here still uses the wrapped { type: "function", function: { ... } } format and asserts turn1Result.success === true. With the new strict flat schema this will fail. The tools array needs to be updated to the flat Responses API format, matching the fix applied everywhere else.

    Prompt To Fix With AI
    This is a comment left during a code review.
    Path: src/gateway/openresponses-parity.test.ts
    Line: 233-255
    
    Comment:
    **Stale wrapped-format tools in turn-based flow test**
    
    The `turn1Request` here still uses the wrapped `{ type: "function", function: { ... } }` format and asserts `turn1Result.success === true`. With the new strict flat schema this will fail. The `tools` array needs to be updated to the flat Responses API format, matching the fix applied everywhere else.
    
    
    
    How can I resolve this? If you propose a fix, please make it concise.
Prompt To Fix All With AI
This is a comment left during a code review.
Path: src/gateway/openresponses-parity.test.ts
Line: 185-215

Comment:
**Stale wrapped-format tools will cause this test to fail**

This test still passes the old Chat Completions wrapped format (`function: { name, ... }`) inside the `tools` array and asserts `result.success === true`. However, `CreateResponseBodySchema` now delegates to `ToolDefinitionSchema``FunctionToolDefinitionSchema`, which uses `.strict()` and only accepts the flat format (`name`, `description`, `parameters` at the top level). Sending `{ type: "function", function: { ... } }` will be rejected, so this test will fail after the PR is merged.

The same stale format also appears at lines 243–255 inside the `"should validate complete turn-based tool flow"` test.

Both need to be updated to the flat Responses API format — for example:

```suggestion
    it("should validate request with client tools", async () => {
      const validRequest = {
        model: "claude-sonnet-4-20250514",
        input: [
          {
            type: "message" as const,
            role: "user" as const,
            content: "What's the weather?",
          },
        ],
        tools: [
          {
            type: "function" as const,
            name: "get_weather",
            description: "Get weather for a location",
            parameters: {
              type: "object",
              properties: {
                location: { type: "string" },
              },
              required: ["location"],
            },
          },
        ],
      };

      const result = CreateResponseBodySchema.safeParse(validRequest);
      expect(result.success).toBe(true);
    });
```

How can I resolve this? If you propose a fix, please make it concise.

---

This is a comment left during a code review.
Path: src/gateway/openresponses-parity.test.ts
Line: 233-255

Comment:
**Stale wrapped-format tools in turn-based flow test**

The `turn1Request` here still uses the wrapped `{ type: "function", function: { ... } }` format and asserts `turn1Result.success === true`. With the new strict flat schema this will fail. The `tools` array needs to be updated to the flat Responses API format, matching the fix applied everywhere else.

```suggestion
      const turn1Request = {
        model: "claude-sonnet-4-20250514",
        input: [
          {
            type: "message" as const,
            role: "user" as const,
            content: "What's the weather in San Francisco?",
          },
        ],
        tools: [
          {
            type: "function" as const,
            name: "get_weather",
            description: "Get weather for a location",
          },
        ],
      };
```

How can I resolve this? If you propose a fix, please make it concise.

Reviews (1): Last reviewed commit: "gateway: fix /v1/responses tool schema t..." | Re-trigger Greptile

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: c4707711a1

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread src/gateway/openresponses-http.ts
Comment thread src/gateway/openresponses-parity.test.ts
@malaiwah

Copy link
Copy Markdown
Contributor Author

Fixed — updated the two stale test cases in the CreateResponseBody Schema block (should validate request with client tools and should validate complete turn-based tool flow) to use the flat Responses API format. @codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: e1d44f0d34

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread src/gateway/openresponses-http.ts
@malaiwah

Copy link
Copy Markdown
Contributor Author

Addressed the P2: added strict?: boolean to ClientToolDefinition.function in params.ts and now propagate it through extractClientTools. @codex review

@openclaw-barnacle openclaw-barnacle Bot added the agents Agent runtime and tooling label Mar 29, 2026
@chatgpt-codex-connector

Copy link
Copy Markdown
Contributor

Codex Review: Didn't find any major issues. Nice work!

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

@malaiwah

Copy link
Copy Markdown
Contributor Author

@greptile , are you good with the updated code as well?

@greptile-apps

greptile-apps Bot commented Mar 29, 2026

Copy link
Copy Markdown
Contributor

Yes, looks solid. The boundary layer is clean:

  1. Schema now correctly accepts the flat Responses API format
  2. extractClientTools normalizes flat → wrapped at the HTTP boundary
  3. Internal types unchanged (added strict field which is good)
  4. Tests now cover both the valid flat format and explicitly reject the wrapped format

The separation between API surface (flat) and internal representation (wrapped) is exactly where it should be. Good fix.

@malaiwah

Copy link
Copy Markdown
Contributor Author

Gateway + Client Configuration Details

For anyone wanting to reproduce the Codex CLI → OpenClaw → local model setup:

OpenClaw gateway config (~/.openclaw/openclaw.json):

{
  gateway: {
    port: 18789,
    bind: "lan",
    auth: { mode: "token", token: "<token>" },
    http: {
      endpoints: {
        chatCompletions: { enabled: true },
        responses: { enabled: true }
      }
    }
  },
  models: {
    mode: "replace",
    providers: {
      "local-vllm": {
        baseUrl: "http://10.15.0.166:8000/v1",
        apiKey: "local-only-key",
        api: "openai-completions",
        models: [{
          id: "qwen35-397b",
          name: "Qwen3.5-397B-NVFP4",
          api: "openai-completions",
          reasoning: true,
          input: ["text", "image"],
          contextWindow: 500000,
          maxTokens: 32768,
          compat: { supportsDeveloperRole: false, supportsUsageInStreaming: true }
        }]
      }
    }
  }
}

Codex CLI config (~/.codex/config.toml):

model = "openclaw"
model_provider = "openclaw-local"

[model_providers.openclaw-local]
name = "OpenClaw Gateway"
base_url = "http://<gateway-host>:18789/v1"
wire_api = "responses"
env_key = "OPENCLAW_TOKEN"

[model_providers.openclaw-local.http_headers]
"x-openclaw-scopes" = "operator.write"

The wire_api = "responses" setting is what makes Codex use the /v1/responses endpoint (and the flat tool format that this PR fixes).

@malaiwah

Copy link
Copy Markdown
Contributor Author

Local Testing Evidence

Tested the fix end-to-end on a self-hosted OpenClaw v2026.3.28 instance (Ubuntu 24.04, Qwen3.5-397B via vLLM):

1. curl — flat Responses API format (success)

curl -s http://localhost:18789/v1/responses \
  -H "Authorization: Bearer <token>" \
  -H "x-openclaw-scopes: operator.write" \
  -H "Content-Type: application/json" \
  -d '{"model":"openclaw","input":"Use the crpc_respond tool to say hello","stream":false,
       "tools":[{"type":"function","name":"crpc_respond","description":"Send a response",
                 "parameters":{"type":"object","properties":{"content":{"type":"string"},"done":{"type":"boolean"}},"required":["content","done"]}}]}'

Result: HTTP 200, agent returned function_call output for crpc_respond with {"content":"Hello! 👋","done":true}.

2. OpenAI Codex CLI — connected and working

Configured Codex CLI v0.117.0 with wire_api = "responses" pointing at the patched gateway.

$ OPENCLAW_TOKEN=<token> codex exec --full-auto --provider openclaw-local \
    "Read /tmp/test.js and tell me what value it prints"

Result: Codex successfully connected, delegated its tools via the flat Responses API format, and the agent correctly answered the query. Token usage: 42,387 tokens routed through Qwen3.5-397B.

3. Wrapped format correctly rejected

After the patch, sending the old Chat Completions wrapped format ({type:"function", function:{...}}) is rejected by the .strict() schema as expected.


Tested with the monkey-patched compiled bundle on the installed npm module; the same source changes are in this PR.

@malaiwah

Copy link
Copy Markdown
Contributor Author

Regarding the automated review feedback:

Re: strict field passthrough — The Zod schema uses .strict() as a validation method (rejecting extra properties), not as a field in the tool definition. Neither FunctionToolDefinitionSchema nor ClientToolDefinition define a strict field, so there's nothing to forward. If OpenResponses adds strict support in the future, both the Zod schema and ClientToolDefinition type would need updating — but that's a separate concern.

Re: test fixture consistency — All tool definitions in both openresponses-http.test.ts and openresponses-parity.test.ts use the nested function: {} format consistently. The flat format acceptance was added at the schema validation layer (where both formats should be accepted), not in the test fixtures. The tests are internally consistent.

The failing CI checks (checks-fast-contracts-protocol, checks-node-test-3, checks-node-channels-1, Windows node tests) — are these related to this PR or pre-existing failures on main? Happy to investigate if needed.

@malaiwah

Copy link
Copy Markdown
Contributor Author

Investigated the CI failures — none are related to this PR:

  • checks-fast-contracts-protocol: Fails with "Vitest cannot be imported in a CommonJS module using require()" in src/channels/plugins/contracts/group-policy.contract.test.ts — a CJS/ESM infrastructure issue in the contracts test suite, unrelated to gateway changes.
  • checks-node-test-3: Fails in src/config/config.allowlist-requires-allowfrom.test.ts (test timeout ~3min) and src/plugins/bundled-plugin-metadata.test.ts (assertion on plugin build artifacts) — both unrelated to tool schema.
  • checks-windows-node-test-*: Various failures in src/cron/, src/infra/, src/channels/plugins/ — Windows-specific environment failures, unrelated to our changes.

This PR only touches src/gateway/openresponses-http.ts, open-responses.schema.ts, and openresponses-parity.test.ts. None of the failing test files are in those paths.

@vincentkoc
vincentkoc force-pushed the fix/responses-tool-schema-flat-format branch from 4c6be64 to 7244494 Compare March 30, 2026 00:16
@openclaw-barnacle openclaw-barnacle Bot added the docs Improvements or additions to documentation label Mar 30, 2026
@vincentkoc vincentkoc self-assigned this Mar 30, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the docs Improvements or additions to documentation label Mar 30, 2026
@vincentkoc
vincentkoc merged commit 26f34be into openclaw:main Mar 30, 2026
8 checks passed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 0d9018c821

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

name: tool.name,
description: tool.description,
parameters: tool.parameters,
strict: tool.strict,

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve strict through hosted tool conversion

extractClientTools now accepts and forwards tools[].strict, but this value is still dropped before the model request is built: toClientToolDefinitions only maps name/label/description/parameters and never carries strict into the ToolDefinition objects (src/agents/pi-tool-definition-adapter.ts:185-189). With this commit, requests that include {"type":"function","name":"...","strict":true} now parse successfully instead of failing validation, yet strict argument enforcement is silently disabled downstream. That is a behavior regression for spec-compliant clients relying on strict tool schemas.

Useful? React with 👍 / 👎.

Alix-007 pushed a commit to Alix-007/openclaw that referenced this pull request Mar 30, 2026
… format (openclaw#57166)

* gateway: fix /v1/responses tool schema to use flat Responses API format

* gateway: fix remaining stale wrapped-format tools in parity tests

* gateway: propagate strict flag through extractClientTools normalization

* fix(gateway): cover responses tool boundary

* Delete docs/internal/vincentkoc/2026-03-30-pr-57166-responses-tool-schema-followup.md

---------

Co-authored-by: Michel Belleau <[email protected]>
Co-authored-by: Vincent Koc <[email protected]>
alexjiang1 pushed a commit to alexjiang1/openclaw that referenced this pull request Mar 31, 2026
… format (openclaw#57166)

* gateway: fix /v1/responses tool schema to use flat Responses API format

* gateway: fix remaining stale wrapped-format tools in parity tests

* gateway: propagate strict flag through extractClientTools normalization

* fix(gateway): cover responses tool boundary

* Delete docs/internal/vincentkoc/2026-03-30-pr-57166-responses-tool-schema-followup.md

---------

Co-authored-by: Michel Belleau <[email protected]>
Co-authored-by: Vincent Koc <[email protected]>
pgondhi987 pushed a commit to pgondhi987/openclaw that referenced this pull request Mar 31, 2026
… format (openclaw#57166)

* gateway: fix /v1/responses tool schema to use flat Responses API format

* gateway: fix remaining stale wrapped-format tools in parity tests

* gateway: propagate strict flag through extractClientTools normalization

* fix(gateway): cover responses tool boundary

* Delete docs/internal/vincentkoc/2026-03-30-pr-57166-responses-tool-schema-followup.md

---------

Co-authored-by: Michel Belleau <[email protected]>
Co-authored-by: Vincent Koc <[email protected]>
lovewanwan pushed a commit to lovewanwan/openclaw that referenced this pull request Apr 28, 2026
… format (openclaw#57166)

* gateway: fix /v1/responses tool schema to use flat Responses API format

* gateway: fix remaining stale wrapped-format tools in parity tests

* gateway: propagate strict flag through extractClientTools normalization

* fix(gateway): cover responses tool boundary

* Delete docs/internal/vincentkoc/2026-03-30-pr-57166-responses-tool-schema-followup.md

---------

Co-authored-by: Michel Belleau <[email protected]>
Co-authored-by: Vincent Koc <[email protected]>
Tardisyuan pushed a commit to Tardisyuan/openclaw that referenced this pull request Apr 30, 2026
… format (openclaw#57166)

* gateway: fix /v1/responses tool schema to use flat Responses API format

* gateway: fix remaining stale wrapped-format tools in parity tests

* gateway: propagate strict flag through extractClientTools normalization

* fix(gateway): cover responses tool boundary

* Delete docs/internal/vincentkoc/2026-03-30-pr-57166-responses-tool-schema-followup.md

---------

Co-authored-by: Michel Belleau <[email protected]>
Co-authored-by: Vincent Koc <[email protected]>
ogt-redknie pushed a commit to ogt-redknie/OPENX that referenced this pull request May 2, 2026
… format (openclaw#57166)

* gateway: fix /v1/responses tool schema to use flat Responses API format

* gateway: fix remaining stale wrapped-format tools in parity tests

* gateway: propagate strict flag through extractClientTools normalization

* fix(gateway): cover responses tool boundary

* Delete docs/internal/vincentkoc/2026-03-30-pr-57166-responses-tool-schema-followup.md

---------

Co-authored-by: Michel Belleau <[email protected]>
Co-authored-by: Vincent Koc <[email protected]>
github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request May 9, 2026
… format (openclaw#57166)

* gateway: fix /v1/responses tool schema to use flat Responses API format

* gateway: fix remaining stale wrapped-format tools in parity tests

* gateway: propagate strict flag through extractClientTools normalization

* fix(gateway): cover responses tool boundary

* Delete docs/internal/vincentkoc/2026-03-30-pr-57166-responses-tool-schema-followup.md

---------

Co-authored-by: Michel Belleau <[email protected]>
Co-authored-by: Vincent Koc <[email protected]>
github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request May 24, 2026
… format (openclaw#57166)

* gateway: fix /v1/responses tool schema to use flat Responses API format

* gateway: fix remaining stale wrapped-format tools in parity tests

* gateway: propagate strict flag through extractClientTools normalization

* fix(gateway): cover responses tool boundary

* Delete docs/internal/vincentkoc/2026-03-30-pr-57166-responses-tool-schema-followup.md

---------

Co-authored-by: Michel Belleau <[email protected]>
Co-authored-by: Vincent Koc <[email protected]>
Nachx639 pushed a commit to Nachx639/clawdbot that referenced this pull request Jun 17, 2026
… format (openclaw#57166)

* gateway: fix /v1/responses tool schema to use flat Responses API format

* gateway: fix remaining stale wrapped-format tools in parity tests

* gateway: propagate strict flag through extractClientTools normalization

* fix(gateway): cover responses tool boundary

* Delete docs/internal/vincentkoc/2026-03-30-pr-57166-responses-tool-schema-followup.md

---------

Co-authored-by: Michel Belleau <[email protected]>
Co-authored-by: Vincent Koc <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agents Agent runtime and tooling gateway Gateway runtime size: S

Projects

None yet

Development

Successfully merging this pull request may close these issues.

bug: /v1/responses tool schema validates Chat Completions format instead of Responses API format

2 participants