Skip to content

Schema conflict in billing-list_invoices tool prevents use of queryParameters #449

Description

@cn-knight

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
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions