Litigation MCP Server

Give your AI assistant direct access to Darts-IP litigation data. Search IP cases across patents, trademarks, designs and copyright, group and count them by court, party or outcome, and retrieve full case details.

Server URL
https://ipone.clarivate.com/litigation/mcp
Protocol MCP Tools 4

Overview

The server exposes 4 tools over the Clarivate Caselaw Database. Search finds and analyzes cases, one tool returns full case details, and two help you discover valid field values.

Add the server URL above to any MCP-compatible client as a remote server. Your assistant then chooses the right tool from the descriptions below. Some clients show tool names with an ip-one-litigation___ prefix.

Data is organized as cases and documents. A case is identified by a GUID, and several court documents can belong to the same case. Returned records are always distinct.

Workflows

Find and review cases

  1. 1. Discover

    Look up the exact values a filter needs, such as court names or party names, when a wildcard search misses.

    search_field_valuesdescribe_fields
  2. 2. Search

    Filter cases by domain, party, court, dates and more. The result is a list of case GUIDs and a total count.

    search_cases
  3. 3. Review

    Fetch the full details of up to 50 cases at a time.

    get_case_details
Example: patent cases involving a party since 2020 (illustrative values)

Analyze with grouping and aggregation

Use group_by with aggregate to count or summarize cases instead of listing them. Only the grouped and aggregated fields are returned, and order_by can sort on an aggregated field such as GUID_COUNT.

Example: trademark cases per court country (illustrative values)
{
  "tool": "search_cases",
  "arguments": {
    "filters": {
      "cases_filter": [
        { "field": { "root": "CASE_DOMAIN" }, "op": "EQ", "value": "TRADEMARK" }
      ]
    },
    "group_by": [ { "root": "DOCKET_COURT_COUNTRY" } ],
    "aggregate": [ { "func": "COUNT", "field": { "root": "GUID" } } ],
    "order_by": { "field": { "root": "GUID_COUNT" }, "direction": "DESC" },
    "limit": 10
  }
}

Read the cases you found

Example: get case details
{
  "tool": "get_case_details",
  "arguments": {
    "guids": [ "<case GUID from search_cases>" ]
  }
}

Tool reference

Fields are named in uppercase, for example CASE_DOMAIN, and are passed as objects: {"root": "CASE_DOMAIN"}. See the field reference for every field.

search_cases

Search and aggregateMax 50 per page

Searches IP litigation cases across all domains. Without grouping it returns a list of case GUIDs. With group_by and aggregate it returns grouped and aggregated values. The response always includes the total number of matching records. Use get_case_details to read individual cases.

ParameterTypeRequiredNotes
filtersobjectNoObject with a cases_filter array. Each entry has field, op and value. Pass {"cases_filter": []} for no filters.
group_byarrayNoFields to group by. When used, only grouped and aggregated fields are returned.
aggregatearrayNoEntries of {func, field} where func is COUNT, SUM, AVG, MIN or MAX. Requires group_by. COUNT counts distinct values.
order_byobjectNo{field, direction} with direction ASC or DESC. The field must appear in group_by or aggregate. Name aggregated fields FIELD_FUNC, for example GUID_COUNT.
limitintegerNoNumber of results to return. Default 10, maximum 50.
offsetintegerNoNumber of results to skip, for pagination. Default 0.

Filter operators

Each filter is {field, op, value}. Operators: EQ NE GT GE LT LE IN IS LIKE STARTSWITH. Use a list for IN, a % wildcard for LIKE (for example APPLE%, %SAMSUNG%), and null for IS. Values can be strings, numbers, booleans, lists or null.

Case details

get_case_details

Max 50 GUIDs per call

Returns the full case details for one or more cases identified by GUID.

ParameterTypeRequiredNotes
guidsstring[]YesCase GUIDs, for example from search_cases. Maximum 50.

Discovery

search_field_values

Returns the distinct values of any field, optionally narrowed by filters. Use it when a LIKE filter in search_cases returns nothing or the wrong cases and the field has no fixed list of values: find the exact values, then retry the search.

ParameterTypeRequiredNotes
fieldobjectYesThe field to list values for, as {"root": "FIELD_NAME"}.
filtersobjectNoSame cases_filter structure as search_cases, to narrow the values returned.
limitintegerNoNumber of results to return. Default 10, maximum 50.
offsetintegerNoNumber of results to skip, for pagination. Default 0.

describe_fields

Returns the full field reference: names, types, formats and notes. Call it if you need the complete list of fields the search tools accept.

