API Documentation
← API overview

MCP Server

Caelrith exposes every tool in your plan over the Model Context Protocol, so an MCP-capable client can discover and call them without per-endpoint integration code. The surface is a single endpoint: https://app.caelrith.com/api/v1/mcp.

StreamableHTTP (stateless, POST only)x-api-key92 tools at generation time

Endpoint

POST https://app.caelrith.com/api/v1/mcp

  • Uses the StreamableHTTP transport in stateless mode: each POST creates a fresh server instance, serves the request, and tears it down. No session, no negotiation state.
  • No initialize handshake is required — send tools/list or tools/call directly.
  • GET and DELETE on this path return 405. POST only.
  • Send content-type: application/json and accept: application/json, text/event-stream. Replies come back as JSON.

Clients that cannot speak MCP can read the same tools as two static JSON files: /api/v1/tools/tools.json (the endpoint catalog — each entry carries mcpName, the value for params.name in a tools/call request) and /api/v1/tools/output.json (response shapes, keyed by the same slugs). Those files are a build-time snapshot; a live tools/list call is always current and is filtered to your plan.

Authentication and entitlements

Authenticate with your API key in the x-api-key header. The key identifies your workspace; the same key is forwarded internally when a tool call is executed, so the underlying route’s own authentication, entitlement check and daily rate limit run exactly as they do for a direct REST call.

  • tools/list returns only tools whose daily limit is positive on your workspace. A tool missing from your list is not in your plan.
  • Tools with no discoverable rate-limiter key are hidden by default — the surface fails closed.
  • One MCP tool call makes two HTTP requests internally (the inbound JSON-RPC call and the loopback call to the real route), so it consumes two slots of the per-key burst limiter. The route’s daily limit is charged once.

This page was generated with a single key, so it lists that key’s tools. Yours may be a subset — call tools/list with your own key to see your exact set.

List tools

One POST, no handshake. The response is a JSON-RPC result whose result.tools array is the same payload this page renders.

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/list",
  "params": {}
}
curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'

Call a tool

Send a standard tools/call request. The name is the MCP tool name from the list above, and arguments is an object matching that tool’s input schema.

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "biology_associations",
    "arguments": {
      "entity": "example"
    }
  }
}
curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "biology_associations",
    "arguments": {
      "entity": "example"
    }
  }
}'

A successful reply carries result.content[0].text (a human-readable trace) plus result.structuredContent with the raw data.

Errors and billing

  • Unknown tool name — JSON-RPC protocol error (-32601, Method not found).
  • Bad argument shape — a normal result with isError: true and the reason in the text content. Validation runs before any network call.
  • Underlying route returned 4xx/5xx — isError: true with the route’s own status and message.
  • Response envelope failure (e.g. missing success flag) — isError: true.
  • Credits — one external-API credit is consumed per successful call. MCP has no 402: if the workspace runs out of credits the call succeeds and the result comes back with isError: true plus a billing notice telling the caller to top up.

Tool index (92)

analysis 1 tool

resolution 1 tool

sponsors 1 tool

analysis

analysisanalysis_pdufa-swing
REST reference →

Returns a list of upcoming PDUFA events with a computed swing score, plus metadata on the lookahead window and how many events were returned versus filtered. Call it to find near-term regulatory decision dates ranked by potential market impact. Returns 400 for invalid query parameters and 500 on internal failure.

Use cases

  • Find upcoming PDUFA decision dates with high swing potential
  • Screen near-term regulatory catalysts by score threshold

Parameters

NameTypeRequiredConstraintsDescription
daysnumberno1..365Lookahead window in days from today for upcoming events. (range 1-365; default 60)
min_scorenumberno0..100Only return events whose swing score is at or above this value. (range 0-100; default 0)

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "analysis_pdufa-swing",
    "arguments": {}
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "analysis_pdufa-swing",
    "arguments": {}
  }
}'

biology

biologybiology_associations
REST reference →

Discover target-disease or disease-target associations with confidence scores and evidence counts. Resolves the input entity against targets first, then diseases (direct ID, exact, fuzzy and vector search). An entity that cannot be resolved returns HTTP 500 with an explanatory 'not found' error naming the input - correct the entity name or report it is not in the graph; repeating the same input cannot succeed. A 200 with an empty associations list means the entity resolved but nothing met minScore.

Use cases

  • find targets associated with a disease
  • explore evidence for a target-disease link

Parameters

NameTypeRequiredConstraintsDescription
entitystringyes—Biological entity name or ID (e.g., 'EGFR', 'diabetes').
minScorenumberno0..1Minimum confidence score between 0 and 1 (default 0.1). (range 0-1; default 0.1)
limitintegerno1..100Maximum number of associations (1-100, default 50). (range 1-100; default 50)

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "biology_associations",
    "arguments": {
      "entity": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "biology_associations",
    "arguments": {
      "entity": "example"
    }
  }
}'
biologybiology_drug-to-targets
REST reference →

For a given drug (generic or brand), return all known molecular targets, mechanism of action, and related drug forms (salts, biosimilars). Targets are aggregated across the resolved drug and its salt/variant forms. A drug that cannot be resolved returns HTTP 500 with an explanatory 'not found' error naming the input - correct the drug name or report it is not in the graph; repeating the same input cannot succeed. A 200 with an empty targets list means the drug resolved but has no recorded molecular targets (common for older drugs or biologicals with debated mechanisms).

Use cases

  • understand a drug's mechanism of action
  • find the molecular targets of a drug

Parameters

NameTypeRequiredConstraintsDescription
drugstringyes—Drug name (e.g., 'lapatinib', 'Keytruda').

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "biology_drug-to-targets",
    "arguments": {
      "drug": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "biology_drug-to-targets",
    "arguments": {
      "drug": "example"
    }
  }
}'
biologybiology_drugs
REST reference →

Returns a paginated list of drugs with metadata (page, limit, totalItems, totalPages). Call it to browse or filter drugs by approval status, development phase, drug type, disease, or target, and to search by name. Invalid query parameters return HTTP 400; an upstream lookup failure returns HTTP 400 with an error message; unexpected failures return HTTP 500.

Use cases

  • Search drugs by name
  • List approved drugs for a disease
  • Find drugs targeting a specific gene or protein

Parameters

NameTypeRequiredConstraintsDescription
searchstringno—minimum length 1; maximum length 500
is_approvedbooleanno—booleans arrive as strings - send 'true' or 'false'; value is parsed from the raw query string and coerced server-side
has_black_boxbooleanno—booleans arrive as strings - send 'true' or 'false'; value is parsed from the raw query string and coerced server-side
min_phaseintegerno0..4Range 0-4 (range 0-4)
max_phaseintegerno0..4Range 0-4 (range 0-4)
drug_typestringno—minimum length 1
diseasestringno—minimum length 1
disease_idstringno—minimum length 1
targetstringno—minimum length 1
target_idstringno—minimum length 1
sortstringnoenum: max_phase, keyDefault max_phase (default max_phase)
orderstringnoenum: asc, descDefault desc (default desc)
pageintegernomin 1Min 1; default 1 (min 1; default 1)
limitintegerno1..100Range 1-100; default 20 (range 1-100; default 20)

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "biology_drugs",
    "arguments": {}
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "biology_drugs",
    "arguments": {}
  }
}'
biologybiology_drugs_similar-by-target
REST reference →

Returns drugs that share at least one protein target with the given drug, ranked by overlap, along with the shared targets and the resolved root drug and its variant forms. Use it to find drugs with a similar mechanism of action or to explore target-based drug relationships. Returns 404 when the drug key cannot be resolved.

Use cases

  • Find drugs that share targets with a given drug
  • Explore mechanism-of-action neighbors for a drug
  • List targets shared between a drug and its analogs

Parameters

NameTypeRequiredConstraintsDescription
limitintegerno1..100Range 1-100; default 20 (range 1-100; default 20)
keystringyes——

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "biology_drugs_similar-by-target",
    "arguments": {
      "key": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "biology_drugs_similar-by-target",
    "arguments": {
      "key": "example"
    }
  }
}'
biologybiology_prioritize-targets
REST reference →

Rank molecular targets for a disease with approved drugs, trial activity, sponsors, and a novelty score. Useful for identifying promising targets for drug discovery. Targets are selected top-N by association score first, then re-ordered by sortBy - 'novelty' therefore means most novel among the top-scoring set, not globally. An unresolvable disease name, a malformed efo_id (missing its 'PREFIX:' part), or an unknown efo_id returns HTTP 500 with an explanatory error - correct the input rather than retrying it.

Use cases

  • identify promising drug discovery targets for a disease

Required: provide at least one of disease or efo_id

Parameters

NameTypeRequiredConstraintsDescription
diseasestringno—Disease name (fuzzy resolution). Either disease or efo_id must be provided.
efo_idstringno—Disease CURIE (e.g., MONDO:0004975). Precise ontology ID. Takes precedence over disease.
topNintegerno1..200Maximum number of targets to return (1-200, default 20). Selection is top-N by association score; sortBy only re-orders the selected set. (range 1-200; default 20)
minScorenumberno0..1Minimum association score filter (0-1, default 0). (range 0-1; default 0)
sortBystringnoenum: score, novelty, trials, approvedSort order: score, novelty, trials, approved (default score). Applied AFTER top-N selection - 'novelty' means most novel within the top-scoring set. (default score)

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "biology_prioritize-targets",
    "arguments": {
      "disease": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "biology_prioritize-targets",
    "arguments": {
      "disease": "example"
    }
  }
}'
biologybiology_target-landscape
REST reference →

Explore the competitive landscape for a molecular target: all modulating drugs with approval status, safety warnings, max clinical phase (numeric, combining trial and indication evidence), trial counts, sponsors, and indications. A target that cannot be resolved returns HTTP 500 with an explanatory 'not found' error naming the input; a 200 with an empty drugs list means the target resolved but has no modulating drugs recorded.

