CLI Reference

Two entry points, same semantics: agentdata <domain> <command> or python -m agentdata <domain> <command>. Global options may sit before or after the subcommand; when given in both places, the one after the subcommand wins. Environment variables and flags are equivalent.

Global flags

Flag Meaning
--base-url Hosted API base URL (env AGENTDATA_BASE_URL)
--api-key Access credential PAT (env AGENTDATA_API_KEY)
--cache-dir Local cache directory (env AGENTDATA_CACHE_DIR)
--no-cache Bypass the cache for this call and go straight upstream
--execution local|hosted|auto (default auto: realtime queries run local)

Company

ch_zefix_firm

Zefix single record: purpose full text, oldNames history, hasTakenOver/takenOverBy M&A edges with ehraid/uid/chid cross-references (precedessor/successor)

Jurisdiction: CH

Flag Required Meaning
--ehraid yes The Swiss commercial-registry number ehraid (search rows carry it)

Zefix firm search: name contains-match (hits historical names too); three registry keys (ehraid/uid/chid) per row; maxEntries/offset honored upstream (echoed back)

Jurisdiction: CH

Flag Required Meaning
--name yes Company name or fragment (contains match — historical names hit too)
--max-entries no Rows (upstream maxEntries, default 100)
--offset no Offset (upstream pagination, walk with --max-entries; cap is the upstream-echoed max_offset)

co_rues_companies

RUES registro mercantil master, 9.4M rows: matricula registry key x NIT tax id x CIIU industry x legal form x representante_legal name edge; base filter keeps NIT-identified (tax entity) rows only — persona natural rows whose id columns are cedulas stay out of the face, and the RL cedula-number column is stripped (names kept)

Jurisdiction: CO

Flag Required Meaning
--where no SoQL filter expression passed through verbatim (e.g. razon_social like '%BANCOL%', estado_matricula='ACTIVA'); a base filter keeping company (NIT) rows only is auto-appended
--limit no Rows per page, 1–500 (default 20)
--offset no Paging offset, 0-based
--order no Sort order (e.g. matricula ASC; the upstream rejects NULLS syntax)

fdic_institutions

FDIC institutions: ES search × structured filters are combinable raw channels (search 'NAME:"…"' / filters 'CERT:n'); no upstream limit wall (10,000 verified)

Jurisdiction: US

Flag Required Meaning
--search no Full-text expression, e.g. NAME:"First National" AND ST:TX
--filters no Structured filter, e.g. ST:TX AND CITY:Dallas (point-lookup by CERT: CERT:628)
--limit no Rows to return (default 5)

fi_ytj_companies

YTJ v3 companies: name contains-match hits historical/branch names; businessId direct lookup; pagination params are silently ignored upstream — fixed ~63-row pages, totalResults is the real total

Jurisdiction: FI

Flag Required Meaning
--name no Company name (substring semantics — "Nokia" also hits "Nokian Vuokrakodit"; historical and branch names hit too)
--business-id no Finnish business-id (e.g. 0205709-4; direct lookup)

etalab recherche-entreprises: one q for company name, officer name (cross-company mandate search) or SIREN direct lookup; rich rows with dirigeants (person + corporate slots), finances, tva; etat_administratif A=active/C=ceased true filter

Jurisdiction: FR

Flag Required Meaning
--q yes One query, three uses: company name / officer name (cross-company mandate search) / direct SIREN lookup
--page no Page, 1-based (walk while page ≤ total_pages)
--per-page no Rows per page, 1–25 (default 10; above 25 fails locally without calling upstream)
--etat-administratif no True status filter: A=active / C=ceased (the upstream default does not filter; lowercase is normalized)

gb_contracts_finder_published_notices

Sub-threshold UK contracts: publishedFrom/publishedTo are bare dates (opposite of FTS); no window → our rolling 7-day default (upstream returns empty without one); --stages filters tender|award (upstream 400 self-validates); --name = client-side contains filter

Jurisdiction: GB

Flag Required Meaning
--name no Company name, local contains filter (this upstream face has no name-search param — a full 100-row page is fetched, then filtered)
--stages no Stage filter: tender / award (absent = both stages mixed; a wrong value gets an upstream 400 naming the closed set)
--published-from no Window start, YYYY-MM-DD (default 7 days back)
--published-to no Window end (default today)
--limit no Rows, 1–100; with --name this caps matches (each page still fetches 100)
--cursor no Pagination cursor (pass the same window when walking)

gb_fts_release_packages

WTO-line UK procurement releases: stages/limit/cursor/updatedFrom/updatedTo upstream-verbatim; --name is a client-side contains filter (forces fetch of the full 100-row page, matches buyer or suppliers)

Jurisdiction: GB

Flag Required Meaning
--name no Company name, local contains filter (this upstream face has no name-search param — a full 100-row page is fetched, then filtered)
--stages no OCDS stage: award / tender (default award)
--limit no Rows, 1–100; with --name this caps matches (each page still fetches 100)
--cursor no Pagination cursor (feed next_cursor)
--updated-from no Window start, YYYY-MM-DD or full ISO datetime (bare dates get T00:00:00Z)
--updated-to no Window end (bare dates get T23:59:59Z)

gleif_direct_parent

Direct parent card; 404 = honestly no parent (not an error)

Jurisdiction: GLOBAL

Flag Required Meaning
--lei yes The LEI to look up (20 chars)

gleif_lei_records

Legal Entity Identifier → entity card (legal name, status, jurisdiction, registration; + successor LEIs (M&A edge), expiration, legal form, BIC/MIC)

Jurisdiction: GLOBAL

Flag Required Meaning
--lei yes The LEI to look up (20 chars, ISO 17442)

Name → LEI candidates (non-authoritative; verify with gleif_lei_records before persisting); jurisdiction/status filters and page[number] walking upstream-verbatim; rows carry registered_as (cross-registry join key)

Jurisdiction: GLOBAL

Flag Required Meaning
--filter-entity-legal-name yes Legal name or a fragment of it (contains match; official param filter\[entity.legalName\])
--filter-entity-jurisdiction no Jurisdiction filter (official param filter\[entity.jurisdiction\]; ISO 3166 country or region code, e.g. CH, US-MO)
--filter-entity-status no Entity status filter (official param filter\[entity.status\]; ACTIVE/INACTIVE/NULL — entity lifecycle, not registration.status)
--page-number no Page, 1-based (official param page\[number\]; walk bound = result.page.lastPage)
--page-size no Candidates cap, 1–200 (default 10)

gleif_ultimate_parent

Ultimate parent card (top of the control chain); 404 = honestly no parent (not an error)

Jurisdiction: GLOBAL

Flag Required Meaning
--lei yes The LEI to look up (20 chars)

kr_hometax_biz_status

NTS hometax anonymous single-BRN status: four states all legal answers — active (일반/간이/과세특례 taxpayer), closed (ISO closure date extracted), unregistered (result=S, not an error), error; txprNm is always null upstream (no owner-name leak)

Jurisdiction: KR

Flag Required Meaning
--biz-no yes Korean business registration number, 10 digits, hyphens optional (124-81-00998 equals 1248100998) — required at runtime

no_brreg_enheter

Brønnøysund Enhetsregisteret: navn search with HAL pagination (page/size, 0-based) or orgnr single record; navn is the Norwegian upstream param (?name= 400s)

Jurisdiction: NO

Flag Required Meaning
--navn no Company name (the upstream param really is navn — spelling it name gets a 400)
--organisasjonsnummer no 9-digit org number (direct single record; takes precedence over --navn)
--page no Page, 0-based (only with --navn search)
--size no Rows per page (default 20, cap 100)

no_brreg_roller

Role groups (DAGL CEO / STYR board / REVI auditor): persons carry name+birth date (no national id in the public face), corporate roles (auditors) carry org number; avregistrert=true = retired

Jurisdiction: NO

Flag Required Meaning
--organisasjonsnummer yes 9-digit org number (enheter rows carry it)

nzco_companies

Name substring over the register index — the canonical parameter set is required (a bare ?q= answers an empty match, pinned). Rows: company number + 16-digit NZBN + the register's own status word (Registered/Removed, not 'Active') + entity type + registered address. Paging = the pager's own start= + limit 5|15 (both observed live; other sizes unpinned, not shipped); has_next reads the pager offsets

Jurisdiction: NZ

Flag Required Meaning
--q yes Name substring (required; company numbers also hit inside the name index)
--entity-types no The filter form's own checkbox codes: ALL (default) / LTD / UNLTD / COOP = NZ companies, ASIC / NON_ASIC = overseas
--start no Paging row offset, 0-based (omitted on the first page)
--limit no Page size, only 5 and 15 ever observed live (default 15; others unpinned upstream, refused locally)

nzco_directors

Current appointments: full legal name + residential address (statutorily public in NZ, partially masked since the privacy-law change — captured verbatim) + appointment date in the register's wording. The page H1 confirms the company (name+number+status; a mismatch refuses to attribute rows). Ceased/former appointments render in a different section and stay out; find the number with nzco_companies (e.g. 104799 = Air New Zealand Limited)

Jurisdiction: NZ

Flag Required Meaning
--company-number yes NZ company number, digits only (104799 = Air New Zealand Limited; find it with nzco_companies first)

ror_organizations

Research Organization Registry: query → candidates (fixed 20/page, --page walks), or ror_id → authoritative single record

Jurisdiction: GLOBAL

Flag Required Meaning
--query no Organization name search (fixed 20 rows per page)
--ror-id no ROR id (0+8 chars; bare id or full URL)
--page no Page number (with --query)
--all-status no Include inactive / withdrawn organizations — the upstream default returns only active ones, silently hiding the other two states

EDGAR full-text search: q/forms/startdt/enddt upstream-verbatim; a single date end is auto-completed (silently ignored upstream), dateRange=custom always two-ended; total_relation gte = capped at 10k

Jurisdiction: US

Flag Required Meaning
--q yes Query term (EDGAR full-text search syntax; quote phrases)
--forms no Form-type filter, e.g. 8-K,10-K
--startdt no Start date YYYY-MM-DD (a single end auto-completes to 2001-01-01)
--enddt no End date YYYY-MM-DD (a single start auto-completes to today)
--limit no Rows, 1–100 (the upstream page is 100 hits, sliced locally beyond that)

sec_submissions

Registrant identity card: legal/former names, tickers·exchanges, EIN, SIC, filing totals (accepts bare/zero-padded/CIK-prefixed input)

Jurisdiction: US

Flag Required Meaning
--cik yes CIK, 1–10 digits (search result rows carry it)

Tenders Electronic Daily: expert-syntax query via --query (e.g. 'organisation-name-buyer=Siemens* AND organisation-country-buyer=DEU' / classification-cpv=33100000); limit 1-250 is an upstream hard wall

Jurisdiction: EU

Flag Required Meaning
--query yes TED query expression (required), e.g. organisation-name-buyer=Siemens* AND organisation-country-buyer=DEU (trailing * = prefix match)
--fields no eForms fields to return, comma-separated (wrong names get a 400 with the full field dump — copy the correct name from it)
--limit no Notices per page, 1–250 (default 10)
--page no Page number

usaspending_spending_by_award

Federal contracts/grants: recipient name (array upstream, scalar auto-wrapped); award-type codes, time window (single end auto-completed), fields all upstream-verbatim

Jurisdiction: US

Flag Required Meaning
--recipient-search-text yes Recipient name
--award-type-codes no Comma-separated award type codes (default A,B,C,D = contracts; grants are 02/03 etc.)
--start-date no Window start, YYYY-MM-DD (a single end auto-completes the other)
--end-date no Window end, YYYY-MM-DD
--fields no Columns to return, comma-separated (default 6)
--limit no Rows per page, 1–100 (default 10)
--page no Page number (keep walking while has_more)
--subawards, --no-subawards no Include subawards (default off)

vies_vat

Official EU VAT validation: member-state prefixed number; INVALID → ok:true with valid=false; '---' masking → null (not missing data)

Jurisdiction: EU

Flag Required Meaning
--vat yes VAT number with member-state prefix, e.g. DE811907980

Corpus search (hosted, PAT required): filters/record_kind/level/pagination

Flag Required Meaning
--filter no Filter K=V (repeatable; the filterable fields are listed on this page)
--record-kind no Record kind (closed set; values in the domain spec)
--facets no Comma-separated fields to return facet counts for
--level no Read-layer depth (default tier1; see the read layers on this page)
--limit no Rows per page (default 50, max 1000)
--cursor no Pagination cursor (feed next_cursor from the response)
--mode no Special mode: screen (batch screening; requires --input)
--input no Input JSONL file for batch screening (with --mode screen)

read

Corpus single-record read (hosted): id + T-layer depth

Flag Required Meaning
--id yes Subject id (from search result rows)
--level no Read-layer depth (default tier1)

Economy

bis_sdmx_series

BIS SDMX series (realtime, local execution; /api/v1/data/{flow}/{key}/all, the SDMX 2.1 generic-CSV channel; key = the raw dot-separated series key with AT LEAST two segments — the segment order is flow-specific: WS_CBPOL FREQ.REF_AREA (M.US), WS_DSR FREQ.BORROWERS_CTY.DSR_BORROWERS (Q.US.N), WS_XRU FREQ.REF_AREA.CURRENCY.COLLECTION (M.CN.CNY.E); a one-segment key is every area at once — a multi-megabyte answer; a wrong key answers 404 with an SDMX error, which is not a block; --start / --end are the upstream startPeriod / endPeriod bounds)

Jurisdiction: GLOBAL

Flag Required Meaning
--flow yes BIS dataflow id (WS_CBPOL policy rates / WS_DSR debt-service ratios / WS_XRU USD exchange rates)
--key yes SDMX series key, at least two dot-separated segments (the segment order is flow-specific: M.US for WS_CBPOL, Q.US.N for WS_DSR, M.CN.CNY.E for WS_XRU) — a one-segment key is every area at once and is refused locally
--start no Period window start (upstream startPeriod)
--end no Period window end (upstream endPeriod)

bls_series

BLS v2 series observations (realtime, local execution; POST /publicAPI/v2/timeseries/data/ with a JSON body; --series takes up to 25 comma-separated ids — the documented keyless caps are 25 series x 10 years x 500 queries/day; a window wider than 10 years is refused locally because the upstream clamp keeps the EARLIEST ten years (startyear-anchored: a 2010..2026 ask answered 2010..2019); a bogus id answers 200 and the id is listed under series_without_data; omitting both years answers the latest ~3 calendar years; catalog/calculations/annualaverage/aspects are key-gated options and are never sent)

Jurisdiction: US

Flag Required Meaning
--series yes BLS series id(s), comma-separated, ≤ 25 (official codes: CUUR0000SA0 = CPI-U, LNS14000000 = unemployment rate, CES0000000001 = nonfarm payrolls; lower case normalizes locally)
--start-year no Window start year (upstream startyear; travels with --end-year; omitting both = the latest ~3 calendar years)
--end-year no Window end year (upstream endyear; travels with --start-year; ≤ 10-year window — wider windows are refused locally: the upstream clamp keeps the earliest ten years)

comext_flows

Eurostat Comext annual HS2-4-6 trade mirror since 2002 (realtime, local execution; the DEDICATED comext dissemination root /api/comext/dissemination/.../data/ds-059341 — the plain Eurostat root 404s the ds- datasets; at least one filter is required — the filterless mirror is a 413 "Full extraction forbidden" (31.3 billion cells, one query caps at 5 million); --flow 1 imports / 2 exports; --indicators defaults to VALUE_EUR; the reporter aggregates EU / EU27_2020 / EA / EA21 live alongside the country codes; the JSON-stat grid is decoded into flat rows; the monthly CN8 detail (DS-045409) travels the raw side, not this face)

Jurisdiction: EU

Flag Required Meaning
--reporter no Reporter geo code (repeatable, e.g. DE; the aggregates EU / EU27_2020 / EA / EA21 live alongside country codes)
--partner no Partner geo code (repeatable, e.g. CN, WLD = the World)
--product no HS 2/4/6 product code (repeatable; 85 = electrical machinery) — a wrong shape answers zero cells silently; check dimensions.product.codes
--flow no Trade flow (repeatable: 1 imports / 2 exports) — omit it and each direction returns a row
--indicators no Value measure (default VALUE_EUR in euros; also QUANTITY_IN_100KG)
--time no Year filter (repeatable, e.g. 2024)
--since no Time-axis start (upstream sinceTimePeriod)
--until no Time-axis end (upstream untilTimePeriod) — at least one filter dimension is required; the filterless call is an upstream 413

ecb_fx_rates

ECB euro reference rate for one currency (realtime, local execution; /EXR/D.{CCY}.EUR.SP00.A?format=csvdata; the value is units of {currency} per 1 EUR and the date travels with every row; --start / --end are the upstream startPeriod / endPeriod bounds and one of them is required; the historical eurofxref CSV is a stale 2010 snapshot and is not used)

Jurisdiction: EU

Flag Required Meaning
--currency yes ISO 4217 three-letter currency code (USD / JPY / GBP) — the series key is EXR.D.{CCY}.EUR.SP00.A
--start no Window start (upstream startPeriod); give at least one of --start / --end, otherwise the full history (~8,000 rows)
--end no Window end (upstream endPeriod)

eurostat_table

Eurostat table query (realtime, local execution; /data/{table}; geo / time / --dim k=v are the upstream dimension filters — SEVERAL values are REPEATED parameters (the '+' form is a 400 and the comma form silently yields zero cells); --since / --until are the upstream sinceTimePeriod / untilTimePeriod bounds; the JSON-stat grid is decoded into flat rows; a geo outside the table yields zero cells and no upstream error)

Jurisdiction: EU

Flag Required Meaning
--table yes Table code (e.g. tec00001 / demo_pjan / nama_10_a64)
--geo no Geography filter (repeatable, e.g. DE) — several values must be repeated; the comma form silently yields zero cells
--time no Time filter (repeatable, e.g. 2023)
--dim no Other dimension filters as k=v (repeatable, e.g. unit=CP_MEUR, nace_r2=TOTAL) — leave them out and you get the whole grid
--since no Time-axis start (upstream sinceTimePeriod)
--until no Time-axis end (upstream untilTimePeriod)
--lang no Upstream language (default EN)

fred_series

FRED series observations (realtime, local execution; /fredgraph.csv?id=; ONE series id per call — several ids answer a ZIP archive the JSON transport cannot carry; an unknown series id answers an HTML error page and is reported as not-found; a missing observation is null; --start / --end are the upstream cosd / coed bounds)

Jurisdiction: US

Flag Required Meaning
--series yes Series id, one per call (GDP / CPIAUCSL / DGS10) — several ids answer a ZIP upstream
--start no Observation window start (upstream cosd)
--end no Observation window end (upstream coed)

ilo_stat_indicator

ILOSTAT indicator for one country (realtime, local execution; /data/indicator/; the format flag is the query parameter format=json — a path suffix is a 400/404; --ref-area (ISO-3) is required — the world-wide answer is orders of magnitude bigger; --time-from / --time-until are the upstream timefrom / timeto bounds — the upstream spells the upper bound 'timeto' and silently ignores 'timeuntil'; the urllib channel is the working one on this host — the curl stack answers an empty 200)

Jurisdiction: GLOBAL

Flag Required Meaning
--indicator yes ILOSTAT indicator code (e.g. EMP_TEMP_SEX_ECO_NB_A)
--ref-area yes Country ISO-3 code (e.g. USA) — required, the world-wide answer is orders of magnitude bigger
--time-from no Year lower bound (upstream timefrom)
--time-until no Year upper bound (upstream timeto — the upstream does not know timeuntil)
--sex no Sex dimension filter (upstream sex)
--classif no Classification dimension filter (upstream classif1, e.g. ECO_SECTOR_TOTAL)
--source no Source filter (upstream source)

imf_sdmx_series

IMF SDMX series (realtime, local execution; /external/sdmx/2.1/data/{flow}/{COUNTRY.INDICATOR[.FREQUENCY]}, the SDMX 2.1 generic-CSV channel; --country AND --indicator are both required — the country-only key is the multi-megabyte wall; the key shape fits the WEO/GDD/CPI family, NOT UNFCCC whose dimensions insert INDUSTRY/GAS_TYPE before the indicator; --start / --end are the upstream startPeriod / endPeriod bounds; OBS_VALUE carries the true value — SCALE is only a display hint)

Jurisdiction: GLOBAL