Takes no parameters.

Field reference

These fields can be used in filters, group_by and aggregate. String values are stored in uppercase.

Case

FieldMeaningValues and notes
GUIDUnique identifier of the case.String.
CASE_DOMAINThe IP rights at stake in the case.COPYRIGHT DESIGN_MODEL DOMAIN_NAME PATENT TRADEMARK OTHER UNFAIR_COMPETITION
CASE_STATUSCurrent status of the case.OPEN CLOSED INACTIVE
CASE_RESOLUTIONOutcome, based on the information available in the database.CLAIMANT WINS DEFENDANT WINS SPLIT WIN SETTLED WITHDRAWN null
FIRST_ACTION_DATEDate the action was filed. Not available for all cases.ISO date, YYYY-MM-DD. Supports GE and LE for ranges.
FIRST_ACTION_TYPEType of the first legal action.INFRINGEMENT INVALIDITY_CANCELLATION OPPOSITION REVOCATION PETITION_UNDER_TRANSITIONAL_PROGRAM INTER_PARTES_REVIEW_PETITION RETRIAL DOMAIN_NAME_ARBITRATION DECLARATORY TRIAL_FOR_CORRECTION EX_PARTE_REEXAMINATION_PETITION DERIVATION_PROCEEDING EMPLOYEE_INVENTION POST_GRANT_REVIEW_PETITION ADMINISTRATIVE_HEARINGS INTERFERENCE CONTRACT CRIMINAL_ACTION TRIAL_FOR_SCOPE PTO_REEXAMINATION OWNERSHIP DECLARATION_OF_WELL_KNOWN_STATUS RE_EXAMINATION COLLECTIVE_MANAGEMENT_ORGANISATIONS OTHER null
EARLIEST_EVENT_DATEFiling date of the case, or the earliest document date when the filing can’t be identified. Always available.ISO date, YYYY-MM-DD.
EX_OFFICIOWhether an IP office is acting on behalf of any party.true false

Parties

FieldMeaningValues and notes
PARTY_OPTIMIZED_NAMENormalized party name, in any role.Free text. Legal suffixes are inconsistent, so %APPLE% is usually better than %APPLE INC%.
PARTY_ULTIMATE_PARENTGroup or parent company of the party, in any role.Free text.
PARTY_ROLERole of the party in the case.PLAINTIFF DEFENDANT In administrative cases, defendants are often the trademark or patent applicants.
PARTY_COUNTRYCountry code of the party.Country code. Use IN for several countries.
PARTY_IS_EX_OFFICIOWhether the party is an ex officio IP office.true false Use false to target non-ex-officio plaintiffs.
PARTY_PLAINTIFF_NAMEPlaintiff name.Free text. Use when both parties are given together, or the plaintiff is requested.
PARTY_PLAINTIFF_ULTIMATE_PARENTPlaintiff parent group.Free text. Same usage as above.
PARTY_DEFENDANT_NAMEDefendant name.Free text. Use when both parties are given together, or the defendant is requested.
PARTY_DEFENDANT_ULTIMATE_PARENTDefendant parent group.Free text. Same usage as above.

Court

FieldMeaningValues and notes
DOCKET_COURT_NAMEFull court name.Free text. EUIPO appears under several names (for example examination division or board of appeal), so use EUIPO% to find all.
DOCKET_COURT_AREARegional or continental grouping of the court.EUROPE means the continent, not the European Union.
DOCKET_COURT_COUNTRYCountry or office code of the court.Office examples: EM, EP, EA, EU. There is no EU-country grouping, so use IN with a list of countries.
DOCKET_COURT_TYPE_ADMINISTRATIVEWhether the court is an IP office (administrative court).true false
DOCKET_COURT_TYPE_ARBITRATIONWhether the court is an arbitration body.true false
DOCKET_COURT_TYPE_JUDICALWhether the court is a regular court.true false The field name is spelled as shown.

Documents

FieldMeaningValues and notes
DOCUMENT_DATEDate of the legal document.ISO date, YYYY-MM-DD. Supports GE and LE for ranges.
DOCUMENT_TYPEType of legal document.DECISIONS_AND_ORDERS PRELUDE PROCESS_PROCEDURE_INFORMATION SETTLEMENT_INFORMATION BRIEFS_AND_MEMORANDUMS MOTIONS EVIDENCE CONCLUSIONS_OF_ADVOCATE_GENERAL null
DOCUMENT_TRADEMARK_REPUTATIONWhether a trademark-domain document contains reputation-related points of law.true false