Use cases

  • full competitive landscape for a target across drugs and sponsors

Parameters

NameTypeRequiredConstraintsDescription
targetstringyes—Molecular target name, gene symbol, or identifier (e.g., 'APP', 'ENSG00000142192', 'amyloid beta').

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "biology_target-landscape",
    "arguments": {
      "target": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "biology_target-landscape",
    "arguments": {
      "target": "example"
    }
  }
}'
biologybiology_target-to-drugs
REST reference →

Look up all drugs that modulate a specific biological target (fixed 50-drug cap per call). Returns drug name, phase, approval status, mechanism of action, and safety warnings. The action filter is an exact, non-fuzzy match against the relationship's action_type (e.g. 'INHIBITOR') - a mistyped value returns an empty result, not an error. A target that cannot be resolved returns HTTP 500 with an explanatory 'not found' error naming the input - correct the target name; repeating the same input cannot succeed.

Use cases

  • find all drugs hitting a target
  • competitive scan for a target by action type

Parameters

NameTypeRequiredConstraintsDescription
targetstringyes—Biological target name or symbol (e.g., 'EGFR', 'TNF').
actionstringno—Filter by action type (e.g., 'INHIBITOR', 'AGONIST'). Exact match on the stored action_type - a mistyped value returns an empty list.

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "biology_target-to-drugs",
    "arguments": {
      "target": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "biology_target-to-drugs",
    "arguments": {
      "target": "example"
    }
  }
}'

clinical

clinicalclinical_portfolio-comparison
REST reference →

Compare clinical trial portfolios of multiple sponsors for a specific disease. Returns market size, intersection counts, per-sponsor breakdowns, and paginated common trials.

Use cases

  • compare two or more sponsors in one disease
  • benchmark competitor pipelines

Parameters

NameTypeRequiredConstraintsDescription
sponsorsstringyes—[comma-separated list] One or more sponsor names (up to 10). e.g. 'pfizer,roche'.
conditionKeywordstringyes—Condition or disease keyword to compare portfolios for. A keyword that does not resolve to a disease returns zeros (market_size_trials 0) rather than an error - confirm the keyword before treating the zeros as data.
statusstringno—Exact trial status in the stored UPPERCASE form (e.g. RECRUITING). Case-sensitive - a mixed-case value returns no rows.
phasestringno—Phase filter; loose forms ('2', 'II', 'Phase 2/3') are normalized server-side, otherwise a case-insensitive substring match.
pageintegernomin 1Page number (default 1). (min 1; default 1)
limitintegerno1..100Results per page (1-100, default 50). (range 1-100; default 50)

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "clinical_portfolio-comparison",
    "arguments": {
      "sponsors": "example",
      "conditionKeyword": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "clinical_portfolio-comparison",
    "arguments": {
      "sponsors": "example",
      "conditionKeyword": "example"
    }
  }
}'
clinicalclinical_search-composite
REST reference →

Search clinical trials by disease, drug, target, and sponsor with combination filters. All parameters optional; at least one biological filter recommended. Returns paginated results, status breakdown, and full audit trail. disease/drug/target are resolved server-side (exact, alias, phrase, vector) and expanded to their graph ids; sponsor resolves via autocomplete + corporate hierarchy; status is an EXACT match on the stored UPPERCASE value (a mixed-case value returns no rows, not an error); phase accepts loose forms ('2', 'II', 'phase ii', 'Phase 2/3') normalized server-side, else a case-insensitive substring match. Failure modes: a disease/drug/target-ONLY query whose value cannot be resolved returns HTTP 500 naming the input (correct the name; repeating the same value cannot succeed); an unresolved entity inside a COMBINED query degrades to a 200 with totalCount 0; sponsor-only queries return 0 counts instead of an error. Target filters also return a data.mechanisms action-type summary; the status breakdown is empty for the single disease/drug/target fast paths.

Use cases

  • size a sponsor's portfolio in a disease
  • find trials combining sponsor + drug + disease filters

Parameters

NameTypeRequiredConstraintsDescription
sponsorstringno—Sponsor name (resolves via autocomplete and hierarchy).
diseasestringno—Disease or condition name (resolved to ontology IDs such as EFO, MONDO).
drugstringno—Drug name (generic or brand, resolved to ChEMBL IDs).
targetstringno—Biological target (gene/protein) name or symbol.
phasestringno—Clinical trial phase; loose forms are normalized server-side (e.g. 'Phase 2', '2', 'II', 'phase ii', 'Phase 2/3'), otherwise a case-insensitive substring fallback.
statusstringno—Exact trial status in the stored UPPERCASE form (e.g. RECRUITING, COMPLETED, ACTIVE_NOT_RECRUITING). Case-sensitive - a mixed-case value returns no rows.
sponsorTypestringno——
includeSponsorsbooleanno—booleans arrive as strings - send 'true' or 'false'; value is parsed from the raw query string and coerced server-side
limitintegerno1..100Results per page (1-100, default 50). (range 1-100; default 50)
pageintegernomin 1Page number (default 1). (min 1; default 1)

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "clinical_search-composite",
    "arguments": {}
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "clinical_search-composite",
    "arguments": {}
  }
}'
clinicalclinical_trial-details
REST reference →

Retrieve a single clinical trial's graph-enriched details by NCT ID (exact nct_id match, stored UPPERCASE; NCT ids only - not EU CT numbers). Returns graph-resolved sponsors plus conditions / interventions / summary as server-flattened strings: conditions and interventions are comma-joined and CAPPED at the first 5 entries each, and summary is cleaned and truncated (~800 chars + '...'), so never imply those lists are complete. Unknown ids return HTTP 404.

Use cases

  • look up one trial by NCT ID

Parameters

NameTypeRequiredConstraintsDescription
nctIdstringyes—ClinicalTrials.gov identifier, exact stored form (e.g., 'NCT05679999').

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "clinical_trial-details",
    "arguments": {
      "nctId": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "clinical_trial-details",
    "arguments": {
      "nctId": "example"
    }
  }
}'
clinicalclinical_trial-pos
REST reference →

Machine-learning Probability of Success (POS) for ONE clinical trial, scored live from the trial's design features (phase, blinding, statistical-analysis-plan mention, enrollment, arm count, sites, randomization, interventional / treatment flags, plus the resolved sponsor). Returns pos_score as a PERCENTAGE (0-100, two decimals; 74.25 = 74.25%) alongside the trial's status, phase and last_updated. The lookup key is the trial's registry_id - copy it from a trial search / sample result (the id / trial_id field); an unknown id returns HTTP 404, an unavailable inference service returns HTTP 502. Requires a workspace tier that includes the clinical-trial-pos tool (its own daily rate limit). The response carries NO feature breakdown - present the score as a model estimate, never as a factual outcome probability or clinical advice.

Use cases

  • probability of success for one specific trial
  • de-risk a single trial's design against the model baseline

Parameters

NameTypeRequiredConstraintsDescription
trialIdstringyes—Trial registry id (registry_id, e.g. an NCT id). Copy it exactly from a trial search / sample result (the id / trial_id field); unknown ids return HTTP 404.

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "clinical_trial-pos",
    "arguments": {
      "trialId": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "clinical_trial-pos",
    "arguments": {
      "trialId": "example"
    }
  }
}'

clinical-trials

clinical-trialsclinical-trials_details
REST reference →

Retrieve one complete registry trial document by its registry id, including ALL update_logs, eligibility criteria, officials, contacts, facilities, resolved entities, and the resolved PI -> OpenAlex researcher links in data.researchers (each row has author_key, name, match_tag, h_index; author_key is directly usable as pi_author_id in the registry search). For a graph-enriched lookup by NCT id you can also use clinical.trial-details. List and sample responses never include researcher links - this endpoint is how you close the trial -> its PI -> that PI's other trials chain. If data.researchers is empty, this trial's PI is not resolved yet: report the gap or use another trial / a user-supplied id; do not fetch more trials hunting for an id.

Use cases

  • full record for one trial by NCT id
  • eligibility criteria, facilities, officials or update history for a trial
  • get a trial's resolved PI OpenAlex author_key to then list that PI's other trials

Parameters

NameTypeRequiredConstraintsDescription
trialIdstringyes—Trial registry identifier, e.g. NCT05679999 or an EU CT number like 2025-521742-15-00.

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "clinical-trials_details",
    "arguments": {
      "trialId": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "clinical-trials_details",
    "arguments": {
      "trialId": "example"
    }
  }
}'
clinical-trialsclinical-trials_sample
REST reference →

Return up to 5 recently updated trial documents from the registry. Cheap way to inspect the real document shape or to fetch exact OpenAlex topic-name strings to reuse with the topic search. Available on all workspace tiers. Researcher (OpenAlex PI) links are NOT included here - use Trial Full Record on one of the returned trial ids to get a trial's resolved PI author_key.

Use cases

  • inspect recent trial document fields
  • get an exact openalex topic_name for the topic search

Parameters

NameTypeRequiredConstraintsDescription
limitnumberno1..5Number of trials to return (1-5, default 1). (range 1-5; default 1)

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "clinical-trials_sample",
    "arguments": {}
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "clinical-trials_sample",
    "arguments": {}
  }
}'
clinical-trialsclinical-trials_topics
REST reference →

Search trials by OpenAlex topic name (exact PHRASE match over openalex_topics[].topic_name; relevance-sorted by default). Accepts every optional filter from the registry search. Get exact topic_name strings from the sample endpoint or from trial documents - fuzzy strings will not match.

Use cases

  • trials under an OpenAlex research topic
  • topic-restricted listing with status/phase/sponsor filters

Parameters

