Open interface
The reference lookup
For one medicine, one market and one date: which source settles whether the medicine is registered, or authorised for an indication; what that source says where its content has been checked; and what is unresolved. Free and open to every caller, AI systems included.
What it answers
A claim about a medicine is settled by the record of the authority that governs the market: in the US, the FDA's label; in the EU and EEA, the European Commission's authorisation and its product information. The lookup names that record, says whether it can decide the claim on the date asked, and, where its indications section has been checked, whether it states the indication.
It reads the regulators' own published records, confirmed current on the day of the answer, and judges each one with the Evidence-Authority Standard. What a label states about its indications is read from the regulator's structured label where one is published (the US label's coded Indications and Usage section); otherwise it is recorded by a named AlphaCitation staff member and counts only while a check against the label's exact bytes passes. The service does not republish label text: every record is given as a pointer, a locator, a version and a hash.
A question about a brand is answered from that brand's own label. A question about an active substance is answered across every approved label in the market that contains it: tirzepatide is authorised for weight management in the US because Zepbound's label says so.
For a market with no machine-readable record of its own, it says so, and lists the US and EU labels as references that do not decide the claim there.
Asking
GET or POST https://alphacitation.com/api/v1/reference/lookup, with the fields below as query parameters or as one JSON object. No key and no account.
- medicine
- Required. A brand or active substance name, exactly: letters, digits, spaces and . , ' & ( ) / + -, from 2 to 80 characters.
- market
- Required. An ISO 3166-1 alpha-2 country code (US, AE, SA, DE) or EU.
- proposition
- Required. P1: registered or authorised in the market. P2: authorised for an indication.
- indication
- Required for P2. One identifier from the published indication list. Free text is refused.
- date
- Optional. The date the claim is about, YYYY-MM-DD, not in the future. Defaults to today (UTC).
- populationMinAgeYears
- Optional for P2. The youngest age the claim says the indication covers, from 0 to 120.
curl "https://alphacitation.com/api/v1/reference/lookup?medicine=metformin&market=US&proposition=P2&indication=t2dm_glycaemic_control"A POST request
curl -X POST https://alphacitation.com/api/v1/reference/lookup \
-H "Content-Type: application/json" \
-d '{"medicine":"metformin","market":"AE","proposition":"P1","date":"2026-10-26"}'The indication list is at /api/v1/reference/indications: each entry's identifier, its plain label and the population it covers. The list grows as indications are added, and only an identifier on it is accepted. The full description of the interface is at /api/v1/reference/openapi.json (OpenAPI 3.1).
A request that cannot be read is answered 400, naming the field. A body over 4 KiB is answered 413.
The answer
One JSON object. Its parts:
- status, relation, summary
- The answer in brief: one status, one relation, and a sentence that says both.
- records
- Every record held for the medicine, each with its role (regulator of record for this market, a holder attestation, or a reference from another market), who issued it, its pointer, its locator, its version, its date of force and the basis for that date, its sha256, when it was last verified, the Evidence-Authority Standard's verdict on it, and what it says about the claim where its content has been checked.
- competentAuthorities
- The authorities whose record would decide the claim in this market, with their official access points.
- comparison
- Where this market's label differs from the US and EU labels for the same active substance, indication by indication: present in one only, under a different product, for a different population, or with a different restriction.
- notes
- Facts that help a reader, such as the indication being authorised under another product of the same substance.
- unresolved
- Each thing the answer could not establish, with a code, a plain sentence and, where trying again later could help, retryAfter in seconds.
- scope
- What the answer establishes and what it does not, in the same words on every answer.
Statuses
settledA regulator's record that the Evidence-Authority Standard judges able to settle the claim, for this market and date, gives the answer.
settling_record_identifiedThe record that settles the claim is identified and pointed to, but what it says does not decide the claim here: its content has not been read, or the indication's absence from it is not confirmed. No conclusion is given.
supported_attestedNo regulator's machine-readable record is held for the market. The authorisation holder's own approved label, read under the conditions below, supports the claim. Support, never settlement.
reference_onlyOnly other markets' labels are held. They are listed as references and do not decide a claim in this market.
unresolvedNo held record decides the claim. Unknown, never false.
Relations
The relation is to the affirmative claim: that the medicine is authorised for the indication in the market on the date.
agreesThe record states the indication for a population covering the claim's, for every formulation it covers.
agrees_narrowerThe record states the indication, for a narrower population or only some formulations, which the answer names.
disagreesA complete set of settling records, each read completely and confirmed complete, does not state the indication. For an active substance, that is every label of it in the market.
insufficientThe record cannot say, or its content has not been checked. The reason is named in unresolved.
A false "not approved" is the error this service exists to catch, so disagrees needs more than a label that does not mention the indication: every settling label read completely, its exact bytes checked, and an independent, calibrated check agreeing that the indications section as read is complete. Without that agreement the answer is insufficient, and the answer says so in unresolved, with the label's locator, so a reader can look for themselves.
That check is not yet in service, so today the service does not return disagrees.
The scope of an answer
Which held record has the authority, under the Evidence-Authority Standard 3.0, to settle the claim for its market and date; whether the record was confirmed current at its official location; and what the record's indications section says about the claim's indication, read from the regulator's structured section where one is published, otherwise from a named staff member's transcription checked against the record's own bytes.
It does not establish:
- that a record is still current after its last verification.
- anything in a label beyond its indications section; the list recognises only its listed indications.
- that an authorisation holder's document is the text the regulator approved.
- medical advice, availability, supply, price or reimbursement.
- the truth of a claim no held record settles: unknown, never false.
Supported, attested by the authorisation holder
In many markets the authority that decides a claim publishes no machine-readable label. There, the holder of the marketing authorisation can publish its own approved label for the lookup to read. The answer then says the claim is supported, attested by the authorisation holder.
Supports and never settles. Where a regulator's record settles, that record decides. A holder's document never makes a claim false.
It is a proposal for a later version of the Evidence-Authority Standard, not part of version 3.0, and it changes no verdict of the standard. AlphaCitation confirms who published the document and that it is unchanged; it cannot confirm that it is the text the regulator approved.
The attestation is given only when every one of these holds, and each answer lists them with whether each is met:
- the holder is verified;
- the product is enrolled for this market and not retired;
- the latest read of the manifest was neither refused nor absent;
- the manifest was read within the last 24 hours;
- the manifest is signed by a key pinned and active for this holder;
- the document is listed as public and approved;
- the document's bytes match the manifest's sha256;
- the document was first read on or before the claim's date;
- the document is listed in the latest accepted manifest;
For authorisation holders
A holder publishes two files on its own domain, signs the first, and enrols once. AlphaCitation indexes and judges what the holder publishes; it never hosts the holder's documents, and keeps only their hashes, versions, addresses and the times it read them.
The manifest
At https://your-domain/.well-known/alphacitation-evidence.json, at most 256 KiB of JSON: { "format": "alphacitation-evidence-manifest/1", "payload": { ... }, "signature": { ... } }. The payload holds:
- domain
- The host the manifest is published on, exactly.
- issuedAt
- When this manifest was issued (ISO 8601).
- sequence
- A whole number that rises with every change. A manifest with a lower number than the last one accepted is refused, and so is the same number with different contents.
- documents
- Up to 200 documents, each with: id; market (ISO 3166-1 alpha-2); product (brand, ingredients, form, strengths, route); documentType (authorised_label, smpc or patient_leaflet); version; effectiveDate (YYYY-MM-DD); sha256 of the exact bytes served; url (https, on the manifest's own host, no port or user name); mediaType; and publicationClass (public_approved, or restricted, which is never fetched).
Every string is in Unicode normalisation form C, with no control characters. The signature is { "alg": "Ed25519", "kid": ..., "value": ... }: an Ed25519 signature, base64, over the payload canonicalised by RFC 8785 (JSON Canonicalization Scheme). The kid is the signing key's RFC 7638 thumbprint.
The keys file
At https://your-domain/.well-known/alphacitation-evidence-keys.json: { "keys": [ { "kty": "OKP", "crv": "Ed25519", "x": ..., "kid": ... } ], "verification": ... }, with each key's kid its own thumbprint, and verification the token issued at enrolment.
Enrolment
- Write to analyst@alphacitation.com from the authorisation holder, confirming in writing that it holds the authorisation for the products and markets it will publish. Where a market's register names the holder, the confirmation must name that holder.
- AlphaCitation registers the domain and sends a verification token once.
- The holder publishes the token in its keys file and sends the thumbprints of its signing keys in writing.
- AlphaCitation pins those keys and verifies the domain. From then on the manifest is read every six hours.
Changes and withdrawal
- A new or changed document is picked up at the next read, within six hours, once the manifest is re-signed with a higher sequence.
- A document removed from the manifest stops supporting claims; its hash, when it was first seen and when it was withdrawn stay in the record.
- A document whose bytes no longer match its sha256 supports nothing until they match again.
- To change keys, send the new thumbprint in writing; to stop at once after a compromise, write and the holder is suspended.
Connecting an AI application
The same lookup is a Model Context Protocol server at https://alphacitation.com/api/v1/reference/mcp (Streamable HTTP, answering in JSON), with one tool, lookup_medicine_evidence, whose result is the answer described above. It supports protocol versions 2026-07-28, 2025-11-25, 2025-06-18. Any client that accepts a remote MCP server address can connect; in Claude Code:
claude mcp add --transport http alphacitation https://alphacitation.com/api/v1/reference/mcp
The tool tells the model to cite the pointer of the record an answer rests on, and never to present a status other than settled as settled.
Limits and terms
- One medicine, one market and one proposition a request; 240 requests an hour from one address, shared by the lookup and the MCP server. Over the limit, the answer is 429 with Retry-After.
- No listing, search or bulk access.
- The service may be paused; it then answers 503 with Retry-After.
The open interfaces at /api/v1/evidence-authority/ and /api/v1/reference/ may be used by anyone, including AI systems, without asking, within their published limits. Their responses may be stored, cited and reused with attribution to AlphaCitation. They are regulatory information, not medical advice.
The rest of the site's rules for automated access are in the Automated Access Policy.