Documentation
Get connected
Prior-art retrieval, patent-space geometry, and §112 claim validation over 10.5M US patent applications. Three steps to a working call.
Sign in and your key is issued on the spot. Then these examples fill in with it and run.
Sign in1. Get a key
Sign in and your key is issued on the spot. No form, no waiting, no sales call.
Get your API keyThat key is the only credential. There is no separate secret and no token exchange. It goes in one header on every request:
Authorization: Bearer ak_live_...You see it once, on the page that issues it. We store a salted PBKDF2 hash and nothing else, so we cannot show it again; if you lose it, rotate it from the same page. The first 16 characters are a public handle you can quote to us or grep your own logs for.
A new key starts on the free tier: 25 requests a day, enough to build against. Prior-art search runs real model inference per uncached call, which is why it is not unlimited. Email accelerate@antecedint.com when you need production volume.
2. Make a call
Start with locate. It takes plain English, answers in about a second, and is the quickest way to confirm a key works. Set your key and run this:
curl -sS "https://mcp.antecedint.com/api/v1/patent-map/locate" \
-H "Authorization: Bearer $ANTECEDINT_API_KEY" \
-H 'Content-Type: application/json' \
-d '{"query":"phase-change material for battery thermal management","topK":5}' Base URL is https://mcp.antecedint.com/api/v1 for every endpoint. If this returns 401, the key is wrong or expired; anything else means you are connected.
3. Read the response
Every retrieval endpoint answers in this shape: a ranked array, and enough metadata to know what you are looking at. Learn it once here and the rest of the API reads the same way.
{
"landing": { "x": 4.812, "y": -1.093, "z": 2.446 },
"neighbors": [
{
"appNum": "16412088",
"score": 0.8814,
"section": "H",
"artUnit": "1727",
"filingDate": "2019-05-14",
"x": 4.771, "y": -1.02, "z": 2.503
}
],
"count": 5,
"timestamp": "2026-08-14T09:12:44.108Z"
}| Field | What to do with it |
|---|---|
| neighbors[].appNum | US application number. This is your join key, and what you link a user to. |
| neighbors[].score | Cosine similarity, 0 to 1. Higher is closer. This is the ranking; the array is already sorted by it. |
| neighbors[].section | CPC section letter (A–H, Y). Cheap way to group or colour results without a second lookup. |
| neighbors[].x / y / z | Position in the shared 3D map frame. For drawing, not for measuring: rank by score instead. |
| landing | Where the query itself sits, weighted from the top hits. Not a patent, and it has no appNum. |
| count | How many neighbours came back, which can be fewer than the topK you asked for. |
The one trap worth knowing early: rank and distance disagree. Neighbours are sorted by score, which is similarity in the 768-dimension embedding space. The x, y and z coordinates are a 3D projection of that space for drawing. Two points close on screen are not necessarily the closest match, so never re-sort by coordinate distance and call it relevance.
Where to go next
You are connected. Now pick how you want to work.
REST API
All 24 endpoints, with parameters, status codes and a response for each. Use this when your code already knows what to call.
Reference →
MCP server
The same capabilities as 20 read-only tools. Use this when a client is deciding what to call. One URL, one header, no session.
Connect a client →
Both hit the same endpoints with the same key and the same quota, so this is a question of who is driving, not of what you can reach.
Rather see it run first?
The sandbox runs a live query and shows the exact call your client would make. Access is granted to design partners.
Building against this with a code generator? The whole reference is available as openapi.json, llms.txt and llms-full.txt, all generated from the same source as these pages.