NameTypeRequiredConstraintsDescription
searchstringno—Additional full-text PHRASE match over title/summary text (same semantics as the registry search).
querystringno——
pagenumbernomin 1Page number (default 1). (min 1; default 1)
limitnumberno1..100Results per page (1-100, default 20). (range 1-100; default 20)
statusstringno—[comma-separated list] array parameter - sent as a single comma-separated string; value is parsed from the raw query string and coerced server-side
phasestringno—[comma-separated list] array parameter - sent as a single comma-separated string; value is parsed from the raw query string and coerced server-side
sponsorstringno—Exact match against resolved sponsor names (no fuzzy matching).
sponsor_typestringno—[comma-separated list] array parameter - sent as a single comma-separated string; value is parsed from the raw query string and coerced server-side
mentionstringno——
sponsor_querystringno—repeatable; send one &sponsor_query= per line, do NOT comma-join (sponsor names contain commas); free-form value; value transformed server-side
trial_idsstringno—[comma-separated list] array parameter - sent as a single comma-separated string; value is parsed from the raw query string and coerced server-side
conditionstringno—Exact match against resolved condition names (no fuzzy matching).
disease_idstringno—Disease CURIE with uppercase prefix (e.g. EFO:0003767, MONDO:0004992). Values without a colon are silently ignored by the server (filter dropped). Get CURIEs from the Disease Autocomplete tool.
enrollment_minnumberno—Minimum enrollment (inclusive).
enrollment_maxnumberno—Maximum enrollment (inclusive).
start_date_afterstringno—YYYY-MM-DD; matches trials with start_date >= this date.
completion_date_beforestringno—YYYY-MM-DD; matches trials with completion_date <= this date.
updated_sincestringno——
last_update_posted_afterstringno——
sortstringnoenum: updated, enrollment, relevanceSort order (server default for topic search: relevance). 'updated' returns only trials with an update timestamp; 'enrollment' only trials with non-null enrollment. (default updated)
orderstringnoenum: asc, descSort direction (default desc); applies to updated/enrollment. (default desc)
sexstringno—Eligible sex, e.g. ALL, FEMALE, MALE.
min_age_yearsnumberno—Minimum participant age in years.
max_age_yearsnumberno—Maximum participant age in years.
healthy_volunteersbooleanno—Accepts healthy volunteers (true/false).
design_allocationstringno—Allocation methodology pass-through (e.g. Randomized).
design_maskingstringno—Masking methodology pass-through (e.g. Double, Single).
design_primary_purposestringno—Primary purpose pass-through (e.g. Treatment).
sponsor_trial_count_maxnumberno—Only trials having some sponsor (resolved or raw) with a total trial count below this number - finds small/emerging sponsors.
pi_author_idstringno—OpenAlex author id for a principal investigator. Accepts A#######, openalex_A####### or the full https://openalex.org/... URL. Invalid ids return HTTP 400. Obtain a real id from the user or from the Trial Full Record endpoint's data.researchers[].author_key - there is no name-to-id resolution, so never invent one.
pi_match_tagstringnoenum: verified, shortcut, llmRestrict PI links by resolution confidence: verified = institution gate passed (safe), shortcut = name-only match (provisional), llm = LLM-arbiter accepted. Only meaningful together with pi_author_id; on its own it does NOT filter (the full corpus total is returned).
topicstringyes—OpenAlex topic name, phrase-matched exactly (e.g. 'CAR-T cell therapy research'). Prefer exact topic_name strings seen in trial documents.

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "clinical-trials_topics",
    "arguments": {
      "topic": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "clinical-trials_topics",
    "arguments": {
      "topic": "example"
    }
  }
}'

companies

companiescompanies_details
REST reference →

Returns the profile for a single company identified by its domain, including its linked organizations. Call it when you already know a company's domain and need its details. Returns 404 if no company matches the domain, and 400 if the domain is malformed.

Use cases

  • Look up a company profile by domain
  • Get the organizations linked to a company

Parameters

NameTypeRequiredConstraintsDescription
include_embeddingbooleanno—Set to false to omit the company's embedding from the response.
domainstringyes—Company web domain, e.g. example.com.

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "companies_details",
    "arguments": {
      "domain": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "companies_details",
    "arguments": {
      "domain": "example"
    }
  }
}'
companiescompanies_similar
REST reference →

Returns companies similar to the given company, ranked by cosine similarity, along with the source company and metadata about the result set. Use it to find comparable or related companies from a known domain. Fails with 404 if the company does not exist or has no similarity data available yet, 400 for invalid query parameters, and 503 if similarity search is temporarily unavailable.

Use cases

  • Find companies similar to a known company
  • Discover comparable businesses by domain
  • Expand a company list with lookalikes

Parameters

NameTypeRequiredConstraintsDescription
limitnumberno1..50Maximum number of similar companies to return. (range 1-50; default 10)
min_similaritynumberno-1..1Minimum cosine similarity a company must reach to be included. (range -1-1)
sectorstringno—Restrict results to companies in this sector.
countrystringno—Restrict results to companies in this country.
statusstringno—Restrict results to companies with this status.
include_embeddingbooleanno—When true, include each result's similarity vector in the response.
domainstringyes—Company domain used to identify the source company.

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "companies_similar",
    "arguments": {
      "domain": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "companies_similar",
    "arguments": {
      "domain": "example"
    }
  }
}'

cpc

cpccpc_lookup
REST reference →

Returns the single CPC classification entry matching an exact CPC code. Call it to resolve a known CPC code to its classification details. Fails with 404 when no entry matches the code, 400 when the code parameter is invalid, and 500 on an internal error.

Use cases

  • Resolve a CPC code to its classification details
  • Verify that a CPC code exists

Parameters

NameTypeRequiredConstraintsDescription
codestringyes—The exact CPC code to look up.

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "cpc_lookup",
    "arguments": {
      "code": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "cpc_lookup",
    "arguments": {
      "code": "example"
    }
  }
}'

diseases

diseasesdiseases_autocomplete
REST reference →

Resolve a partial or full disease name to canonical disease entries carrying an ontology CURIE (efo_id, e.g. EFO:0003767). Returns up to 10 name/efo_id matches. Use this to convert a disease name into the exact CURIE expected by the disease_id / efo_id filters on trial search, regulatory approvals and Medicare drug spending, instead of guessing an ontology id.

Use cases

  • resolve a disease name to its EFO CURIE
  • disambiguate a disease name before filtering trials, approvals or Medicare spending by ontology id

Parameters

NameTypeRequiredConstraintsDescription
qstringyes—Partial or full disease name to autocomplete (e.g. 'breast cancer', 'sickle cell disease').

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "diseases_autocomplete",
    "arguments": {
      "q": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "diseases_autocomplete",
    "arguments": {
      "q": "example"
    }
  }
}'
diseasesdiseases_family-tree
REST reference →

Returns the ancestor and descendant branches of a disease in the disease hierarchy, up to the requested depth, along with counts and whether the root key resolved. Call it to explore parent/child relationships around a disease. Returns 400 for invalid query parameters, 503 when the disease hierarchy is unavailable on this deployment, and 500 on internal failure.

Use cases

  • Explore a disease's parent and child relationships
  • Find ancestor diseases of a condition
  • List descendant diseases under a disease

Parameters

NameTypeRequiredConstraintsDescription
depthintegerno1..8Range 1-8; default 3 (range 1-8; default 3)
keystringyes——

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "diseases_family-tree",
    "arguments": {
      "key": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "diseases_family-tree",
    "arguments": {
      "key": "example"
    }
  }
}'

drug-pricing

drug-pricingdrug-pricing_details
REST reference →

Returns the pricing record for a single drug product identified by its key. Call it when you already have a product key and need that product's pricing details. Returns 404 if no product matches the key, and 500 on an internal failure.

Use cases

  • Look up pricing for a specific drug product
  • Fetch details for a known product key

Parameters

NameTypeRequiredConstraintsDescription
keystringyes——

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "drug-pricing_details",
    "arguments": {
      "key": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "drug-pricing_details",
    "arguments": {
      "key": "example"
    }
  }
}'

financials

financialsfinancials_filings
REST reference →

Returns a paginated, filtered, sorted list of SEC filings with page metadata (totalItems, totalPages, hasMore) and the applied sort/order. Use it to browse filings by ticker, form type, filing date range, or to poll for filings changed since a prior cursor. Returns 400 for invalid or explicitly empty tickers/form_types or an unparseable updated_since, 503 when the feed is not available on the current data epoch, and 500 on unexpected failure.

Use cases

  • List recent filings for one or more tickers
  • Poll for filings updated since a last-seen timestamp
  • Filter filings by form type and filing date range

Parameters

NameTypeRequiredConstraintsDescription
tickersstringno—Comma-separated ticker symbols, matched as OR (e.g. ARWR,VRTX); omit to skip the filter.
form_typesstringno—Comma-separated SEC form types, matched as OR (e.g. 8-K,10-Q); omit to skip the filter.
updated_sincestringno—ISO-8601 timestamp; returns only filings synced strictly after it, for incremental polling.
date_fromstringno—Inclusive lower bound on the filing date.
date_tostringno—Inclusive upper bound on the filing date.
sortstringnoenum: synced_at, date_filedDefault synced_at (default synced_at)
orderstringnoenum: asc, descDefault desc (default desc)
pageintegernomin 1Min 1; default 1 (min 1; default 1)
limitintegerno1..500Range 1-500; default 100 (range 1-500; default 100)

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "financials_filings",
    "arguments": {}
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "financials_filings",
    "arguments": {}
  }
}'
financialsfinancials_lei-to-ticker
REST reference →

Returns the LEI's name together with the SEC entities (ticker mappings) associated with that LEI. Call it to resolve a Legal Entity Identifier to its publicly traded ticker(s). Returns 404 when no SEC ticker mapping exists for the LEI, 400 for an invalid LEI parameter, and 500 on internal failure.

