{
  "components": {
    "schemas": {
      "ToolError": {
        "properties": {
          "error": {
            "type": "string"
          }
        },
        "required": [
          "error"
        ],
        "type": "object"
      }
    },
    "securitySchemes": {
      "bearerAuth": {
        "scheme": "bearer",
        "type": "http"
      }
    }
  },
  "info": {
    "description": "REST surface bridged from the MCP tool registry. Authenticate with a pmc_ bearer token.",
    "title": "Patent Connector Tool API",
    "version": "1.14.8"
  },
  "openapi": "3.1.0",
  "paths": {
    "/v1/tools/aggregate_records": {
      "post": {
        "description": "Run an Elasticsearch-style aggregation over a Lens corpus (patent or scholarly) without fetching records: counts, terms breakdowns and metrics for landscape analytics - e.g. works per publication_type for a query, or the science feeding patents via has_patent_citations:true slices on the scholarly corpus. The aggregations object is passed to Lens verbatim; Lens restricts aggregatable fields per aggregation type and answers 400 naming an unsupported field. Requires the corresponding Lens Aggregation API subscription on the token's account. Retrieves patent data from official patent office databases.",
        "operationId": "aggregate_records",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "aggregations": {
                    "description": "Elasticsearch-style aggregations object, passed verbatim",
                    "type": "object"
                  },
                  "corpus": {
                    "description": "Corpus to aggregate (default patent)",
                    "enum": [
                      "patent",
                      "scholarly"
                    ],
                    "type": "string"
                  },
                  "query": {
                    "description": "Optional Lucene query scoping the aggregation",
                    "type": "string"
                  }
                },
                "required": [
                  "aggregations"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "aggregations": {
                      "additionalProperties": true,
                      "type": "object"
                    },
                    "corpus": {
                      "type": "string"
                    },
                    "provider": {
                      "type": "string"
                    },
                    "total": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "provider",
                    "corpus",
                    "total"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Aggregate Records",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/classification_catchword": {
      "post": {
        "description": "Look up the official IPC catchword index: maps a keyword/phrase to the IPC places where that subject is classified (the index a searcher consults to find where a concept lives in the scheme). Returns candidate IPC symbols per matching term; confirm the place with get_classification. Complements semantic reference_search with the curated, authoritative term→place mapping. This is the classification taxonomy and examination guidance - not the patent corpus and not the statutes themselves. Results are candidate references to verify against the primary source, not legal determinations. English only.",
        "operationId": "classification_catchword",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "limit": {
                    "description": "Max terms (1-100, default 20)",
                    "type": "integer"
                  },
                  "query": {
                    "description": "Keyword or phrase, e.g. \"bicycle\", \"harvesting\"",
                    "type": "string"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "hits": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "context": {
                            "type": "string"
                          },
                          "symbols": {
                            "items": {
                              "type": "string"
                            },
                            "type": [
                              "null",
                              "array"
                            ]
                          },
                          "term": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "term",
                          "symbols"
                        ],
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "query": {
                      "type": "string"
                    },
                    "scheme": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "query",
                    "scheme",
                    "hits"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "IPC Catchword Index Lookup",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/classification_tree": {
      "post": {
        "description": "Browse the classification hierarchy beneath a symbol: returns the child places under a CPC/IPC/FI symbol down to the requested depth (e.g. symbol=A01B depth=1 lists its subgroups). Use this to drill into the taxonomy when narrowing or broadening a search scope. For the rich detail of a single symbol (title, definitions, concordances, ancestors) use get_classification instead. Pass as_of (YYYY-MM-DD) to browse the scheme edition in force on a given date. This is the classification taxonomy and examination guidance - not the patent corpus and not the statutes themselves. Results are candidate references to verify against the primary source, not legal determinations. English only.",
        "operationId": "classification_tree",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "as_of": {
                    "description": "Point-in-time date YYYY-MM-DD: resolve the scheme edition in force on that date; ignored when an exact edition is implied",
                    "type": "string"
                  },
                  "depth": {
                    "description": "Levels below the root (0 = root only, default 1)",
                    "minimum": 0,
                    "type": "integer"
                  },
                  "scheme": {
                    "description": "Classification scheme (default CPC)",
                    "enum": [
                      "CPC",
                      "IPC",
                      "FI"
                    ],
                    "type": "string"
                  },
                  "symbol": {
                    "description": "Classification symbol, e.g. A01B, H04W84/18",
                    "type": "string"
                  }
                },
                "required": [
                  "symbol"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "depth": {
                      "type": "integer"
                    },
                    "edition": {
                      "type": "string"
                    },
                    "nodes": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "kind": {
                            "type": "string"
                          },
                          "level": {
                            "type": "integer"
                          },
                          "symbol": {
                            "type": "string"
                          },
                          "title": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "symbol"
                        ],
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "root": {
                      "type": "string"
                    },
                    "scheme": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "scheme",
                    "edition",
                    "root",
                    "depth",
                    "nodes"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Browse Classification Subtree",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/compare_patents": {
      "post": {
        "description": "Compare multiple patents side-by-side: title, applicant, filing date, grant date, status, and classifications for each patent. Supports 2-10 patents from any provider. Retrieves patent data from official patent office databases.",
        "operationId": "compare_patents",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "patent_numbers": {
                    "description": "List of 2-10 patent numbers to compare (e.g. [\"EP1000000B1\", \"US11234567\"])",
                    "items": {
                      "type": "string"
                    },
                    "maxItems": 10,
                    "minItems": 2,
                    "type": "array"
                  }
                },
                "required": [
                  "patent_numbers"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "patents": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "applicant": {
                            "type": "string"
                          },
                          "classifications": {
                            "items": {
                              "type": "string"
                            },
                            "type": [
                              "null",
                              "array"
                            ]
                          },
                          "error": {
                            "type": "string"
                          },
                          "filing_date": {
                            "type": "string"
                          },
                          "patent_number": {
                            "type": "string"
                          },
                          "provider": {
                            "type": "string"
                          },
                          "publication_date": {
                            "type": "string"
                          },
                          "status": {
                            "type": "string"
                          },
                          "title": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "patent_number",
                          "provider",
                          "title",
                          "applicant",
                          "filing_date",
                          "publication_date",
                          "status",
                          "classifications"
                        ],
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "warnings": {
                      "items": {
                        "type": "string"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    }
                  },
                  "required": [
                    "patents"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Compare Patents",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/convert_patent_number": {
      "post": {
        "description": "Convert a patent number between formats. EPO (default) returns the three docdb-family formats: original (as published), epodoc (CCnumber, e.g. EP1000000B1), and docdb (CC.number.KC, e.g. EP.1000000.B1), regardless of input; requires EPO credentials. With provider=jpo, cross-references a Japanese application number to the office's related application/publication/registration numbers for the same case (requires JPO credentials). Retrieves patent data from official patent office databases.",
        "operationId": "convert_patent_number",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "patent_number": {
                    "description": "Patent number in any format (e.g. EP1000000B1, US.7654321.B2, or a JP application number like 2020008423 with provider=jpo)",
                    "type": "string"
                  },
                  "provider": {
                    "description": "Patent office / provider ID to use; defaults to epo_ops. Use jpo for Japanese application-number cross-references.",
                    "enum": [
                      "epo_ops",
                      "jpo"
                    ],
                    "type": "string"
                  },
                  "target_format": {
                    "description": "Preferred output format hint (all formats always returned; EPO only)",
                    "enum": [
                      "original",
                      "epodoc",
                      "docdb"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "patent_number"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "application_number": {
                      "type": "string"
                    },
                    "country": {
                      "type": "string"
                    },
                    "docdb": {
                      "type": "string"
                    },
                    "epodoc": {
                      "type": "string"
                    },
                    "input": {
                      "type": "string"
                    },
                    "international_publication_number": {
                      "type": "string"
                    },
                    "national_publication_number": {
                      "type": "string"
                    },
                    "original": {
                      "type": "string"
                    },
                    "provider": {
                      "type": "string"
                    },
                    "publication_number": {
                      "type": "string"
                    },
                    "registration_number": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "input",
                    "provider"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Convert Patent Number",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/download_patent_document": {
      "post": {
        "description": "Download a single file-wrapper document (PDF) using a download_url from get_patent_documents - e.g. an office action, applicant remarks, claim amendment, or IDS. Returns a temporary link for viewing the PDF. USPTO and INPI (published French fascicule PDFs). Retrieves patent data from official patent office databases.",
        "operationId": "download_patent_document",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "download_url": {
                    "description": "A downloads[].download_url value from get_patent_documents.",
                    "type": "string"
                  },
                  "provider": {
                    "description": "Provider id; defaults to uspto; use inpi for api-gateway.inpi.fr download URLs.",
                    "type": "string"
                  }
                },
                "required": [
                  "download_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "mime_type": {
                      "type": "string"
                    },
                    "provider": {
                      "type": "string"
                    },
                    "size_bytes": {
                      "type": "integer"
                    },
                    "temporary_url": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "provider",
                    "mime_type",
                    "size_bytes"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Download Patent Document",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/download_trademark_document": {
      "post": {
        "description": "Download a trademark document. Requires serial_number and document_id (from get_trademark_documents; USPTO format TypeCode+YYYYMMDD, e.g. NOA20230322; INPI uses the single document_id BOPI). Returns extracted text content and a temporary download URL for the PDF. Max 10 MB. USPTO requires the TSDR API key; INPI uses the account credentials. Retrieves patent data from official patent office databases.",
        "operationId": "download_trademark_document",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "document_id": {
                    "description": "Document ID from get_trademark_documents (USPTO e.g. NOA20230322; INPI: BOPI).",
                    "type": "string"
                  },
                  "provider": {
                    "description": "Trademark office provider id; defaults to uspto_tsdr (US). Use inpi for the French BOPI publication copy.",
                    "type": "string"
                  },
                  "serial_number": {
                    "description": "Trademark identifier. For uspto_tsdr the serial number is exactly 8 digits; inpi uses the French trademark application number (e.g. 4216963).",
                    "type": "string"
                  }
                },
                "required": [
                  "serial_number",
                  "document_id"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "document_id": {
                      "type": "string"
                    },
                    "mime_type": {
                      "type": "string"
                    },
                    "provider": {
                      "type": "string"
                    },
                    "serial_number": {
                      "type": "string"
                    },
                    "size_bytes": {
                      "type": "integer"
                    },
                    "temporary_url": {
                      "type": "string"
                    },
                    "text_content": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "serial_number",
                    "document_id",
                    "provider",
                    "mime_type",
                    "size_bytes"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Download Trademark Document",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/get_abstract": {
      "post": {
        "description": "Retrieve patent abstract for a specific patent number. The correct provider is auto-selected from the patent number. Accepts US grants ('US 11,646,472 B2'), applications ('17/248,024'), publications ('US20250087686A1'), EPO patents ('EP2549025A1'), German patents ('DE102020001234A1'), or French patents ('FR2979290'). Optional provider override: 'epo_ops', 'uspto', 'dpma', 'inpi'. Retrieves patent data from official patent office databases.",
        "operationId": "get_abstract",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "patent_number": {
                    "description": "Patent number, e.g. EP2549025, US10000000B2, or DE102004035851.",
                    "type": "string"
                  },
                  "provider": {
                    "description": "Patent office / provider ID to use; omit to auto-select the best one for the input.",
                    "enum": [
                      "epo_ops",
                      "uspto",
                      "dpma",
                      "ipau",
                      "inpi",
                      "lens"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "patent_number"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "country": {
                      "type": "string"
                    },
                    "doc_number": {
                      "type": "string"
                    },
                    "editorial": {
                      "additionalProperties": false,
                      "properties": {
                        "advantage": {
                          "type": "string"
                        },
                        "codes": {
                          "items": {
                            "type": "string"
                          },
                          "type": [
                            "null",
                            "array"
                          ]
                        },
                        "novelty": {
                          "type": "string"
                        },
                        "title": {
                          "type": "string"
                        },
                        "use": {
                          "type": "string"
                        }
                      },
                      "type": [
                        "null",
                        "object"
                      ]
                    },
                    "kind": {
                      "type": "string"
                    },
                    "language": {
                      "type": "string"
                    },
                    "patent_number": {
                      "type": "string"
                    },
                    "provider": {
                      "type": "string"
                    },
                    "text": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "patent_number",
                    "provider",
                    "text"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Get Patent Abstract",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/get_assignments": {
      "post": {
        "description": "Retrieve patent assignment/ownership data for US patents. Shows the recorded conveyance history verbatim: assignor, assignee, recorded date, execution date, conveyance type, and reel/frame number. No current owner is derived - reason over the conveyance text and dates. USPTO-only: for cross-office relationships, use get_patent_family instead. Accepts US grants ('US 11,646,472 B2'), applications ('17/248,024'), or publications ('US20250087686A1'). Retrieves patent data from official patent office databases.",
        "operationId": "get_assignments",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "patent_number": {
                    "description": "Patent number, e.g. EP2549025, US10000000B2, or DE102004035851.",
                    "type": "string"
                  },
                  "provider": {
                    "description": "Patent office / provider ID to use; omit to auto-select the best one for the input.",
                    "enum": [
                      "epo_ops",
                      "uspto",
                      "dpma",
                      "ipau"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "patent_number"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "assignments": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "assignee": {
                            "type": "string"
                          },
                          "assignee_place": {
                            "type": "string"
                          },
                          "assignor": {
                            "type": "string"
                          },
                          "conveyance": {
                            "type": "string"
                          },
                          "document_uri": {
                            "type": "string"
                          },
                          "execution_date": {
                            "type": "string"
                          },
                          "recorded_date": {
                            "type": "string"
                          },
                          "reel_frame": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "assignor",
                          "assignee"
                        ],
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "current_owner": {
                      "type": "string"
                    },
                    "patent_number": {
                      "type": "string"
                    },
                    "provider": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "patent_number",
                    "provider",
                    "assignments"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Get Patent Assignments",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/get_bibliography": {
      "post": {
        "description": "Retrieve bibliographic data (title, applicants, inventors, dates, classifications) for a specific patent number. The correct provider is auto-selected from the patent number. Accepts US grants ('US 11,646,472 B2'), applications ('17/248,024'), publications ('US20250087686A1'), EPO patents ('EP2549025A1'), German patents ('DE102020001234A1'), or by-application-number lookups for JP (jpo) and AU (ipau). Optional provider override: 'epo_ops', 'uspto', 'dpma', 'ipau', 'jpo', 'tipo'. Retrieves patent data from official patent office databases.",
        "operationId": "get_bibliography",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "patent_number": {
                    "description": "Patent number, e.g. EP2549025, US10000000B2, or DE102004035851.",
                    "type": "string"
                  },
                  "provider": {
                    "description": "Patent office / provider ID to use; omit to auto-select the best one for the input.",
                    "enum": [
                      "epo_ops",
                      "uspto",
                      "dpma",
                      "ipau",
                      "jpo",
                      "tipo",
                      "inpi",
                      "lens"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "patent_number"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "agents": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "country": {
                            "type": "string"
                          },
                          "name": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "name"
                        ],
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "applicants": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "country": {
                            "type": "string"
                          },
                          "name": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "name"
                        ],
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "application_date": {
                      "type": "string"
                    },
                    "classifications": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "scheme": {
                            "type": "string"
                          },
                          "symbol": {
                            "type": "string"
                          },
                          "version": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "symbol"
                        ],
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "country": {
                      "type": "string"
                    },
                    "doc_number": {
                      "type": "string"
                    },
                    "inventors": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "country": {
                            "type": "string"
                          },
                          "name": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "name"
                        ],
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "ipc_classification": {
                      "type": "string"
                    },
                    "kind": {
                      "type": "string"
                    },
                    "links": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "label": {
                            "type": "string"
                          },
                          "url": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "label",
                          "url"
                        ],
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "patent_number": {
                      "type": "string"
                    },
                    "priorities": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "country": {
                            "type": "string"
                          },
                          "date": {
                            "type": "string"
                          },
                          "doc_number": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "provider": {
                      "type": "string"
                    },
                    "publication_date": {
                      "type": "string"
                    },
                    "right_type": {
                      "type": "string"
                    },
                    "sequence_listing": {
                      "additionalProperties": false,
                      "properties": {
                        "count": {
                          "type": "integer"
                        },
                        "length_buckets": {
                          "items": {
                            "type": "string"
                          },
                          "type": [
                            "null",
                            "array"
                          ]
                        },
                        "organisms": {
                          "items": {
                            "additionalProperties": false,
                            "properties": {
                              "name": {
                                "type": "string"
                              },
                              "tax_id": {
                                "type": "integer"
                              }
                            },
                            "type": "object"
                          },
                          "type": [
                            "null",
                            "array"
                          ]
                        },
                        "sequence_types": {
                          "items": {
                            "type": "string"
                          },
                          "type": [
                            "null",
                            "array"
                          ]
                        }
                      },
                      "type": [
                        "null",
                        "object"
                      ]
                    },
                    "title": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "patent_number",
                    "provider"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Get Patent Bibliography",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/get_citations": {
      "post": {
        "description": "Retrieve the cited references (prior art) for a patent: the patent and non-patent-literature citations from its search report, each with a relevance category (X = relevant alone, Y = relevant in combination, A = background) and the relevant claims and passages. Served via EPO OPS for any office's publication; with a Lens.org token configured, Lens is preferred and additionally returns FORWARD citations (later patents citing this one) plus resolved scholarly ids on non-patent literature. Accepts a publication number (e.g. 'EP1000000B1', 'US7456156B2'). Retrieves patent data from official patent office databases.",
        "operationId": "get_citations",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "patent_number": {
                    "description": "Patent publication number (any office; served via EPO OPS or Lens).",
                    "type": "string"
                  },
                  "provider": {
                    "description": "Provider id; defaults to epo_ops (works for any office's publication). Use jpo for JPO-native cited documents on a Japanese application number, inpi for the French search-report citations on a FR publication, lens for Lens.org backward + forward citations with resolved scholarly links.",
                    "enum": [
                      "epo_ops",
                      "jpo",
                      "inpi",
                      "lens"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "patent_number"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "citations": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "categories": {
                            "items": {
                              "additionalProperties": false,
                              "properties": {
                                "category": {
                                  "type": "string"
                                },
                                "relevant_claims": {
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "type": [
                              "null",
                              "array"
                            ]
                          },
                          "cited_by": {
                            "type": "string"
                          },
                          "lens_id": {
                            "type": "string"
                          },
                          "npl_text": {
                            "type": "string"
                          },
                          "patent_number": {
                            "type": "string"
                          },
                          "phase": {
                            "type": "string"
                          },
                          "relevant_passages": {
                            "items": {
                              "type": "string"
                            },
                            "type": [
                              "null",
                              "array"
                            ]
                          },
                          "sequence": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "citing_patents": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "categories": {
                            "items": {
                              "additionalProperties": false,
                              "properties": {
                                "category": {
                                  "type": "string"
                                },
                                "relevant_claims": {
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "type": [
                              "null",
                              "array"
                            ]
                          },
                          "cited_by": {
                            "type": "string"
                          },
                          "lens_id": {
                            "type": "string"
                          },
                          "npl_text": {
                            "type": "string"
                          },
                          "patent_number": {
                            "type": "string"
                          },
                          "phase": {
                            "type": "string"
                          },
                          "relevant_passages": {
                            "items": {
                              "type": "string"
                            },
                            "type": [
                              "null",
                              "array"
                            ]
                          },
                          "sequence": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "count": {
                      "type": "integer"
                    },
                    "patent_number": {
                      "type": "string"
                    },
                    "provider": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "patent_number",
                    "provider",
                    "count",
                    "citations"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Get Patent Citations",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/get_claims": {
      "post": {
        "description": "Retrieve patent claims for a specific patent number. Returns structured claim data. The correct provider is auto-selected from the patent number. Accepts US grants ('US 11,646,472 B2'), applications ('17/248,024'), publications ('US20250087686A1'), EPO patents ('EP2549025A1'), or German patents ('DE102020001234A1'). Optional provider override: 'epo_ops', 'uspto', 'dpma'. Retrieves patent data from official patent office databases.",
        "operationId": "get_claims",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "patent_number": {
                    "description": "Patent number, e.g. EP2549025, US10000000B2, or DE102004035851.",
                    "type": "string"
                  },
                  "provider": {
                    "description": "Patent office / provider ID to use; omit to auto-select the best one for the input.",
                    "enum": [
                      "epo_ops",
                      "uspto",
                      "dpma",
                      "ipau",
                      "lens"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "patent_number"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "claims": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "number": {
                            "type": "string"
                          },
                          "text": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "number",
                          "text"
                        ],
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "country": {
                      "type": "string"
                    },
                    "doc_number": {
                      "type": "string"
                    },
                    "kind": {
                      "type": "string"
                    },
                    "language": {
                      "type": "string"
                    },
                    "patent_number": {
                      "type": "string"
                    },
                    "provider": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "patent_number",
                    "provider",
                    "claims"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Get Patent Claims",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/get_classification": {
      "post": {
        "description": "Look up a CPC/IPC/FI classification symbol (e.g. H04W84/18, A01B) for its title, hierarchy ancestors, structured definitions (statements, limiting/informative references) and cross-scheme concordances. Served primarily from the built-in reference data (no credentials needed), with EPO OPS as a fallback when configured; use classification_tree to browse children and classification_catchword to find a place by keyword. Results are candidate references to verify against the official scheme, not legal determinations.",
        "operationId": "get_classification",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "as_of": {
                    "description": "Point-in-time date YYYY-MM-DD: resolve the scheme edition in force on that date (reference data only)",
                    "type": "string"
                  },
                  "include_ancestors": {
                    "description": "Include ancestor classifications in hierarchy (default true)",
                    "type": "boolean"
                  },
                  "symbol": {
                    "description": "CPC or IPC classification symbol (e.g. H04W84/18, H, A01B)",
                    "type": "string"
                  }
                },
                "required": [
                  "symbol"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "ancestors": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "has_children": {
                            "type": "boolean"
                          },
                          "level": {
                            "type": "integer"
                          },
                          "symbol": {
                            "type": "string"
                          },
                          "title": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "symbol",
                          "title",
                          "level"
                        ],
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "children": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "has_children": {
                            "type": "boolean"
                          },
                          "level": {
                            "type": "integer"
                          },
                          "symbol": {
                            "type": "string"
                          },
                          "title": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "symbol",
                          "title",
                          "level"
                        ],
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "concordances": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "scheme": {
                            "type": "string"
                          },
                          "symbol": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "scheme",
                          "symbol"
                        ],
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "definitions": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "body": {
                            "type": "string"
                          },
                          "part": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "part",
                          "body"
                        ],
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "edition": {
                      "type": "string"
                    },
                    "has_children": {
                      "type": "boolean"
                    },
                    "level": {
                      "type": "integer"
                    },
                    "provider": {
                      "type": "string"
                    },
                    "scheme_type": {
                      "type": "string"
                    },
                    "symbol": {
                      "type": "string"
                    },
                    "title": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "symbol",
                    "title",
                    "provider",
                    "level",
                    "children"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Get Classification",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/get_continuity": {
      "post": {
        "description": "Retrieve patent continuity data (parent/child application chain). Shows continuation, divisional, continuation-in-part, and provisional relationships. Served by USPTO for US patents and by JPO for JP patents (divisional chain); for cross-office relationships, use get_patent_family instead. Accepts US grants ('US 11,646,472 B2'), applications ('17/248,024'), publications ('US20250087686A1'), or JP application numbers. Returns parents[] and children[] with application numbers, patent numbers, filing dates, and relationship types. Retrieves patent data from official patent office databases.",
        "operationId": "get_continuity",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "patent_number": {
                    "description": "Patent number, e.g. EP2549025, US10000000B2, or DE102004035851.",
                    "type": "string"
                  },
                  "provider": {
                    "description": "Patent office / provider ID to use; omit to auto-select the best one for the input.",
                    "enum": [
                      "uspto",
                      "jpo"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "patent_number"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "children": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "application_number": {
                            "type": "string"
                          },
                          "filing_date": {
                            "type": "string"
                          },
                          "patent_number": {
                            "type": "string"
                          },
                          "relationship_type": {
                            "type": "string"
                          },
                          "status": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "application_number",
                          "relationship_type"
                        ],
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "parents": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "application_number": {
                            "type": "string"
                          },
                          "filing_date": {
                            "type": "string"
                          },
                          "patent_number": {
                            "type": "string"
                          },
                          "relationship_type": {
                            "type": "string"
                          },
                          "status": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "application_number",
                          "relationship_type"
                        ],
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "patent_number": {
                      "type": "string"
                    },
                    "provider": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "patent_number",
                    "provider",
                    "parents",
                    "children"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Get Patent Continuity",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/get_description": {
      "post": {
        "description": "Retrieve patent description/specification text. The correct provider is auto-selected from the patent number. Accepts US grants ('US 11,646,472 B2'), applications ('17/248,024'), publications ('US20250087686A1'), EPO patents ('EP2549025A1'), or German patents ('DE102020001234A1'). Supports multi-language for EPO patents (use 'language' parameter). Optional provider override: 'epo_ops', 'uspto', 'dpma'. Retrieves patent data from official patent office databases.",
        "operationId": "get_description",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "language": {
                    "description": "Preferred language code, e.g. en or de, when the document exists in several languages.",
                    "type": "string"
                  },
                  "patent_number": {
                    "description": "Patent number, e.g. EP2549025, US10000000B2, or DE102004035851.",
                    "type": "string"
                  },
                  "provider": {
                    "description": "Patent office / provider ID to use; omit to auto-select the best one for the input.",
                    "enum": [
                      "epo_ops",
                      "uspto",
                      "dpma",
                      "ipau",
                      "lens"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "patent_number"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "country": {
                      "type": "string"
                    },
                    "doc_number": {
                      "type": "string"
                    },
                    "kind": {
                      "type": "string"
                    },
                    "language": {
                      "type": "string"
                    },
                    "patent_number": {
                      "type": "string"
                    },
                    "provider": {
                      "type": "string"
                    },
                    "text": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "patent_number",
                    "provider",
                    "text"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Get Patent Description",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/get_design": {
      "post": {
        "description": "Retrieve a single registered design (EUIPO by default) by its design number (e.g. '001234567-0001'): status, applicants, Locarno classes, indication of product and dates. Use get_design_media for the design views. Also available for ipau, jpo, dpma and inpi (France, e.g. 'FR20140182') via the provider parameter. Provider defaults to euipo. Retrieves patent data from official patent office databases.",
        "operationId": "get_design",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "design_number": {
                    "description": "EUIPO design number (e.g. 001234567-0001); for inpi the French design application number (e.g. FR20140182).",
                    "type": "string"
                  },
                  "provider": {
                    "description": "Design register: euipo (default, EU), ipau (IP Australia), jpo (Japan, by application number), dpma (Germany) or inpi (France).",
                    "enum": [
                      "euipo",
                      "ipau",
                      "jpo",
                      "dpma",
                      "inpi"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "design_number"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "application_date": {
                      "type": "string"
                    },
                    "application_number": {
                      "type": "string"
                    },
                    "classifications": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "scheme": {
                            "type": "string"
                          },
                          "symbol": {
                            "type": "string"
                          },
                          "version": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "symbol"
                        ],
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "country": {
                      "type": "string"
                    },
                    "design": {
                      "additionalProperties": true,
                      "type": "object"
                    },
                    "design_number": {
                      "type": "string"
                    },
                    "expiry_date": {
                      "type": "string"
                    },
                    "owners": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "country": {
                            "type": "string"
                          },
                          "name": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "name"
                        ],
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "provider": {
                      "type": "string"
                    },
                    "registration_date": {
                      "type": "string"
                    },
                    "registration_number": {
                      "type": "string"
                    },
                    "status": {
                      "type": "string"
                    },
                    "status_date": {
                      "type": "string"
                    },
                    "title": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "design_number",
                    "provider"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Get Design",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/get_design_media": {
      "post": {
        "description": "Retrieve a registered design's view image (EUIPO registered Community design) as PNG/JPEG, returned with a temporary URL for viewing in a browser. Provide the design number and an optional 1-based view index. For EUIPO, media_type selects the representation: image (default), thumbnail, model (the 3D model of a 3D design, openable from the temporary URL) or video (the design's MP4 video, playable directly from the temporary URL). dpma and inpi (France) support only image. Provider defaults to euipo. Retrieves patent data from official patent office databases.",
        "operationId": "get_design_media",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "design_number": {
                    "description": "EUIPO design number (e.g. 001234567-0001); for inpi the French design application number, optionally with a model reference (e.g. FR20140182 or FR20140184-001).",
                    "type": "string"
                  },
                  "media_type": {
                    "description": "Which representation to return (EUIPO only; defaults to image). 'thumbnail' is a small view image; 'model' returns the 3D model of a 3D design; 'video' returns the design's MP4 video (both openable/playable from the returned temporary URL). dpma supports only image.",
                    "enum": [
                      "image",
                      "thumbnail",
                      "model",
                      "video"
                    ],
                    "type": "string"
                  },
                  "provider": {
                    "description": "Design image: euipo (default, EU), dpma (Germany) or inpi (France).",
                    "enum": [
                      "euipo",
                      "dpma",
                      "ipau",
                      "inpi"
                    ],
                    "type": "string"
                  },
                  "view": {
                    "description": "1-based design view index (default 1; 0 also selects the default).",
                    "minimum": 0,
                    "type": "integer"
                  }
                },
                "required": [
                  "design_number"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "design_number": {
                      "type": "string"
                    },
                    "media_type": {
                      "type": "string"
                    },
                    "mime_type": {
                      "type": "string"
                    },
                    "provider": {
                      "type": "string"
                    },
                    "size_bytes": {
                      "type": "integer"
                    },
                    "temporary_url": {
                      "type": "string"
                    },
                    "view": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "design_number",
                    "provider"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Get Design Media",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/get_fulltext": {
      "post": {
        "description": "Retrieve complete patent document including title, abstract, description, and claims. The correct provider is auto-selected from the patent number. Accepts US grants ('US 11,646,472 B2'), applications ('17/248,024'), publications ('US20250087686A1'), EPO patents ('EP2549025A1'), or German patents ('DE102020001234A1'). Supports multi-language for EPO patents. Optional provider override: 'epo_ops', 'uspto', 'dpma'. Retrieves patent data from official patent office databases.",
        "operationId": "get_fulltext",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "language": {
                    "description": "Preferred language code, e.g. en or de, when the document exists in several languages.",
                    "type": "string"
                  },
                  "patent_number": {
                    "description": "Patent number, e.g. EP2549025, US10000000B2, or DE102004035851.",
                    "type": "string"
                  },
                  "provider": {
                    "description": "Patent office / provider ID to use; omit to auto-select the best one for the input.",
                    "enum": [
                      "epo_ops",
                      "uspto",
                      "dpma",
                      "ipau",
                      "lens"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "patent_number"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "abstract": {
                      "type": "string"
                    },
                    "claims": {
                      "type": "string"
                    },
                    "country": {
                      "type": "string"
                    },
                    "description": {
                      "type": "string"
                    },
                    "doc_number": {
                      "type": "string"
                    },
                    "kind": {
                      "type": "string"
                    },
                    "language": {
                      "type": "string"
                    },
                    "patent_number": {
                      "type": "string"
                    },
                    "provider": {
                      "type": "string"
                    },
                    "raw_xml": {
                      "type": "string"
                    },
                    "title": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "patent_number",
                    "provider"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Get Full Patent Text",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/get_legal_status": {
      "post": {
        "description": "Retrieve the legal status of a patent as reported by the patent office: the office's status value where provided, the status date, and the legal/prosecution events. The correct provider is auto-selected from the patent number. USPTO reports an application status such as 'Patented Case'; EPO and DPMA report legal events. For EP patents it also reports EU Unitary Patent status (the request-for-unitary-effect timeline: filed, registered, or rejected) when present. This tool does not compute an in-force or expired determination - infer current standing from the events (for example maintenance-fee payments or lapses) and use get_patent_term for expiry dates. Accepts US grants ('US 11,646,472 B2'), applications ('17/248,024'), publications ('US20250087686A1'), EPO patents ('EP2549025A1'), German patents ('DE102020001234A1'), or by-application-number lookups for JP (jpo) and AU (ipau). Optional provider override: 'epo_ops', 'uspto', 'dpma', 'ipau', 'jpo', 'tipo'. Retrieves patent data from official patent office databases.",
        "operationId": "get_legal_status",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "patent_number": {
                    "description": "Patent number, e.g. EP2549025, US10000000B2, or DE102004035851.",
                    "type": "string"
                  },
                  "provider": {
                    "description": "Patent office / provider ID to use; omit to auto-select the best one for the input.",
                    "enum": [
                      "epo_ops",
                      "uspto",
                      "dpma",
                      "ipau",
                      "jpo",
                      "tipo",
                      "inpi",
                      "lens"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "patent_number"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "country": {
                      "type": "string"
                    },
                    "events": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "code": {
                            "type": "string"
                          },
                          "country": {
                            "type": "string"
                          },
                          "date": {
                            "type": "string"
                          },
                          "description": {
                            "type": "string"
                          },
                          "effective_date": {
                            "type": "string"
                          },
                          "impact": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "date",
                          "code",
                          "description"
                        ],
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "lens_calculated": {
                      "additionalProperties": false,
                      "properties": {
                        "anticipated_term_date": {
                          "type": "string"
                        },
                        "application_expiry_date": {
                          "type": "string"
                        },
                        "calculation_log": {
                          "items": {
                            "type": "string"
                          },
                          "type": [
                            "null",
                            "array"
                          ]
                        },
                        "discontinuation_date": {
                          "type": "string"
                        },
                        "grant_date": {
                          "type": "string"
                        },
                        "granted": {
                          "type": [
                            "null",
                            "boolean"
                          ]
                        },
                        "has_spc": {
                          "type": [
                            "null",
                            "boolean"
                          ]
                        },
                        "patent_status": {
                          "type": "string"
                        },
                        "term_extension_days": {
                          "type": [
                            "null",
                            "integer"
                          ]
                        }
                      },
                      "type": [
                        "null",
                        "object"
                      ]
                    },
                    "patent_number": {
                      "type": "string"
                    },
                    "provider": {
                      "type": "string"
                    },
                    "status": {
                      "type": "string"
                    },
                    "status_date": {
                      "type": "string"
                    },
                    "unitary_patent": {
                      "additionalProperties": false,
                      "properties": {
                        "registration_date": {
                          "type": "string"
                        },
                        "request_date": {
                          "type": "string"
                        },
                        "status": {
                          "type": "string"
                        },
                        "status_code": {
                          "type": "string"
                        },
                        "statuses": {
                          "items": {
                            "additionalProperties": false,
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "date": {
                                "type": "string"
                              },
                              "text": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "date",
                              "code",
                              "text"
                            ],
                            "type": "object"
                          },
                          "type": [
                            "null",
                            "array"
                          ]
                        },
                        "unitary": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "unitary"
                      ],
                      "type": [
                        "null",
                        "object"
                      ]
                    }
                  },
                  "required": [
                    "patent_number",
                    "provider",
                    "status",
                    "events"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Get Legal Status",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/get_manual_section": {
      "post": {
        "description": "Fetch the full text of one examination-manual section by manual code and section number (e.g. code=MPEP section=2141, or code=EPO_EPC section=g_vi_3), with its breadcrumb (ancestor headings) and child sections. Use reference_search or list_manuals first to find the right code/section. Quote the citation when relying on guidance. For prosecution-history work, pass as_of (YYYY-MM-DD) to get the guidance edition that was in force on a given date. This is the classification taxonomy and examination guidance - not the patent corpus and not the statutes themselves. Results are candidate references to verify against the primary source, not legal determinations. English only.",
        "operationId": "get_manual_section",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "as_of": {
                    "description": "Point-in-time date YYYY-MM-DD: return the edition in force on that date (e.g. an office-action date); ignored when edition is given",
                    "type": "string"
                  },
                  "code": {
                    "description": "Manual code, e.g. MPEP, TMEP, EPO_EPC (see list_manuals)",
                    "type": "string"
                  },
                  "edition": {
                    "description": "Specific edition; defaults to the active one",
                    "type": "string"
                  },
                  "section": {
                    "description": "Section number or slug, e.g. 2141, g_vi_3",
                    "type": "string"
                  }
                },
                "required": [
                  "code",
                  "section"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "body": {
                      "type": "string"
                    },
                    "breadcrumb": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "depth": {
                            "type": "integer"
                          },
                          "heading": {
                            "type": "string"
                          },
                          "parent": {
                            "type": "string"
                          },
                          "section_no": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "section_no"
                        ],
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "children": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "depth": {
                            "type": "integer"
                          },
                          "heading": {
                            "type": "string"
                          },
                          "parent": {
                            "type": "string"
                          },
                          "section_no": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "section_no"
                        ],
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "citation": {
                      "type": "string"
                    },
                    "code": {
                      "type": "string"
                    },
                    "edition": {
                      "type": "string"
                    },
                    "heading": {
                      "type": "string"
                    },
                    "jurisdiction": {
                      "type": "string"
                    },
                    "section_no": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "code",
                    "edition",
                    "section_no",
                    "breadcrumb",
                    "children"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Get Examination Manual Section",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/get_owner": {
      "post": {
        "description": "Retrieve a single EUIPO owner by identifier (from search_owners). type=applicant returns an IP owner; type=representative returns a professional representative, including its member attorneys. Returns the full record: legal name/form, address, correspondence address and (for representatives) association members. Provider defaults to euipo. Retrieves patent data from official patent office databases.",
        "operationId": "get_owner",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "identifier": {
                    "description": "EUIPO owner identifier (e.g. '10843').",
                    "type": "string"
                  },
                  "provider": {
                    "description": "Owner directory. Defaults to euipo (EU).",
                    "enum": [
                      "euipo"
                    ],
                    "type": "string"
                  },
                  "type": {
                    "description": "applicant = IP owner; representative = professional representative.",
                    "enum": [
                      "applicant",
                      "representative"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "type",
                  "identifier"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "identifier": {
                      "type": "string"
                    },
                    "owner": {
                      "additionalProperties": true,
                      "type": "object"
                    },
                    "provider": {
                      "type": "string"
                    },
                    "type": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "provider",
                    "type",
                    "identifier"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Get Owner",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/get_patent_documents": {
      "post": {
        "description": "List the file-wrapper (prosecution) documents for a patent application: office actions, applicant remarks (Remarks), claim amendments, IDS, examiner's amendments, and the rest of the file wrapper. Each entry has the document type, mail/official date, direction, and download URLs (pass one to download_patent_document). Optional document_type filter (matches the document code or description, e.g. 'CTNF' or 'remarks') and direction filter ('incoming' or 'outgoing'). USPTO (US file wrapper; coverage back to Jan 2001) and INPI (France: the published fascicule per kind code with its section page map). Retrieves patent data from official patent office databases.",
        "operationId": "get_patent_documents",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "direction": {
                    "description": "Optional filter: 'incoming' or 'outgoing'.",
                    "type": "string"
                  },
                  "document_type": {
                    "description": "Optional filter: a document code or description substring (e.g. 'CTNF', 'remarks').",
                    "type": "string"
                  },
                  "patent_number": {
                    "description": "US patent, publication, or application number.",
                    "type": "string"
                  },
                  "provider": {
                    "description": "Provider id; defaults to routing by the patent number (USPTO for US, INPI for FR).",
                    "type": "string"
                  }
                },
                "required": [
                  "patent_number"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "application_number": {
                      "type": "string"
                    },
                    "count": {
                      "type": "integer"
                    },
                    "documents": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "date": {
                            "type": "string"
                          },
                          "description": {
                            "type": "string"
                          },
                          "direction": {
                            "type": "string"
                          },
                          "document_code": {
                            "type": "string"
                          },
                          "document_id": {
                            "type": "string"
                          },
                          "downloads": {
                            "items": {
                              "additionalProperties": false,
                              "properties": {
                                "download_url": {
                                  "type": "string"
                                },
                                "mime_type": {
                                  "type": "string"
                                },
                                "page_count": {
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "type": [
                              "null",
                              "array"
                            ]
                          },
                          "metadata": {
                            "additionalProperties": true,
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "patent_number": {
                      "type": "string"
                    },
                    "provider": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "patent_number",
                    "provider",
                    "count",
                    "documents"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Get Patent Documents",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/get_patent_family": {
      "post": {
        "description": "Retrieve patent family (INPADOC) containing all related patents worldwide through priority claims. Always uses EPO regardless of patent country. Accepts US grants ('US 11,646,472 B2'), applications ('17/248,024'), publications ('US20250087686A1'), EPO patents ('EP2549025A1'), or German patents ('DE102020001234A1'). Returns family ID, member count, countries, and member list. Set include_biblio=true for titles and applicants. Large families are capped at max_members (default 100). Retrieves patent data from official patent office databases.",
        "operationId": "get_patent_family",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "include_biblio": {
                    "type": "boolean"
                  },
                  "max_members": {
                    "minimum": 0,
                    "type": "integer"
                  },
                  "patent_number": {
                    "type": "string"
                  },
                  "provider": {
                    "enum": [
                      "epo_ops",
                      "ipau",
                      "tipo",
                      "jpo",
                      "lens"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "patent_number"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "countries": {
                      "items": {
                        "type": "string"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "country": {
                      "type": "string"
                    },
                    "family_id": {
                      "type": "string"
                    },
                    "members": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "applicants": {
                            "items": {
                              "type": "string"
                            },
                            "type": [
                              "null",
                              "array"
                            ]
                          },
                          "application_number": {
                            "type": "string"
                          },
                          "country": {
                            "type": "string"
                          },
                          "date": {
                            "type": "string"
                          },
                          "doc_number": {
                            "type": "string"
                          },
                          "kind": {
                            "type": "string"
                          },
                          "status": {
                            "type": "string"
                          },
                          "title": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "country",
                          "doc_number"
                        ],
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "patent_number": {
                      "type": "string"
                    },
                    "provider": {
                      "type": "string"
                    },
                    "total_members": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "patent_number",
                    "provider",
                    "total_members",
                    "members"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Get Patent Family",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/get_patent_image": {
      "post": {
        "description": "Retrieve a page of a patent's images - drawings, the full document, or the search report - rendered as PNG. Returns the image plus the catalog of available sections and page counts so you can page through. Use section to choose ('Drawing' or 'FullDocument'; defaults to Drawing) and page for the 1-based page. For application (A) publications the search report is usually contained within FullDocument rather than offered as a separate section. Served via EPO OPS images for any office's publication; provider=inpi returns the single abstract drawing of a French publication (INPI publishes one image per publication, so section and page are ignored for inpi). Accepts a publication number (e.g. 'EP1000000B1', 'US7456156B2'). Retrieves patent data from official patent office databases.",
        "operationId": "get_patent_image",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "page": {
                    "description": "1-based page within the section (default 1; 0 also selects the default).",
                    "minimum": 0,
                    "type": "integer"
                  },
                  "patent_number": {
                    "description": "Patent publication number (any office; served via EPO OPS images).",
                    "type": "string"
                  },
                  "provider": {
                    "description": "Provider id; defaults to epo_ops.",
                    "type": "string"
                  },
                  "section": {
                    "description": "Image section, e.g. 'Drawing' or 'FullDocument'. Defaults to Drawing, else the first available.",
                    "type": "string"
                  }
                },
                "required": [
                  "patent_number"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "available_sections": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "name": {
                            "type": "string"
                          },
                          "page_count": {
                            "type": "integer"
                          }
                        },
                        "required": [
                          "name"
                        ],
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "mime_type": {
                      "type": "string"
                    },
                    "page": {
                      "type": "integer"
                    },
                    "patent_number": {
                      "type": "string"
                    },
                    "provider": {
                      "type": "string"
                    },
                    "section": {
                      "type": "string"
                    },
                    "temporary_url": {
                      "type": "string"
                    },
                    "total_pages": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "patent_number",
                    "provider"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Get Patent Image",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/get_patent_summary": {
      "post": {
        "description": "Get a comprehensive patent snapshot in one call: bibliography (title, applicants, inventors, dates, classifications), legal status, patent family size and countries, and patent term/expiry. Runs multiple lookups concurrently and returns partial results if some lookups fail. Retrieves patent data from official patent office databases.",
        "operationId": "get_patent_summary",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "patent_number": {
                    "description": "Patent number (e.g. EP1000000B1, US11234567, DE10027362)",
                    "type": "string"
                  },
                  "provider": {
                    "description": "Provider to use (auto-detected from patent number if omitted)",
                    "type": "string"
                  }
                },
                "required": [
                  "patent_number"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "bibliography": {
                      "additionalProperties": false,
                      "properties": {
                        "agents": {
                          "items": {
                            "additionalProperties": false,
                            "properties": {
                              "country": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "name"
                            ],
                            "type": "object"
                          },
                          "type": [
                            "null",
                            "array"
                          ]
                        },
                        "applicants": {
                          "items": {
                            "additionalProperties": false,
                            "properties": {
                              "country": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "name"
                            ],
                            "type": "object"
                          },
                          "type": [
                            "null",
                            "array"
                          ]
                        },
                        "application_date": {
                          "type": "string"
                        },
                        "classifications": {
                          "items": {
                            "additionalProperties": false,
                            "properties": {
                              "scheme": {
                                "type": "string"
                              },
                              "symbol": {
                                "type": "string"
                              },
                              "version": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "symbol"
                            ],
                            "type": "object"
                          },
                          "type": [
                            "null",
                            "array"
                          ]
                        },
                        "country": {
                          "type": "string"
                        },
                        "doc_number": {
                          "type": "string"
                        },
                        "inventors": {
                          "items": {
                            "additionalProperties": false,
                            "properties": {
                              "country": {
                                "type": "string"
                              },
                              "name": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "name"
                            ],
                            "type": "object"
                          },
                          "type": [
                            "null",
                            "array"
                          ]
                        },
                        "ipc_classification": {
                          "type": "string"
                        },
                        "kind": {
                          "type": "string"
                        },
                        "links": {
                          "items": {
                            "additionalProperties": false,
                            "properties": {
                              "label": {
                                "type": "string"
                              },
                              "url": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "label",
                              "url"
                            ],
                            "type": "object"
                          },
                          "type": [
                            "null",
                            "array"
                          ]
                        },
                        "patent_number": {
                          "type": "string"
                        },
                        "priorities": {
                          "items": {
                            "additionalProperties": false,
                            "properties": {
                              "country": {
                                "type": "string"
                              },
                              "date": {
                                "type": "string"
                              },
                              "doc_number": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "type": [
                            "null",
                            "array"
                          ]
                        },
                        "provider": {
                          "type": "string"
                        },
                        "publication_date": {
                          "type": "string"
                        },
                        "right_type": {
                          "type": "string"
                        },
                        "sequence_listing": {
                          "additionalProperties": false,
                          "properties": {
                            "count": {
                              "type": "integer"
                            },
                            "length_buckets": {
                              "items": {
                                "type": "string"
                              },
                              "type": [
                                "null",
                                "array"
                              ]
                            },
                            "organisms": {
                              "items": {
                                "additionalProperties": false,
                                "properties": {
                                  "name": {
                                    "type": "string"
                                  },
                                  "tax_id": {
                                    "type": "integer"
                                  }
                                },
                                "type": "object"
                              },
                              "type": [
                                "null",
                                "array"
                              ]
                            },
                            "sequence_types": {
                              "items": {
                                "type": "string"
                              },
                              "type": [
                                "null",
                                "array"
                              ]
                            }
                          },
                          "type": [
                            "null",
                            "object"
                          ]
                        },
                        "title": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "patent_number",
                        "provider"
                      ],
                      "type": [
                        "null",
                        "object"
                      ]
                    },
                    "family_countries": {
                      "items": {
                        "type": "string"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "family_size": {
                      "type": "integer"
                    },
                    "legal_status": {
                      "additionalProperties": false,
                      "properties": {
                        "country": {
                          "type": "string"
                        },
                        "events": {
                          "items": {
                            "additionalProperties": false,
                            "properties": {
                              "code": {
                                "type": "string"
                              },
                              "country": {
                                "type": "string"
                              },
                              "date": {
                                "type": "string"
                              },
                              "description": {
                                "type": "string"
                              },
                              "effective_date": {
                                "type": "string"
                              },
                              "impact": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "date",
                              "code",
                              "description"
                            ],
                            "type": "object"
                          },
                          "type": [
                            "null",
                            "array"
                          ]
                        },
                        "lens_calculated": {
                          "additionalProperties": false,
                          "properties": {
                            "anticipated_term_date": {
                              "type": "string"
                            },
                            "application_expiry_date": {
                              "type": "string"
                            },
                            "calculation_log": {
                              "items": {
                                "type": "string"
                              },
                              "type": [
                                "null",
                                "array"
                              ]
                            },
                            "discontinuation_date": {
                              "type": "string"
                            },
                            "grant_date": {
                              "type": "string"
                            },
                            "granted": {
                              "type": [
                                "null",
                                "boolean"
                              ]
                            },
                            "has_spc": {
                              "type": [
                                "null",
                                "boolean"
                              ]
                            },
                            "patent_status": {
                              "type": "string"
                            },
                            "term_extension_days": {
                              "type": [
                                "null",
                                "integer"
                              ]
                            }
                          },
                          "type": [
                            "null",
                            "object"
                          ]
                        },
                        "patent_number": {
                          "type": "string"
                        },
                        "provider": {
                          "type": "string"
                        },
                        "status": {
                          "type": "string"
                        },
                        "status_date": {
                          "type": "string"
                        },
                        "unitary_patent": {
                          "additionalProperties": false,
                          "properties": {
                            "registration_date": {
                              "type": "string"
                            },
                            "request_date": {
                              "type": "string"
                            },
                            "status": {
                              "type": "string"
                            },
                            "status_code": {
                              "type": "string"
                            },
                            "statuses": {
                              "items": {
                                "additionalProperties": false,
                                "properties": {
                                  "code": {
                                    "type": "string"
                                  },
                                  "date": {
                                    "type": "string"
                                  },
                                  "text": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "date",
                                  "code",
                                  "text"
                                ],
                                "type": "object"
                              },
                              "type": [
                                "null",
                                "array"
                              ]
                            },
                            "unitary": {
                              "type": "boolean"
                            }
                          },
                          "required": [
                            "unitary"
                          ],
                          "type": [
                            "null",
                            "object"
                          ]
                        }
                      },
                      "required": [
                        "patent_number",
                        "provider",
                        "status",
                        "events"
                      ],
                      "type": [
                        "null",
                        "object"
                      ]
                    },
                    "patent_number": {
                      "type": "string"
                    },
                    "patent_term": {
                      "additionalProperties": false,
                      "properties": {
                        "country": {
                          "type": "string"
                        },
                        "extensions": {
                          "items": {
                            "type": "string"
                          },
                          "type": [
                            "null",
                            "array"
                          ]
                        },
                        "filing_date": {
                          "type": "string"
                        },
                        "grant_date": {
                          "type": "string"
                        },
                        "last_paid_year": {
                          "type": "string"
                        },
                        "next_annuity_date": {
                          "type": "string"
                        },
                        "note": {
                          "type": "string"
                        },
                        "office_reported_expiry": {
                          "type": "string"
                        },
                        "patent_number": {
                          "type": "string"
                        },
                        "priorities": {
                          "items": {
                            "additionalProperties": false,
                            "properties": {
                              "country": {
                                "type": "string"
                              },
                              "date": {
                                "type": "string"
                              },
                              "doc_number": {
                                "type": "string"
                              }
                            },
                            "type": "object"
                          },
                          "type": [
                            "null",
                            "array"
                          ]
                        },
                        "provider": {
                          "type": "string"
                        },
                        "publication_date": {
                          "type": "string"
                        },
                        "term_adjustment_days": {
                          "type": [
                            "null",
                            "integer"
                          ]
                        }
                      },
                      "required": [
                        "patent_number",
                        "provider"
                      ],
                      "type": [
                        "null",
                        "object"
                      ]
                    },
                    "provider": {
                      "type": "string"
                    },
                    "warnings": {
                      "items": {
                        "type": "string"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    }
                  },
                  "required": [
                    "patent_number",
                    "provider"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Get Patent Summary",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/get_patent_term": {
      "post": {
        "description": "Return the raw, office-provided facts relevant to patent term. This tool computes nothing and asserts no expiration date: patent term depends on the right type, whether the term runs from filing or grant, SPC/PTE extensions, terminal disclaimers, renewal-fee payment (per designated state for EP), and legislation that has changed over time. Fields are populated only when the office actually provides them. USPTO returns filing date, grant date and PTA (patent term adjustment) days. JPO, TIPO and IP Australia return an office-reported expiry/term-end date verbatim (plus grant/annuity dates where available). EPO and DPMA publish no term, so they return the filing date and a pointer to get_legal_status. To assess whether a right is in force or expired, combine these facts with get_legal_status / get_register_events. Retrieves patent data from official patent office databases.",
        "operationId": "get_patent_term",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "patent_number": {
                    "description": "Patent number, e.g. EP2549025, US10000000B2, or DE102004035851.",
                    "type": "string"
                  },
                  "provider": {
                    "description": "Patent office / provider ID to use; omit to auto-select the best one for the input.",
                    "enum": [
                      "epo_ops",
                      "uspto",
                      "dpma",
                      "ipau",
                      "tipo",
                      "jpo"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "patent_number"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "country": {
                      "type": "string"
                    },
                    "extensions": {
                      "items": {
                        "type": "string"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "filing_date": {
                      "type": "string"
                    },
                    "grant_date": {
                      "type": "string"
                    },
                    "last_paid_year": {
                      "type": "string"
                    },
                    "next_annuity_date": {
                      "type": "string"
                    },
                    "note": {
                      "type": "string"
                    },
                    "office_reported_expiry": {
                      "type": "string"
                    },
                    "patent_number": {
                      "type": "string"
                    },
                    "priorities": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "country": {
                            "type": "string"
                          },
                          "date": {
                            "type": "string"
                          },
                          "doc_number": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "provider": {
                      "type": "string"
                    },
                    "publication_date": {
                      "type": "string"
                    },
                    "term_adjustment_days": {
                      "type": [
                        "null",
                        "integer"
                      ]
                    }
                  },
                  "required": [
                    "patent_number",
                    "provider"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Get Patent Term",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/get_petition": {
      "post": {
        "description": "Get a specific USPTO petition decision by its record identifier (petitionDecisionRecordIdentifier, e.g. from search_petitions). Retrieves patent data from official patent office databases.",
        "operationId": "get_petition",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "provider": {
                    "description": "Patent office / provider ID to use; omit to auto-select the best one for the input.",
                    "enum": [
                      "uspto"
                    ],
                    "type": "string"
                  },
                  "record_id": {
                    "description": "Petition decision record identifier (petitionDecisionRecordIdentifier).",
                    "type": "string"
                  }
                },
                "required": [
                  "record_id"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "petition": {
                      "additionalProperties": false,
                      "properties": {
                        "application_number": {
                          "type": "string"
                        },
                        "deciding_office": {
                          "type": "string"
                        },
                        "decision_date": {
                          "type": "string"
                        },
                        "decision_type": {
                          "type": "string"
                        },
                        "decision_type_text": {
                          "type": "string"
                        },
                        "group_art_unit": {
                          "type": "string"
                        },
                        "invention_title": {
                          "type": "string"
                        },
                        "inventors": {
                          "items": {
                            "type": "string"
                          },
                          "type": [
                            "null",
                            "array"
                          ]
                        },
                        "issues_considered": {
                          "items": {
                            "type": "string"
                          },
                          "type": [
                            "null",
                            "array"
                          ]
                        },
                        "patent_number": {
                          "type": "string"
                        },
                        "petition_mail_date": {
                          "type": "string"
                        },
                        "petition_type_code": {
                          "type": "integer"
                        },
                        "petition_type_text": {
                          "type": "string"
                        },
                        "prosecution_status": {
                          "type": "string"
                        },
                        "record_id": {
                          "type": "string"
                        },
                        "rules": {
                          "items": {
                            "type": "string"
                          },
                          "type": [
                            "null",
                            "array"
                          ]
                        },
                        "statutes": {
                          "items": {
                            "type": "string"
                          },
                          "type": [
                            "null",
                            "array"
                          ]
                        },
                        "technology_center": {
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "petition_documents": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "date": {
                            "type": "string"
                          },
                          "description": {
                            "type": "string"
                          },
                          "direction": {
                            "type": "string"
                          },
                          "document_code": {
                            "type": "string"
                          },
                          "document_id": {
                            "type": "string"
                          },
                          "downloads": {
                            "items": {
                              "additionalProperties": false,
                              "properties": {
                                "download_url": {
                                  "type": "string"
                                },
                                "mime_type": {
                                  "type": "string"
                                },
                                "page_count": {
                                  "type": "integer"
                                }
                              },
                              "type": "object"
                            },
                            "type": [
                              "null",
                              "array"
                            ]
                          },
                          "metadata": {
                            "additionalProperties": true,
                            "type": "object"
                          }
                        },
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "provider": {
                      "type": "string"
                    },
                    "warnings": {
                      "items": {
                        "type": "string"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    }
                  },
                  "required": [
                    "provider",
                    "petition"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Get Petition Decision",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/get_prosecution_timeline": {
      "post": {
        "description": "Get a chronological prosecution timeline for a patent: key milestones (filed, published, examination requested, granted) and full event history. Combines bibliography dates, register events, and legal status into a unified timeline. Retrieves patent data from official patent office databases.",
        "operationId": "get_prosecution_timeline",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "patent_number": {
                    "description": "Patent number (e.g. EP1000000B1, US11234567, DE10027362)",
                    "type": "string"
                  },
                  "provider": {
                    "description": "Provider to use (auto-detected from patent number if omitted)",
                    "type": "string"
                  }
                },
                "required": [
                  "patent_number"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "events": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "category": {
                            "type": "string"
                          },
                          "code": {
                            "type": "string"
                          },
                          "date": {
                            "type": "string"
                          },
                          "description": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "date",
                          "code",
                          "description",
                          "category"
                        ],
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "milestones": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "date": {
                            "type": "string"
                          },
                          "name": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "name",
                          "date"
                        ],
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "patent_number": {
                      "type": "string"
                    },
                    "provider": {
                      "type": "string"
                    },
                    "status": {
                      "type": "string"
                    },
                    "warnings": {
                      "items": {
                        "type": "string"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    }
                  },
                  "required": [
                    "patent_number",
                    "provider"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Get Prosecution Timeline",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/get_ptab_proceeding": {
      "post": {
        "description": "Get details of a specific PTAB proceeding. Set proceeding_type to trial (default) and pass a trial number (e.g. 'IPR2020-00001'), appeal and pass an appeal number, or interference and pass an interference number. Returns proceeding metadata, associated decisions, and (for trials) filed documents. Retrieves patent data from official patent office databases.",
        "operationId": "get_ptab_proceeding",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "proceeding_type": {
                    "description": "Which PTAB dataset the number identifies: trial (default), appeal (appeal number), or interference (interference number).",
                    "enum": [
                      "trial",
                      "appeal",
                      "interference"
                    ],
                    "type": "string"
                  },
                  "trial_number": {
                    "description": "PTAB trial number (e.g. IPR2020-00001), appeal number, or interference number.",
                    "type": "string"
                  }
                },
                "required": [
                  "trial_number"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "decisions": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "decision_type": {
                            "type": "string"
                          },
                          "document_id": {
                            "type": "string"
                          },
                          "document_name": {
                            "type": "string"
                          },
                          "issue_date": {
                            "type": "string"
                          },
                          "outcome_category": {
                            "type": "string"
                          },
                          "proceeding_type": {
                            "type": "string"
                          },
                          "trial_number": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "document_id"
                        ],
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "documents": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "category": {
                            "type": "string"
                          },
                          "document_id": {
                            "type": "string"
                          },
                          "document_name": {
                            "type": "string"
                          },
                          "filing_date": {
                            "type": "string"
                          },
                          "filing_party": {
                            "type": "string"
                          },
                          "title": {
                            "type": "string"
                          },
                          "trial_number": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "document_id"
                        ],
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "proceeding": {
                      "additionalProperties": false,
                      "properties": {
                        "appellant": {
                          "type": "string"
                        },
                        "application_number": {
                          "type": "string"
                        },
                        "filing_date": {
                          "type": "string"
                        },
                        "institution_date": {
                          "type": "string"
                        },
                        "junior_party": {
                          "type": "string"
                        },
                        "latest_decision_date": {
                          "type": "string"
                        },
                        "patent_number": {
                          "type": "string"
                        },
                        "patent_owner": {
                          "type": "string"
                        },
                        "petition_filing_date": {
                          "type": "string"
                        },
                        "petitioner": {
                          "type": "string"
                        },
                        "proceeding_type": {
                          "type": "string"
                        },
                        "senior_party": {
                          "type": "string"
                        },
                        "status": {
                          "type": "string"
                        },
                        "style_name": {
                          "type": "string"
                        },
                        "termination_date": {
                          "type": "string"
                        },
                        "trial_number": {
                          "type": "string"
                        },
                        "trial_type": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "trial_number"
                      ],
                      "type": "object"
                    },
                    "provider": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "provider",
                    "proceeding",
                    "decisions"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Get PTAB Proceeding",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/get_quota_status": {
      "post": {
        "description": "Retrieve API quota/rate limit status. Shows throttle state and requests remaining. Valid provider IDs: 'epo_ops' (EPO).",
        "operationId": "get_quota_status",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "provider": {
                    "description": "Patent office / provider ID to use; omit to auto-select the best one for the input.",
                    "enum": [
                      "epo_ops",
                      "lens"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "as_of": {
                      "type": "string"
                    },
                    "gate_active": {
                      "type": "boolean"
                    },
                    "provider": {
                      "type": "string"
                    },
                    "requests_remaining": {
                      "type": "integer"
                    },
                    "reset_time": {
                      "type": "string"
                    },
                    "throttle_state": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "provider"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Get API Quota Status",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/get_register_events": {
      "post": {
        "description": "Retrieve patent register/prosecution events showing the examination history. Returns events with date, code, description, and category (filing, publication, examination, grant, opposition, no_opposition, appeal, other). For EP patents it also returns the structured register: the procedural-step timeline (phase, code, text, date), opposition status (filed or not), terms of grant (designated-state lapses) and the search-report reference. Supports EP patents via EPO, US patents via USPTO, DE patents via DPMA, AU patents via IP Australia and TW patents via TIPO (change/correction records). Use 'limit' to return only the most recent N events. Retrieves patent data from official patent office databases.",
        "operationId": "get_register_events",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "limit": {
                    "description": "Maximum number of results to return (default 10).",
                    "type": "integer"
                  },
                  "patent_number": {
                    "description": "Patent number, e.g. EP2549025, US10000000B2, or DE102004035851.",
                    "type": "string"
                  },
                  "provider": {
                    "description": "Patent office / provider ID to use; omit to auto-select the best one for the input.",
                    "enum": [
                      "epo_ops",
                      "uspto",
                      "dpma",
                      "ipau",
                      "tipo"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "patent_number"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "country": {
                      "type": "string"
                    },
                    "events": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "category": {
                            "type": "string"
                          },
                          "code": {
                            "type": "string"
                          },
                          "date": {
                            "type": "string"
                          },
                          "description": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "date",
                          "code",
                          "description",
                          "category"
                        ],
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "opposition": {
                      "additionalProperties": false,
                      "properties": {
                        "date": {
                          "type": "string"
                        },
                        "filed": {
                          "type": "boolean"
                        },
                        "gazette": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "filed"
                      ],
                      "type": [
                        "null",
                        "object"
                      ]
                    },
                    "patent_number": {
                      "type": "string"
                    },
                    "procedural_steps": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "code": {
                            "type": "string"
                          },
                          "date": {
                            "type": "string"
                          },
                          "dates": {
                            "items": {
                              "additionalProperties": false,
                              "properties": {
                                "date": {
                                  "type": "string"
                                },
                                "type": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "type",
                                "date"
                              ],
                              "type": "object"
                            },
                            "type": [
                              "null",
                              "array"
                            ]
                          },
                          "phase": {
                            "type": "string"
                          },
                          "text": {
                            "type": "string"
                          },
                          "texts": {
                            "items": {
                              "additionalProperties": false,
                              "properties": {
                                "text": {
                                  "type": "string"
                                },
                                "type": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "text"
                              ],
                              "type": "object"
                            },
                            "type": [
                              "null",
                              "array"
                            ]
                          },
                          "time_limit": {
                            "additionalProperties": false,
                            "properties": {
                              "unit": {
                                "type": "string"
                              },
                              "value": {
                                "type": "string"
                              }
                            },
                            "required": [
                              "value"
                            ],
                            "type": [
                              "null",
                              "object"
                            ]
                          }
                        },
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "provider": {
                      "type": "string"
                    },
                    "search_reports": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "date": {
                            "type": "string"
                          },
                          "number": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "terms_of_grant": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "date": {
                            "type": "string"
                          },
                          "gazette": {
                            "type": "string"
                          },
                          "lapsed_countries": {
                            "items": {
                              "additionalProperties": false,
                              "properties": {
                                "country": {
                                  "type": "string"
                                },
                                "date": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "country"
                              ],
                              "type": "object"
                            },
                            "type": [
                              "null",
                              "array"
                            ]
                          }
                        },
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "total_events": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "patent_number",
                    "provider",
                    "total_events",
                    "events"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Get Register Events",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/get_scholarly_work": {
      "post": {
        "description": "Resolve a non-patent-literature citation into the full scholarly record: pass the lens_id carried on a patent's NPL citations (get_citations with a Lens provider) or a DOI. The record includes authors, venue, external ids and - closing the loop - the citing_patent_lens_ids of every patent citing this work. Requires the Lens provider configured (Scholarly API subscription on the same token). Retrieves patent data from official patent office databases.",
        "operationId": "get_scholarly_work",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "doi": {
                    "description": "DOI to resolve when no lens_id is known",
                    "type": "string"
                  },
                  "lens_id": {
                    "description": "Lens scholarly record id (e.g. from get_citations NPL entries)",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "citing_patent_lens_ids": {
                      "items": {
                        "type": "string"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "provider": {
                      "type": "string"
                    },
                    "work": {
                      "additionalProperties": true,
                      "type": "object"
                    }
                  },
                  "required": [
                    "provider"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Get Scholarly Work",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/get_search_syntax": {
      "post": {
        "description": "Returns the query syntax documentation for a search provider. Call this before search_patents (epo_ops, uspto, dpma, ipau, tipo, inpi) or before search_trademarks (euipo, ipau, dpma, tipo, inpi) / search_designs (euipo, ipau, dpma, inpi) to learn the correct query format. Each provider uses different syntax. Defaults to epo_ops when no provider is given.",
        "operationId": "get_search_syntax",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "provider": {
                    "description": "Patent office / provider ID to use; omit to auto-select the best one for the input.",
                    "enum": [
                      "epo_ops",
                      "uspto",
                      "dpma",
                      "euipo",
                      "ipau",
                      "tipo",
                      "inpi",
                      "lens"
                    ],
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "provider": {
                      "type": "string"
                    },
                    "syntax": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "provider",
                    "syntax"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Get Search Syntax",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/get_trademark_documents": {
      "post": {
        "description": "List the documents filed for a trademark case by serial number. USPTO returns the full file wrapper (document IDs, types e.g. NOA/APP/DRW, categories, dates, page counts); INPI returns the single BOPI publication copy. Use document IDs with download_trademark_document to retrieve PDFs. USPTO requires the TSDR API key; INPI uses the account credentials. Retrieves patent data from official patent office databases.",
        "operationId": "get_trademark_documents",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "provider": {
                    "description": "Trademark office provider id; defaults to uspto_tsdr (US). Other offices: euipo (EU), ipau (IP Australia), jpo (Japan), tipo (Taiwan, beta), inpi (France). Documents and downloads are served by USPTO (full file wrapper) and INPI (the single BOPI publication copy); status is available for all offices (image for TIPO and INPI too).",
                    "type": "string"
                  },
                  "serial_number": {
                    "description": "Trademark identifier. For uspto_tsdr the serial number is exactly 8 digits (e.g. 97123456); other offices (euipo, ipau, jpo, tipo, inpi) use their own application/registration number (INPI: French trademark application number, e.g. 4216963).",
                    "type": "string"
                  }
                },
                "required": [
                  "serial_number"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "count": {
                      "type": "integer"
                    },
                    "documents": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "category": {
                            "type": "string"
                          },
                          "date": {
                            "type": "string"
                          },
                          "description": {
                            "type": "string"
                          },
                          "document_id": {
                            "type": "string"
                          },
                          "document_type": {
                            "type": "string"
                          },
                          "metadata": {
                            "additionalProperties": true,
                            "type": "object"
                          },
                          "page_count": {
                            "type": "integer"
                          }
                        },
                        "required": [
                          "document_id"
                        ],
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "provider": {
                      "type": "string"
                    },
                    "serial_number": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "serial_number",
                    "provider",
                    "count",
                    "documents"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Get Trademark Documents",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/get_trademark_media": {
      "post": {
        "description": "Get a trademark's mark representation by serial number. By default returns the logo/drawing image plus a temporary URL for viewing in a browser. For EUIPO, the media_type parameter selects the representation: image (default), thumbnail, sound, video or model - for sound and motion/multimedia marks this returns the actual audio/video, playable directly from the returned temporary URL; model returns the 3D model. Defaults to USPTO TSDR; also available for tipo (Taiwan) and inpi (France, mark logo) via the provider parameter. Non-EUIPO offices support only media_type=image. Each office uses its own configured credentials. Retrieves patent data from official patent office databases.",
        "operationId": "get_trademark_media",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "media_type": {
                    "description": "Which mark representation to return (EUIPO only; defaults to image). 'thumbnail' is a small image; 'sound' and 'video' return the audio/clip of sound and motion/multimedia marks and are playable in a browser via the returned temporary URL; 'model' returns the 3D model of a 3D mark. Other offices support only image.",
                    "enum": [
                      "image",
                      "thumbnail",
                      "sound",
                      "video",
                      "model"
                    ],
                    "type": "string"
                  },
                  "provider": {
                    "description": "Trademark office provider id; defaults to uspto_tsdr (US). Other offices: euipo (EU), ipau (IP Australia), jpo (Japan), tipo (Taiwan, beta), inpi (France).",
                    "type": "string"
                  },
                  "serial_number": {
                    "description": "Trademark identifier. For uspto_tsdr the serial number is exactly 8 digits (e.g. 97123456); other offices (euipo, ipau, jpo, tipo, inpi) use their own application/registration number (INPI: French trademark application number, e.g. 4216963).",
                    "type": "string"
                  }
                },
                "required": [
                  "serial_number"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "media_type": {
                      "type": "string"
                    },
                    "mime_type": {
                      "type": "string"
                    },
                    "provider": {
                      "type": "string"
                    },
                    "serial_number": {
                      "type": "string"
                    },
                    "size_bytes": {
                      "type": "integer"
                    },
                    "temporary_url": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "serial_number",
                    "provider"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Get Trademark Media",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/get_trademark_status": {
      "post": {
        "description": "Get full trademark status by serial number. Returns mark text, current status, filing/registration dates, goods/services classifications, owner info, and prosecution history. Defaults to USPTO TSDR; also available for euipo, ipau, jpo, tipo and inpi (France) via the provider parameter. Each office uses its own configured credentials (the USPTO trademark key is separate from the USPTO patent key). Retrieves patent data from official patent office databases.",
        "operationId": "get_trademark_status",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "provider": {
                    "description": "Trademark office provider id; defaults to uspto_tsdr (US). Other offices: euipo (EU), ipau (IP Australia), jpo (Japan), tipo (Taiwan, beta), inpi (France). Documents and downloads are served by USPTO (full file wrapper) and INPI (the single BOPI publication copy); status is available for all offices (image for TIPO and INPI too).",
                    "type": "string"
                  },
                  "serial_number": {
                    "description": "Trademark identifier. For uspto_tsdr the serial number is exactly 8 digits (e.g. 97123456); other offices (euipo, ipau, jpo, tipo, inpi) use their own application/registration number (INPI: French trademark application number, e.g. 4216963).",
                    "type": "string"
                  }
                },
                "required": [
                  "serial_number"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "application_date": {
                      "type": "string"
                    },
                    "application_number": {
                      "type": "string"
                    },
                    "country": {
                      "type": "string"
                    },
                    "expiry_date": {
                      "type": "string"
                    },
                    "mark_text": {
                      "type": "string"
                    },
                    "nice_classes": {
                      "items": {
                        "type": "string"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "owners": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "country": {
                            "type": "string"
                          },
                          "name": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "name"
                        ],
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "provider": {
                      "type": "string"
                    },
                    "registration_date": {
                      "type": "string"
                    },
                    "registration_number": {
                      "type": "string"
                    },
                    "serial_number": {
                      "type": "string"
                    },
                    "status": {
                      "type": "string"
                    },
                    "status_date": {
                      "type": "string"
                    },
                    "trademark": {
                      "additionalProperties": true,
                      "type": "object"
                    }
                  },
                  "required": [
                    "serial_number",
                    "provider"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Get Trademark Status",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/list_configured_providers": {
      "post": {
        "description": "List all patent API providers you have configured and their status",
        "operationId": "list_configured_providers",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "message": {
                      "type": "string"
                    },
                    "providers": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "as_of": {
                            "type": "string"
                          },
                          "auth_type": {
                            "type": "string"
                          },
                          "capabilities": {
                            "items": {
                              "type": "string"
                            },
                            "type": [
                              "null",
                              "array"
                            ]
                          },
                          "description": {
                            "type": "string"
                          },
                          "gate_active": {
                            "type": "boolean"
                          },
                          "id": {
                            "type": "string"
                          },
                          "name": {
                            "type": "string"
                          },
                          "status": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "id",
                          "name",
                          "description",
                          "auth_type",
                          "status",
                          "capabilities"
                        ],
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    }
                  },
                  "required": [
                    "providers"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "List Configured Providers",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/list_manuals": {
      "post": {
        "description": "List the examination manuals available for lookup with their active edition, jurisdiction and section count (MPEP, TMEP, EPO/EUIPO/WIPO Guidelines, IP Australia, KIPO/JPO/DPMA). Use this to discover the manual `code` and edition before fetching a section with get_manual_section. This is the classification taxonomy and examination guidance - not the patent corpus and not the statutes themselves. Results are candidate references to verify against the primary source, not legal determinations. English only.",
        "operationId": "list_manuals",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {},
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "manuals": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "code": {
                            "type": "string"
                          },
                          "edition": {
                            "type": "string"
                          },
                          "jurisdiction": {
                            "type": "string"
                          },
                          "name": {
                            "type": "string"
                          },
                          "sections": {
                            "type": "integer"
                          }
                        },
                        "required": [
                          "code",
                          "edition"
                        ],
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    }
                  },
                  "required": [
                    "manuals"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "List Examination Manuals",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/read_patent_document": {
      "post": {
        "description": "Read a file-wrapper document page by page: downloads the PDF behind a downloads[].download_url from get_patent_documents, renders the requested pages server-side, and returns one PNG image per page; the first page range also carries the original PDF as an embedded resource. Use this to read documents whose PDF has no text layer (reexamination certificates, older file-wrapper scans). At most 10 pages per call - page through with first_page/last_page, calling once per range. Some clients replace the embedded PDF block with an 'unsupported' notice; the page images are authoritative. For a download link without page images use download_patent_document. USPTO. Retrieves patent data from official patent office databases.",
        "operationId": "read_patent_document",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "download_url": {
                    "description": "A downloads[].download_url value from get_patent_documents.",
                    "type": "string"
                  },
                  "first_page": {
                    "description": "First page to render, 1-based (omit for page 1).",
                    "minimum": 1,
                    "type": "integer"
                  },
                  "last_page": {
                    "description": "Last page to render, inclusive (omit for first_page+9, which is also the cap).",
                    "minimum": 1,
                    "type": "integer"
                  },
                  "provider": {
                    "description": "Provider id; defaults to uspto.",
                    "type": "string"
                  }
                },
                "required": [
                  "download_url"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "first_page": {
                      "type": "integer"
                    },
                    "last_page": {
                      "type": "integer"
                    },
                    "mime_type": {
                      "type": "string"
                    },
                    "note": {
                      "type": "string"
                    },
                    "page_count": {
                      "type": "integer"
                    },
                    "provider": {
                      "type": "string"
                    },
                    "size_bytes": {
                      "type": "integer"
                    },
                    "temporary_url": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "provider",
                    "mime_type",
                    "size_bytes",
                    "first_page",
                    "last_page"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Read Patent Document",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/reference_search": {
      "post": {
        "description": "Hybrid (keyword + semantic) search across examination manuals (MPEP, TMEP, EPO/EUIPO/WIPO Guidelines, IP Australia, KIPO/JPO/DPMA), classification schemes (CPC/IPC/FI), and the trademark/design term classifications (domain=nice for Nice goods/services, domain=locarno for Locarno designs). Use it to find the governing guidance section, the right classification place, or the Nice/Locarno class for a concept, e.g. \"obviousness rejection rationale\" -\u003e MPEP §2141, \"harvesting root crops\" -\u003e A01D, or \"milk\" -\u003e Nice class 29. Hits are grouped by jurisdiction/scheme so offices are never co-ranked against each other; pick the group for the office you care about. Use mode=keyword for an auditable, reproducible lookup. This is the discovery path for Nice/Locarno terms (jurisdiction-neutral, no credentials); to validate or translate a term against the EU register use search_classification_terms / validate_classification_terms (euipo). This is the classification taxonomy and examination guidance - not the patent corpus and not the statutes themselves. Results are candidate references to verify against the primary source, not legal determinations. English only.",
        "operationId": "reference_search",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "domain": {
                    "description": "Search examination manuals (default), classification schemes (CPC/IPC/FI), the JPO F-term faceted index, the Nice goods/services classification (trademarks), or the Locarno classification (designs)",
                    "enum": [
                      "manual",
                      "classification",
                      "fterm",
                      "nice",
                      "locarno"
                    ],
                    "type": "string"
                  },
                  "limit": {
                    "description": "Max hits (1-100, default 20)",
                    "maximum": 100,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "mode": {
                    "description": "hybrid (default) fuses keyword+semantic; keyword is auditable/reproducible",
                    "enum": [
                      "hybrid",
                      "semantic",
                      "keyword"
                    ],
                    "type": "string"
                  },
                  "query": {
                    "description": "Concept, phrase, or legal issue to find guidance/classification for",
                    "type": "string"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "domain": {
                      "type": "string"
                    },
                    "groups": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "hits": {
                            "items": {
                              "additionalProperties": false,
                              "properties": {
                                "citation": {
                                  "type": "string"
                                },
                                "code": {
                                  "type": "string"
                                },
                                "edition": {
                                  "type": "string"
                                },
                                "jurisdiction": {
                                  "type": "string"
                                },
                                "ref": {
                                  "type": "string"
                                },
                                "scheme": {
                                  "type": "string"
                                },
                                "score": {
                                  "type": "number"
                                },
                                "title": {
                                  "type": "string"
                                }
                              },
                              "required": [
                                "ref",
                                "score"
                              ],
                              "type": "object"
                            },
                            "type": [
                              "null",
                              "array"
                            ]
                          },
                          "label": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "label",
                          "hits"
                        ],
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "mode": {
                      "type": "string"
                    },
                    "note": {
                      "type": "string"
                    },
                    "query": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "query",
                    "domain",
                    "mode",
                    "groups"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Search Examination Manuals \u0026 Classifications",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/search_classification_terms": {
      "post": {
        "description": "Search EUIPO's harmonized classification-term databases. scheme=nice searches the Goods-and-Services terms used to classify TRADEMARKS (Nice classes 1-45); scheme=locarno searches the product-indication terms used to classify DESIGNS (Locarno classes). Filter by free-text term and class number. For nice, pass translate_to (e.g. ['de','fr']) to also receive the matched terms in those EU languages. Returns harmonized terms with their text, class and concept id. Provider defaults to euipo. Retrieves patent data from official patent office databases.",
        "operationId": "search_classification_terms",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "class": {
                    "description": "Optional Nice (1-45) or Locarno (1-32) class number to filter by.",
                    "maximum": 45,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "language": {
                    "description": "Term language (EU language code, default en).",
                    "type": "string"
                  },
                  "page": {
                    "description": "0-based page (default 0).",
                    "minimum": 0,
                    "type": "integer"
                  },
                  "provider": {
                    "description": "Classification term database. Defaults to euipo (EU).",
                    "enum": [
                      "euipo"
                    ],
                    "type": "string"
                  },
                  "scheme": {
                    "description": "nice = Goods-and-Services (trademarks); locarno = product indications (designs).",
                    "enum": [
                      "nice",
                      "locarno"
                    ],
                    "type": "string"
                  },
                  "size": {
                    "description": "Page size (default 20, max 100).",
                    "maximum": 100,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "sub_class": {
                    "description": "locarno only: Locarno sub-class number to narrow within the class (e.g. class 14 sub-class 4 for 14.04).",
                    "maximum": 99,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "term": {
                    "description": "Free-text term to search for (e.g. 'milk', 'shoes').",
                    "type": "string"
                  },
                  "translate_to": {
                    "description": "nice only: target EU language codes to also translate matched terms into (e.g. ['de','fr']).",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "scheme"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "page": {
                      "type": "integer"
                    },
                    "provider": {
                      "type": "string"
                    },
                    "scheme": {
                      "type": "string"
                    },
                    "term": {
                      "type": "string"
                    },
                    "terms": {
                      "items": {
                        "additionalProperties": true,
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "total_results": {
                      "type": "integer"
                    },
                    "translations": {
                      "additionalProperties": {
                        "items": {
                          "additionalProperties": true,
                          "type": "object"
                        },
                        "type": [
                          "null",
                          "array"
                        ]
                      },
                      "type": "object"
                    }
                  },
                  "required": [
                    "provider",
                    "scheme",
                    "total_results",
                    "page",
                    "terms"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Search Classification Terms",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/search_designs": {
      "post": {
        "description": "Search the EU registered-design register (EUIPO). The query uses RSQL - call get_search_syntax with provider=euipo for the fields and operators. Examples: 'locarnoClasses==14.04 and status==REGISTERED_AND_FULLY_PUBLISHED' or 'productIndications==*chair*'. Optional page/size. Returns matching designs with design number, status, Locarno classes and dates. Provider defaults to euipo. Retrieves patent data from official patent office databases.",
        "operationId": "search_designs",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "fields": {
                    "description": "Comma-separated response field projection (EUIPO, USPTO).",
                    "type": "string"
                  },
                  "offset": {
                    "description": "Number of leading results to skip; uniform pagination honored by EPO, USPTO, EUIPO and TIPO.",
                    "minimum": 0,
                    "type": "integer"
                  },
                  "page": {
                    "description": "0-based page (default 0).",
                    "minimum": 0,
                    "type": "integer"
                  },
                  "provider": {
                    "description": "Design register: euipo (default, EU), ipau (IP Australia) or dpma (Germany).",
                    "enum": [
                      "euipo",
                      "ipau",
                      "dpma",
                      "inpi"
                    ],
                    "type": "string"
                  },
                  "query": {
                    "description": "Design search query. EUIPO uses RSQL; DPMA (dpma) uses FIELD=value expert syntax; IP Australia (ipau) uses a free-text term.",
                    "type": "string"
                  },
                  "size": {
                    "description": "Page size (default 20; EUIPO requires 10-100, values below 10 are raised to 10).",
                    "maximum": 100,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "sort": {
                    "description": "Sort hint: 'field' or 'field:asc'/'field:desc'. Honored by EUIPO, USPTO and IP Australia; call get_search_syntax for the sortable fields.",
                    "type": "string"
                  },
                  "status": {
                    "description": "Filter by legal status where the office exposes one (IP Australia trademarks/designs); call get_search_syntax for the values.",
                    "type": "string"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "designs": {
                      "items": {
                        "additionalProperties": true,
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "page": {
                      "type": "integer"
                    },
                    "provider": {
                      "type": "string"
                    },
                    "query": {
                      "type": "string"
                    },
                    "total_results": {
                      "type": "integer"
                    },
                    "warnings": {
                      "items": {
                        "type": "string"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    }
                  },
                  "required": [
                    "provider",
                    "query",
                    "total_results",
                    "page",
                    "designs"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Search Designs",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/search_enriched_citations": {
      "post": {
        "description": "Search AI-enriched citations extracted from USPTO office actions. Per cited reference it returns the citation category (X/Y/A), the claims the reference was applied to (related_claims), a quality summary, and the inventor. Note: passageLocationText is office-action-level - one merged passage list shared across all references in the action, NOT split per cited reference; for per-reference passage attribution read the office action full text via search_office_actions. Provide application_number or use Lucene query (fields: patentApplicationNumber, citedDocumentIdentifier, officeActionDate, citationCategoryCode, relatedClaimNumberText, passageLocationText). Retrieves patent data from official patent office databases.",
        "operationId": "search_enriched_citations",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "application_number": {
                    "description": "US application number (e.g. 17248024, 17/248,024, or US17/248,024). Converted to Lucene query internally.",
                    "type": "string"
                  },
                  "limit": {
                    "description": "Maximum number of results (default 10).",
                    "type": "integer"
                  },
                  "offset": {
                    "description": "Number of results to skip for pagination.",
                    "type": "integer"
                  },
                  "query": {
                    "description": "Raw Lucene query. Takes precedence over application_number if both provided.",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "citations": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "application_number": {
                            "type": "string"
                          },
                          "citation_category": {
                            "type": "string"
                          },
                          "cited_document": {
                            "type": "string"
                          },
                          "extra_fields": {
                            "additionalProperties": true,
                            "type": "object"
                          },
                          "inventor": {
                            "type": "string"
                          },
                          "office_action_date": {
                            "type": "string"
                          },
                          "quality": {
                            "type": "string"
                          },
                          "related_claims": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "application_number"
                        ],
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "count": {
                      "type": "integer"
                    },
                    "provider": {
                      "type": "string"
                    },
                    "query": {
                      "type": "string"
                    },
                    "total_count": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "query",
                    "provider",
                    "total_count",
                    "count",
                    "citations"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Search Enriched Citations",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/search_office_action_citations": {
      "post": {
        "description": "Search prior art citations from USPTO office actions. Provide application_number or use Lucene query (fields: patentApplicationNumber, citedDocumentIdentifier, countryCode, kindCode). Retrieves patent data from official patent office databases.",
        "operationId": "search_office_action_citations",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "application_number": {
                    "description": "US application number (e.g. 17248024, 17/248,024, or US17/248,024). Converted to Lucene query internally.",
                    "type": "string"
                  },
                  "limit": {
                    "description": "Maximum number of results (default 10).",
                    "type": "integer"
                  },
                  "offset": {
                    "description": "Number of results to skip for pagination.",
                    "type": "integer"
                  },
                  "query": {
                    "description": "Raw Lucene query. Takes precedence over application_number if both provided.",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "citations": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "application_number": {
                            "type": "string"
                          },
                          "cited_document": {
                            "type": "string"
                          },
                          "country_code": {
                            "type": "string"
                          },
                          "extra_fields": {
                            "additionalProperties": true,
                            "type": "object"
                          },
                          "kind_code": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "application_number"
                        ],
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "count": {
                      "type": "integer"
                    },
                    "provider": {
                      "type": "string"
                    },
                    "query": {
                      "type": "string"
                    },
                    "total_count": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "query",
                    "provider",
                    "total_count",
                    "count",
                    "citations"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Search Office Action Citations",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/search_office_action_rejections": {
      "post": {
        "description": "Search USPTO office action rejections. Provide application_number or use Lucene query (fields: hasRej101, hasRej102, hasRej103, hasRej112, hasRejDP, aliceIndicator, bilskiIndicator, mayoIndicator, myriadIndicator, legalSectionCode, groupArtUnitNumber, claimNumberArrayDocument). Retrieves patent data from official patent office databases.",
        "operationId": "search_office_action_rejections",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "application_number": {
                    "description": "US application number (e.g. 17248024, 17/248,024, or US17/248,024). Converted to Lucene query internally.",
                    "type": "string"
                  },
                  "limit": {
                    "description": "Maximum number of results (default 10).",
                    "type": "integer"
                  },
                  "offset": {
                    "description": "Number of results to skip for pagination.",
                    "type": "integer"
                  },
                  "query": {
                    "description": "Raw Lucene query. Takes precedence over application_number if both provided.",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "count": {
                      "type": "integer"
                    },
                    "provider": {
                      "type": "string"
                    },
                    "query": {
                      "type": "string"
                    },
                    "rejections": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "application_number": {
                            "type": "string"
                          },
                          "extra_fields": {
                            "additionalProperties": true,
                            "type": "object"
                          },
                          "has_rej_101": {
                            "type": "boolean"
                          },
                          "has_rej_102": {
                            "type": "boolean"
                          },
                          "has_rej_103": {
                            "type": "boolean"
                          },
                          "has_rej_112": {
                            "type": "boolean"
                          },
                          "has_rej_dp": {
                            "type": "boolean"
                          },
                          "mailed_date": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "application_number",
                          "has_rej_101",
                          "has_rej_102",
                          "has_rej_103",
                          "has_rej_112",
                          "has_rej_dp"
                        ],
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "rejections_summary": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "claims": {
                            "type": "string"
                          },
                          "legal_section": {
                            "type": "string"
                          },
                          "office_action_date": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "legal_section",
                          "claims"
                        ],
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "total_count": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "query",
                    "provider",
                    "total_count",
                    "count",
                    "rejections"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Search Office Action Rejections",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/search_office_actions": {
      "post": {
        "description": "Search USPTO office action text. Provide application_number for quick lookup or query for Lucene syntax (fields: patentApplicationNumber, actionType, mailedDate, filingDate, grantDate, inventionTitle, bodyText). Data covers actions mailed from June 2018 to 180 days before today. Retrieves patent data from official patent office databases.",
        "operationId": "search_office_actions",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "application_number": {
                    "description": "US application number (e.g. 17248024, 17/248,024, or US17/248,024). Converted to Lucene query internally.",
                    "type": "string"
                  },
                  "limit": {
                    "description": "Maximum number of results (default 10).",
                    "type": "integer"
                  },
                  "offset": {
                    "description": "Number of results to skip for pagination.",
                    "type": "integer"
                  },
                  "query": {
                    "description": "Raw Lucene query. Takes precedence over application_number if both provided.",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "actions": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "action_type": {
                            "type": "string"
                          },
                          "application_number": {
                            "type": "string"
                          },
                          "body_text": {
                            "type": "string"
                          },
                          "extra_fields": {
                            "additionalProperties": true,
                            "type": "object"
                          },
                          "mailed_date": {
                            "type": "string"
                          },
                          "title": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "application_number"
                        ],
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "count": {
                      "type": "integer"
                    },
                    "provider": {
                      "type": "string"
                    },
                    "query": {
                      "type": "string"
                    },
                    "total_count": {
                      "type": "integer"
                    }
                  },
                  "required": [
                    "query",
                    "provider",
                    "total_count",
                    "count",
                    "actions"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Search Office Actions",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/search_owners": {
      "post": {
        "description": "Search EUIPO's owner directory (Persons API). type=applicant searches IP owners; type=representative searches professional representatives (attorneys/agents). Filter by name, city and country. Returns matching owners with their identifier, name, type and address - pass the identifier to get_owner for the full record. Provider defaults to euipo. Retrieves patent data from official patent office databases.",
        "operationId": "search_owners",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "city": {
                    "description": "Filter by city.",
                    "type": "string"
                  },
                  "country": {
                    "description": "Filter by ISO country code (e.g. GB, DE).",
                    "type": "string"
                  },
                  "name": {
                    "description": "Owner name to search for (partial match).",
                    "type": "string"
                  },
                  "page": {
                    "description": "0-based page (default 0).",
                    "minimum": 0,
                    "type": "integer"
                  },
                  "provider": {
                    "description": "Owner directory. Defaults to euipo (EU).",
                    "enum": [
                      "euipo"
                    ],
                    "type": "string"
                  },
                  "size": {
                    "description": "Page size (default 20, max 100).",
                    "maximum": 100,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "type": {
                    "description": "applicant = IP owner; representative = professional representative.",
                    "enum": [
                      "applicant",
                      "representative"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "type"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "owners": {
                      "items": {
                        "additionalProperties": true,
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "page": {
                      "type": "integer"
                    },
                    "provider": {
                      "type": "string"
                    },
                    "total_results": {
                      "type": "integer"
                    },
                    "type": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "provider",
                    "type",
                    "total_results",
                    "page",
                    "owners"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Search Owners",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/search_patents": {
      "post": {
        "description": "Search patents using provider-specific query syntax. Each provider's query grammar differs (a query that works on one fails on another), and get_search_syntax returns the grammar for a given provider; 'pa=' is EPO syntax, while USPTO and DPMA use different field names. Permissive queries (one or two terms) match more broadly, and zero-result responses include relaxed query suggestions to retry. If provider is omitted, EPO OPS is used when configured (broadest coverage), else USPTO, else DPMA. Valid provider IDs: 'epo_ops' (EPO), 'uspto' (USPTO), 'dpma' (DPMA, German patents), 'ipau' (IP Australia free-text quick search), 'tipo' (Taiwan, free-text title search, beta), 'inpi' (INPI France, bracket syntax like [TIT=moteur]), 'lens' (Lens.org, Lucene syntax over 100+ jurisdictions; explicit selection only - it is never the default, to protect its monthly request quota). Optional filters refine the search where the provider supports them: sort/offset/fields (EUIPO, USPTO) and applicant/classification/date_from/date_to (param-based offices like TIPO); see get_search_syntax. Retrieves patent data from official patent office databases.",
        "operationId": "search_patents",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "applicant": {
                    "description": "Filter by applicant/owner name on param-based offices (TIPO).",
                    "type": "string"
                  },
                  "classification": {
                    "description": "Filter by IPC classification symbol on param-based offices (TIPO).",
                    "type": "string"
                  },
                  "date_from": {
                    "description": "Filing/application-date range start, YYYY-MM-DD (TIPO application date; USPTO filing date).",
                    "type": "string"
                  },
                  "date_to": {
                    "description": "Filing/application-date range end, YYYY-MM-DD (TIPO application date; USPTO filing date).",
                    "type": "string"
                  },
                  "fields": {
                    "description": "Comma-separated response field projection (EUIPO, USPTO).",
                    "type": "string"
                  },
                  "limit": {
                    "description": "Maximum number of results to return (default 10).",
                    "minimum": 0,
                    "type": "integer"
                  },
                  "offset": {
                    "description": "Number of leading results to skip; uniform pagination honored by EPO, USPTO, EUIPO and TIPO.",
                    "minimum": 0,
                    "type": "integer"
                  },
                  "provider": {
                    "description": "Patent office / provider ID to use; omit to auto-select the best one for the input.",
                    "enum": [
                      "epo_ops",
                      "uspto",
                      "dpma",
                      "ipau",
                      "tipo",
                      "inpi",
                      "lens"
                    ],
                    "type": "string"
                  },
                  "query": {
                    "description": "Search query; the grammar varies by provider - call get_search_syntax for a provider's fields and examples.",
                    "type": "string"
                  },
                  "sort": {
                    "description": "Sort hint: 'field' or 'field:asc'/'field:desc'. Honored by EUIPO, USPTO and IP Australia; call get_search_syntax for the sortable fields.",
                    "type": "string"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "count": {
                      "type": "integer"
                    },
                    "provider": {
                      "type": "string"
                    },
                    "query": {
                      "type": "string"
                    },
                    "results": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "country": {
                            "type": "string"
                          },
                          "doc_number": {
                            "type": "string"
                          },
                          "family_id": {
                            "type": "string"
                          },
                          "kind": {
                            "type": "string"
                          },
                          "title": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "country",
                          "doc_number"
                        ],
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "results_raw": {
                      "type": "string"
                    },
                    "suggestions": {
                      "items": {
                        "type": "string"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "total_results": {
                      "type": "integer"
                    },
                    "warnings": {
                      "items": {
                        "type": "string"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    }
                  },
                  "required": [
                    "query",
                    "provider",
                    "total_results",
                    "results",
                    "count"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Search Patents",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/search_petitions": {
      "post": {
        "description": "Search USPTO petition decisions (Office of Petitions). Query fields: applicationNumberText, patentNumber, decisionTypeCodeDescriptionText (GRANTED/DENIED/DISMISSED), finalDecidingOfficeName, petitionIssueConsideredTextBag, technologyCenter. Syntax: Use AND/OR for multiple conditions. Quote multi-word values. Empty query returns recent petition decisions. Retrieves patent data from official patent office databases.",
        "operationId": "search_petitions",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "limit": {
                    "description": "Maximum number of results (default 10).",
                    "minimum": 0,
                    "type": "integer"
                  },
                  "offset": {
                    "description": "Number of results to skip for pagination.",
                    "minimum": 0,
                    "type": "integer"
                  },
                  "provider": {
                    "description": "Patent office / provider ID to use; omit to auto-select the best one for the input.",
                    "enum": [
                      "uspto"
                    ],
                    "type": "string"
                  },
                  "query": {
                    "description": "OpenSearch query (e.g. patentNumber:10000000 or decisionTypeCodeDescriptionText:GRANTED).",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "count": {
                      "type": "integer"
                    },
                    "petitions": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "application_number": {
                            "type": "string"
                          },
                          "deciding_office": {
                            "type": "string"
                          },
                          "decision_date": {
                            "type": "string"
                          },
                          "decision_type": {
                            "type": "string"
                          },
                          "decision_type_text": {
                            "type": "string"
                          },
                          "group_art_unit": {
                            "type": "string"
                          },
                          "invention_title": {
                            "type": "string"
                          },
                          "inventors": {
                            "items": {
                              "type": "string"
                            },
                            "type": [
                              "null",
                              "array"
                            ]
                          },
                          "issues_considered": {
                            "items": {
                              "type": "string"
                            },
                            "type": [
                              "null",
                              "array"
                            ]
                          },
                          "patent_number": {
                            "type": "string"
                          },
                          "petition_mail_date": {
                            "type": "string"
                          },
                          "petition_type_code": {
                            "type": "integer"
                          },
                          "petition_type_text": {
                            "type": "string"
                          },
                          "prosecution_status": {
                            "type": "string"
                          },
                          "record_id": {
                            "type": "string"
                          },
                          "rules": {
                            "items": {
                              "type": "string"
                            },
                            "type": [
                              "null",
                              "array"
                            ]
                          },
                          "statutes": {
                            "items": {
                              "type": "string"
                            },
                            "type": [
                              "null",
                              "array"
                            ]
                          },
                          "technology_center": {
                            "type": "string"
                          }
                        },
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "provider": {
                      "type": "string"
                    },
                    "query": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "query",
                    "provider",
                    "count",
                    "petitions"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Search Petition Decisions",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/search_ptab_decisions": {
      "post": {
        "description": "Search PTAB decisions across all proceedings. Set proceeding_type to trial (default), appeal, or interference. Trial query fields: decisionData.trialOutcomeCategory (Final Written Decision/Institution Granted/Institution Denied/Settled After Institution), decisionData.decisionTypeCategory (Decision), trialNumber (e.g., IPR2024-00984). Syntax: Use AND/OR for multiple conditions. Quote multi-word values. Examples: 'decisionData.trialOutcomeCategory:\"Final Written Decision\"', 'trialNumber:IPR2024-00984 AND decisionData.decisionTypeCategory:Decision'. Empty query returns recent decisions. Retrieves patent data from official patent office databases.",
        "operationId": "search_ptab_decisions",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "limit": {
                    "description": "Maximum number of results (default 10).",
                    "minimum": 0,
                    "type": "integer"
                  },
                  "offset": {
                    "description": "Number of results to skip for pagination.",
                    "minimum": 0,
                    "type": "integer"
                  },
                  "proceeding_type": {
                    "description": "Which PTAB dataset to search: trial (default), appeal, or interference.",
                    "enum": [
                      "trial",
                      "appeal",
                      "interference"
                    ],
                    "type": "string"
                  },
                  "query": {
                    "description": "OpenSearch query; fields vary by proceeding_type (see the tool description).",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "count": {
                      "type": "integer"
                    },
                    "decisions": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "decision_type": {
                            "type": "string"
                          },
                          "document_id": {
                            "type": "string"
                          },
                          "document_name": {
                            "type": "string"
                          },
                          "issue_date": {
                            "type": "string"
                          },
                          "outcome_category": {
                            "type": "string"
                          },
                          "proceeding_type": {
                            "type": "string"
                          },
                          "trial_number": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "document_id"
                        ],
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "provider": {
                      "type": "string"
                    },
                    "query": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "query",
                    "provider",
                    "count",
                    "decisions"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Search PTAB Decisions",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/search_ptab_proceedings": {
      "post": {
        "description": "Search PTAB (Patent Trial and Appeal Board) proceedings. Set proceeding_type to trial (default) for IPR/PGR/CBM trials, appeal for ex parte appeals, or interference. Trial query fields: regularPetitionerData.realPartyInInterestName (petitioner), patentOwnerData.patentOwnerName (patent owner), patentOwnerData.patentNumber (patent number, no US prefix), trialMetaData.trialTypeCode (IPR/PGR/CBM), trialMetaData.trialStatusCategory (Pending/Terminated/Final Written Decision). Syntax: Use AND/OR for multiple conditions. Quote multi-word values. Examples: 'regularPetitionerData.realPartyInInterestName:Google', 'patentOwnerData.patentNumber:10015413 AND trialMetaData.trialTypeCode:IPR', 'trialMetaData.trialStatusCategory:\"Final Written Decision\"'. Empty query returns recent proceedings. Retrieves patent data from official patent office databases.",
        "operationId": "search_ptab_proceedings",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "limit": {
                    "description": "Maximum number of results (default 10).",
                    "minimum": 0,
                    "type": "integer"
                  },
                  "offset": {
                    "description": "Number of results to skip for pagination.",
                    "minimum": 0,
                    "type": "integer"
                  },
                  "proceeding_type": {
                    "description": "Which PTAB dataset to search: trial (default) IPR/PGR/CBM trials, appeal ex parte appeals, or interference.",
                    "enum": [
                      "trial",
                      "appeal",
                      "interference"
                    ],
                    "type": "string"
                  },
                  "query": {
                    "description": "OpenSearch query; fields vary by proceeding_type (see the tool description).",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "count": {
                      "type": "integer"
                    },
                    "proceedings": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "appellant": {
                            "type": "string"
                          },
                          "application_number": {
                            "type": "string"
                          },
                          "filing_date": {
                            "type": "string"
                          },
                          "institution_date": {
                            "type": "string"
                          },
                          "junior_party": {
                            "type": "string"
                          },
                          "latest_decision_date": {
                            "type": "string"
                          },
                          "patent_number": {
                            "type": "string"
                          },
                          "patent_owner": {
                            "type": "string"
                          },
                          "petition_filing_date": {
                            "type": "string"
                          },
                          "petitioner": {
                            "type": "string"
                          },
                          "proceeding_type": {
                            "type": "string"
                          },
                          "senior_party": {
                            "type": "string"
                          },
                          "status": {
                            "type": "string"
                          },
                          "style_name": {
                            "type": "string"
                          },
                          "termination_date": {
                            "type": "string"
                          },
                          "trial_number": {
                            "type": "string"
                          },
                          "trial_type": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "trial_number"
                        ],
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "provider": {
                      "type": "string"
                    },
                    "query": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "query",
                    "provider",
                    "count",
                    "proceedings"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Search PTAB Proceedings",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/search_scholarly_works": {
      "post": {
        "description": "Search the Lens.org scholarly corpus with Lucene syntax - reverse prior-art discovery: find the scientific literature behind a technology, filter to works cited by patents (has_patent_citations:true), then chain into get_scholarly_work for the full record and the patents citing it. Requires the Lens provider configured (the Scholarly API is a subscription on the same lens.org token; without it this tool returns a clear per-call error while the Lens patent tools keep working). Fields include title, abstract, full_text, author.display_name, source.title, year_published, field_of_study, patent_citation_count. Retrieves patent data from official patent office databases.",
        "operationId": "search_scholarly_works",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "limit": {
                    "description": "Number of results (default 10, max 100)",
                    "type": "integer"
                  },
                  "offset": {
                    "description": "Result offset for paging",
                    "type": "integer"
                  },
                  "query": {
                    "description": "Lucene query over the scholarly corpus, e.g. title:CRISPR AND has_patent_citations:true",
                    "type": "string"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "count": {
                      "type": "integer"
                    },
                    "provider": {
                      "type": "string"
                    },
                    "query": {
                      "type": "string"
                    },
                    "results": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "external_ids": {
                            "items": {
                              "additionalProperties": false,
                              "properties": {
                                "type": {
                                  "type": "string"
                                },
                                "value": {
                                  "type": "string"
                                }
                              },
                              "type": "object"
                            },
                            "type": [
                              "null",
                              "array"
                            ]
                          },
                          "lens_id": {
                            "type": "string"
                          },
                          "patent_citations_count": {
                            "type": "integer"
                          },
                          "scholarly_citations_count": {
                            "type": "integer"
                          },
                          "source": {
                            "type": "string"
                          },
                          "title": {
                            "type": "string"
                          },
                          "year_published": {
                            "type": "integer"
                          }
                        },
                        "required": [
                          "lens_id"
                        ],
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "total_results": {
                      "type": "integer"
                    },
                    "warnings": {
                      "items": {
                        "type": "string"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    }
                  },
                  "required": [
                    "query",
                    "provider",
                    "total_results",
                    "results",
                    "count"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Search Scholarly Works",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/search_trademarks": {
      "post": {
        "description": "Search the EU trademark register (EUIPO). The query uses RSQL - call get_search_syntax with provider=euipo for the fields and operators. Examples: 'wordMarkSpecification.verbalElement==*Dog* and status==REGISTERED' or 'niceClasses=all=(25,28,40)'. Optional page/size. Returns matching trademarks with application number, status, marks, Nice classes and dates. Provider defaults to euipo. Retrieves patent data from official patent office databases.",
        "operationId": "search_trademarks",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "applicant": {
                    "description": "Filter by applicant/owner name on param-based offices (TIPO).",
                    "type": "string"
                  },
                  "fields": {
                    "description": "Comma-separated response field projection (EUIPO, USPTO).",
                    "type": "string"
                  },
                  "offset": {
                    "description": "Number of leading results to skip; uniform pagination honored by EPO, USPTO, EUIPO and TIPO.",
                    "minimum": 0,
                    "type": "integer"
                  },
                  "page": {
                    "description": "0-based page (default 0).",
                    "minimum": 0,
                    "type": "integer"
                  },
                  "provider": {
                    "description": "Trademark register: euipo (default, EU), ipau (IP Australia), dpma (Germany) or tipo (Taiwan, beta).",
                    "enum": [
                      "euipo",
                      "ipau",
                      "dpma",
                      "tipo",
                      "inpi"
                    ],
                    "type": "string"
                  },
                  "query": {
                    "description": "Trademark search query. EUIPO uses RSQL; DPMA (dpma) uses FIELD=value expert syntax; IP Australia (ipau) and TIPO (tipo) use a free-text term.",
                    "type": "string"
                  },
                  "size": {
                    "description": "Page size (default 20; EUIPO requires 10-100, values below 10 are raised to 10).",
                    "maximum": 100,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "sort": {
                    "description": "Sort hint: 'field' or 'field:asc'/'field:desc'. Honored by EUIPO, USPTO and IP Australia; call get_search_syntax for the sortable fields.",
                    "type": "string"
                  },
                  "status": {
                    "description": "Filter by legal status where the office exposes one (IP Australia trademarks/designs); call get_search_syntax for the values.",
                    "type": "string"
                  }
                },
                "required": [
                  "query"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "page": {
                      "type": "integer"
                    },
                    "provider": {
                      "type": "string"
                    },
                    "query": {
                      "type": "string"
                    },
                    "total_results": {
                      "type": "integer"
                    },
                    "trademarks": {
                      "items": {
                        "additionalProperties": true,
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "warnings": {
                      "items": {
                        "type": "string"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    }
                  },
                  "required": [
                    "provider",
                    "query",
                    "total_results",
                    "page",
                    "trademarks"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Search Trademarks",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/search_uspto_portfolio_by_customer_number": {
      "post": {
        "description": "Return every USPTO application filed under a given customer number. USPTO customer numbers are issued by USPTO to filing entities (typically law firms or in-house counsel teams) and group all of that entity's pending and granted applications. Pair each returned application or patent number with get_legal_status, get_patent_term, get_continuity, or get_prosecution_timeline to assemble full portfolio status and statutory deadlines. Equivalent to search_patents(provider='uspto', query='applicationMetaData.customerNumber:\u003cn\u003e'). Default limit is 100; raise it for large portfolios. Retrieves patent data from official patent office databases.",
        "operationId": "search_uspto_portfolio_by_customer_number",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "properties": {
                  "customer_number": {
                    "type": "string"
                  },
                  "limit": {
                    "type": "integer"
                  }
                },
                "required": [
                  "customer_number"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "count": {
                      "type": "integer"
                    },
                    "provider": {
                      "type": "string"
                    },
                    "query": {
                      "type": "string"
                    },
                    "results": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "country": {
                            "type": "string"
                          },
                          "doc_number": {
                            "type": "string"
                          },
                          "family_id": {
                            "type": "string"
                          },
                          "kind": {
                            "type": "string"
                          },
                          "title": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "country",
                          "doc_number"
                        ],
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "results_raw": {
                      "type": "string"
                    },
                    "suggestions": {
                      "items": {
                        "type": "string"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "total_results": {
                      "type": "integer"
                    },
                    "warnings": {
                      "items": {
                        "type": "string"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    }
                  },
                  "required": [
                    "query",
                    "provider",
                    "total_results",
                    "results",
                    "count"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Search USPTO Portfolio by Customer Number",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/send_feedback": {
      "post": {
        "description": "Send feedback, report a bug, or ask a question to the Patent Connector team. Your message is stored with a ticket ID and the team will respond via email. Use this when something is not working, you need help, or want to suggest improvements.",
        "operationId": "send_feedback",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "category": {
                    "description": "Type of message: bug (something broken), feedback (suggestion), question (need help).",
                    "enum": [
                      "bug",
                      "feedback",
                      "question"
                    ],
                    "type": "string"
                  },
                  "message": {
                    "description": "Your feedback, bug report, or question. Be as detailed as possible.",
                    "type": "string"
                  }
                },
                "required": [
                  "message",
                  "category"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "message": {
                      "type": "string"
                    },
                    "ticket_id": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "ticket_id",
                    "message"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Send Feedback",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/server_info": {
      "post": {
        "description": "Get information about the Patent MCP server and available providers",
        "operationId": "server_info",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": false,
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "configuration_url": {
                      "type": "string"
                    },
                    "configured_providers": {
                      "type": "integer"
                    },
                    "disclaimer": {
                      "type": "string"
                    },
                    "message": {
                      "type": "string"
                    },
                    "providers": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "as_of": {
                            "type": "string"
                          },
                          "capabilities": {
                            "items": {
                              "type": "string"
                            },
                            "type": [
                              "null",
                              "array"
                            ]
                          },
                          "description": {
                            "type": "string"
                          },
                          "gate_active": {
                            "type": "boolean"
                          },
                          "id": {
                            "type": "string"
                          },
                          "name": {
                            "type": "string"
                          },
                          "status": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "id",
                          "name",
                          "description",
                          "status",
                          "capabilities"
                        ],
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "server_name": {
                      "type": "string"
                    },
                    "version": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "server_name",
                    "version",
                    "configured_providers",
                    "providers",
                    "configuration_url",
                    "disclaimer"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Server Info",
        "tags": [
          "tools"
        ]
      }
    },
    "/v1/tools/validate_classification_terms": {
      "post": {
        "description": "Check whether free-text goods/services or product-indication terms are part of EUIPO's harmonized database (the 'Fast Track' acceptable terms) for a given class. scheme=nice validates Goods-and-Services terms (trademarks); scheme=locarno validates product-indication terms (designs). Returns each term with a harmonized flag and, when matched, its concept id. Provider defaults to euipo. Retrieves patent data from official patent office databases.",
        "operationId": "validate_classification_terms",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "class": {
                    "description": "Nice (1-45) or Locarno (1-32) class number the terms belong to.",
                    "maximum": 45,
                    "minimum": 1,
                    "type": "integer"
                  },
                  "language": {
                    "description": "Source language of the terms (EU language code, default en).",
                    "type": "string"
                  },
                  "provider": {
                    "description": "Classification term database. Defaults to euipo (EU).",
                    "enum": [
                      "euipo"
                    ],
                    "type": "string"
                  },
                  "scheme": {
                    "description": "nice = Goods-and-Services (trademarks); locarno = product indications (designs).",
                    "enum": [
                      "nice",
                      "locarno"
                    ],
                    "type": "string"
                  },
                  "sub_class": {
                    "description": "locarno only: Locarno sub-class number (0-99).",
                    "maximum": 99,
                    "minimum": 0,
                    "type": "integer"
                  },
                  "terms": {
                    "description": "Free-text terms to validate (e.g. ['milk']).",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "scheme",
                  "class",
                  "terms"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": false,
                  "properties": {
                    "class": {
                      "type": "integer"
                    },
                    "provider": {
                      "type": "string"
                    },
                    "results": {
                      "items": {
                        "additionalProperties": true,
                        "type": "object"
                      },
                      "type": [
                        "null",
                        "array"
                      ]
                    },
                    "scheme": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "provider",
                    "scheme",
                    "class",
                    "results"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "tool output"
          },
          "401": {
            "description": "missing or invalid bearer token, or expired provider credentials"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "provider denied access (subscription, permissions, or an office's automated-traffic gate; a gate carries Retry-After)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying, when applicable",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "no such record at the provider"
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "invalid input for this tool"
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "rate limited (per-account cap, office rate limit, or a server-side gate-trip cooldown)",
            "headers": {
              "Retry-After": {
                "description": "seconds to wait before retrying",
                "schema": {
                  "type": "integer"
                }
              }
            }
          },
          "502": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider error"
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ToolError"
                }
              }
            },
            "description": "upstream provider timeout"
          }
        },
        "summary": "Validate Classification Terms",
        "tags": [
          "tools"
        ]
      }
    }
  },
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "servers": [
    {
      "url": "/"
    }
  ]
}