Patents

FieldMeaningValues and notes
PATENT_PUBLICATION_NUMBERPatent publication number.Identifier. Numbers can carry suffixes such as EP724444(B1), so use a wildcard like %EP724444% to find all versions.
PATENT_APPLICATION_NUMBERPatent application number.Identifier. If an exact match fails, try LIKE with % wildcards.
PATENT_VALIDITYOutcome of the validity assessment by a judge or examiner.true false
PATENT_INFRINGEMENTOutcome of the infringement assessment by a judge.true false
PATENT_ROLEWhich party the patent belongs to.PLAINTIFF DEFENDANT
PATENT_TYPEType of patent.INVENTION_PATENT UTILITY_MODEL DESIGN_PATENT null
PATENT_DOCDB_FAMILY_IDDocDB family ID of the invention. Mostly for Patstat inventions, and only in limited cases for Darts inventions.Family identifier.
IPC_CLASS_CODEInternational Patent Classification code, used to sort patents by technology or industry.Format [Section][Class][Subclass] [Main group]/[Subgroup], for example H04R 25/00 or C07D 487/08.

Trademarks

FieldMeaningValues and notes
TRADEMARK_ROLERole in trademark cases.PLAINTIFF DEFENDANT
TRADEMARK_TYPEType of trademark.ODOR FIG SOUND DOMAIN VERBAL THREED FIG_COLOR OTHER null
TRADEMARK_VERBAL_ELEMENTVerbal or word element of the trademark.Free text.
TRADEMARK_NICE_CLASSNice class of the goods and services.Formats vary: 11, 33.23, 42.H3, and zero-padding differs (04 vs 4.1). To find class 4, use LIKE with 04% and 4.% rather than an exact match.

Designs

FieldMeaningValues and notes
DESIGN_ROLERole in design cases.PLAINTIFF DEFENDANT
DESIGN_REGISTRATION_OFFICEOffice where the design is registered.Mostly two-letter country codes, plus office codes such as WO, EU, EA, and -- for unknown. Use search_field_values for the full list.
DESIGN_PRODUCTType of design product.Free text.
DESIGN_LOCARNO_CLASSLocarno class identifying the product category.Dotted class.subclass.division, for example 12.08.10. Use LIKE 'N.%' to match all subclasses of class N.

Copyright

FieldMeaningValues and notes
COPYRIGHT_ROLERole in copyright cases.PLAINTIFF DEFENDANT
COPYRIGHT_TYPEType of copyrighted work.LITERARY_WORK AUDIOVISUAL_CINEMA_WORK DATABASE VIDEO_GAME UTILITARIAN_WORK COMPUTER_PROGRAM MUSICAL_WORK APPLIED_ART DRAMATIC_WORK WEBSITE ARCHITECTURE WORK_OF_VISUAL_ART DERIVATIVE_WORK PHOTOGRAPHIC_WORK OTHER null
COPYRIGHT_TITLETitle of the copyrighted work.Free text.
COPYRIGHT_DESCRIPTIONDescription of the copyrighted work.Free text.

Query guide

  • Use uppercase or LIKE for text String fields are indexed in uppercase, so use uppercase values or the LIKE operator. LIKE supports prefix (APPLE%), suffix (%SAMSUNG) and contains (%GOOGLE%) matches.
  • Match names loosely For party names, prefer LIKE unless you need an exact match, and check that the results are the parties you meant. If LIKE finds nothing, use search_field_values to get the exact values and retry.
  • Enumerated fields need exact values Fields with a fixed list of values, such as PLAINTIFF or DEFENDANT, require an exact match.
  • Ranges and classifications Date and numeric fields support GE and LE for ranges. Classification fields use the official Nice, Locarno and IPC codes, and Nice and Locarno codes vary in format, so use LIKE to cover the variants.
  • Scope by industry with IPC codes For industry or product questions where no company is named, such as hearing aids or automotive patents, filter on IPC_CLASS_CODE first.
  • Grouping, ordering and paging Aggregation requires group_by. order_by must use a field from group_by or aggregate, and null values sort to the top when ordering descending, so filter them out with a minimum value. The response always includes the total record count, so you don’t need a grouped count for that. limit is capped at 50 per call, and get_case_details takes up to 50 GUIDs.
  • Keep requests focused Request no more than 10 fields at a time. When browsing cases without other instructions, group by EARLIEST_EVENT_DATE and sort descending.