Use cases

  • Resolve an LEI to its SEC ticker
  • Look up the entity name behind an LEI
  • Find publicly traded entities for a legal entity identifier

Parameters

NameTypeRequiredConstraintsDescription
leistringyes—minimum length 20; maximum length 20; input normalized server-side (.toUpperCase()); must match pattern /^[A-Z0-9]{20}$/ (Invalid LEI format)

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "financials_lei-to-ticker",
    "arguments": {
      "lei": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "financials_lei-to-ticker",
    "arguments": {
      "lei": "example"
    }
  }
}'
financialsfinancials_metrics
REST reference →

Returns financial metrics for a company identified by ticker, including cash, short-term investments, debt, revenue, net income, liquidity, quarterly burn, runway in years, shares outstanding, and a burn/runway breakdown. Call it to assess a company's cash position and how long its liquidity lasts at the current burn rate. Returns 404 when no financial data exists for the ticker.

Use cases

  • Assess a company's cash runway and burn rate
  • Look up liquidity and debt metrics by ticker
  • Compare revenue and net income for a public company

Parameters

NameTypeRequiredConstraintsDescription
tickerstringyes—minimum length 1; maximum length 10; input normalized server-side (.toUpperCase())

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "financials_metrics",
    "arguments": {
      "ticker": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "financials_metrics",
    "arguments": {
      "ticker": "example"
    }
  }
}'

funding-opportunities

funding-opportunitiesfunding-opportunities_details
REST reference →

Returns the full record for a single funding opportunity, including its organization chain and complete update history. Call it when you already have a funding ID and need the complete detail rather than a summary. Fails with 404 if no opportunity matches the ID, 400 if the ID is malformed, 503 if the detail lookup is unavailable on this deployment, and 500 on internal error.

Use cases

  • Fetch full details of a funding opportunity by ID
  • Review the update history of a funding opportunity
  • Look up the organization chain behind a funding opportunity

Parameters

NameTypeRequiredConstraintsDescription
fundingIdstringyes—minimum length 1; maximum length 500

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "funding-opportunities_details",
    "arguments": {
      "fundingId": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "funding-opportunities_details",
    "arguments": {
      "fundingId": "example"
    }
  }
}'

funding-rounds

funding-roundsfunding-rounds_companies
REST reference →

Returns a paginated list of companies aggregated from their funding rounds, each with company profile fields, round count, round types, first and latest round dates, latest round type and amount, total funding amount, currencies, investors, emails, founders, and leadership. Call it to browse or filter companies by sector, country, round type, verification, leadership or email availability, and to sort by recency, name, round count, or total amount. Invalid query parameters return HTTP 400.

Use cases

  • List funded companies in a sector or country
  • Find companies with the most funding rounds or highest total funding
  • Filter companies that have leadership or contact emails available

Parameters

NameTypeRequiredConstraintsDescription
pagenumbernomin 1Page of results to return. (min 1; default 1)
limitnumberno1..500Number of companies per page. (range 1-500; default 20)
sectorstringno—Sector label to restrict results to.
countrystringno—Country label to restrict results to.
round_typestringno—Funding round type a company must have at least one of.
website_verifiedbooleanno—Restrict to companies whose website is verified (true) or not (false).
has_leadershipbooleanno—Restrict to companies with (true) or without (false) leadership contacts.
has_emailsbooleanno—Restrict to companies with (true) or without (false) contact emails.
min_round_countintegernomin 1Only include companies with at least this many funding rounds. (min 1)
min_total_amountnumbernomin 0Only include companies whose summed funding amount reaches this value. (min 0)
sortstringnoenum: latest_round_date, company_name, round_count, total_amountField to order results by. (default latest_round_date)
orderstringnoenum: asc, descSort direction, ascending or descending. (default desc)

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "funding-rounds_companies",
    "arguments": {}
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "funding-rounds_companies",
    "arguments": {}
  }
}'
funding-roundsfunding-rounds_companies_details
REST reference →

Returns an aggregated profile for a company in the funding rounds data: company details, round count, round types, first and latest round dates, latest round amount, total funding amount, and deduplicated investors, founders, leadership, emails, and related organizations. Call it to look up a company's funding history and contacts by its key or name. Returns 404 if no funding rounds match the company.

Use cases

  • Look up a company's funding history and investors
  • Get total funding and latest round details for a company
  • Find founders and leadership contacts for a funded company

Parameters

NameTypeRequiredConstraintsDescription
companyKeystringyes—Company key or company name; matching is case-insensitive.

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "funding-rounds_companies_details",
    "arguments": {
      "companyKey": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "funding-rounds_companies_details",
    "arguments": {
      "companyKey": "example"
    }
  }
}'
funding-roundsfunding-rounds_details
REST reference →

Returns a single funding round by its id, including its associated organizations and recent update log entries. Call it when you have a funding round id and need its full details. Returns 404 if no funding round matches the id, and 400 if the id is malformed.

Use cases

  • Look up a funding round by id
  • Get organizations involved in a funding round

Parameters

NameTypeRequiredConstraintsDescription
idstringyes—Funding round identifier.

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "funding-rounds_details",
    "arguments": {
      "id": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "funding-rounds_details",
    "arguments": {
      "id": "example"
    }
  }
}'
funding-roundsfunding-rounds_status
REST reference →

Returns the current load state of the funding-rounds data, including its epoch state. Call it to check whether funding-round data is ready before querying other funding-round endpoints; it responds immediately without waiting for initialization.

Use cases

  • Check funding-round data readiness
  • Poll funding-round load state before querying

Parameters

No parameters.

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "funding-rounds_status",
    "arguments": {}
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "funding-rounds_status",
    "arguments": {}
  }
}'

grants

grantsgrants_details
REST reference →

Retrieve ONE grant's full record by its original identifier (NIH application_id or CORDIS id): title, abstract, funding amount, project start/end dates, organizations and the top OpenAlex topics with scores. Copy the exact grant_id from a grant registry search or sample result; never construct or guess it.

Use cases

  • full record for one grant by its original id
  • abstract, organizations and OpenAlex topics for a grant

Parameters

NameTypeRequiredConstraintsDescription
grantIdstringyes—Original grant identifier (NIH application_id or CORDIS id). Copy it exactly from the grant_id field of a search or sample result.

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "grants_details",
    "arguments": {
      "grantId": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "grants_details",
    "arguments": {
      "grantId": "example"
    }
  }
}'
grantsgrants_sample
REST reference →

Return a small fixed sample of recent grants (3 NIH + 2 CORDIS) to preview the real grant document shape. Takes no parameters. Available on all workspace tiers. Use a returned grant_id with the Grant Full Record tool.

Use cases

  • inspect the real grant document shape
  • get a grant_id for the full-record tool

Parameters

No parameters.

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "grants_sample",
    "arguments": {}
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "grants_sample",
    "arguments": {}
  }
}'
grantsgrants_sponsor-funding
REST reference →

Returns grant money totals for one sponsor organization, broken down by NIH and CORDIS counts and amounts plus a combined total. Accepts a ROR id, LEI, raw organization name, or raw mention id, so call it when you have any of those and want per-org funding totals. An unknown sponsor returns 200 with zero totals, null name and kind, and the keys that were tried. Invalid query parameters return 400; other failures return 500.

Use cases

  • Get total grant funding for a research organization
  • Look up NIH and CORDIS grant totals by ROR id or LEI
  • Check funding totals for an organization given only its name

Parameters

NameTypeRequiredConstraintsDescription
sponsorstringyes—minimum length 1

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "grants_sponsor-funding",
    "arguments": {
      "sponsor": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "grants_sponsor-funding",
    "arguments": {
      "sponsor": "example"
    }
  }
}'
grantsgrants_topic-funding
REST reference →

Returns money totals for a single primary research topic, split by NIH and CORDIS funding, with total grant counts and a combined total. Call it to see how much grant money a topic has attracted; grants without a start date are still counted. An unknown topic returns 200 with zero totals and the topic echoed back. Invalid query parameters return 400; an internal failure returns 500.

Use cases

  • Get total grant funding for a research topic
  • Compare NIH versus CORDIS money for a topic

Parameters

NameTypeRequiredConstraintsDescription
topicstringyes—minimum length 1

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "grants_topic-funding",
    "arguments": {
      "topic": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "grants_topic-funding",
    "arguments": {
      "topic": "example"
    }
  }
}'

market-sizing

market-sizingmarket-sizing_details
REST reference →

Returns the market-sizing record for a single disease identified by its key. Call it when you already have a disease key and need its market-sizing details. Returns 404 if no disease matches the key, and 500 on an internal failure.

Use cases

  • Look up market sizing for a disease by key
  • Fetch details for a known disease key

Parameters

NameTypeRequiredConstraintsDescription
keystringyes——

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "market-sizing_details",
    "arguments": {
      "key": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "market-sizing_details",
    "arguments": {
      "key": "example"
    }
  }
}'

medicare-drugs

medicare-drugsmedicare-drugs_details
REST reference →

Retrieve ONE Medicare Part D drug's full 2025 spending record by its unique _key (derived from the generic name, e.g. 'aripiprazole'). Returns the full document including brand names, spending/claims/beneficiary metrics, the linked ChEMBL molecule and approved indications (already deduplicated by efo_id server-side). Use after a Medicare Drug Spending Search; copy the exact _key string from a result - never construct or guess it.

Use cases

  • full spending detail for one Medicare drug
  • approved indications (efo_id + disease_name) for a drug

Parameters

NameTypeRequiredConstraintsDescription
keystringyes—Unique drug _key derived from the generic name (e.g. 'aripiprazole'). Copy it exactly from the '_key' field of a Medicare Drug Spending Search record; do not construct it from the drug name.

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "medicare-drugs_details",
    "arguments": {
      "key": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "medicare-drugs_details",
    "arguments": {
      "key": "example"
    }
  }
}'

