Summary:
The JSON Schema for the billing-list_invoices tool contains a logical contradiction between the queryParameters property definitions and its required constraints. This makes it impossible to use filtering parameters (like startDate or endDate) without triggering validation errors.
Steps to Reproduce:
Invoke the billing-list_invoices tool.
Provide a valid body with accessRequestedAccount.
Provide queryParameters containing startDate and endDate.
Actual Behavior:
Scenario A: If accessRequestedAccount is omitted from queryParameters, the validator throws: required property 'accessRequestedAccount' not found.
Scenario B: If accessRequestedAccount is added to queryParameters to satisfy the requirement, the validator throws: property 'accessRequestedAccount' is not defined (additional properties not allowed).
Root Cause Analysis:
In the tool's inputSchema:
accessRequestedAccount is correctly defined under the body object.
However, inside the queryParameters object, accessRequestedAccount is listed in the "required": [...] array, but it is not defined in the queryParameters.properties list.
Most MCP executors use strict validation, creating a deadlock where the field is "required" but "not allowed" simultaneously.
Expected Behavior:
The "required": ["accessRequestedAccount"] constraint should be moved from the queryParameters block to the top-level inputSchema or the body block, as accessRequestedAccount is a logical identity filter, not a URI query string parameter.
Environment:
Tool Name: billing-list_invoices
Protocol: MCP (Model Context Protocol)
Suggested Fix:
Remove the accessRequestedAccount requirement from the queryParameters object:
// Current problematic block
"queryParameters": {
"properties": { ... },
"required": ["accessRequestedAccount"] // <--- Remove this line
}
Summary:
The JSON Schema for the billing-list_invoices tool contains a logical contradiction between the queryParameters property definitions and its required constraints. This makes it impossible to use filtering parameters (like startDate or endDate) without triggering validation errors.
Steps to Reproduce:
Invoke the billing-list_invoices tool.
Provide a valid body with accessRequestedAccount.
Provide queryParameters containing startDate and endDate.
Actual Behavior:
Scenario A: If accessRequestedAccount is omitted from queryParameters, the validator throws: required property 'accessRequestedAccount' not found.
Scenario B: If accessRequestedAccount is added to queryParameters to satisfy the requirement, the validator throws: property 'accessRequestedAccount' is not defined (additional properties not allowed).
Root Cause Analysis:
In the tool's inputSchema:
accessRequestedAccount is correctly defined under the body object.
However, inside the queryParameters object, accessRequestedAccount is listed in the "required": [...] array, but it is not defined in the queryParameters.properties list.
Most MCP executors use strict validation, creating a deadlock where the field is "required" but "not allowed" simultaneously.
Expected Behavior:
The "required": ["accessRequestedAccount"] constraint should be moved from the queryParameters block to the top-level inputSchema or the body block, as accessRequestedAccount is a logical identity filter, not a URI query string parameter.
Environment:
Tool Name: billing-list_invoices
Protocol: MCP (Model Context Protocol)
Suggested Fix:
Remove the accessRequestedAccount requirement from the queryParameters object:
// Current problematic block
"queryParameters": {
"properties": { ... },
"required": ["accessRequestedAccount"] // <--- Remove this line
}