Search CERN Open Data, fetch records, files, analysis environments, CMS good-run lists, HLT paths.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Assemble what is needed to analyse a record: its container images, CMSSW release and global tag; the condition-data, VM and validated-run records for its run periods; example software that declares it works with the record; and quoted sections of the guides the record links (the first two are fetched). Container images, software and guide code are licensed separately from the CC0 data. Use cern_opendata_list_files for the record's files.
Record id: up to 12 digits (6004), optionally after a lowercase experiment prefix (cms-93956). cern_opendata_search_records and cern_opendata_get_records return it.
Assemble what is needed to analyse a record: its container images, CMSSW release and global tag; the condition-data, VM and validated-run records for its run periods; example software that declares it works with the record; and quoted sections of the guides the record links (the first two are fetched). Container images, software and guide code are licensed separately from the CC0 data. Use cern_opendata_list_files for the record's files.
| Argument | Type | Description |
|---|---|---|
| recid* | string | Record id: up to 12 digits (6004), optionally after a lowercase experiment prefix (cms-93956). cern_opendata_search_records and cern_opendata_get_records return it. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"recid"
],
"properties": {
"recid": {
"type": "string",
"pattern": "^(?:[a-z]{1,16}-)?\\d{1,12}$",
"description": "Record id: up to 12 digits (6004), optionally after a lowercase experiment prefix (cms-93956). cern_opendata_search_records and cern_opendata_get_records return it."
}
},
"additionalProperties": false
}Fetch full metadata for 1-20 records in one call, by recid, DOI, CMS dataset path (/Primary/Era/TIER) or documentation slug. Returns the description, run periods, collision and distribution details, related records, a software-environment summary, the license and a ready citation, plus what a record states of its variable dictionary, physics category, pile-up, keywords, and LHCb magnet polarity and stripping. Documentation and news pages include their markdown body in slices of at most 30,000 characters; body_offset with that one id reads on from where a slice stops. Each response holds to 64,000 bytes, except that the first record always comes back whole: records past the budget, and ids past the first 20, are listed under deferred, to pass back as ids. File lists are not included; use cern_opendata_list_files. Identifiers that do not resolve come back under missing with guidance; they do not fail the call.
| Argument | Type | Description |
|---|---|---|
| ids* | array | Identifiers to resolve: up to 100, of which the first 20 distinct are looked up and the rest returned under deferred. Forms may be mixed; exact duplicates collapse. |
| body_offset | integer | With exactly one documentation or news id: where its body slice starts, in characters (UTF-16 code units), usually the body_next_offset an earlier call returned. 0 (the default) is the body's start and is accepted with any ids; above 0 needs exactly one id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"ids"
],
"properties": {
"ids": {
"type": "array",
"items": {
"type": "string",
"maxLength": 500,
"description": "One identifier: a recid (6004 or atlas-160006, recid:6004 or a portal record URL), a DOI (10.7483/OPENDATA.CMS.YLIC.86ZZ, doi:… or a doi.org URL), a CMS dataset path (/DoubleMuParked/Run2012B-22Jan2013-v1/AOD) or a documentation slug (cms-guide-docker or its portal URL)."
},
"maxItems": 100,
"minItems": 1,
"description": "Identifiers to resolve: up to 100, of which the first 20 distinct are looked up and the rest returned under deferred. Forms may be mixed; exact duplicates collapse."
},
"body_offset": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "With exactly one documentation or news id: where its body slice starts, in characters (UTF-16 code units), usually the body_next_offset an earlier call returned. 0 (the default) is the body's start and is accepted with any ids; above 0 needs exactly one id."
}
},
"additionalProperties": false
}Get a CMS validated-run (good-run) list, which certifies the luminosity sections that are good for physics in each run. Select it by a CMS collision dataset recid, a validated-run list recid, or a run period such as Run2012B (give exactly one of recid and run_period). Choose the full validation or the muons-only variant, and narrow to a run range; a dataset recid defaults the range to the first and last run the dataset lists. Returns the runs with their luminosity-section ranges and the list file download URL. CMS only.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Runs to return, 1-2000. A value above 2000 is served at 2000. |
| recid | string | A CMS collision dataset recid (its linked list is used) or a validated-run list recid (used as named): up to 12 digits, optionally after a lowercase experiment prefix (cms-93956). Give this or run_period. |
| run_max | integer | Highest run to return, inclusive. Defaults with run_min for a dataset recid. |
| run_min | integer | Lowest run to return, inclusive. With a dataset recid and neither bound set, run_min and run_max default to the first and last run the dataset lists; run_bounds echoes the range applied. |
| variant | string | full (every detector certified) or muons_only (certified for muon physics). Omitted: a list recid is used as named; a dataset recid or run_period selects full. |
List one record's files: its file indexes (groups of up to ~1,500 files) with their XRootD URI-list URLs, and per file the XRootD URI, HTTPS download URL, size, adler32 checksum and availability. Without index, returns the record's indexes and its regular files; with index, reads only that index and pages through its files. Files marked on demand sit on tape and must be requested on the record's portal page before download.
| Argument | Type | Description |
|---|---|---|
| index | string | A file index key from the indexes list, matched exactly (a .txt ending is read as .json). Omit to list the record's indexes and regular files. |
| limit | integer | Files per page, 1-500. A value above 500 is served at 500. |
| recid* | string | Record id: up to 12 digits (6004), optionally after a lowercase experiment prefix (atlas-160006). cern_opendata_search_records and cern_opendata_get_records return it. |
| cursor | string | next_cursor from the previous page, unchanged, with the same recid and index. Omit for the first page. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"recid"
],
"properties": {
"index": {
"type": "string",
"maxLength": 300,
"description": "A file index key from the indexes list, matched exactly (a .txt ending is read as .json). Omit to list the record's indexes and regular files."
},
"limit": {
"type": "integer",
"default": 50,
"maximum": 10000,
"minimum": 1,
"description": "Files per page, 1-500. A value above 500 is served at 500."
},
"recid": {
"type": "string",
"pattern": "^(?:[a-z]{1,16}-)?\\d{1,12}$",
"description": "Record id: up to 12 digits (6004), optionally after a lowercase experiment prefix (atlas-160006). cern_opendata_search_records and cern_opendata_get_records return it."
},
"cursor": {
"type": "string",
"maxLength": 500,
"description": "next_cursor from the previous page, unchanged, with the same recid and index. Omit for the first page."
}
},
"additionalProperties": false
}Decode the vocabulary the other cern_opendata tools accept: experiments, record types, collision energies and types, file formats and data tiers, availability states, physics categories, LHCb magnet polarities and stripping streams and versions, identifier forms, query syntax, licensing, and the CMS run periods that have validated-run lists. Static and offline; omit topic for every table.
| Argument | Type | Description |
|---|---|---|
| topic | string | One table to return: experiments, record_types, collision_energies, collision_types, file_types, availability, categories, lhcb, identifiers, query_syntax, licensing or run_periods. Omit for every table. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"topic": {
"enum": [
"experiments",
"record_types",
"collision_energies",
"collision_types",
"file_types",
"availability",
"categories",
"lhcb",
"identifiers",
"query_syntax",
"licensing",
"run_periods"
],
"type": "string",
"description": "One table to return: experiments, record_types, collision_energies, collision_types, file_types, availability, categories, lhcb, identifiers, query_syntax, licensing or run_periods. Omit for every table."
}
},
"additionalProperties": false
}Search the CERN Open Data Portal's datasets, software, environments, documentation and supplementary records with exact-vocabulary filters and an optional full-text query. The filters are experiment, record type, physics category, keyword, collision energy and type, file format, data-taking year, event count, availability, collection, and LHCb magnet polarity, stripping stream and stripping version. Returns compact hits with recids plus live facet counts. Each facet ignores its own filter, so its counts show the alternatives under the other filters. Filter values are exact upstream; common spellings are normalized, and cern_opendata_list_reference lists the vocabulary. Paging reaches the first 10,000 matches.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, from 1, counting pages of the limit applied. page × limit may not exceed 10,000. |
| sort | string | bestmatch (relevance), mostrecent (by date_published, newest first), title (A-Z) or title_desc (Z-A). Omitted: bestmatch with a query, mostrecent (newest first) without. |
| type | array | Record types (OR): a primary (Dataset, Documentation, Environment, Software, Supplementaries, News) or Primary::Secondary such as Dataset::Collision or Dataset::Simulated. Up to 7. Omit for every served type; Glossary is not served. |
| limit | integer | Hits per page, 1-50. A value above 50 is served at 50. |
| query | string | Full-text query, sent verbatim as an OpenSearch query_string (AND between terms; title matches weigh double). Field forms such as title:"…", recid:(1 OR 2) or run_period:("Run2012B") work; cern_opendata_list_reference with topic query_syntax lists them. Omit to browse by filters alone. |
Look up CMS High-Level Trigger paths by exact name (HLT_IsoMu24) or prefix pattern (HLT_IsoMu*), optionally for one data-taking year. Paths outside the HLT_ family, such as AlCa_EcalPi0, DST_ and DQM_ paths, output modules and HLTriggerFinalPath, are found by their own names, in the case given. Each match is a per-year path record parsed into the primary datasets its title names, the first and last run the path was seen online, per-version run ranges, the L1 seed, and links to the HLT menu records. Covers CMS open data from 2011-2016. Prescale factors are not returned: each HLT menu record holds a configuration file (cern_opendata_list_files with a menu_recid) whose PrescaleService block lists the prescale in each column of every path it prescales (a path it leaves out has prescale 1), and the CMS luminosity records (collection CMS-Luminosity-Information) hold prescale files that log which column applied by run and luminosity section.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, from 1, counting pages of the limit applied. page × limit may not exceed 10,000. |
| path* | string | Trigger path name (HLT_IsoMu24, AlCa_EcalPi0) or prefix with one trailing wildcard (HLT_IsoMu*): a letter or digit, then letters, digits and underscores. A path starting HLT_ in any case is searched as given, with the prefix case fixed, and matches path names in any case. Any other path is matched against record path names in the case given, the whole name or, with a trailing *, its start (AlCa_EcalPi0, AlCa_*), and is also searched with HLT_ prepended (IsoMu24 finds HLT_IsoMu24, 60Jet10 finds HLT_60Jet10). A trailing version suffix (_v3 or _v*) is dropped, since records list versions as V<n>. |
| year | integer |
| run_period |
| string |
| A CMS run period such as Run2012B, matched case-insensitively; 2012B also matches Run2012B. Give this or recid. cern_opendata_list_reference with topic run_periods lists them. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"default": 200,
"maximum": 10000,
"minimum": 1,
"description": "Runs to return, 1-2000. A value above 2000 is served at 2000."
},
"recid": {
"type": "string",
"pattern": "^(?:[a-z]{1,16}-)?\\d{1,12}$",
"description": "A CMS collision dataset recid (its linked list is used) or a validated-run list recid (used as named): up to 12 digits, optionally after a lowercase experiment prefix (cms-93956). Give this or run_period."
},
"run_max": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Highest run to return, inclusive. Defaults with run_min for a dataset recid."
},
"run_min": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Lowest run to return, inclusive. With a dataset recid and neither bound set, run_min and run_max default to the first and last run the dataset lists; run_bounds echoes the range applied."
},
"variant": {
"enum": [
"full",
"muons_only"
],
"type": "string",
"description": "full (every detector certified) or muons_only (certified for muon physics). Omitted: a list recid is used as named; a dataset recid or run_period selects full."
},
"run_period": {
"type": "string",
"maxLength": 40,
"description": "A CMS run period such as Run2012B, matched case-insensitively; 2012B also matches Run2012B. Give this or recid. cern_opendata_list_reference with topic run_periods lists them."
}
},
"additionalProperties": false
}| year_to | integer | Latest data-taking year, inclusive. Alone, it means up to this year. |
| category | array | Physics categories of simulated datasets (OR): a primary such as Exotica, Higgs Physics, Standard Model Physics or Supersymmetry, or Primary::Secondary such as Higgs Physics::Standard Model. Up to 20; case and the separator are normalized, and a value holding a comma (Exotica::Heavy Fermions, Heavy Righ-Handed Neutrinos) is one item. Heavy-Ion Physics also matches its leading-space spelling. cern_opendata_list_reference topic categories lists every value. |
| keywords | array | Record keywords (OR), exact and case-sensitive (Education and education differ), sent as given. Up to 10; a keyword holding a comma is one item. |
| file_type | array | File formats and data tiers (OR), such as nanoaod, miniaod, aod, root, DAOD_PHYSLITE or csv. Up to 20; case is normalized for known values. |
| year_from | integer | Earliest data-taking year, inclusive. Alone, it means this year onward; for one year, set year_from and year_to to it. |
| collection | array | Portal collections (OR), exact and case-sensitive, such as CMS-Validated-Runs; copy spellings from a record's collections field. Up to 10. |
| experiment | array | Experiments (OR): ALICE, ATLAS, CMS, DELPHI, JADE, LHCb, OPERA, PHENIX, TOTEM. Up to 9; case is normalized. |
| max_events | integer | Maximum number of events, inclusive. |
| min_events | integer | Minimum number of events, inclusive. |
| availability | array | Record availability (OR): online, partial, ondemand (on tape, requested before download) or requested. Up to 4. |
| collision_type | array | Collision types (OR): pp, PbPb, pPb, e+e-, Interfill. PbPb also matches the Pb-Pb spelling. Up to 6. |
| magnet_polarity | array | LHCb magnet polarities (OR): MagDown or MagUp, set on LHCb collision datasets. Up to 2; case is normalized. |
| collision_energy | array | Collision energies (OR), such as 7TeV, 8TeV, 13TeV or 5.02TeV. Up to 15; "13TeV, 13.6TeV" is one upstream value and one item. |
| stripping_stream | array | LHCb stripping streams (OR), such as BHADRON, CHARM, DIMUON, EW or LEPTONIC; they also match LHCb stripping documentation. Up to 11; case is normalized. cern_opendata_list_reference topic lhcb lists them. |
| stripping_version | array | LHCb stripping versions (OR), such as stripping21 or stripping21r1p2. Up to 12; case is normalized. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"default": 1,
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number, from 1, counting pages of the limit applied. page × limit may not exceed 10,000."
},
"sort": {
"enum": [
"bestmatch",
"mostrecent",
"title",
"title_desc"
],
"type": "string",
"description": "bestmatch (relevance), mostrecent (by date_published, newest first), title (A-Z) or title_desc (Z-A). Omitted: bestmatch with a query, mostrecent (newest first) without."
},
"type": {
"type": "array",
"items": {
"type": "string",
"maxLength": 100,
"description": "One type value."
},
"maxItems": 7,
"description": "Record types (OR): a primary (Dataset, Documentation, Environment, Software, Supplementaries, News) or Primary::Secondary such as Dataset::Collision or Dataset::Simulated. Up to 7. Omit for every served type; Glossary is not served."
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 10000,
"minimum": 1,
"description": "Hits per page, 1-50. A value above 50 is served at 50."
},
"query": {
"type": "string",
"maxLength": 500,
"description": "Full-text query, sent verbatim as an OpenSearch query_string (AND between terms; title matches weigh double). Field forms such as title:\"…\", recid:(1 OR 2) or run_period:(\"Run2012B\") work; cern_opendata_list_reference with topic query_syntax lists them. Omit to browse by filters alone."
},
"year_to": {
"type": "integer",
"maximum": 2100,
"minimum": 1900,
"description": "Latest data-taking year, inclusive. Alone, it means up to this year."
},
"category": {
"type": "array",
"items": {
"type": "string",
"maxLength": 100,
"description": "One category value."
},
"maxItems": 20,
"description": "Physics categories of simulated datasets (OR): a primary such as Exotica, Higgs Physics, Standard Model Physics or Supersymmetry, or Primary::Secondary such as Higgs Physics::Standard Model. Up to 20; case and the separator are normalized, and a value holding a comma (Exotica::Heavy Fermions, Heavy Righ-Handed Neutrinos) is one item. Heavy-Ion Physics also matches its leading-space spelling. cern_opendata_list_reference topic categories lists every value."
},
"keywords": {
"type": "array",
"items": {
"type": "string",
"maxLength": 100,
"description": "One keyword, exact and case-sensitive."
},
"maxItems": 10,
"description": "Record keywords (OR), exact and case-sensitive (Education and education differ), sent as given. Up to 10; a keyword holding a comma is one item."
},
"file_type": {
"type": "array",
"items": {
"type": "string",
"maxLength": 100,
"description": "One file_type value."
},
"maxItems": 20,
"description": "File formats and data tiers (OR), such as nanoaod, miniaod, aod, root, DAOD_PHYSLITE or csv. Up to 20; case is normalized for known values."
},
"year_from": {
"type": "integer",
"maximum": 2100,
"minimum": 1900,
"description": "Earliest data-taking year, inclusive. Alone, it means this year onward; for one year, set year_from and year_to to it."
},
"collection": {
"type": "array",
"items": {
"type": "string",
"maxLength": 100,
"description": "One collection name, exact and case-sensitive."
},
"maxItems": 10,
"description": "Portal collections (OR), exact and case-sensitive, such as CMS-Validated-Runs; copy spellings from a record's collections field. Up to 10."
},
"experiment": {
"type": "array",
"items": {
"type": "string",
"maxLength": 100,
"description": "One experiment value."
},
"maxItems": 9,
"description": "Experiments (OR): ALICE, ATLAS, CMS, DELPHI, JADE, LHCb, OPERA, PHENIX, TOTEM. Up to 9; case is normalized."
},
"max_events": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Maximum number of events, inclusive."
},
"min_events": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Minimum number of events, inclusive."
},
"availability": {
"type": "array",
"items": {
"type": "string",
"maxLength": 100,
"description": "One availability value."
},
"maxItems": 4,
"description": "Record availability (OR): online, partial, ondemand (on tape, requested before download) or requested. Up to 4."
},
"collision_type": {
"type": "array",
"items": {
"type": "string",
"maxLength": 100,
"description": "One collision_type value."
},
"maxItems": 6,
"description": "Collision types (OR): pp, PbPb, pPb, e+e-, Interfill. PbPb also matches the Pb-Pb spelling. Up to 6."
},
"magnet_polarity": {
"type": "array",
"items": {
"type": "string",
"maxLength": 100,
"description": "One magnet_polarity value."
},
"maxItems": 2,
"description": "LHCb magnet polarities (OR): MagDown or MagUp, set on LHCb collision datasets. Up to 2; case is normalized."
},
"collision_energy": {
"type": "array",
"items": {
"type": "string",
"maxLength": 100,
"description": "One collision_energy value."
},
"maxItems": 15,
"description": "Collision energies (OR), such as 7TeV, 8TeV, 13TeV or 5.02TeV. Up to 15; \"13TeV, 13.6TeV\" is one upstream value and one item."
},
"stripping_stream": {
"type": "array",
"items": {
"type": "string",
"maxLength": 100,
"description": "One stripping_stream value."
},
"maxItems": 11,
"description": "LHCb stripping streams (OR), such as BHADRON, CHARM, DIMUON, EW or LEPTONIC; they also match LHCb stripping documentation. Up to 11; case is normalized. cern_opendata_list_reference topic lhcb lists them."
},
"stripping_version": {
"type": "array",
"items": {
"type": "string",
"maxLength": 100,
"description": "One stripping_version value."
},
"maxItems": 12,
"description": "LHCb stripping versions (OR), such as stripping21 or stripping21r1p2. Up to 12; case is normalized."
}
},
"additionalProperties": false
}| Data-taking year, such as 2012. Trigger records cover 2011-2016. |
| limit | integer | Records per page, 1-50. A value above 50 is served at 50. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"path"
],
"properties": {
"page": {
"type": "integer",
"default": 1,
"maximum": 9007199254740991,
"minimum": 1,
"description": "Page number, from 1, counting pages of the limit applied. page × limit may not exceed 10,000."
},
"path": {
"type": "string",
"pattern": "^(?:HLT_[A-Za-z0-9_]+|[0-9A-GI-Za-z][A-Za-z0-9_]*|H(?:[A-KM-Za-z0-9_][A-Za-z0-9_]*)?|HL(?:[A-SU-Za-z0-9_][A-Za-z0-9_]*)?|HLT(?:[A-Za-z0-9][A-Za-z0-9_]*)?)\\*?$",
"maxLength": 200,
"description": "Trigger path name (HLT_IsoMu24, AlCa_EcalPi0) or prefix with one trailing wildcard (HLT_IsoMu*): a letter or digit, then letters, digits and underscores. A path starting HLT_ in any case is searched as given, with the prefix case fixed, and matches path names in any case. Any other path is matched against record path names in the case given, the whole name or, with a trailing *, its start (AlCa_EcalPi0, AlCa_*), and is also searched with HLT_ prepended (IsoMu24 finds HLT_IsoMu24, 60Jet10 finds HLT_60Jet10). A trailing version suffix (_v3 or _v*) is dropped, since records list versions as V<n>."
},
"year": {
"type": "integer",
"maximum": 2100,
"minimum": 2000,
"description": "Data-taking year, such as 2012. Trigger records cover 2011-2016."
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 10000,
"minimum": 1,
"description": "Records per page, 1-50. A value above 50 is served at 50."
}
},
"additionalProperties": false
}