medicare-spending

medicare-spendingmedicare-spending_details
REST reference →

Returns the full spending record for a single Medicare spending entry identified by its key. Call it when you already have a key from a spending search and need the complete record. Returns 404 if no entry matches the key, and 500 on internal failure.

Use cases

  • Fetch full details for a Medicare spending entry
  • Look up a spending record by its key

Parameters

NameTypeRequiredConstraintsDescription
keystringyes——

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "medicare-spending_details",
    "arguments": {
      "key": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "medicare-spending_details",
    "arguments": {
      "key": "example"
    }
  }
}'

merged

mergedmerged_path
REST reference →

Returns the boundary of a multi-step traversal starting from one or more start nodes, following the requested step sequence. Call it to walk relationships across the merged graph from known starting points. Fails with 400 when start is empty, when steps cannot be parsed, or when required data is not loaded; returns 500 on internal errors.

Use cases

  • Trace a multi-hop relationship path from known starting nodes
  • Explore connected entities across several relationship steps

Parameters

NameTypeRequiredConstraintsDescription
startstringyes—[comma-separated list] minimum length 1
stepsstringyes—minimum length 1
limitintegerno1..50000Range 1-50000; default 20000 (range 1-50000; default 20000)

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "merged_path",
    "arguments": {
      "start": "example",
      "steps": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "merged_path",
    "arguments": {
      "start": "example",
      "steps": "example"
    }
  }
}'
mergedmerged_walk
REST reference →

Traverses the merged graph from one or more starting nodes across the given edge types and returns the reached boundary nodes plus traversal metadata. Call it to explore relationships outward from known nodes, optionally restricting hop distance and direction. Returns 400 when start or edges is empty, when a parameter is invalid, or when a requested edge type is not loaded; returns 500 on internal failure.

Use cases

  • Explore relationships outward from known nodes
  • Find nodes reachable within a hop range across selected edge types
  • Trace incoming or outgoing connections from a set of starting nodes

Parameters

NameTypeRequiredConstraintsDescription
startstringyes—[comma-separated list] minimum length 1
edgesstringyes—[comma-separated list] minimum length 1
directionstringnoenum: out, in, bothDefault out (default out)
min_hopsintegerno0..64Range 0-64; default 1 (range 0-64; default 1)
max_hopsintegerno0..64Range 0-64; default 3 (range 0-64; default 3)
limitintegerno1..50000Range 1-50000; default 20000 (range 1-50000; default 20000)

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "merged_walk",
    "arguments": {
      "start": "example",
      "edges": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "merged_walk",
    "arguments": {
      "start": "example",
      "edges": "example"
    }
  }
}'

papers

paperspapers_detail
REST reference →

Returns a single paper record identified by DOI, arXiv/OSF-prefixed id, sanitized key, or PMID. Call it when you already have one paper identifier and need its full record. Returns 404 if no paper matches, 400 for an invalid query, and 500 on an internal failure.

Use cases

  • Fetch a paper's full record by DOI
  • Look up a paper by arXiv or OSF id
  • Resolve a PubMed id to a paper record

Parameters

NameTypeRequiredConstraintsDescription
doistringyes—minimum length 1

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "papers_detail",
    "arguments": {
      "doi": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "papers_detail",
    "arguments": {
      "doi": "example"
    }
  }
}'
paperspapers_sample
REST reference →

Returns a preview list of the five most recently published papers, ordered newest first, along with a sample size and a note. Call it to show a quick recent-papers preview without specifying any filters. Fails with 500 if the request cannot be completed, or with a not-ready response when the service is unavailable.

Use cases

  • Preview the latest published papers
  • Show a small recent-papers list on a landing page

Parameters

No parameters.

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "papers_sample",
    "arguments": {}
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "papers_sample",
    "arguments": {}
  }
}'

patents

patentspatents_aggregate
REST reference →

Fast pre-computed aggregate patent counts (patent_agg_* tables), grouped by year, CPC code and/or company - group_by accepts a comma-separated subset of 'year','cpc','company'. IMPORTANT: country and legal_status are NOT supported here (HTTP 400) - use patents.search for those. The year range defaults to the current year and the two preceding calendar years; pass publication_date_from/to to widen it. Company filters accept an exact raw assignee string, 'organizations/<key>', 'ror:<id>' or 'lei:<id>'; unresolved company values and unknown CPC prefixes return HTTP 400 naming the value (never silently dropped). meta.total_buckets is the number of buckets returned, not the number of groups. Requires a Pro workspace (returns HTTP 402 otherwise). Use patents.search for listings and patents.yoy-growth for growth deltas.

Use cases

  • patents per year for a company or CPC class
  • CPC / company distribution within a portfolio (one call, multiple group_by values)
  • quick portfolio sizing without fetching listings

Parameters

NameTypeRequiredConstraintsDescription
group_bystringno—Comma-separated subset of 'year', 'cpc', 'company' (e.g. 'year,company'; default 'year'). Each dimension produces one bucket per value with a 'count'. (default year)
company_idstringno—Organization to filter on. Accepts an exact raw assignee string (as it appears in a patent's assignees array), 'organizations/<key>', 'ror:<id>', 'lei:<id>', or a bare ROR/LEI id. Takes precedence over company_name. Unresolved values return HTTP 400 (never silently ignored).
company_namestringno—Resolved organization name, used as a fallback when company_id is not provided.
cpc_codestringno—CPC classification code or prefix (e.g. 'A61K').
include_descendantsstringnoenum: true, falseWhen true (default), a cpc_code prefix expands to every code starting with it; set false for exact-code matches only. (default true)
publication_date_fromstringno—YYYY-MM-DD; restricts the counted window (defaults to the current year and the two preceding calendar years).
publication_date_tostringno—YYYY-MM-DD; restricts the counted window.
limitintegerno1..500Maximum number of buckets to return (1-500, default 100). (range 1-500; default 100)
sort_by_countstringnoenum: desc, ascSort buckets by count (default desc). (default desc)

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "patents_aggregate",
    "arguments": {}
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "patents_aggregate",
    "arguments": {}
  }
}'
patentspatents_details
REST reference →

Retrieve ONE patent's full record by its publication identifier (e.g. WO2021098789A1, EP3823456A1): abstract, inventors, classifications with CPC descriptions, family members, legal/priority/application dates, patent + NPL citations, graph-enriched citation counts, and resolved_assignees whose rows carry the full resolution chain (mention_id / direct_id / ultimate_id, with organization_id kept as the mention_id alias). Any of those ids is directly reusable as the company_id filter on patents.search / patents.aggregate / patents.yoy-growth - this closes the assignee -> portfolio chain. Responses use implicit 2xx (no success flag). Requires a Pro workspace (returns HTTP 402 otherwise).

Use cases

  • full record for one patent by publication id
  • citations, family members and legal status for a patent
  • resolve a patent's assignee to an organization id for portfolio queries

Parameters

NameTypeRequiredConstraintsDescription
patentIdstringyes—Patent publication identifier, e.g. WO2021098789A1 or EP3823456A1. Copy it from a patents.search result's patent_id; never construct or guess it.

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "patents_details",
    "arguments": {
      "patentId": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "patents_details",
    "arguments": {
      "patentId": "example"
    }
  }
}'
patentspatents_yoy-growth
REST reference →

Year-over-year patent growth by CPC code or company (dimension is required). Returns one row per group with oldCount (year_start), newCount (year_end), absolute change and percent change, sorted by growth or percent; percent is a fraction (0.35 = +35%). min_old_count (default 50) hides small groups - narrow with cpc_code / company_id or lower it. Defaults compare 2024 against 2025; pass year_start/year_end for other windows. Company filters accept an exact raw assignee string, 'organizations/<key>', 'ror:<id>' or 'lei:<id>'; unresolved company values and unknown CPC prefixes return HTTP 400 naming the value (never silently dropped). Requires a Pro workspace (returns HTTP 402 otherwise). Use patents.aggregate for plain counts.

Use cases

  • which CPC classes are growing fastest
  • company patent growth between two years
  • emerging vs. declining areas of a portfolio

Parameters

NameTypeRequiredConstraintsDescription
dimensionstringyesenum: cpc, companyGrowth dimension (required): 'cpc' groups by CPC code, 'company' groups by company.
year_startintegerno1900..2026Baseline year (default 2024). oldCount is the patent count in this year. (range 1900-2026; default 2024)
year_endintegerno1900..2026Comparison year (default 2025). newCount is the patent count in this year. (range 1900-2026; default 2025)
cpc_codestringno—Optional CPC restriction (e.g. 'A61K').
company_idstringno—Organization to filter on. Accepts an exact raw assignee string (as it appears in a patent's assignees array), 'organizations/<key>', 'ror:<id>', 'lei:<id>', or a bare ROR/LEI id. Takes precedence over company_name. Unresolved values return HTTP 400 (never silently ignored).
company_namestringno—Organization name fallback when company_id is not provided.
include_descendantsstringnoenum: true, falseWhen true (default), a cpc_code prefix expands to every code starting with it; set false for exact-code matches only. (default true)
min_old_countintegernomin 0Only include groups with at least this many patents in year_start (default 50). (min 0; default 50)
limitintegerno1..100Maximum number of groups to return (1-100, default 10). (range 1-100; default 10)
sortstringnoenum: growth_desc, growth_asc, percent_desc, percent_ascSort order (default growth_desc). (default growth_desc)

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "patents_yoy-growth",
    "arguments": {
      "dimension": "cpc"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "patents_yoy-growth",
    "arguments": {
      "dimension": "cpc"
    }
  }
}'

regulatory-approvals

regulatory-approvalsregulatory_catalysts
REST reference →