Flag Required Meaning
--flow yes IMF dataflow id (WEO World Economic Outlook / GDD Global Debt / CPI prices)
--country yes Country code (ISO-3 in WEO/GDD, e.g. USA) — required together with --indicator; a country-only key is the multi-megabyte wall
--indicator yes Indicator code (e.g. NGDP_RPCH = real GDP growth) — the key shape is COUNTRY.INDICATOR\[.FREQUENCY\], fitting the WEO/GDD/CPI family (UNFCCC's dimension order differs; do not use it there)
--frequency no Optional trailing key dimension (e.g. A)
--start no Period window start (upstream startPeriod)
--end no Period window end (upstream endPeriod)

oecd_sdmx_series

OECD SDMX series (realtime, local execution; /public/rest/data/{flow}/{key}/all, the SDMX generic-CSV channel; --flow takes the CATALOG form agency,DSD@DF[,version] — the bare DF spelling answers 404 "Could not find Dataflow and/or DSD"; --key is dot-separated with EXACTLY one segment per DSD dimension and an EMPTY segment as the wildcard — the segment count is validated against the DSD structure before the data call, so the short-key 403 ("expecting 12 got 6") never forms; --start / --end are the upstream startPeriod / endPeriod bounds; the whole service is keyless — the 2026-11-02 'needs a key' ruling was a request-form misdiagnosis)

Jurisdiction: GLOBAL

Flag Required Meaning
--flow yes Dataflow in the catalog form agency,DSD@DF\[,version\] (e.g. OECD.ECO.MAD,DSD_EO@DF_EO,1.5 Economic Outlook, OECD.SDD.NAD,DSD_NAAG@DF_NAAG_I,1.0 national-accounts GDP chapter) — the bare DF spelling answers 404; a dotted agency is the norm
--key yes Dot-separated series key, one segment per DSD dimension, empty = wildcard (A.DEU... = annual × Germany × everything else) — validated against the structure endpoint first, with the dimension names in the error
--start no Period window start (upstream startPeriod)
--end no Period window end (upstream endPeriod)

un_comtrade_trade

UN Comtrade trade mirror, public preview (realtime, local execution; /public/v1/preview/{type}/{freq}/{cl}; --reporter / --partner take an ISO-3 code or the numeric area code — the ISO3 is translated through the area reference, whose historical and duplicate rows make a naive map wrong (USA = 842, not 840 or 841); --period 2023 / 202301; --cmd is the commodity code (comma list, TOTAL = all goods); --flow X / M / 'X,M'; the preview answers at most 500 records)

Jurisdiction: GLOBAL

Flag Required Meaning
--reporter yes Reporting country: ISO-3 (USA) or the numeric area code (842)
--period yes Reporting period: 2023 or 202301
--partner no Partner area: ISO-3 or numeric code (0 / W00 = the World aggregate)
--cmd no Commodity code, comma list allowed (TOTAL = all goods)
--flow no Trade flow: X (export), M (import), X,M for both
--type-code no Path segment: commodity type (C)
--freq-code no Path segment: frequency (A = annual)
--cl-code no Path segment: classification (HS)
--max-records no Records per call (1–500)
--partner2 no Second partner area (upstream partner2Code; ISO-3 or numeric code, resolved the same as --partner — the via-country leg of a mirror flow)
--customs no Customs regime filter (upstream customsCode; values per the Comtrade reference)
--mot no Mode of transport filter (upstream motCode; a numeric code per the Comtrade reference)

unsd_sdg_indicators

UNSD SDG indicator catalog (realtime, local execution; /Indicator/List — 251 indicators over the 17 goals, each row carrying its series codes (713 in total) nested inside; the upstream answers the whole catalog in one payload — --page / --per-page slice it locally and --search is a LOCAL keyword scan over the whole catalog, never an upstream filter)

Jurisdiction: GLOBAL

Flag Required Meaning
--page no Local page slice (the upstream sends the whole catalog at once)
--per-page no Local page size (1–500, default 50)
--search no Local keyword scan (indicator code / description / series codes) — over the whole catalog, not the current page

unsd_sdg_series

UNSD SDG series observations (realtime, local execution; /Series/Data?seriesCode= — series granularity only: the whole-indicator endpoint is a 3.2M-row wall that is never formed; --geo is a LOCAL filter over the fetched page matching the geoAreaCode or geoAreaName — the upstream 'area' parameter is DECORATIVE, byte-identical with and without it; --time is the upstream timePeriod filter, the one upstream filter that works on this endpoint)

Jurisdiction: GLOBAL

Flag Required Meaning
--series yes SDG series code (e.g. SI_POV_DAY1, DC_ODA_POVLG — list candidates with unsd_sdg_indicators) — series granularity only; the whole-indicator endpoint is a 3.2M-row wall and is never called
--geo no Geography filter, applied locally (matches geoAreaCode or geoAreaName, case-insensitive) — the upstream area parameter is decorative (byte-identical with or without it)
--time no Period filter (upstream timePeriod, e.g. 2020) — the one upstream filter that works on this endpoint
--page no Page number, 1-based (upstream pager)
--page-size no Rows per page (1–1000, default 100)

wb_countries

World Bank country reference (realtime, local execution; /v2/country; ISO3 / ISO2 / region / income level / lending type / coordinates — the income band is the buyer-screen dimension; the 296 entries include the aggregate regions)

Jurisdiction: GLOBAL

Flag Required Meaning
--page no Page number, 1-based (default 1)
--per-page no Rows per page (default 100)

wb_ids_indicators

World Bank International Debt Statistics catalog (realtime, local execution; /v2/indicator with source pinned to 6 = IDS — 577 indicators in seven debt families: DOD stocks / INT interest / AMT disbursements / DIS / NFL net flows / NTR / TDS service plus the balance-of-payments mirrors; the per-page default 600 holds the whole catalog in one page; the VALUES of the DT.* codes are served by wb_wdi_values WITHOUT a source parameter — the value endpoint breaks with source=6 and the API silently falls back to sourceid 2)

Jurisdiction: GLOBAL

Flag Required Meaning
--page no Page number, 1-based (default 1)
--per-page no Rows per page (default 600 — the whole IDS catalog fits one page)
--search no Keyword, scanned over the current page only (not an upstream filter)

wb_wdi_indicators

World Bank indicator catalog (realtime, local execution; /v2/indicator?source=; source 2 = WDI — without it the catalog is every World Bank source at once (29,544 rows); --search is a LOCAL keyword scan over the returned page, not an upstream filter)

Jurisdiction: GLOBAL

Flag Required Meaning
--source no World Bank source id, 2 = WDI (default 2) — without it the catalog is every source at once
--page no Page number, 1-based (default 1)
--per-page no Rows per page (default 500)
--search no Keyword, scanned over the current page only (not an upstream filter) — candidates off-page need paging

wb_wdi_values

World Bank WDI indicator values (realtime, local execution; /v2/country/{country}/indicator/{indicator}; country = ISO3, several codes joined by ';'; ONE indicator code per call — the upstream rejects several codes in one call ("120 Invalid value"); date = YYYY or YYYY:YYYY; a missing observation is null, never fabricated)

Jurisdiction: GLOBAL

Flag Required Meaning
--country yes Country ISO-3 code; several joined with ; (CHN;JPN)
--indicator yes One WDI indicator code (e.g. NY.GDP.MKTP.CD) — several codes answer 120 Invalid value upstream
--date no A year or a range: 2020 or 2020:2023
--per-page no Rows per page (default 100)

who_xmart_indicators

WHO xMart indicator directory (realtime, local execution; IND_DIRECTORY_WIDE — 1,561 indicators, each row carrying IND_URI_API (the per-indicator API diameter) and IND_URI_WEB; --filter is the raw upstream OData $filter; --search is a LOCAL keyword scan over the returned page)

Jurisdiction: GLOBAL

Flag Required Meaning
--filter no The upstream OData $filter verbatim (e.g. startswith(IND_NAME,'TB_')) — this is how you find indicators by word
--top no Upstream $top page size (1–5000, default 500)
--skip no Upstream $skip offset (default 0)
--search no Keyword, scanned over the current page only (not an upstream filter)

who_xmart_values

WHO xMart indicator observations (realtime, local execution; DATA_/{entity set}; the entity set is resolved from the directory row's IND_URI_API — when several entity sets carry the same indicator name the candidate list is NOT auto-picked, pass --entity-set; --geo takes an ISO-3 country (translated through REF_GEO_WIDE into the M49 code) or a raw M49 code; --year is the DIM_TIME string value)

Jurisdiction: GLOBAL

Flag Required Meaning
--indicator yes Indicator code (e.g. TB_ppm_enrol_tx_prct)
--geo no ISO-3 country code or a raw M49 code (translated through REF_GEO_WIDE)
--year no Year (the DIM_TIME string value, e.g. 2023)
--entity-set no The values entity set (required when one indicator name has several candidates)
--top no Upstream $top page size (1–5000, default 500)
--skip no Upstream $skip offset (default 0)

search

Corpus search (hosted, PAT required): filters/record_kind/level/pagination

Flag Required Meaning
--filter no Filter K=V (repeatable; the filterable fields are listed on this page)
--record-kind no Record kind (closed set; values in the domain spec)
--facets no Comma-separated fields to return facet counts for
--level no Read-layer depth (default tier1; see the read layers on this page)
--limit no Rows per page (default 50, max 1000)
--cursor no Pagination cursor (feed next_cursor from the response)
--mode no Special mode: screen (batch screening; requires --input)
--input no Input JSONL file for batch screening (with --mode screen)

read

Corpus single-record read (hosted): id + T-layer depth

Flag Required Meaning
--id yes Subject id (from search result rows)
--level no Read-layer depth (default tier1)

Esg

climatetrace_owners

Climate TRACE emissions-owner candidates: name/limit/offset upstream-verbatim; zero hit = legal empty (upstream 404 JSON mapped); ordering is NOT stable across limits — fetch enough in one go

Jurisdiction: GLOBAL

Flag Required Meaning
--name yes Owner name (feed the id into climatetrace_sources for facility-level emissions)
--limit no Rows (cap 50)
--offset no Rows to skip (ordering is unstable — prefer one large fetch)

climatetrace_sources

Climate TRACE owner/filter→facility/aggregate emission sources: owner_ids→ownerIds (comma-joined = union & dedup, tested; repeated param = upstream silently first-wins, do not use) XOR --owner-name shortcut (resolves first candidate); year no local wall (out-of-window year → upstream null, 2021+ has data); gas verbatim — non-co2e gas switches row key to emissions_quantity (native unit); 0.2.9 audit additions: offset paging, sectors closed-set validated locally (invalid values silently return the WHOLE corpus upstream), subsectors passthrough (upstream 400 self-describes), location family gadm_id/city_id/country_group/continent passthrough (upstream 400 enforces one-at-a-time); owner_ids or at least one filter required (bare corpus scan walled politely)

Jurisdiction: GLOBAL

Flag Required Meaning
--owner-ids no Owner id(s), e.g. E100000000766 (comma-joined = union)
--owner-name no Owner-name shortcut: resolves the first matching owner (XOR with --owner-ids; use the latter to target precisely)
--year no Emissions year (default = current year; data window starts 2021)
--gas no Gas measure (default co2e_100yr = tCO2e)
--limit no Rows (cap 500)
--offset no Rows to skip (ordering is unstable — prefer one large fetch)
--sectors no Sector filter, closed set: agriculture / buildings / fluorinated-gases / forestry-and-land-use / fossil-fuel-operations / manufacturing / mineral-extraction / power / transportation / waste, plus the special all_no_forest (wrong values silently return the whole corpus upstream — validated locally)
--subsectors no Subsector slug (68 upstream values, listed at GET /v7/definitions/subsectors; wrong values get an upstream 400)
--gadm-id no GADM region id (location family — gadm-id / city-id / country-group / continent: the upstream allows only one at a time, more gets a 400)
--city-id no Metro-area id (location family, one at a time)
--country-group no Country-group slug, e.g. eu / aosis / g20 (location family, one at a time)
--continent no Continent name, e.g. Europe (the upstream counts RUS under Europe; location family, one at a time)

eiti_companies

EITI extractives filing-company candidates: company_name__like is the upstream Datasette magic param verbatim (%/_ metachars yours to manage); --name shortcut wraps %contains% (same slot, XOR); zero hit = legal empty

Jurisdiction: GLOBAL

Flag Required Meaning
--company-name__like no Company name, SQL LIKE match (% / _ wildcards pass through)
--name no Company-name shortcut: assembled to a %name% contains match (XOR with --company-name__like; use the latter to control wildcards yourself)
--size no Rows (cap 1000)

eiti_payments

EITI company→government payment lines: id channel (eiti_id_company__exact verbatim XOR --eiti-id shortcut adding the eiti_id_company: prefix) + name channel (company_name__like verbatim XOR --name shortcut); channels may combine; at least one required (bare scan walled locally)

Jurisdiction: GLOBAL

Flag Required Meaning
--eiti-id-company__exact no EITI company id, exact full value (incl. the eiti_id_company: prefix)
--eiti-id no Bare-UUID shortcut: the eiti_id_company: prefix is auto-added (XOR with --eiti-id-company__exact)
--company-name__like no Company name, SQL LIKE match (% / _ wildcards pass through)
--name no Company-name shortcut: assembled to a %name% contains match (XOR with --company-name__like; use the latter to control wildcards yourself)
--size no Rows (cap 1000)

epa_frs_facilities

EPA FRS facility registry point query: seven filter columns upstream-verbatim (registry_id / primary_name / state_code / city_name + the 0.3.20 audit trio country_name / site_type_name / epa_region_code — ALL exact '=' match, combinable = AND; the upstream contains/~ operators silently return 0, fuzzy facility names go through ECHO; country_name unlocks the non-US facility slice, GERMANY=110 measured) + start/size paging (ROWS closed interval start:end, computed locally — an omitted/inverted ROWS segment makes the upstream dump the whole table); at least one filter required (bare 5.6M-row scan walled politely, batch pipeline serves that); each call = rows + count (total_matches)

Jurisdiction: US

Flag Required Meaning
--registry-id no FRS Registry ID — the authoritative facility key (ECHO/TRI/GHGRP join anchor)
--primary-name no Facility primary name — EXACT match incl. spaces (the upstream contains/~ operators silently return 0; fuzzy names go through ECHO)
--state-code no State code, 2-letter (lowercase uppercased locally, e.g. DE)
--city-name no City name (exact; the seven filters combine as AND, at least one required)
--country-name no Country name (exact uppercase form, lowercase uppercased locally — GERMANY=110 measured; unlocks the non-US facility slice)
--site-type-name no Site type (exact uppercase, e.g. STATIONARY=4,725,914 measured)
--epa-region-code no EPA region (zero-padded two-digit string form '03'; region 10 = 214,197 measured)
--start no Paging offset (upstream ROWS closed-interval start; the end is computed locally from size)
--size no Rows (default 50, politeness cap 500)

euasl_datasets

EU Air Safety List official download catalog (keyless): one call returns all files — the machine-readable XLSX master (Annex A = carriers under an operating ban, Annex B = restrictions/conditions) + 24 official-language PDF renditions; the document UUIDs rotate on every republication (reconcile against this listing, never guess file names); zero params upstream; the binary bodies go through the batch pipeline, this face gives coordinates

Jurisdiction: EU

Flag Required Meaning

eutl_datasets

EUTL official bulk-download catalog (keyless): one call returns all datasets — Azure daily extracts (accounts/operators/holdings csv.gz) + climate.ec.europa.eu yearly files (compliance/verified emissions 2021-2025); zero params upstream; file downloads themselves go through the batch pipeline, this face gives coordinates

Jurisdiction: EU

Flag Required Meaning

paris_mou_bans

Paris MoU banned-ships register (keyless): ban date/occurrence/order status/reason/minimum duration/banning authority, with the embedded ISM company flattened to row keys — the official ship x management-company edge (~2/3 of rows carry a company IMO number); zero params upstream

Jurisdiction: GLOBAL

Flag Required Meaning

paris_mou_detentions

Paris MoU (Atlantic/European port state control) currently-detained ships snapshot (keyless): daily-rolling live state — ship IMO number (asset key), detention port+country, reporting authority; historical detentions go through paris_mou_inspections window search; zero params upstream

Jurisdiction: GLOBAL

Flag Required Meaning

paris_mou_inspections

Paris MoU historical port state control inspections (THETIS form-encoded POST, keyless): period_min/period_max are dd/mm/yyyy STRICT (upstream native order day/month/year — wrong order silently returns zero) and the window must be <= 3 years (enforced locally, upstream silently empties beyond); page is the paging switch — the face always sends it (without page upstream ignores limit and dumps the whole window); page+start+limit = start-offset paging (page 1/2 verified zero overlap); ism_company_imo_number / ism_company_name filter straight to the management company (resume window stats ships/inspections/detentions/ISM deficiencies ride along); psc_inspection_regime upstream-verbatim (1 = PSC default regime, only verified value; omitted = upstream 200 empty); zero rows in window = legal empty

Jurisdiction: GLOBAL

Flag Required Meaning
--period-min yes Window start dd/mm/yyyy (upstream periodMin; STRICT day-first — wrong order silently returns zero; required)
--period-max yes Window end dd/mm/yyyy (upstream periodMax; window <= 3 years enforced locally — longer windows silently empty upstream; required)
--psc-inspection-regime no Inspection regime (upstream pscInspectionRegime; 1 = PSC default, the only live value — 0 → poisoned 200 empty / 2 → HTTP 500; non-1 walled locally with the evidence)
--page no Page number (upstream page; the paging switch — this face always sends it, without it upstream ignores limit and dumps the whole window)
--start no Row offset within page (upstream start; page+start+limit = start-offset paging, page 1/2 verified zero overlap)
--limit no Rows (default 50, politeness cap 500; upstream fully honors 1000)
--ism-company-name no ISM management-company name filter (upstream ismCompanyName)
--ism-company-imo-number no ISM company IMO number filter, 7-digit zero-padded (upstream ismCompanyImoNumber, e.g. 0052193; both padded/unpadded forms accepted upstream — passed through verbatim)

paris_mou_low_performance_companies

Paris MoU low-performance ISM company list (rolling 6-month window, keyless): each row carries an IMO company number (7-digit zero-padded official string), with address/country/performance level (LOW dominant, some MEDIUM)/listing dates — company-risk attribute list; zero params upstream

Jurisdiction: GLOBAL

Flag Required Meaning

thetis_mrv_datasets

THETIS-MRV versioned bulk-file catalog (keyless): reporting periods (2018+) x versioned regenerated XLSX publications (versions roll — reconcile by this list, never guess filenames; generation timestamps are early-morning batch runs); download_path template is served for the batch pipeline, this face gives coordinates; zero params upstream

Jurisdiction: EU

Flag Required Meaning

search

Corpus search (hosted, PAT required): filters/record_kind/level/pagination

Flag Required Meaning
--filter no Filter K=V (repeatable; the filterable fields are listed on this page)
--record-kind no Record kind (closed set; values in the domain spec)
--facets no Comma-separated fields to return facet counts for
--level no Read-layer depth (default tier1; see the read layers on this page)
--limit no Rows per page (default 50, max 1000)
--cursor no Pagination cursor (feed next_cursor from the response)
--mode no Special mode: screen (batch screening; requires --input)
--input no Input JSONL file for batch screening (with --mode screen)

read

Corpus single-record read (hosted): id + T-layer depth

Flag Required Meaning
--id yes Subject id (from search result rows)
--level no Read-layer depth (default tier1)

Healthcare

Note: this domain's search/read answer from the corpus face; the production medical store is reached via the hub REST direct-call reference (base https://hub.omnimay.com; see the healthcare domain page); the realtime queries are unaffected.

au_tga_artg

Australian Therapeutic Goods Register (ARTG) lookup.

Jurisdiction: AU

Flag Required Meaning
--query no Free-text words, ANDed across fields; for an exact sponsor match put the name in double quotes, e.g. "Sun Pharma ANZ Pty Ltd"
--limit no Rows (cap 100, default 20)
--skip no Rows to skip (default 0)

au_tga_manufacturers

Australian registered manufacturers list (filterable by state).

Jurisdiction: AU

Flag Required Meaning
--state no State filter, e.g. QLD / NSW / VIC (local filter on SiteState)
--limit no Rows (cap 500, default 100)

ca_dpd_companies

Canada Drug Product Database companies: DIN owners × company code, with type and full address.

Jurisdiction: CA

Flag Required Meaning
--limit no Rows (default 200 — the upstream serves the whole register in one shot, this slices locally)
--skip no Rows to skip (default 0, local slice)

ca_dpd_drug_products

Canadian drug products: DIN × brand name × company, filtered by the market-status closed set.

Jurisdiction: CA

Flag Required Meaning
--status yes Market status, closed set, required: 1=Approved 2=Marketed 3=Cancelled Pre-Market 4=Cancelled Post-Market 6=Dormant (no 5) — an unknown value is silently ignored upstream and dumps the whole 15MB register, so the SDK walls it first
--limit no Rows (default 200, local slice)
--skip no Rows to skip (default 0, local slice)

ca_mdall_companies

Canada MDALL medical-device company register (a two-country register — US makers carry their country code).

Jurisdiction: CA

Flag Required Meaning
--limit no Rows (default 200 — one full shot upstream, sliced locally)
--skip no Rows to skip (default 0, local slice)

ca_mdall_licence

Single MDALL licence dossier: manufacturer block × company ID × device class and identifier family.

Jurisdiction: CA

Flag Required Meaning
--licence-id yes MDALL licence number, numeric (e.g. 111577; upstream param licenceId)
--licence-type no Licence index: active (default)
--lang no Language: eng (default)

ctgov_studies

ClinicalTrials.gov search — by condition, sponsor or status.

Jurisdiction: US

Flag Required Meaning
--query.term no Raw query expression (official query.term syntax; by sponsor: AREA\[LeadSponsorName\]("Pfizer"))
--query.titles no Title-field search (combinable with --query.term / --query.cond)
--query.intr no Intervention-field search (drug / procedure name; combinable)
--query.cond no Condition search (combinable)
--filter.advanced no Advanced filter, AREA\[field\](value) syntax, combinable (example below)
--agg-filters no Facet filter with numeric enum values, e.g. phase:3 (the PHASE3 spelling yields zero hits)
--fields no Columns to return, comma-separated, e.g. NCTId,BriefTitle
--page-size no Rows per page (default 20; no enforced upstream cap)
--page-token no Pagination token (feed next_page_token)
--sort no Sort, e.g. EnrollmentCount:desc
--count-total, --no-count-total no Request totalCount (default on)

dailymed_spls

US structured product labels (DailyMed SPL) search.

Jurisdiction: US

Flag Required Meaning
--search no Drug name (native drug_name channel)
--manufacturer no Labeler filter, e.g. Pfizer
--setid no Exact SPL setid filter
--page no Page number
--pagesize no Rows per page (clamped at 100 — larger asks still return 100)
--sort no Sort, e.g. published_date

Europe PMC literature search — by affiliation or topic.

Jurisdiction: GLOBAL

Flag Required Meaning
--search no Query expression, e.g. AFF:"Novartis" AND "psoriasis" (AFF filters by affiliation)
--result-type no Row depth (default lite)
--page-size no Rows per page, 1–1000 (default 25)
--cursor-mark no Pagination cursor (* = first page)
--sort no Sort, e.g. CITED desc

eudamed_devices_udi_di_data

EU UDI-DI → EUDAMED registration data.

Jurisdiction: EU

Flag Required Meaning
--primary-di yes EU UDI-DI (required)
--page no Page number (starts at 0)
--page-size no Rows per page (default 5)
--iso2-code no Response language (default en)

fda_crl_letters

FDA Complete Response Letters: company × negative-approval events, with approval status and letter date.

Jurisdiction: US

Flag Required Meaning
--search no Query expression, e.g. company_name:"Firm Name" — required at runtime: a missing expression fails locally
--limit no Rows, 1–1000 (upstream hard wall; default 20)
--skip no Rows to skip (default 0 — upstream has no cursor, deep paging relies on it)
--sort no Sort (default letter_date:desc)

fda_device_510k

510(k) premarket notifications: K number × applicant, with decision code and decision date.

Jurisdiction: US

Flag Required Meaning
--search no Query expression, e.g. applicant:"Medtronic" — required at runtime: a missing expression fails locally
--limit no Rows, 1–1000 (upstream hard wall; default 20)
--skip no Rows to skip (default 0 — upstream has no cursor, deep paging relies on it)
--sort no Sort (default decision_date:desc)

fda_device_classification

Device product-code taxonomy: device name × product code × device class; the product code joins the 510(k) / PMA / recall faces.

Jurisdiction: US

Flag Required Meaning
--search no Query expression, e.g. device_name:"syringe" — required at runtime: a missing expression fails locally
--limit no Rows, 1–1000 (upstream hard wall; default 20)
--skip no Rows to skip (default 0 — upstream has no cursor, deep paging relies on it)
--sort no Sort (this face has no date field — there is no default; give one yourself)

fda_device_pma

PMA premarket approvals and supplements: PMA number × applicant, with decision code and decision date.

Jurisdiction: US

Flag Required Meaning
--search no Query expression, e.g. applicant:"Medtronic" — required at runtime: a missing expression fails locally
--limit no Rows, 1–1000 (upstream hard wall; default 20)
--skip no Rows to skip (default 0 — upstream has no cursor, deep paging relies on it)
--sort no Sort (default decision_date:desc)

fda_device_recalls

US device recalls (the RES system, full lifecycle incl. ongoing): the recalling firm's FEI number and K numbers are the join keys.

Jurisdiction: US

Flag Required Meaning
--search no Query expression, e.g. recalling_firm:"Firm Name" (phrase form) — required at runtime: a missing expression fails locally
--limit no Rows, 1–1000 (upstream hard wall; default 20)
--skip no Rows to skip (default 0 — upstream has no cursor, deep paging relies on it)
--sort no Sort (default event_date_posted:desc)

fda_device_registrations

Device establishment registrations and listings (quarterly): registration number / FEI number × firm name.

Jurisdiction: US

Flag Required Meaning
--search no Query expression, e.g. registration.name:"Firm Name" (searchable fields live in the registration.* namespace; top-level firm_name / fei_number never match) — required at runtime: a missing expression fails locally
--limit no Rows, 1–1000 (upstream hard wall; default 20)
--skip no Rows to skip (default 0 — upstream has no cursor, deep paging relies on it)
--sort no Sort (default registration.reg_expiry_date_year:desc)

fda_drug_approvals

Drugs@FDA application dossiers: application number × sponsor, with product lists and submission timelines.

Jurisdiction: US

Flag Required Meaning
--search no Query expression (openFDA syntax), e.g. sponsor_name:"TEVA" — the company key is sponsor_name (applicant_name is an upstream-docs illusion); keyword fields are case-sensitive in their stored form — required at runtime: a missing expression fails locally
--limit no Rows, 1–1000 (upstream hard wall; default 20)
--skip no Rows to skip (default 0 — upstream has no cursor, deep paging relies on it)
--sort no Sort (default submissions.submission_status_date:desc)

fda_drug_catalog

NDC product catalog (refreshed daily): product NDC × labeler, with marketing dates and category.

Jurisdiction: US

Flag Required Meaning
--search no Query expression, e.g. labeler_name:"pfizer" for a labeler — the NDC directory refreshes daily; NSDE marketing dates live in this face — required at runtime: a missing expression fails locally
--limit no Rows, 1–1000 (upstream hard wall; default 20)
--skip no Rows to skip (default 0 — upstream has no cursor, deep paging relies on it)
--sort no Sort (default marketing_start_date:desc)

fda_drug_recalls

US drug recall and enforcement records (2012+): recall number × recalling firm, with class, status and reason.

Jurisdiction: US

Flag Required Meaning
--search no Query expression, e.g. recalling_firm.exact:"Firm Name" — required at runtime: a missing expression fails locally rather than hitting upstream
--limit no Rows, 1–1000 (upstream hard wall; default 20)
--skip no Rows to skip (default 0 — upstream has no cursor, deep paging relies on it)
--sort no Sort (default report_date:desc)

fda_drug_shortages

US drug shortage reports (openFDA).

Jurisdiction: US

Flag Required Meaning
--search no Query expression, e.g. openfda.manufacturer_name.exact:"Fresenius Kabi USA, LLC" AND status:Current (openFDA syntax; manufacturer, drug and status all go into the expression)
--limit no Rows, 1–1000 (default 20)
--skip no Rows to skip (default 0)
--sort no Sort (default update_date:desc)

fda_food_recalls

US food recall and enforcement records (2012+): recall number × recalling firm, with class, status and reason.

Jurisdiction: US

Flag Required Meaning
--search no Query expression, e.g. recalling_firm.exact:"Firm Name" — required at runtime: a missing expression fails locally
--limit no Rows, 1–1000 (upstream hard wall; default 20)
--skip no Rows to skip (default 0 — upstream has no cursor, deep paging relies on it)
--sort no Sort (default report_date:desc)

fda_orangebook

Orange Book approved drugs: approval date × application holder, with reference-listed-drug flags.

Jurisdiction: US

Flag Required Meaning
--search no Query expression, e.g. products.application_full_name:"Teva" (the holder sits inside products[]; there is no top-level applicant field) — required at runtime: a missing expression fails locally
--limit no Rows, 1–1000 (upstream hard wall; default 20)
--skip no Rows to skip (default 0 — upstream has no cursor, deep paging relies on it)
--sort no Sort (default approval_date:desc)

gb_mhra_alert

Single UK MHRA alert dossier (notice body + PDF attachments).

Jurisdiction: GB

Flag Required Meaning
--slug yes Alert slug (from gb_mhra_alerts rows; pasting the full gov.uk link also works — a trailing .json is stripped too)

gb_mhra_alerts

UK MHRA medicines & device safety-alert search (recalls, device alerts, field safety notices).

Jurisdiction: GB

Flag Required Meaning
--q no Query (a company/product penetration channel — e.g. Abbott hits 160 alerts; omit for the full 1,462-alert register, newest first)
--count no Rows per page, 1–100 (default 20; our politeness cap — no upstream wall)
--start no Offset pagination: row to start from (default 0)

gudid_devices

US device registry (GUDID): DI / UDI → device record.

Jurisdiction: US

Flag Required Meaning
--di no Device Identifier (DI)
--udi no Full UDI string
--record-key no Record key (native GUDID row key)

mesh_descriptor

MeSH descriptor lookup — normalize drug / disease terms to standard descriptors.

Jurisdiction: GLOBAL

Flag Required Meaning
--label yes Term to look up (passing term/descriptor gets a 400 upstream — use label)
--match no Match mode (default contains)
--limit no Candidates cap (default 10, max 50)

rasff_notifications

EU RASFF food-and-feed safety-alert search: notifying country × product category × risk decision.

Jurisdiction: EU

Flag Required Meaning
--subject no Free text on the alert subject (upstream param subject; e.g. aflatoxin)
--notification-reference no Reference number, exact (upstream param notificationReference; e.g. 2026.9701)
--ec-valid-date-from no Window start, dd-MM-yyyy (upstream param ecValidDateFrom; e.g. 01-09-2026 — ISO input is rejected upstream)
--ec-valid-date-to no Window end, dd-MM-yyyy (upstream param ecValidDateTo)
--page-number no Page number, 1-based (upstream param pageNumber; default 1)
--items-per-page no Rows per page, 1–200 (upstream param itemsPerPage; browser default 25, 200 is our politeness cap)

rxnav_rxcui_atc

RxCUI → ATC classification.

Jurisdiction: US

Flag Required Meaning
--rxcui yes Numeric RxCUI

rxnav_rxcui_by_name

Drug or brand name → RxCUI (RxNorm official normalization).

Jurisdiction: US

Flag Required Meaning
--name yes Drug or brand name

safety_gate_alerts

EU Safety Gate (ex-RAPEX) non-food product-safety weekly-report index.

Jurisdiction: EU

Flag Required Meaning
--year no Report year — a local post-filter, not an upstream param (the index always arrives whole)
--limit no Rows (default 200, local slice)
--skip no Rows to skip (default 0, local slice)

safety_gate_report

One Safety Gate weekly report's alerts: case number × category × risk level × notifying country × country of origin.

Jurisdiction: EU

Flag Required Meaning
--report-id yes Numeric report id (the report_id echoed by safety_gate_alerts; a pasted detail URL also works)
--limit no Rows (default 200, local slice)
--skip no Rows to skip (default 0, local slice)

search

Corpus search (hosted, PAT required): filters/record_kind/level/pagination

Flag Required Meaning
--filter no Filter K=V (repeatable; the filterable fields are listed on this page)
--record-kind no Record kind (closed set; values in the domain spec)
--facets no Comma-separated fields to return facet counts for
--level no Read-layer depth (default tier1; see the read layers on this page)
--limit no Rows per page (default 50, max 1000)
--cursor no Pagination cursor (feed next_cursor from the response)
--mode no Special mode: screen (batch screening; requires --input)
--input no Input JSONL file for batch screening (with --mode screen)

read

Corpus single-record read (hosted): id + T-layer depth

Flag Required Meaning
--id yes Subject id (from search result rows)
--level no Read-layer depth (default tier1)

afdb_debarred_entities

AfDB debarment register (keyless): the whole 1,440-row feed (FIRM 1,196 / INDIVIDUAL 244) is pulled once, cached 24h and scanned locally. Basis = the cross-debarment edge (CROSS DEBARMENT : WBG / CROSS-DEBARMENT: ADB — upstream spacing inconsistent, so --basis is a contains-match on the bank token: WBG/ADB/IDB/EBRD); To empty = ongoing. Empty result = clean screening (legitimate answer)

Jurisdiction: GLOBAL

Flag Required Meaning
--name no Entity or individual name — matches any part of the name, ignoring case
--type no Subject type: FIRM or INDIVIDUAL (exact match, ignoring case)
--basis no Debarment reason — matches any part of the Basis text. Cross-debarments are marked by bank token (WBG / ADB / IDB / EBRD), and the same marker is written both with spaces and with hyphens, so match the token alone
--limit no Rows to return, 1–100 (default 20). The whole register is screened locally, so total_matched in the result is the exact number of hits

ca_sema_sanctions

Canada SEMA sanctions (Consolidated Canadian Autonomous Sanctions List, keyless sema-lmes.xml): 5,708 live listings — persons 3,526 / entities 2,181 of which 731 ships with an IMO number (the join key onto shipping rosters). Bilingual cells verbatim ("Syria / Syrie"); name screening contains-matches name + aliases (matched_on echoes the hit face). Empty result = clean screening (legitimate answer)

Jurisdiction: CA

Flag Required Meaning
--name no Designated name — matches any part of the name or of an alias, ignoring case; the result echoes which one hit
--country no Country — matches any part of the country cell, which is written in both languages (Syria and Syrie both hit)
--limit no Rows to return, 1–100 (default 20). The whole list is screened locally, so total_matched in the result is the exact number of hits

co_sic_sanctions

Colombia SIC sanctions register (keyless): firm sanctions imposed in firme by the Superintendencia de Industria y Comercio — multado (the sanctioned party) × valor (fine, COP) × conducta (the violation) × sector, 3,938 rows 2013→. Socrata $-parameter channel verbatim: --where raw SoQL, --limit 1-500, --offset, --order column[ ASC|DESC] (same contract as co_secop_contracts; name-only key — no NIT column, a name join onto co_rues_companies is the corpus line's job)

Jurisdiction: CO

Flag Required Meaning
--where no SoQL filter passed through verbatim (e.g. upper(multado) like '%ECOPETROL%' — multado is the sanctioned-party column; 3,938 firm sanctions since 2013)
--limit no Rows per page, 1–500 (default 20)
--offset no Paging offset, 0-based (no total echo on this register — page by offset)
--order no Sort order (e.g. fecha_emitida DESC; the default is ingestion order, not time)

CourtListener opinions search (federal + state courts; CAP/api.case.law retired into this source): at least one filter required (full corpus ~8.3M bulk is served by the S3 batch line); upstream fixes page size at 20 — page via --cursor (next_cursor is echoed back). 0.2.9 audit snapshot (2026-10-28): the search endpoint now returns 401 for anonymous traffic (worked 2026-10-26) while other v4 endpoints stay open — face on watch per the keyless-only ruling; authenticated tiers are 5/min·50/hr·125/day, anonymous numbers unpublished upstream

Jurisdiction: US

Flag Required Meaning
--q no Full-text query
--case-name no Case-name filter
--court no Court id, e.g. calctapp / scotus
--judge no Judge name filter
--docket-number no Docket number filter
--filed-after no Filed on/after YYYY-MM-DD
--filed-before no Filed on/before YYYY-MM-DD
--order-by no Sort, e.g. score desc
--cursor no Opaque cursor (feed next_cursor)

csl_screening_list

Name screening against the US Consolidated Screening List (realtime, local execution): SDN / Entity List / DPL / ITAR / SSI … 12 list families, one keyless CSV, cached 24h and scanned locally (matched_on shows which face hit: name or alt_names). Empty result = clean screening (a legitimate answer)

Jurisdiction: US

Flag Required Meaning
--name no Subject name (substring, case-insensitive; matches name + alt_names; required — a missing name returns a JSON usage-error envelope)
--source no List-family filter, substring (e.g. "Entity List", "SDN", "Sectoral")
--type no Subject type: Entity / Individual / Vessel / Aircraft (many rows carry no type)
--limit no Rows (default 20, cap 100; total_matched echoes the full count)

DG COMP case search: --query raw ES bool DSL (JSON text, XOR with shortcut) XOR --name/--instrument shortcut (assembles the SPA's three-field text query / caseInstrument term); pageSize hard cap 100 — upstream silently returns 100 rows for larger asks (probed 2026-10-26)

Jurisdiction: EU

Flag Required Meaning
--query no Raw ES bool query, JSON text, e.g. {"bool":{"must":\[{"term":{"caseInstrument":"SA"}}\]}}
--name no Party/case-name shortcut: text query over caseTitle and two sibling fields (XOR with --query; use --query for raw DSL)
--instrument no Case type: AT antitrust / M merger / SA state aid / DMA Digital Markets Act
--text no Extra full-text condition (empty = none)
--page no Page number
--limit no Rows, 1–100 (larger asks silently yield 100)

eCFR current-code section search (keyless, realtime): where a topic lives in the codified CFR today — counterpart of federalregister_documents (Federal Register = what changed today). coords = seven-level citation; starts_on~ends_on = that version's effective window. 0.2.9 audit: --date = point-in-time retrieval (section versions in force on that date; probed 2026-10-28 asbestos 1,436 current vs 339 at 2024-01-01)

Jurisdiction: US

Flag Required Meaning
--q no Topic term (required — otherwise a JSON usage-error envelope)
--page no Page number (default 1)
--limit no Rows (default 20, cap 100)
--date no Point-in-time date YYYY-MM-DD — section versions in force on that date (omit = current text; e.g. asbestos: 1,436 sections current vs 339 at 2024-01-01)

ecfr_titles

eCFR title catalog (keyless): the 50 CFR titles with latest amendment/issue dates and the library-wide as_of watermark (eCFR integrates daily)

Jurisdiction: US

Flag Required Meaning

federalregister_documents

Federal Register document search: q → conditions[term] verbatim; startdt/enddt auto-completed to a full window when either end is given (a single end is silently ignored upstream); document_number is the stable key, single-doc raw_text_url feeds the corpus batch line. 0.2.9 audit additions: --doc-type closed set validated locally (invalid values silently return 0 rows upstream — false-negative trap), --agencies slug filter, --cfr-title/--cfr-part CFR-anchored narrowing (part requires title), --order gains executive_order_number

Jurisdiction: US

Flag Required Meaning
--q yes Query term (quoted phrases go exact)
--startdt no Publication date YYYY-MM-DD from (a bare end auto-completes to 1994-01-01)
--enddt no Publication date to (a bare start auto-completes to today)
--order no Result order: relevance / newest / oldest / executive_order_number (the fourth sorts by executive-order number)
--doc-type no Document type, closed set: RULE / PRORULE / NOTICE / PRESDOCU (wrong values silently yield 0 rows upstream — validated locally)
--agencies no Agency slug, e.g. environmental-protection-agency (the full list lives at GET /api/v1/agencies)
--cfr-title no CFR title number, e.g. 40 (environment)
--cfr-part no CFR part or range, e.g. 763 or 1-50 (requires --cfr-title)
--page no Page number
--limit no Rows (cap 50 — a platform-side limit; the upstream allows 1000)

gb_cma_case

UK CMA single-case dossier (keyless): content_id is the stable UUID key; change_history = case evolution newest→oldest ([0] = latest, last = First published); attachments = decision/notice PDF family; body_html = case-page summary. A pasted full base_path (/cma-cases/ or absolute URL) is accepted — the prefix is stripped

Jurisdiction: GB

Flag Required Meaning
--slug yes Case slug (from gb_cma_cases rows; pasting the full gov.uk link also works — the prefix is stripped)

gb_cma_cases

UK CMA case search (gov.uk search API, keyless): q verbatim over case titles (case name = party pair 'A / B'); count politeness cap 100 (upstream has no wall — count=1000 yields the full 1000, probed 2026-10-29); start = offset pagination; omit --q to enumerate the full live register (~2,591 cases). Single-case detail: gb_cma_case with the slug from each row

Jurisdiction: GB

Flag Required Meaning
--q no Case query (matches titles/descriptions; omit to enumerate the full ~2,600-case register — case names are party pairs, e.g. "Google / BeatThatQuote.com")
--count no Rows per page, 1–100 (default 20; the 100 cap is our politeness limit — the upstream has no wall)
--start no Offset pagination: row to start from (default 0)

gb_ec_donations

UK EC donations face: query verbatim (donor/regulated-entity name); from/to window auto-completed when missing (missing window → upstream Total=-1 fake success); rows hard cap 50 (probed 2026-10-26)

Jurisdiction: GB

Flag Required Meaning
--query yes Donor / regulated-entity name (contains match; required)
--from no Window start YYYY-MM-DD (default = register origin 2001-02-16)
--to no Window end (default today)
--start no Offset
--limit no Rows, 1–50 (larger asks silently yield 50)

gb_ec_loans

UK EC loans face: query verbatim (lender/borrower name); upstream loans endpoint takes no date-window params; rows hard cap 50 (probed 2026-10-26)

Jurisdiction: GB

Flag Required Meaning
--query yes Lender / borrower name (contains match; required)
--start no Offset
--limit no Rows, 1–50 (larger asks silently yield 50)

gb_gazette_notices

The Gazette search face (keyless, OGL; 3.58M notices digitised from 1992): event filtering is by notice code — --noticetypes (+-joined upstream; the noticecode= param is SILENTLY IGNORED, probed 2026-11-03) or --insolvency (the corporate-insolvency chapter: 2404/2408/2410/2411/2414/2421-2424/2431/2432/2607/2702). title = the company name on corporate insolvency codes; placed_by = liquidator/administrator or the edition; geo:Point = the registered office. At least one filter required — a bare search is the 4,887,099-notice bulk wall

Jurisdiction: GB

Flag Required Meaning
--text no Full-text contains term (over the notice body and title)
--noticetypes no Notice code(s), comma- or +-joined (e.g. 2410,2432) — event filtering is by notice code only; the lookalike noticecode= param is ignored upstream, so rewrite commands copied from elsewhere onto this one
--insolvency no The corporate-insolvency code-chapter preset (13 codes: winding-up resolutions, liquidator appointments, administrators, cessations…), union'd with --noticetypes
--start-date no Publish-window start YYYY-MM-DD
--end-date no Publish-window end YYYY-MM-DD
--page no Page number (default 1)
--page-size no Rows per page, 1–100 (default 20; 100 is the upstream hard cap)
--sort no Sort: latest-date (default) or oldest-date

gb_tna_caselaw_judgment

UK single-judgment dossier (keyless): neutral_citation is the official key; parties = [{name, role}] official party-to-role edges (claimant/defendant, companies and individuals); judges; text = plain-text body. document_uri takes all three forms — legacy ewhc/admin/2026/2298, new-style d-, tna. — the uri field of gb_tna_caselaw_search rows; a pasted full URL is accepted (prefix and /data.xml suffix stripped)

Jurisdiction: GB

Flag Required Meaning
--document-uri yes Document URI (any of the three uri forms from search rows: legacy ewhc/admin/2026/2298, new-style d-, tna.; a pasted full link is stripped automatically)

UK judgment search (TNA Find Case Law /atom.xml, keyless): eight upstream params verbatim — party/judge are full-word matches over party/judge names, query is full text, court/tribunal are court codes (repeatable, exploded); order in ±date/±updated/±transformation; per_page politeness cap 50 (=upstream default). Rows carry neutral_citation (e.g. [2026] EWHC 2298 (Admin)), uri (machine key for gb_tna_caselaw_judgment) and contenthash. Open Justice Licence: commercial reuse OK, bulk computational analysis forbidden without a (free) licence — keep this a targeted search face

Jurisdiction: GB

Flag Required Meaning
--query no Full-text query (a quoted phrase matches words in order)
--court no Court code, repeatable (e.g. uksc ewhc; tribunal codes also go here)
--tribunal no Tribunal code, repeatable (alias segment of court, e.g. eat)
--party no Party name, full-word match (e.g. Barclays — partial words don't hit)
--judge no Judge name, full-word match
--order no Sort: date/-date (default newest first)/updated/-updated/transformation/-transformation
--page no Page number (total pages in the result's total_pages)
--per-page no Rows per page, 1–50 (default 50 = the upstream default and our politeness cap)
--minimum-availability no Minimum representation level: metadata/document/full-text (default full-text)

idb_debarred_entities

IDB sanctioned-firms register (keyless CKAN DataStore, server-side search; live 1,343 rows): q = full-text across all fields, filters = JSON field→value exact matches (e.g. {"To": "Ongoing"} or {"Entity": "Firm"}), offset paging, include_total always on. From arrives as nanosecond text kept verbatim ("2009-07-10 00:00:00.000000000"); Source carries the cross-debarment markers (ADB/WBG cross debarment). Empty result = clean screening (legitimate answer)

Jurisdiction: GLOBAL

Flag Required Meaning
--q no Full-text search across every field of the register (the register's own q parameter)
--filters no Filter by field values, as JSON text of field→value exact matches (the register's own filters parameter), e.g. {"To": "Ongoing"} or {"Entity": "Firm"}
--limit no Rows per call, 1–100 (default 20) — the register is queried live, so this is the page size
--offset no Rows to skip before the first row returned (the register's own offset parameter); the result carries the register's total row count
--sort no Sort order, e.g. "From desc" (the register's own sort parameter)

ie_revenue_defaulters

Irish Revenue defaulters register (keyless): the statutory quarterly publication — TWO row schemas under one list: part 1 = penalties determined by a court (Issue Type/Fine/Sentence/Charges), part 2 = Revenue settlements (Name/Address/County/Occupation + Tax/Interest/Penalties/Total/Unpaid as ints, comma-thousands stripped). One part per call (--part 1|2); --year + --month select the quarter (march/june/september/december, give both or neither) and default to the latest on the index (current year only). Names/addresses are published by statute — the co_sic precedent; CSV carries a UTF-8 BOM and trailing-space headers (normalised)

Jurisdiction: IE

Flag Required Meaning
--part no List part: 1 = court-determined penalties (issue type/fine/sentence/charges), 2 = Revenue settlements (five amount columns + unpaid) — the two parts are two different tables and the result's kind echoes the row schema (default 1)
--year no Publication year (together with --month; omit for the latest quarter on the index)
--month no Quarter name: march/june/september/december (together with --year)

lda_filings

LDA lobbying-disclosure filings: client_name (lobbied company) / registrant_name (lobbying firm) / filing_year all upstream-verbatim (may combine); page_size hard-clamped 25 — upstream silently returns 25 rows for larger asks (probed 2026-10-26); iterate with --page (true offset pagination)

Jurisdiction: US

Flag Required Meaning
--client-name no Lobbied company name (contains match)
--registrant-name no Lobbying firm name
--filing-year no Filing year (from 1999)
--page no Page number (upstream pages hold at most 25 rows)
--ordering no Sort (default -dt_posted)
--limit no Rows, 1–25 (larger asks silently yield 25)

SIPRI arms transfers: supplier/recipient country names (shortcut — resolves numeric EntityId via the 30-day cached country table; names in the raw filter value1 upstream → 500) XOR --filters raw JSON ({"field": "Supplier"|"Recipient", "listData": [EntityId]}); pageSize cap 100; country-level face, not company-level

Jurisdiction: GLOBAL

Flag Required Meaning
--filters no Raw filter list, JSON text, e.g. \[{"field":"Recipient","listData":\[8\]}\] (countries are numeric ids)
--supplier no Supplier-country shortcut: full English name, e.g. United States (XOR with --filters; the name is resolved to its numeric id)
--recipient no Recipient-country shortcut: full English name, e.g. Angola (XOR with --filters; the name is resolved to its numeric id)
--type no Measure: delivered = trend-indicator value / orders = orders placed
--page no Page number
--limit no Rows (cap 100)

us_occ_enforcements

OCC (Office of the Comptroller of the Currency) monthly enforcement-actions news releases (keyless): the by-year news-release listing picks the Enforcement Actions titles (~11-12 a year; listings verified 2005-2026); default = the latest release of the year. TWO body schemas under one face, form says which: sentences (2024+) = one row per action with cmp_amount scaled from the '$750 million' wording + docket No. (AA-ENF-YYYY-NN — the official key, joins the EASearch database 1989+, out of SDK scope) + IAP prohibition rows (institution-affiliated parties; names are statutory public disclosures — the co_sic precedent); tables (≤2020) = per-section order rows (No./Name-Bank-City/State/Date). --month selects by month name in any era (2026-era titles carry it, earlier listings' MM/DD/YYYY dates do); --all walks every release of the year

Jurisdiction: US

Flag Required Meaning
--year no Year 2005–current (the by-year news-release listing range; default = this year)
--month no Full month name January–December — picks that month's enforcement release (omit for the year's latest)
--all no Walk every enforcement release of the year (rows carry their release_nr)

wb_debarred_firms

World Bank debarred-firms register (keyless via the page-embedded public apikey): the whole 1,546-row dump is pulled once, cached 24h and scanned locally (same contract as csl_screening_list). SUPP_ELIG_STAT DEBARRED 890 / X-DEBARRED 656; DEBAR_TO_DATE 2999-12-31 = indefinite; DEBAR_REASON cites the procurement-guidelines clause; China leads at 392 firms. The DNB/REGISTER identifier fields ship empty — name × country is the join channel. Empty result = clean screening (legitimate answer)

Jurisdiction: GLOBAL

Flag Required Meaning
--name no Supplier name — matches any part of the name, ignoring case
--country no Country — matches any part of the country name, or the two-letter country code exactly (China and CN both hit)
--type no Supplier type: F firm, I individual, U unspecified, C conglomerate (exact match, ignoring case)
--limit no Rows to return, 1–100 (default 20). The whole register is screened locally, so total_matched in the result is the exact number of hits

search

Corpus search (hosted, PAT required): filters/record_kind/level/pagination

Flag Required Meaning
--filter no Filter K=V (repeatable; the filterable fields are listed on this page)
--record-kind no Record kind (closed set; values in the domain spec)
--facets no Comma-separated fields to return facet counts for
--level no Read-layer depth (default tier1; see the read layers on this page)
--limit no Rows per page (default 50, max 1000)
--cursor no Pagination cursor (feed next_cursor from the response)
--mode no Special mode: screen (batch screening; requires --input)
--input no Input JSONL file for batch screening (with --mode screen)

read

Corpus single-record read (hosted): id + T-layer depth

Flag Required Meaning
--id yes Subject id (from search result rows)
--level no Read-layer depth (default tier1)

Procurement

br_pncp_contracts

Brazil national procurement contracts (Portal Nacional de Contratações Públicas, keyless): publication-window search over /api/consulta/v1/contratos — every row is buyer CNPJ × supplier CNPJ with the four valor columns; join straight onto the RFB register. data_inicial/data_final (YYYYMMDD or YYYY-MM-DD) and pagina are upstream verbatim (500 rows/page); cnpj_orgao narrows to one buyer. PF (individual) supplier rows carry their identifier and name masked per the PII rule

Jurisdiction: BR

Flag Required Meaning
--data-inicial yes Window start, YYYYMMDD or YYYY-MM-DD (required — both window ends must be given)
--data-final yes Window end (required; a single month holds ~175k contracts — start narrow)
--pagina no Page number (default 1; each page is a fixed 500 rows = the upstream default)
--cnpj-orgao no Buyer CNPJ filter, 14 digits (optional)

co_secop_contracts

Colombia SECOP II electronic contracts (datos.gov.co Socrata dataset jbjy-vk9h, keyless): 5.6M+ contracts — buyer NIT × supplier NIT/CC with the valor family; join straight onto the RUES register. where is the raw SoQL $where channel (verbatim pass-through); limit/offset/order mirror $limit/$offset/$order. No total echo — page with offset. Personal-document (Cédula etc.) supplier rows carry their identifier and name masked per the PII rule

Jurisdiction: CO

Flag Required Meaning
--where no SoQL filter expression, passed through verbatim, e.g. upper(nombre_entidad) like '%MINISTERIO%' (you write the % / _ wildcards)
--limit no Rows, 1–500 (default 20)
--offset no Offset pagination (default 0; no total is returned — track pages yourself)
--order no Sort column with optional ASC / DESC, e.g. valor_del_contrato DESC (NULLS syntax gets an upstream 400)

ny_abo_contracts

New York State authority contracts (data.ny.gov Socrata dataset ehig-g5x3, keyless): 275k+ rows from the Authorities Budget Office universe — buyer authority_name × vendor_name + full address (no UEI/DUNS; name+address walk), four value columns plus MWBE / NYS-business preference flags. where is the raw SoQL $where channel; limit/offset/order mirror $limit/$offset/$order. No total echo — page with offset

Jurisdiction: US

Flag Required Meaning
--where no SoQL filter expression, passed through verbatim, e.g. upper(vendor_name) like '%DELTA%'
--limit no Rows, 1–500 (default 20)
--offset no Offset pagination (default 0; no total is returned)
--order no Sort column with optional ASC / DESC, e.g. award_date DESC (NULLS syntax gets an upstream 400)

ny_mta_procurements

New York MTA procurements (data.ny.gov Socrata dataset twsw-2mqa, keyless): 107k+ rows — buyer is always the MTA; vendor_name + value family + vendor_is_nys_or_fbe preference flag. where is the raw SoQL $where channel; limit/offset/order mirror $limit/$offset/$order. No total echo — page with offset

Jurisdiction: US

Flag Required Meaning
--where no SoQL filter expression, passed through verbatim, e.g. upper(vendor_name) like '%SKANSKA%'
--limit no Rows, 1–500 (default 20)
--offset no Offset pagination (default 0; no total is returned)
--order no Sort column with optional ASC / DESC, e.g. transaction_number DESC (NULLS syntax gets an upstream 400)

ny_ogs_payments

New York State Office of General Services design & construction payments (data.ny.gov Socrata dataset rb9h-9fit, keyless): 69k+ payment rows — buyer is always OGS; each row is contractnumber × vendor × paymentamount with fiscalyear/quarter/county (no address columns — name walk). Completes the New York trio (ABO authorities / MTA transport / OGS construction) buyer universe. where is the raw SoQL $where channel; limit/offset/order mirror $limit/$offset/$order. No total echo — page with offset

Jurisdiction: US

Flag Required Meaning
--where no SoQL filter expression, passed through verbatim, e.g. upper(vendor) like '%HIGHLAND%'
--limit no Rows, 1–500 (default 20)
--offset no Offset pagination (default 0; no total is returned)
--order no Sort column with optional ASC / DESC, e.g. paymentamount DESC (NULLS syntax gets an upstream 400)

ungm_contract_awards

United Nations Global Marketplace contract awards (https://www.ungm.org public search, keyless): ~50k awards across the UN-agency buyer universe (UNDP/UNFPA/ILO/UNOPS...) × global vendors — each row is award id + title/vendor/award date/agency/reference/supplier country. supplier/title/reference/award_from/award_to/countries/agencies/unspscs are upstream verbatim; page_index (1-based) and page_size (1-100, site default 15) page through; newest first by default (sort_field=AwardDate, sort_ascending=false). The ASP.NET anti-forgery session pairing is handled internally (15-minute reuse, auto re-bootstrap on expiry)

Jurisdiction: GLOBAL

Flag Required Meaning
--supplier no Vendor-name filter, e.g. DELTA (upstream param Supplier)
--title no Title text filter (upstream param Title)
--reference no Reference filter, e.g. rfx_11130_ROAP
--award-from no Award-date window start (site picker format dd-MMM-yyyy; upstream AwardFrom)
--award-to no Award-date window end (upstream AwardTo)
--countries no Project-country filter list, space-separated (upstream Countries[])
--agencies no UN-agency filter list, e.g. --agencies UNDP ILO (upstream Agencies[])
--unspscs no UNSPSC code filter list (upstream UNSPSCs[])
--page-index no Page number, 1-based (default 1)
--page-size no Page size, 1–100 (default 15, the site's own default)
--sort-field no Sort field (default AwardDate; never empty — a null makes the upstream 500)
--sort-ascending no Ascending flag (default off = newest first)

wb_procnotices

World Bank procurement notice stream (search.worldbank.org /api/v2/procnotices, keyless): 313k+ notices across the MDB buyer universe (IBRD/IDA projects in 100+ countries). notice_type/rows/os are upstream verbatim (default: Contract Award); supplier keys are extracted from the embedded award section into awarded_firms[]{name, supp_id} — firm name + WB supplier id, joinable onto the WB debarred list. notice_text itself is not returned (embedded contact details stay out of the face)

Jurisdiction: GLOBAL

Flag Required Meaning
--notice-type no Notice type (default Contract Award; other upstream enum values such as General Procurement Notice)
--rows no Rows, 1–100 (default 10)
--os no Offset pagination (default 0; the full feed is ~313k rows — upstream's own os param name)

search

Corpus search (hosted, PAT required): filters/record_kind/level/pagination

Flag Required Meaning
--filter no Filter K=V (repeatable; the filterable fields are listed on this page)
--record-kind no Record kind (closed set; values in the domain spec)
--facets no Comma-separated fields to return facet counts for
--level no Read-layer depth (default tier1; see the read layers on this page)
--limit no Rows per page (default 50, max 1000)
--cursor no Pagination cursor (feed next_cursor from the response)
--mode no Special mode: screen (batch screening; requires --input)
--input no Input JSONL file for batch screening (with --mode screen)

read

Corpus single-record read (hosted): id + T-layer depth

Flag Required Meaning
--id yes Subject id (from search result rows)
--level no Read-layer depth (default tier1)

Research

biorxiv_details

bioRxiv preprint metadata window stream (realtime, local execution; /details/biorxiv/{from}/{to}/{cursor}; authors arrive as a semicolon-joined string and jatsxml is a full-text XML URL, not inline — full-text bulk belongs to the jatsxml_url links; message counts are strings upstream, normalized here)

Jurisdiction: GLOBAL

Flag Required Meaning
--from-date yes Window start YYYY-MM-DD (required)
--to-date yes Window end YYYY-MM-DD (required)
--cursor no Page index (starts at 0)

crossref_works

Crossref works search with funder bridge (realtime, local execution; query full-text × funder DOI (filter=funder:) × award_number (filter=award.number:, requires --funder) × from/to publication window combine AND; award numbers live only inside rows' funders[].award — select cannot fetch them (probe: select-not-available); offset+rows ≤ 10,000 documented upstream wall — deep paging switches to --cursor, the official deep-pager channel (0.2.9 audit)

Jurisdiction: GLOBAL

Flag Required Meaning
--query no Full-text query
--funder no Funder DOI, e.g. 10.13039/100000001 = NSF
--award-number no Award / grant number (requires --funder)
--from-pub-date no Publication window start YYYY-MM-DD (official param from-pub-date)
--to-pub-date no Publication window end YYYY-MM-DD (the official param is until-pub-date, mirrored to to here)
--rows no Rows (cap 100 — a platform-side limit; the upstream documents 1000)
--offset no Result offset (offset+rows ≤ 10,000; for deeper pages switch to --cursor — XOR with --offset)
--cursor no Deep-paging cursor: * for the first page, then feed next_cursor — bypasses the 10,000-row offset wall (XOR with --offset)

gb_gtr_projects

UK UKRI Gateway to Research projects (realtime, local execution; /projects?q=&s=&p=; s ≥ 10 is an upstream 400 wall; upstream sends no total — full page signals more via has_more; organisation edges live one hop deeper in detail links.link[] rel=LEAD_ORG, this face is the list only)

Jurisdiction: GB

Flag Required Meaning
--q yes Search term (required)
--s no Page size (at least 10)
--p no Page number

icite_pubs

NIH iCite citation-impact card for a PubMed paper (realtime, local execution; /api/pubs?pmids= single record; RCR/FCR/citation counts — the impact hop after nih_reporter_publications hands you a pmid)

Jurisdiction: US

Flag Required Meaning
--pmid yes PubMed id, digits only, e.g. 26017442 (required)

nih_reporter_projects

NIH RePORTER project search (realtime, local execution; POST /v2/projects/search; criteria=snake_case and include_fields=camelCase are separately hard-bound upstream — wrong shapes are silently ignored, so bare passthrough is not exposed; org match is exact, not fuzzy; offset+limit cap 15,000)

Jurisdiction: US

Flag Required Meaning
--org-name no Receiving organization name (exact match upstream)
--fiscal-year no Fiscal year
--include-fields no Comma-separated camelCase fields (wrong names are silently ignored upstream)
--limit no Page size, 1–500
--offset no Result offset (offset+limit ≤ 15,000)

nih_reporter_publications

NIH funding↔publication bridge (realtime, local execution; POST /v2/publications/search; criteria recognizes ONLY pmids/appl_ids — every other key is silently ignored upstream and dumps the whole 8.3M table, so the local gate requires one of the two and no other criteria is passed through; rows are a 3-key bridge {coreproject, pmid, applid}; zero rows = no linkage on record, sparseness is a real answer)

Jurisdiction: US

Flag Required Meaning
--pmids no Comma-separated PubMed ids
--appl-ids no Comma-separated NIH application ids (from nih_reporter_projects)
--limit no Page size, 1–500
--offset no Result offset (offset+limit ≤ 15,000)

nsf_awards

US NSF awards search (realtime, local execution; keyword full-text XOR id point lookup; rpp 1-200 per upstream doc; upstream sends no total — full page signals more via has_more)

Jurisdiction: US

Flag Required Meaning
--keyword no Full-text search keyword (XOR with --id)
--id no NSF award id, point lookup (XOR with --keyword)
--rpp no Rows per page, 1–200
--offset no Result offset (pagination)

openalex_institutions

Research-institution candidate search (realtime, local execution; /institutions?search=; same-name multi-country clones coexist — the candidate list is NOT auto-picked: choose the ROR explicitly, then query output via openalex_works --ror)

Jurisdiction: GLOBAL

Flag Required Meaning
--search yes Institution name, e.g. pfizer (required)
--per-page no Rows per page, 1–200

openalex_works

Global scholarly works search (realtime, local execution; api.openalex.org/works; search full-text × ror institution edge × doi × title_search combine AND into filter=; per_page 1-200 (explicit upstream 400 wall); cursor pagination via meta.next_cursor — the cursor encodes paging only, so re-send the same constraints when continuing; select is force-merged with core fields so slimming cannot strip id/doi/display_name/authorships/open_access)

Jurisdiction: GLOBAL

Flag Required Meaning
--search no Full-text search term
--ror no ROR id (bare or full URL; filters by institution)
--doi no DOI exact match
--title-search no Title substring match
--per-page no Rows per page, 1–200
--cursor no Cursor from next_cursor (re-send the same constraints)
--select no Extra fields to return, comma-separated (core fields are always merged in)

opencitations_citations

OpenCitations COCI citing-DOI list (realtime, local execution; /index/v1/citations/{doi}; doi: prefix and doi.org URLs are normalized away — upstream 400s otherwise; upstream limit param is silently ignored (probe: ?limit=3 still returns all 217) so no fake pagination, the full list comes back with a count)

Jurisdiction: GLOBAL

Flag Required Meaning
--doi yes Cited DOI (the doi: prefix is auto-stripped; required)

search

Corpus search (hosted, PAT required): filters/record_kind/level/pagination

Flag Required Meaning
--filter no Filter K=V (repeatable; the filterable fields are listed on this page)
--record-kind no Record kind (closed set; values in the domain spec)
--facets no Comma-separated fields to return facet counts for
--level no Read-layer depth (default tier1; see the read layers on this page)
--limit no Rows per page (default 50, max 1000)
--cursor no Pagination cursor (feed next_cursor from the response)
--mode no Special mode: screen (batch screening; requires --input)
--input no Input JSONL file for batch screening (with --mode screen)

read

Corpus single-record read (hosted): id + T-layer depth

Flag Required Meaning
--id yes Subject id (from search result rows)
--level no Read-layer depth (default tier1)

Security

cisa_kev_catalog

CISA Known Exploited Vulnerabilities catalog (realtime, local execution; static feed ~1.8MB; --cve and --ransomware are local post-filters, upstream stays empty-param pure; catalog updates weekly, catalogVersion echoed in reason)

Jurisdiction: US

Flag Required Meaning
--cve no CVE id exact lookup (local filter), e.g. CVE-2021-44228
--ransomware no Only entries with known ransomware campaign use (local filter)
--limit no Rows (default 50; page through the catalog instead of dumping it)

euvd_exploited

ENISA EU KEV rolling window — vulnerabilities currently exploited in the wild per EU tracking (realtime, local execution; the window refreshes continuously; the 399,311-row full EUVD↔CVE mapping is a raw-side 12MB dump, not this face; --limit is a local slice)

Jurisdiction: EU

Flag Required Meaning
--limit no Rows (default 50; the EU KEV rolling window is small but grows)

euvd_vulnerability

ENISA EUVD single-vulnerability full record by CVE or EUVD code (realtime, local execution; richer than the NVD public face — CVSS vector+version, EPSS inline, exploitedSince, CVE+GHSA aliases, vendor×product×version ranges, EU member-state CSAF advisories; dates are Java-format upstream and ISO-normalized locally; unknown id = 404 carried as not-found)

Jurisdiction: EU

Flag Required Meaning
--id yes CVE or EUVD code (e.g. CVE-2024-3400 / EUVD-2024-31989; required) — the single-record full lookup

osv_vulns

Open-source package vulnerability query (realtime, local execution; OSV /v1/query POST; ecosystem is a closed set validated locally because upstream silently returns empty for unknown values; version omitted = all known vulns for the package)

Jurisdiction: GLOBAL

Flag Required Meaning
--package yes Package name, e.g. lodash (required)
--ecosystem yes OSV ecosystem (npm / PyPI / Go / Maven / crates.io / RubyGems / NuGet / Packagist / Debian / Alpine / Linux / OSS-Fuzz / Hex / Pub / Conda / Android / GitHub Actions; required)
--version no Package version (omit = all known vulns)
--page-token no Continuation token (feed result.next_page_token from the prior response; the upstream paginates past 1000 vulns or 20 seconds)

search

Corpus search (hosted, PAT required): filters/record_kind/level/pagination

Flag Required Meaning
--filter no Filter K=V (repeatable; the filterable fields are listed on this page)
--record-kind no Record kind (closed set; values in the domain spec)
--facets no Comma-separated fields to return facet counts for
--level no Read-layer depth (default tier1; see the read layers on this page)
--limit no Rows per page (default 50, max 1000)
--cursor no Pagination cursor (feed next_cursor from the response)
--mode no Special mode: screen (batch screening; requires --input)
--input no Input JSONL file for batch screening (with --mode screen)

read

Corpus single-record read (hosted): id + T-layer depth

Flag Required Meaning
--id yes Subject id (from search result rows)
--level no Read-layer depth (default tier1)

Errors & limits

CLI exit codes

exit Family Meaning
0 Success Normal output
1 Upstream/availability Upstream unreachable / rate-limited / not found, capability unavailable, hosted 429
2 Usage Malformed arguments, unknown kind, missing credentials, request 4xx

SDK error codes (closed set)

SdkError(code, detail, provider?, status?, retry_after?) — the code set is fixed (closed), so you can branch exhaustively. Quick triage: exit 1 → network/upstream/rate-limit problem (retry per Retry-After or later); exit 2 → check your arguments and credentials.

  • exit 1 (upstream/availability family): capability_unavailable / rate_limited / thirdparty_rate_limited / thirdparty_upstream_unavailable / upstream_not_found / upstream_rate_limited / upstream_unavailable
  • exit 2 (usage family): usage_error / resolve_kind_unknown / op_unknown / corpus-contract 4xx (unauthenticated / forbidden / undeclared_field / bad_value …)

HTTP status codes (hosted API)

HTTP code Trigger
400 undeclared_field / bad_operator / record_kind_unknown / cursor_invalid / limit_out_of_range / bad_value Malformed request shape/value
401 unauthenticated Bearer PAT missing/invalid
403 forbidden PAT not authorized for this data area
404 unknown_target read id outside the collection (not covered ≠ does not exist)
429 rate_limited Over the per-key quota (with Retry-After; retry at that time)
502/503 thirdparty_upstream_unavailable / thirdparty_rate_limited / capability_unavailable Upstream trouble (upstream Retry-After passed through when the upstream rate-limits)

Note: when an individual upstream is unreachable from your network, the SDK normalizes it to upstream_unavailable with a troubleshooting hint, rather than retrying blindly.

ON THIS PAGE