<!-- https://antecedint.com/docs/mcp.md — generated from the Antecedint source. Do not edit.
     Every endpoint and tool as one file: https://antecedint.com/llms-full.txt -->

# Antecedint MCP server

20 read-only tools over prior-art retrieval, patent space, and §112 claim
analysis. One endpoint, one bearer token, no session to manage.

Each tool proxies to a REST endpoint documented in [the REST reference](https://antecedint.com/docs/api.md),
with the caller's own key, so rate limiting and metering behave identically either way.
A tool call is billed once, not twice.

Endpoint: `POST https://mcp.antecedint.com/api/v1/mcp`

Stateless Streamable HTTP, JSON-RPC 2.0. Protocol version 2025-06-18, also accepting
2025-03-26 and 2024-11-05. GET and DELETE answer 405. There is no session id to send
or store. Bodies are capped at 2 MB. Batches are accepted for 2025-03-26 clients: up
to 20 messages, of which at most 2 may be `tools/call`.

Limits are 120 messages and 30 tool calls per minute, per key, on top of the daily and
monthly request quotas that apply to REST.

Client configuration:

```json
{
  "mcpServers": {
    "antecedint": {
      "url": "https://mcp.antecedint.com/api/v1/mcp",
      "headers": {
        "Authorization": "Bearer ak_live_..."
      }
    }
  }
}
```

## Tools

### search_prior_art

Prior Art Search. Semantic prior-art search over 10.5M+ US patents for a claim and/or abstract. Two-stage neural retrieval (fine-tuned dense encoder + optional late-interaction reranker) plus a citation-graph channel. Returns ranked references with titles, abstracts and similarity scores. Full claim text is NOT included by default: set includeClaims, or rank first and pull the few worth reading with get_patent_claims, which is the cheaper shape for most work. Specification bodies are never returned. Pass filedBefore with the priority date of the application you are searching for: prior art must predate the invention, and without that bound the results include later filings that cannot be cited.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `claims` | `string`, 10–20000 chars | no | Claim text (independent claim 1 works best). |
| `abstract` | `string`, 0–10000 chars | no | Optional abstract or invention summary. |
| `count` | `integer`, 1–100 | no | Number of references to return (default 50). |
| `rerank` | `boolean` | no | Apply the ColBERT reranker to the top results (slower, higher precision). |
| `filedBefore` | `string` | no | Exclude references filed on or after this date (YYYY, YYYY-MM or YYYY-MM-DD). Prior art must predate the invention it is cited against, so pass the priority date of the application being searched. Without it the results include later filings, which cannot be cited as prior art against it. |
| `hybrid` | `boolean` | no | Also run keyword (BM25) search over titles and abstracts and fuse the rankings (default false). Set it when your query uses a term of art: the encoder was trained on meaning and does not guarantee an exact phrase outranks a paraphrase, so dense search alone can miss a document that names the thing. Each result gains matched_legs, how many of the three retrievers found it. |
| `hyde` | `boolean` | no | Rewrite the query into patent language before searching (default false). A model drafts a hypothetical abstract and first claim for what you described, and that is searched instead. Set it when you have a description rather than claim text: the index holds formal claim language and a plain-English query has to cross that gap unaided. Do NOT set it when you already have a claim, which is the strongest query available. Adds about two seconds. metadata.hyde returns the generated text. |
| `includeClaims` | `boolean` | no | Return full claim text for every reference (default false). The lookup adds about a second regardless of how many references are asked for, so leaving this off and calling get_patent_claims on the two or three worth reading is usually faster overall. While it is off, each result carries title_source: "namespace", meaning the title came from the vector index rather than the authoritative lookup and may name another patent. |
| `cpc3` | `string[]` | no | Restrict to these CPC subclasses, e.g. ["H01M","F28D"]. Useful for a second pass once a first search has shown which art areas matter. CPC data covers about 65% of the index and an unclassified reference is excluded by this filter rather than ranked lower, so a first search should usually leave it unset. |

### get_patent_claims

Patent Claim Text. Fetch full claim text and abstracts for specific US application numbers, up to 25 per call. Use after search_prior_art to read the references worth reading: the search ranks and this returns the text, so a search of fifty does not pay to fetch fifty full claim sets. Titles here come from the authoritative lookup table rather than the vector index.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `appNumbers` | `string[]`, max 25 | yes | US application numbers, digits only. These are the application_number values a search returns. |

### get_patent_neighborhood

Patent Neighborhood. Given a US application number, return its position in Antecedint's semantic patent space plus its nearest semantic neighbors (similar patents with similarity scores).

| Parameter | Type | Required | Description |
|---|---|---|---|
| `appNum` | `string`, `^\d{7,12}$` | yes | US application number, digits only (7-12 digits). |
| `topK` | `integer`, 1–100 | no | Number of neighbors (default 20). |

### get_patent_citations

Cited Prior Art Map. For a US application number, return its cited prior art (examiner-cited references flagged and listed first) resolved to patent-space positions. Useful for seeing what an examiner actually cited against an application.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `appNum` | `string`, `^\d{7,12}$` | yes | US application number, digits only. |
| `year` | `integer`, 1970–2035 | no | Filing year of the citing application, if known (makes the lookup faster). |

### locate_in_patent_space

Semantic Patent-Space Locate. Semantic search into patent space: give free text (or a US application number) and get the nearest patents with similarity scores plus a landing position. A fast way to find the closest existing art to any technical text.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `query` | `string`, 8–4000 chars | no | Free-text technical description to locate. Provide either query or appNum. |
| `appNum` | `string`, `^\d{7,12}$` | no | US application number to locate by its own abstract + first claim. |
| `topK` | `integer`, 1–100 | no | Number of nearest patents (default 20). |

### check_antecedent_basis

Antecedent Basis Check. Check a claim set for §112(b) antecedent-basis defects. Finds definite recitations ("the widget", "said widget") with no earlier indefinite recitation in the same claim or in a claim it depends from, plus double inclusions, plural/singular mismatches, and improper dependencies. Implicit antecedent basis (MPEP 2173.05(e)) is suppressed, so "the outer surface of the housing" is not flagged. Findings are graded high/medium/low: high means no plausible antecedent exists anywhere, low means one probably exists under different wording. Deterministic, no LLM. Pass claims for a draft, or appNum for a filed application.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `claims` | `object[]`, max 300 | no | The claim set, in order. Provide either claims or appNum. |
| `appNum` | `string`, `^\d{7,8}$` | no | US application number, digits only; pulls the claims from the warehouse. |
| `minSeverity` | `string`, one of `high`, `medium`, `low` | no | Lowest severity to report (default low = everything). |
| `includeSuppressed` | `boolean` | no | Also return candidates the implicit-basis rules suppressed, with the rule that killed each. Useful for auditing the checker. |

### map_claim_support

Claim Term Support Map. Map every claim term to the specification passages that give it meaning, with exact locations (section, paragraph number, char offsets). Each term is graded by HOW the spec supports it: formally defined, defined by the claim, scoped by enumeration, mapped to an embodiment, characterized functionally, merely described, or UNDESCRIBED, which is a §112(a) written-description signal. With includeParents, the same analysis runs against the specs of the parent applications in the continuity chain (continuation, CIP, divisional, provisional), so terms supported here but in no ancestor are surfaced as NEW MATTER that cannot claim the parent's filing date.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `appNum` | `string`, `^\d{7,8}$` | no | US application number, digits only. Required for the continuity walk. |
| `claims` | `object[]`, max 300 | no | Claim set to analyze. Omit to use the filed claims for appNum. |
| `sections` | `object[]`, max 60 | no | Specification sections to ground against. Omit to pull the filed spec for appNum. |
| `includeParents` | `boolean` | no | Walk the continuity chain and check each parent spec for support (default true when appNum is given). |
| `maxAncestors` | `integer`, 0–12 | no | Cap on ancestors to check (default 6). |
| `ocr` | `boolean` | no | Allow OCR for image-only filings. Most provisionals are image-only, so this is usually needed to read them. |

### find_whitespace

Patent Whitespace Opportunities. List analyzed gaps ("whitespace") in patent space ranked by opportunity score. Each gap includes a summary of what is missing, bordering CPC areas and patents, temporal profile, and nearby active assignees. Filter by CPC section letter and minimum opportunity.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `limit` | `integer`, 1–500 | no | Max gaps to return (default 100). |
| `section` | `string`, `^[A-HYa-hy]$` | no | CPC section letter filter (A-H, Y). |
| `minOpportunity` | `number`, 0–1 | no | Minimum opportunity score (0-1). |

### lookup_cpc_code

CPC Code Lookup. Look up a CPC classification symbol: what it covers, where it sits in the scheme, and which art units actually examine it. The art-unit spread is empirical (where applications carrying the symbol were really routed) with per-unit probabilities and an entropy score: low entropy means the symbol predicts the art unit, high means it does not. Use before filing to anticipate routing, or to decide whether classification is worth arguing.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `code` | `string`, `^[A-HYa-hy][0-9A-Za-z/]{0,18}$` | yes | CPC symbol, e.g. C11D or C11D7/261. |
| `childLimit` | `integer`, 0–500 | no | How many child symbols to return (default 50). |
| `distributionLimit` | `integer`, 0–500 | no | How many art units to list in the distribution, largest first (default 20). unique_art_units is always the true total. |

### get_patent_classification

Patent CPC Classification. Get the CPC symbols assigned to a published application or granted patent, from the USPTO Master Classification File. Separates inventive symbols (covering what is claimed) from additional ones (disclosed but not claimed) — build a prior-art search from the inventive set. Accepts a publication or application number.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `number` | `string`, `^\d{7,12}$` | yes | Publication or US application number, digits only. |

### get_art_unit_profile

Art Unit Profile. Profile one USPTO art unit: what technology it examines, its examiner roster, and how it behaves — allowance and rejection rates, time to first action, interview receptiveness, RCE tolerance and estimated prosecution cost. generated_context is the one-paragraph account of the technology; the model-written long description is served as its opening and length only. examiner_count is the roster length, and examiner_count_in_statistics appears when the stored statistics counted a different roster. Check statistics.data_quality before relying on the numbers: it reports how many applications and office actions they rest on, and thin units carry the same field names with far weaker support.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `artUnit` | `string`, `^\d{3,4}$` | yes | USPTO art unit, e.g. 2872. |

### find_examiner

Examiner Search. Find USPTO examiners by surname or art unit, returning ids and names to pass to get_examiner_profile. Matching is anchored, so pass a surname (or the start of the surname-first name), not a substring from the middle.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `name` | `string`, 2–80 chars | no | Surname, or a prefix of the surname-first full name. |
| `artUnit` | `string`, `^\d{3,4}$` | no | Restrict to one art unit. |
| `limit` | `integer`, 1–100 | no | Maximum matches (default 20). |

### get_examiner_profile

Examiner Statistics. Statistics for one USPTO examiner, by id or by surname-first name (e.g. "SMITH ADAM M"): rejection analytics, allowance behaviour, interview and RCE patterns, timing and cost. Use it to calibrate a response strategy to the examiner who will actually read it. The default response is about 4,000 tokens: per-application lists (applications_with_interviews, applications_with_rcex), two wide histograms (by_sequence_length, document_code_breakdown) and two cold per-application sections (behavioral_patterns, rejection_analysis) are each replaced by a count and the include name that brings them back. percentile_rankings and claims_analysis are null where never computed, which is every examiner sampled. Read data_quality first: populations names the denominators, volume.tier says how much the numbers rest on, withheld lists fields removed as wrong, and notes lists pairs that disagree.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `examiner` | `string`, 2–120 chars | yes | Examiner id, or USPTO surname-first full name. |
| `include` | `string` | no | Comma-separated sections to add: applications_with_interviews, applications_with_rcex, by_sequence_length, document_code_breakdown (thousands of tokens each); behavioral_patterns, rejection_analysis (cold, may reach megabytes). |

### warm_up

Warm the Inference Hub. Start the encoder before you need it. The inference hub scales to zero, so the first search_prior_art or locate_in_patent_space after an idle period waits about 40 seconds for models to load. Call this first and that wait happens outside your search. Returns immediately by default with an estimate; pass wait to block until the models are ready instead of polling. Free, and it never counts against quota. Set rerank only if the search will set rerank, since the reranker costs another 25 seconds to load.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `rerank` | `boolean` | no | Also load the ColBERT reranker. Only needed if the search that follows sets rerank; it adds about 25 seconds to the warm-up. |
| `wait` | `integer`, 0–120 | no | Seconds to block until the models are ready, up to 120. The default of 0 returns straight away with an estimate, which suits warming ahead of other work. Set it to turn a polling loop into one call. |

### get_mpep_section

MPEP Section. One MPEP section, with keyRules and examinerActions separated from the prose that obliges them. This is what a US examiner is required to apply, so it is the text an argument about whether they applied it correctly has to rest on. Section ids carry dots and parentheses (601.01(c)) and the punctuation is part of the id.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `sectionId` | `string`, `^[0-9A-Za-z.()\-]{1,40}$` | yes | MPEP section id, e.g. 2106 or 601.01(c). |

### get_epo_guideline

EPO Guidelines Section. One section of the EPO Guidelines for Examination, in the same shape as get_mpep_section because the flow that reaches it is the same flow one step later: an applicant with a US rejection usually has a European family member. Carries citations, parentSection and childSections alongside the generated keyRules.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `sectionId` | `string`, `^[0-9A-Za-z.\-]{1,40}$` | yes | EPO Guidelines section id, e.g. g-ii-3.3 or c-iv-2. |

### get_form_paragraph

Office Action Form Paragraph. The literal paragraph an examiner pasted into an office action, by its code. Turns a paragraph number read off a rejection into the statute behind it, the MPEP section it rests on, the rejection type, and the notes the examiner was given about when to use it. title is the heading and template the text with [1], [2] placeholders; brackets lists what fills them, which is often where the substance of the rejection sits. mustFollow names paragraphs that have to appear before this one. isAIA and preAIAEquivalent matter for anything filed near the changeover. A leading paragraph symbol is accepted.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `code` | `string`, `^[¶\s0-9A-Za-z.\-]{1,24}$` | yes | Form paragraph code, e.g. 6.11 or 7.37.01. |

### find_form_paragraphs

Form Paragraphs by Rejection Type. Every form paragraph an examiner could have reached for, filtered by rejection type or by the MPEP section it rests on. Given a rejection type this is the set they chose from, which is what tells a deliberately narrow choice from the only available one. rejectionType takes a statute (103, 112(b), 101, 1.52) or a label (obviousness, indefiniteness, enablement, double_patenting); either reaches the paragraphs the other would. At least one filter is required; this does not list the whole table.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `rejectionType` | `string`, `^[0-9A-Za-z.()_ \-]{1,40}$` | no | A statute (102, 103, 112(b), 112(a), 112(f), 101, 121, or a CFR rule such as 1.52) or a label (obviousness, anticipation, indefiniteness, enablement, written_description, means_plus_function, abstract_idea, double_patenting, restriction, allowance, drawing_objection). |
| `mpepSection` | `string`, `^[0-9A-Za-z.()\-]{1,40}$` | no | MPEP section the paragraph rests on, e.g. 706, 707 or 2175. |
| `limit` | `integer`, 1–100 | no | How many to return (default 25). |

### get_guidance_graph

Guidance Cross-References. What a guidance section points at and what points at it, one hop, both directions. Forward is what else a rule depends on; backward is what breaks if you misread it, and is the direction that is hard to get any other way. The node id prefix selects the corpus: mpep-2106 or epo-c-ix-3. A hub section is cited by hundreds of others, so the fan-out is capped and truncated says which direction hit the cap.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `nodeId` | `string`, `^(mpep|epo)-[0-9A-Za-z.()\-]{1,40}$` | yes | Graph node id, prefixed mpep- or epo-. |
| `limit` | `integer`, 1–200 | no | Maximum edges per direction (default 50). |

### get_design_code

USPTO Design Search Code. One USPTO design search code, e.g. 03.19.17 for a fish symbol used for religious significance. A classification scheme rather than guidance; it sits in this corpus because it arrived with the same data, not because it belongs beside the MPEP.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `code` | `string`, `^[0-9]{2}(\.[0-9]{2}){0,3}$` | yes | Design search code, e.g. 03.19.17. |