Returns upcoming regulatory catalyst events (patent expiries, exclusivity expiries, approvals) with per-type counts, the applied filters, and a generation timestamp. Call it to find scheduled regulatory milestones for a company or drug, filtered by sponsor, indication, drug names, LEI, or ticker. Requires at least one of sponsor, indication, drugNames, lei, or ticker; returns 400 if none is supplied or parameters are invalid, and 500 on failure.

Use cases

  • Find upcoming patent and exclusivity expiries for a drug
  • Look up regulatory catalysts for a company by ticker or LEI
  • List approval events expected for an indication

Parameters

NameTypeRequiredConstraintsDescription
sponsorstringno—Company or organization name sponsoring the drug.
indicationstringno—Disease or therapeutic indication to match.
drugNamesstringno—Drug name or names to match.
windowDaysintegerno1..3650Range 1-3650; default 365 (range 1-3650; default 365)
limitintegerno1..500Range 1-500; default 100 (range 1-500; default 100)
leistringno—Legal Entity Identifier of the company.
tickerstringno—Stock ticker symbol of the company.

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "regulatory_catalysts",
    "arguments": {}
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "regulatory_catalysts",
    "arguments": {}
  }
}'
regulatory-approvalsregulatory_drugs_similar-by-target
REST reference →

Returns the targets affected by a given drug plus other drugs that affect any of those same targets, along with counts. Use it to find drugs sharing a mechanism of action with a reference drug. Returns an empty target and similar-drug list when the drug has no known targets. Responds 400 for invalid query parameters or when the requested data is not loaded, and 500 on internal failure.

Use cases

  • Find drugs that share targets with a reference drug
  • List the targets of a drug and the other drugs hitting them
  • Explore mechanism-of-action overlap between drugs

Parameters

NameTypeRequiredConstraintsDescription
limitintegerno1..100Range 1-100; default 20 (range 1-100; default 20)
keystringyes——

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "regulatory_drugs_similar-by-target",
    "arguments": {
      "key": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "regulatory_drugs_similar-by-target",
    "arguments": {
      "key": "example"
    }
  }
}'
regulatory-approvalsregulatory_landscape
REST reference →

Returns a regulatory landscape summary for the given filters, including the requested parameters echoed in metadata. Call it to survey the regulatory activity around a sponsor, indication, drug, region, or time window. Invalid query parameters return HTTP 400 with field-level details; other failures return HTTP 500.

Use cases

  • Survey regulatory activity for an indication
  • Compare regulatory landscape across US and EU regions
  • Review a sponsor's regulatory footprint over recent years

Parameters

NameTypeRequiredConstraintsDescription
sponsorstringno—Sponsor name to filter the landscape by.
indicationstringno—Disease or therapeutic indication to filter by.
minYearintegerno—Earliest year (four-digit) to include in the landscape.
regionstringnoenum: US, EURegulatory region to scope results to: US or EU.
drugNamesstringno—Drug name or names to filter the landscape by.

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "regulatory_landscape",
    "arguments": {}
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "regulatory_landscape",
    "arguments": {}
  }
}'
regulatory-approvalsregulatory_organizations_family-tree
REST reference →

Returns an organization's corporate family tree: the resolved root organization plus its ancestors and descendants up to the requested depth. Call it to trace parent companies and subsidiaries of a regulatory organization. Returns 404 if the key cannot be resolved to an organization, and 400 for invalid query parameters.

Use cases

  • Trace parent companies of an organization
  • List subsidiaries and descendants of an organization
  • Map a corporate ownership hierarchy

Parameters

NameTypeRequiredConstraintsDescription
depthintegerno1..8Range 1-8; default 3 (range 1-8; default 3)
keystringyes——

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "regulatory_organizations_family-tree",
    "arguments": {
      "key": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "regulatory_organizations_family-tree",
    "arguments": {
      "key": "example"
    }
  }
}'
regulatory-approvalsregulatory_organizations_subsidiary-approvals
REST reference →

Returns a paginated list of regulatory approvals linked to an organization and its subsidiaries, with metadata including total counts and the organization keys covered. Call it to see approvals across an organization's subsidiary structure, optionally including parent organizations. Returns 400 for invalid query parameters or when the requested organization data is not available, and 500 on internal failure.

Use cases

  • List approvals across an organization and its subsidiaries
  • Review subsidiary approvals for a parent company
  • Page through regulatory approvals by organization

Parameters

NameTypeRequiredConstraintsDescription
depthintegerno0..8Range 0-8; default 3 (range 0-8; default 3)
include_ancestorsbooleanno—Default false (default false)
pageintegernomin 1Min 1; default 1 (min 1; default 1)
limitintegerno1..5000Range 1-5000; default 20 (range 1-5000; default 20)
sortstringnoenum: approval_date, updatedDefault approval_date (default approval_date)
orderstringnoenum: asc, descDefault desc (default desc)
keystringyes——

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "regulatory_organizations_subsidiary-approvals",
    "arguments": {
      "key": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "regulatory_organizations_subsidiary-approvals",
    "arguments": {
      "key": "example"
    }
  }
}'
regulatory-approvalsregulatory_profile
REST reference →

Returns a regulatory profile for a named drug, including the regulatory information associated with it. Call it when you need regulatory details about a specific drug. Fails with HTTP 400 if the drug parameter is missing or invalid, and HTTP 500 if the profile cannot be produced or an internal error occurs.

Use cases

  • Look up regulatory details for a drug
  • Check a drug's regulatory profile by name

Parameters

NameTypeRequiredConstraintsDescription
drugstringyes—minimum length 1

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "regulatory_profile",
    "arguments": {
      "drug": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "regulatory_profile",
    "arguments": {
      "drug": "example"
    }
  }
}'
regulatory-approvalsregulatory_walk
REST reference →

Traverses the regulatory graph from one or more starting nodes along specified edge types and returns the reached approvals plus a boundary and metadata. Call it to explore connected regulatory entities (e.g. approvals linked to a product or company) across multiple hops. Returns 400 if start or edges is empty, if parameters are invalid, or if a requested edge type is not available; returns 500 on internal failure.

Use cases

  • Explore regulatory entities connected to a starting node
  • Find approvals reachable through specific relationship types
  • Traverse regulatory relationships in a chosen direction

Parameters

NameTypeRequiredConstraintsDescription
startstringyes—[comma-separated list] minimum length 1
edgesstringyes—[comma-separated list] minimum length 1
directionstringnoenum: out, in, bothDefault out (default out)
min_hopsintegerno0..64Range 0-64; default 1 (range 0-64; default 1)
max_hopsintegerno0..64Range 0-64; default 3 (range 0-64; default 3)
hydratebooleanno—Default false (default false)
limitintegerno1..50000Range 1-50000; default 10000 (range 1-50000; default 10000)

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "regulatory_walk",
    "arguments": {
      "start": "example",
      "edges": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "regulatory_walk",
    "arguments": {
      "start": "example",
      "edges": "example"
    }
  }
}'
regulatory-approvalsregulatory-approvals_details
REST reference →

Retrieve ONE harmonised approval by its PUBLIC approval_id (FDA_ORANGE:020610, FDA_PURPLE:BLA125514, EMA:EU/1/20/1528 - copy it verbatim from the approval_id field of a Regulatory Approvals Search record; EMA ids contain slashes and are accepted raw or URL-encoded). Returns the application-level group - applicant_raw, record_url, label_indications, sponsors (direct entities; the full direct->ultimate hierarchy with canonical LEI/ROR ids in sponsors_chain), drugs with ChEMBL ids, indications - plus data.products[]: one entry per strength/form listing carrying the patents, exclusivity entries, TE code, pathway flags (orphan / biosimilar / generic / conditional / accelerated) and next patent/exclusivity expiries. Malformed identifiers return HTTP 400; unknown ids HTTP 404. The old internal _key lookup is no longer supported; for name-based drug lookups prefer regulatory.profile.

Use cases

  • full approval record with patents and exclusivity entries
  • verify pathway flags and linked entities for one approval

Parameters

NameTypeRequiredConstraintsDescription
idstringyes—Public approval identifier: FDA_ORANGE:020610, FDA_PURPLE:BLA125514 or EMA:EU/1/20/1528. Copy it exactly from the approval_id field of a Regulatory Approvals Search record; never construct, guess or transpose an internal _key.

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "regulatory-approvals_details",
    "arguments": {
      "id": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "regulatory-approvals_details",
    "arguments": {
      "id": "example"
    }
  }
}'
regulatory-approvalsregulatory-approvals_history
REST reference →

Label-change HISTORY for ONE approval, keyed by the public approval_id: an ascending list of versions, each with effective_time, previous_effective_time and changes[] - field-level diffs ({field, old_value, new_value, change_type: added|removed|modified}). Built from captured label diffs; when none exist it falls back to SPL version snapshots (indications-only diffs). An EMPTY history list is a normal HTTP 200 (no changes recorded - common for EMA records): report 'no recorded label changes', never an error and never a fabricated history. Unknown ids return HTTP 404; malformed ids HTTP 400. Implicit 2xx envelope.

Use cases

  • how an FDA label's sections changed over time
  • effective dates of label versions for one approval

Parameters

NameTypeRequiredConstraintsDescription
idstringyes—Public approval identifier (e.g. FDA_ORANGE:020610 or FDA_PURPLE:BLA125514), copied from a search record's approval_id.

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "regulatory-approvals_history",
    "arguments": {
      "id": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "regulatory-approvals_history",
    "arguments": {
      "id": "example"
    }
  }
}'
regulatory-approvalsregulatory-approvals_label
REST reference →

Full current openFDA label for ONE FDA approval, keyed by the public approval_id (FDA_ORANGE:... / FDA_PURPLE:BLA...). Returns SPL metadata - setid, effective_time, brand_name, generic_name, manufacturer_name, product_type, route, dosage_form, active/inactive ingredients, marketing start/end dates - plus label_sections: an object keyed by section name (e.g. indications_and_usage, warnings, dosage_and_administration, adverse_reactions) whose values are the full section text (truncated per value in the agent trace). A 404 means either the approval id is unknown OR no openFDA label row exists for it (EMA approvals have no openFDA labels - that is a data gap, not an outage); a malformed id returns HTTP 400. Responses are implicit 2xx (no success flag). Prefer Regulatory Approvals Record for structure/flags; use this only when the user needs label TEXT.

Use cases

  • label section text (indications, warnings, dosing) for one FDA approval
  • openFDA SPL metadata (setid, effective_time, ingredients) for an approval

Parameters

NameTypeRequiredConstraintsDescription
idstringyes—Public approval identifier in FDA_ORANGE:020610 or FDA_PURPLE:BLA125514 form, copied from a search record's approval_id. EMA ids parse but have no openFDA labels (404).

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "regulatory-approvals_label",
    "arguments": {
      "id": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "regulatory-approvals_label",
    "arguments": {
      "id": "example"
    }
  }
}'

researchers

researchersresearchers_profile
REST reference →

Profile document for a researcher (principal investigator) resolved to an OpenAlex author. Use trial documents or pi_author_id results from the registry search to obtain an author id. The author id must come from a real source - there is no name-to-id resolution, so never invent one; invalid id formats return HTTP 400 and an id not in the resolved-researcher registry returns HTTP 404.

Use cases

  • profile for a principal investigator
  • metadata for an OpenAlex author id

Parameters

NameTypeRequiredConstraintsDescription
authorIdstringyes—OpenAlex author id; prefer the flat forms A5027151969 or openalex_A5027151969 (the https URL form is accepted but gets URL-encoded on the wire).

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "researchers_profile",
    "arguments": {
      "authorId": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "researchers_profile",
    "arguments": {
      "authorId": "example"
    }
  }
}'
researchersresearchers_works
REST reference →

Paginated publication list (OpenAlex works) for a researcher already resolved to an OpenAlex author: title, full DOI url, type, publication_date, publication_year, venue, cited_by_count, is_open_access. Use this for 'what has this PI published', citation-impact and publication-trend questions about one author; use Researcher Profile instead for identity metadata, h-index and trial counts. The author id must come from a real source - the Trial Full Record tool's data.researchers[].author_key, a Researcher Profile result, or the user - there is no name-to-id resolution, so never invent one. meta.totalItems is the exact count for the applied filters (quote it; never recount a page). NO abstracts are returned here (they belong to the deferred works detail endpoint) - do not claim to have abstracts from this tool.

Use cases

  • list a principal investigator's publications (most-cited or most-recent first)
  • the publications behind a trial's PI (trial -> PI -> publications chain)
  • citation-impact view of one researcher's body of work

Parameters

NameTypeRequiredConstraintsDescription
pageintegernomin 1Page number (default 1). (min 1; default 1)
limitintegerno1..100Results per page (1-100, default 20). (range 1-100; default 20)
sortstringnoenum: publication_date, cited_by_countSort field (default publication_date). cited_by_count = citation impact; publication_date = chronology. (default publication_date)
orderstringnoenum: asc, descSort direction (default desc). (default desc)
publication_date_fromstringno—YYYY-MM-DD; matches works published on or after this date. Must be <= publication_date_to - an inverted window returns HTTP 400.
publication_date_tostringno—YYYY-MM-DD; matches works published on or before this date.
typestringno—OpenAlex work type, case-insensitive (common values: article, review, preprint, conference-paper, book-chapter, editorial, letter). Unknown values are rejected with HTTP 400.
authorIdstringyes—OpenAlex author id of a researcher resolved by the pipeline; prefer the flat forms A5027151969 or openalex_A5027151969 (the https URL form is accepted but gets URL-encoded on the wire).

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "researchers_works",
    "arguments": {
      "authorId": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "researchers_works",
    "arguments": {
      "authorId": "example"
    }
  }
}'

resolution

resolutionresolution_autocomplete
REST reference →

Returns a ranked list of entity name suggestions matching a partial query, with metadata including the normalized query, entity type, sort order, count returned, and elapsed time. Call it to power type-ahead or name-picker UIs across organizations, drugs, diseases, targets, and pathogen factors. Returns 400 for invalid parameters or an unknown type/sort, and 503 when the resolution index is unavailable on the deployment.

Use cases

  • Power type-ahead suggestions for an entity name search
  • Find candidate entity names matching a partial string
  • Suggest organizations, drugs, diseases, targets, or pathogen factors by prefix

Parameters

NameTypeRequiredConstraintsDescription
qstringno—minimum length 1; maximum length 200
querystringno—minimum length 1; maximum length 200
typestringnoenum: organization, drug, disease, target, pathogen_factorDefault organization (default organization)
sortstringno—maximum length 50
limitintegerno1..50Range 1-50; default 10 (range 1-50; default 10)

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "resolution_autocomplete",
    "arguments": {}
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "resolution_autocomplete",
    "arguments": {}
  }
}'

sponsors

sponsorssponsors_profile
REST reference →

Consolidated company dossier for one public pharma/biotech sponsor, resolved by SEC ticker: identity (name, LEI/ROR/CIK, isPublic), financial metrics (cash, burn, runway), clinical activity (total/active trials, byPhase, top conditions/interventions, pipeline drugs, recent trial updates), regulatory footprint (total approvals, top approved drugs, patent expirations), upcoming PDUFA catalysts, and recent SEC filings. Prefer this single call for company-level overviews; use financials.metrics only for raw cash/burn/runway questions and the clinical / regulatory domain tools when full listings are needed - this returns summarized counts and top items, not exhaustive lists. Requires a Pro workspace (returns HTTP 402 otherwise); an unresolved ticker returns HTTP 404.

Use cases

  • full profile of a public biotech/pharma company in one call
  • upcoming PDUFA catalysts and patent expirations for a sponsor
  • company snapshot combining financials, trial activity and approvals

Parameters

NameTypeRequiredConstraintsDescription
tickerstringyes—SEC stock ticker, case-insensitive (e.g. 'PFE', 'MRNA'). Invalid or unresolved tickers return HTTP 404.

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "sponsors_profile",
    "arguments": {
      "ticker": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "sponsors_profile",
    "arguments": {
      "ticker": "example"
    }
  }
}'

supply-chain

supply-chainsupply-chain_dmf
REST reference →

Returns a list of drug master file (DMF) records. Call it to browse or look up DMF entries. An empty list is a valid result, not an error.

Use cases

  • List drug master file records
  • Browse DMF entries

Parameters

No parameters.

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "supply-chain_dmf",
    "arguments": {}
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "supply-chain_dmf",
    "arguments": {}
  }
}'
supply-chainsupply-chain_dmf_details
REST reference →

Returns the details of a single drug master file (DMF) identified by its key. Call it when you already have a DMF key and need that record's full details.

Use cases

  • Look up a drug master file by key
  • Fetch DMF details for a known record

Parameters

NameTypeRequiredConstraintsDescription
keystringyes——

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "supply-chain_dmf_details",
    "arguments": {
      "key": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "supply-chain_dmf_details",
    "arguments": {
      "key": "example"
    }
  }
}'
supply-chainsupply-chain_ema-gmdp
REST reference →

Returns a list of records from the EMA good manufacturing and distribution practice (GMDP) dataset. Call it to retrieve EMA GMDP entries; the response is a list and an empty result is not an error. Requests are rate limited per day, and exceeding the limit returns an error.

Use cases

  • List EMA GMDP records
  • Retrieve EMA good manufacturing practice entries

Parameters

No parameters.

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "supply-chain_ema-gmdp",
    "arguments": {}
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "supply-chain_ema-gmdp",
    "arguments": {}
  }
}'
supply-chainsupply-chain_ema-gmdp_details
REST reference →

Returns the full record for a single EMA good manufacturing and distribution practice (GMDP) entry identified by its key. Call it when you already have a key from a list or search result and need the complete details. Fails with a not-found status if no entry matches the key.

Use cases

  • Fetch full details of an EMA GMDP record by key
  • Look up a manufacturing or distribution practice entry from a known key

Parameters

NameTypeRequiredConstraintsDescription
keystringyes——

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "supply-chain_ema-gmdp_details",
    "arguments": {
      "key": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "supply-chain_ema-gmdp_details",
    "arguments": {
      "key": "example"
    }
  }
}'
supply-chainsupply-chain_enforcement
REST reference →

Returns a list of supply-chain enforcement records. Call it to retrieve enforcement actions relevant to regulatory or supply-chain compliance. Requests are rate limited per day; exceeding the limit returns an HTTP 429 error.

Use cases

  • List supply-chain enforcement actions
  • Review regulatory enforcement records

Parameters

No parameters.

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "supply-chain_enforcement",
    "arguments": {}
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "supply-chain_enforcement",
    "arguments": {}
  }
}'
supply-chainsupply-chain_enforcement_details
REST reference →

Returns the full details of a single supply-chain enforcement record identified by its key. Call it when you already have an enforcement key and need the complete record rather than a summary. Fails with a not-found status if no record matches the key.

Use cases

  • Look up a supply-chain enforcement record by key
  • Fetch full details for a known enforcement entry

Parameters

NameTypeRequiredConstraintsDescription
keystringyes——

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "supply-chain_enforcement_details",
    "arguments": {
      "key": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "supply-chain_enforcement_details",
    "arguments": {
      "key": "example"
    }
  }
}'
supply-chainsupply-chain_establishments
REST reference →

Returns a list of establishment records from the supply-chain dataset. Call it to retrieve establishments for display or lookup. Rate-limited per day; exceeding the limit returns an HTTP error.

Use cases

  • List supply-chain establishments
  • Retrieve establishment records

Parameters

No parameters.

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "supply-chain_establishments",
    "arguments": {}
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "supply-chain_establishments",
    "arguments": {}
  }
}'
supply-chainsupply-chain_establishments_details
REST reference →

Returns the full detail record for a single supply-chain establishment identified by its key. Call it when you already have an establishment key and need that establishment's details. Fails with an error status if the key is unknown or the request exceeds the daily rate limit.

Use cases

  • Look up an establishment by its key
  • Fetch details for a known supply-chain establishment

Parameters

NameTypeRequiredConstraintsDescription
keystringyes——

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "supply-chain_establishments_details",
    "arguments": {
      "key": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "supply-chain_establishments_details",
    "arguments": {
      "key": "example"
    }
  }
}'
supply-chainsupply-chain_facilities_drilldown
REST reference →

Returns a drilldown view of a single supply-chain facility identified by its FEI. Call it when you already have a facility FEI and need its detailed breakdown. Returns 400 if the FEI is empty, 404 if no facility matches the FEI, and 500 on an internal failure.

Use cases

  • Get facility details by FEI
  • Inspect a supply-chain facility's breakdown

Parameters

NameTypeRequiredConstraintsDescription
feistringyes——

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "supply-chain_facilities_drilldown",
    "arguments": {
      "fei": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "supply-chain_facilities_drilldown",
    "arguments": {
      "fei": "example"
    }
  }
}'
supply-chainsupply-chain_facilities_globe
REST reference →

Returns a list of supply-chain facilities with their geographic locations, plus metadata giving the returned count, the total available, and whether the result was truncated. Call it to map or browse facility locations across regions. Invalid query parameters return HTTP 400; other failures return HTTP 500.

Use cases

  • Map supply-chain facility locations
  • Browse facilities by geography
  • List facility sites for a region

Parameters

NameTypeRequiredConstraintsDescription
limitintegerno1..50000Range 1-50000; default 20000 (range 1-50000; default 20000)

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "supply-chain_facilities_globe",
    "arguments": {}
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "supply-chain_facilities_globe",
    "arguments": {}
  }
}'
supply-chainsupply-chain_inspections
REST reference →

Returns a list of inspection records. Call it to retrieve inspections, for example to review regulatory inspection activity. No parameters are accepted.

Use cases

  • List inspection records
  • Review regulatory inspections

Parameters

No parameters.

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "supply-chain_inspections",
    "arguments": {}
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "supply-chain_inspections",
    "arguments": {}
  }
}'
supply-chainsupply-chain_inspections_details
REST reference →

Returns the full detail record for a single supply-chain inspection identified by its key. Call it when you already have an inspection key and need its complete details. Fails with a not-found status if no inspection matches the key.

Use cases

  • Look up a supply-chain inspection by key
  • Fetch full details for a known inspection record

Parameters

NameTypeRequiredConstraintsDescription
keystringyes——

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "supply-chain_inspections_details",
    "arguments": {
      "key": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "supply-chain_inspections_details",
    "arguments": {
      "key": "example"
    }
  }
}'
supply-chainsupply-chain_walk
REST reference →

Traverses the supply-chain graph from one or more starting nodes along the given edge types and returns the reached records plus a boundary and metadata. Call it to explore upstream or downstream relationships (suppliers, customers, dependencies) from known entities. Returns 400 when start or edges is empty or parameters are invalid, and 500 on internal failure.

Use cases

  • Trace upstream suppliers from a company
  • Explore downstream customers from a product
  • Find multi-hop dependencies between entities

Parameters

NameTypeRequiredConstraintsDescription
startstringyes—[comma-separated list] minimum length 1
edgesstringyes—[comma-separated list] minimum length 1
directionstringnoenum: out, in, bothDefault out (default out)
min_hopsintegerno0..64Range 0-64; default 1 (range 0-64; default 1)
max_hopsintegerno0..64Range 0-64; default 3 (range 0-64; default 3)
hydratebooleanno—booleans arrive as strings - send 'true' or 'false'; value is parsed from the raw query string and coerced server-side
limitintegerno1..50000Range 1-50000; default 10000 (range 1-50000; default 10000)

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "supply-chain_walk",
    "arguments": {
      "start": "example",
      "edges": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "supply-chain_walk",
    "arguments": {
      "start": "example",
      "edges": "example"
    }
  }
}'

trials-map

trials-maptrials-map_hubs
REST reference →

Returns the hub locations shown on the trials map, optionally narrowed by a search term and a stage. Call it to populate the map's hub markers or to see which hubs match a given search and stage. Returns HTTP 500 with error "Map Load Failed" if the map data cannot be loaded.

Use cases

  • Load hub markers for the trials map
  • Find map hubs matching a search term
  • Filter map hubs by stage

Parameters

No parameters.

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "trials-map_hubs",
    "arguments": {}
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "trials-map_hubs",
    "arguments": {}
  }
}'
trials-maptrials-map_hubs_sites
REST reference →

Returns the trial sites for a hub city, optionally filtered by country, search term, stage, and coordinates. Call it to drill into a city's site locations on the trials map. Returns HTTP 500 with an error message if the drilldown data cannot be fetched.

Use cases

  • List trial sites for a hub city
  • Drill into a city's sites filtered by country or stage
  • Find site locations near a coordinate within a city

Parameters

NameTypeRequiredConstraintsDescription
citystringyes——

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "trials-map_hubs_sites",
    "arguments": {
      "city": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "trials-map_hubs_sites",
    "arguments": {
      "city": "example"
    }
  }
}'
trials-maptrials-map_hubs_sites_trials
REST reference →

Returns the trials associated with a specific site within a city, with status and phase normalized. Call it to list trials for a named facility shown on the trials map. Optional query filters narrow by country, search term, and stage. Fails with 500 if the trials cannot be fetched.

Use cases

  • List trials at a named site in a city
  • Filter a site's trials by country or stage
  • Look up trials for a facility on the trials map

Parameters

NameTypeRequiredConstraintsDescription
citystringyes——
siteNamestringyes——

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "trials-map_hubs_sites_trials",
    "arguments": {
      "city": "example",
      "siteName": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "trials-map_hubs_sites_trials",
    "arguments": {
      "city": "example",
      "siteName": "example"
    }
  }
}'

virhostnet

virhostnetvirhostnet_factors
REST reference →

Returns a paginated list of viral/host factors, with each item plus metadata giving the current page, page size, total item count, and total page count. Call it to browse or enumerate factors, optionally narrowed to a single taxonomy. Invalid query parameters return HTTP 400; an unexpected server failure returns HTTP 500.

Use cases

  • List viral and host factors
  • Browse factors for a given taxonomy
  • Page through the factor catalog

Parameters

NameTypeRequiredConstraintsDescription
pageintegernomin 1Min 1; default 1 (min 1; default 1)
limitintegerno1..100Range 1-100; default 20 (range 1-100; default 20)
taxidstringno—minimum length 1; maximum length 32

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "virhostnet_factors",
    "arguments": {}
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "virhostnet_factors",
    "arguments": {}
  }
}'
virhostnetvirhostnet_factors_details
REST reference →

Returns the details of a single virus-host interaction factor identified by its key. Call it when you already have a factor key and need its full record. Responds 404 if no factor matches the key, and 500 on an internal failure.

Use cases

  • Look up a virus-host factor by key
  • Fetch details for a specific interaction factor

Parameters

NameTypeRequiredConstraintsDescription
keystringyes——

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "virhostnet_factors_details",
    "arguments": {
      "key": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "virhostnet_factors_details",
    "arguments": {
      "key": "example"
    }
  }
}'
virhostnetvirhostnet_targets_interactions
REST reference →

Returns the virus-host interactions associated with a single VirHostNet target, identified by its key. Call it to list the interactions recorded for a known target. Responds with 404 when no target matches the key and 500 on an internal failure.

Use cases

  • List interactions for a VirHostNet target
  • Look up virus-host interactions by target key

Parameters

NameTypeRequiredConstraintsDescription
keystringyes——

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "virhostnet_targets_interactions",
    "arguments": {
      "key": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "virhostnet_targets_interactions",
    "arguments": {
      "key": "example"
    }
  }
}'
virhostnetvirhostnet_walk
REST reference →

Returns the boundary of a graph traversal starting from one or more nodes and following the given edge types, with traversal metadata. Call it to explore which nodes are reachable from a starting set within a hop range and direction. Fails with 400 when start or edges is empty, when query parameters are invalid, or when a requested edge type is not available; 500 on internal error.

Use cases

  • Explore reachable nodes from a set of starting nodes
  • Find neighbors of a virus or host across selected relationship types
  • Traverse relationships in a chosen direction within a hop range

Parameters

NameTypeRequiredConstraintsDescription
startstringyes—[comma-separated list] minimum length 1
edgesstringyes—[comma-separated list] minimum length 1
directionstringnoenum: out, in, bothDefault out (default out)
min_hopsintegerno0..64Range 0-64; default 1 (range 0-64; default 1)
max_hopsintegerno0..64Range 0-64; default 3 (range 0-64; default 3)
limitintegerno1..50000Range 1-50000; default 10000 (range 1-50000; default 10000)

Call

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "virhostnet_walk",
    "arguments": {
      "start": "example",
      "edges": "example"
    }
  }
}

curl

curl -sS https://app.caelrith.com/api/v1/mcp \
  -H "content-type: application/json" \
  -H "accept: application/json, text/event-stream" \
  -H "x-api-key: $CAELRITH_API_KEY" \
  -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "virhostnet_walk",
    "arguments": {
      "start": "example",
      "edges": "example"
    }
  }
}'

Generated 2026-10-28 from a live tools/list call. Tool count: 92. Rerun npm run mcp:docs to refresh.