이 MCP로 할 수 있는 일
Discovers, schemas, and queries CDC public-health datasets, including mortality, vaccination, surveillance, and behavioral-risk data.
도구
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'tags': {'type': 'array', 'items': {'type': 'string', 'description': 'Tag value'}, 'description': 'Filter by domain tags (e.g., ["covid19", "surveillance"]). Tags widen the search instead of narrowing it â\x80\x94 a dataset matches when it carries any one of them, so every tag added returns more results, and an unrecognized tag matches nothing and leaves the result set unchanged. Values match the catalog\'s own tag vocabulary, case-insensitively; call cdc_list_catalog_vocabulary for the values in use with their entry counts, or read the tags field on any result. To narrow, combine tags with query or category, which intersect with the tag set.'}, 'limit': {'type': 'integer', 'default': 10, 'maximum': 100, 'minimum': 1, 'description': 'Results to return (default 10, max 100). offset plus limit must not exceed 10000.'}, 'order': {'enum': ['dataset_id', 'relevance'], 'type': 'string', 'default': 'dataset_id', 'description': 'Result ordering. "dataset_id" (default) sorts deterministically by each dataset\'s unique catalog ID â\x80\x94 required for stable offset pagination, since consecutive pages form a gap-free, duplicate-free traversal. "relevance" returns best-match ranking for keyword search but is not stably paginable across pages, so walking offsets can skip or repeat datasets.'}, 'query': {'type': 'string', 'description': 'Full-text search across dataset names and descriptions (e.g., "diabetes mortality", "lead exposure children").'}, 'domain': {'enum': ['data.cdc.gov', 'chronicdata.cdc.gov'], 'type': 'string', 'default': 'data.cdc.gov', 'description': 'CDC Socrata host to search. "data.cdc.gov" (default) and "chronicdata.cdc.gov" front the same catalog and return the same entries, so switching hosts neither widens nor narrows a search â\x80\x94 chronic-disease and small-area collections such as PLACES, the Heart Disease & Stroke Atlas, and Environmental Public Health Tracking are found from either.'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9999, 'minimum': 0, 'description': 'Pagination offset for browsing beyond first page (max 9999). offset plus limit must not exceed 10000; both CDC portals hold well under two thousand entries, so offsets near that ceiling page past the end of the catalog.'}, 'category': {'type': 'string', 'description': 'Filter by domain category (e.g., "NNDSS", "Vaccinations", "Behavioral Risk Factors"). Values come from the catalog\'s own vocabulary and are matched exactly, including case â\x80\x94 "Vaccinations" matches 89 entries while "Vaccination" matches none. Call cdc_list_catalog_vocabulary for every value with its entry count rather than guessing at one.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['datasets', 'totalCount', 'appliedFilters']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['rate_limited', 'dataset_not_found', 'access_denied', 'upstream_error', 'page_out_of_range', 'invalid_query'], 'description': "Machine-readable failure mode. Declared by this tool: `rate_limited`: Socrata API returns 429 Too Many Requests. `dataset_not_found`: Socrata returned 404 for the catalog endpoint itself â\x80\x94 the Discovery API address is wrong or the service moved. `access_denied`: Socrata returned 403 â\x80\x94 the catalog refused this request rather than failing to serve it. `upstream_error`: Socrata catalog API returned a 5xx server error. `page_out_of_range`: offset plus limit exceeds 10000, which Socrata's catalog rejects outright. `invalid_query`: Catalog API returned 400 â\x80\x94 typically a malformed query or invalid filter value. Other values are possible when a failure originates below the handler."}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'notice': {'type': 'string', 'description': 'Guidance when the page came back empty â\x80\x94 the catalog values closest to a category or tag filter that matched nothing, each with its entry count; how to broaden a search when no value is close; or the size of the result set when the offset ran past its end.'}, 'datasets': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name'], 'properties': {'id': {'type': 'string', 'description': 'Four-by-four dataset identifier (e.g., "bi63-dtpu").'}, 'name': {'type': 'string', 'description': 'Dataset display name from the catalog (e.g., "Provisional COVID-19 Deaths by Sex and Age").'}, 'tags': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Domain tags when provided.'}, 'category': {'type': 'string', 'description': 'Domain category when provided.'}, 'assetType': {'type': 'string', 'description': 'Catalog asset type as Socrata reports it â\x80\x94 "dataset", "filter", "chart", "map", "story", "file", or "href". Descriptive only: "filter" entries carry real columns and query normally, while "chart" and "map" entries do not. Read columnCount, not this field, to decide whether an entry is queryable.'}, 'pageViews': {'type': 'number', 'description': 'Total page views when provided.'}, 'updatedAt': {'type': 'string', 'description': 'Last data update timestamp when provided.'}, 'columnCount': {'type': 'number', 'description': 'Number of columns in the dataset when reported by the catalog. A count of 0 means the entry is not tabular â\x80\x94 cdc_get_dataset_schema and cdc_query_dataset return no usable data for it.'}, 'description': {'type': 'string', 'description': 'Dataset description when provided by the catalog, as plain text â\x80\x94 markup stripped and entity references decoded â\x80\x94 then truncated to 300 characters, so the limit bounds visible text. Fetch the full text via cdc_get_dataset_schema.'}, 'columnSample': {'type': 'array', 'items': {'type': 'string'}, 'description': 'First 8 column field names as a preview. Call cdc_get_dataset_schema for the full column list with data types.'}}, 'description': 'A single dataset catalog entry.', 'additionalProperties': False}, 'description': 'Matching datasets.'}, 'totalCount': {'type': 'number', 'description': 'Total matching datasets in the catalog (for pagination).'}, 'appliedFilters': {'type': 'object', 'properties': {'tags': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Tag filters used â\x80\x94 a dataset matched when it carried any one of them.'}, 'query': {'type': 'string', 'description': 'Search query used.'}, 'category': {'type': 'string', 'description': 'Category filter used.'}}, 'description': 'Filters applied to this query; absent fields indicate no filter on that dimension. Query, category, and tags intersect with each other, but multiple tags union.', 'additionalProperties': False}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['datasetId'], 'properties': {'domain': {'enum': ['data.cdc.gov', 'chronicdata.cdc.gov'], 'type': 'string', 'default': 'data.cdc.gov', 'description': 'CDC Socrata host to fetch the dataset from. "data.cdc.gov" (default) and "chronicdata.cdc.gov" front the same catalog, so a four-by-four ID resolves on either and the default works whichever host the dataset was found on.'}, 'datasetId': {'type': 'string', 'pattern': '^[a-z0-9]{4}-[a-z0-9]{4}$', 'description': 'Four-by-four dataset identifier (e.g., "bi63-dtpu"). Obtain from cdc_discover_datasets.'}, 'column_limit': {'type': 'integer', 'default': 100, 'maximum': 500, 'minimum': 1, 'description': 'Columns to return in this call (default 100, max 500). Every dataset under the default arrives whole; past it the response reports totalCount and a nextOffset to pass back as column_offset. Raise this to pull a wide schema in one call.'}, 'column_offset': {'type': 'integer', 'default': 0, 'maximum': 10000, 'minimum': 0, 'description': 'Index of the first column to return, for continuing past a previous call (default 0). Columns keep the order the dataset declares, so column_offset plus column_limit walks the schema without gaps or repeats. An offset at or past the column count returns an empty window rather than an error.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['name', 'columns', 'totalCount']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'cap': {'type': 'number', 'description': 'The column_limit that bounded this response.'}, 'name': {'type': 'string', 'description': 'Dataset display name from the catalog (e.g., "Provisional COVID-19 Deaths by Sex and Age").'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['dataset_not_found', 'not_queryable', 'access_denied', 'invalid_query', 'rate_limited', 'upstream_error'], 'description': 'Machine-readable failure mode. Declared by this tool: `dataset_not_found`: Dataset ID does not exist or has been retired. `not_queryable`: The ID names a catalog asset with no columns â\x80\x94 a chart, map, story, file, or external link rather than a tabular dataset. `access_denied`: Socrata returned 403 â\x80\x94 the asset is not readable through this endpoint or access is restricted. `invalid_query`: Socrata rejected the metadata request with a 400. `rate_limited`: Socrata API returns 429 Too Many Requests. `upstream_error`: Socrata metadata API returned a 5xx server error. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'shown': {'type': 'number', 'description': 'Number of columns returned in this response.'}, 'notice': {'type': 'string', 'description': 'Guidance when the response is a subset of the schema â\x80\x94 which columns it covers, how to reach the rest, or that column_offset ran past the end.'}, 'columns': {'type': 'array', 'items': {'type': 'object', 'required': ['fieldName', 'dataType'], 'properties': {'dataType': {'type': 'string', 'description': 'Column data type (text, number, calendar_date, etc.).'}, 'fieldName': {'type': 'string', 'description': 'Column field name (use in SoQL queries).'}, 'description': {'type': 'string', 'description': 'Column description when provided.'}}, 'description': 'A single column in the dataset schema.', 'additionalProperties': False}, 'description': 'The requested window of dataset columns, with full types and descriptions. Bounded by column_limit/column_offset; the enrichment fields say how the window sits in the whole schema.'}, 'rowCount': {'type': 'number', 'description': 'Total rows in the dataset; omitted when neither a live nor a cached figure is available. Read rowCountSource before sizing a pagination walk against it â\x80\x94 the cached figure can understate an actively-updated dataset by a third or more.'}, 'truncated': {'type': 'boolean', 'description': 'True when the returned columns are a subset of the schema. Absent means every column of the dataset is in this response.'}, 'updatedAt': {'type': 'string', 'description': 'Last data update timestamp when provided.'}, 'nextOffset': {'type': 'number', 'description': 'Value to pass as column_offset on the next call to continue after the last column returned. Present only when columns remain beyond this window.'}, 'totalCount': {'type': 'number', 'description': 'Total columns in the dataset schema, before column_limit/column_offset.'}, 'description': {'type': 'string', 'description': 'Dataset description when provided, in full as plain text â\x80\x94 markup stripped and entity references decoded. Never truncated here; cdc_discover_datasets is the surface that shortens it.'}, 'rowCountSource': {'enum': ['live', 'cached'], 'type': 'string', 'description': 'Provenance of rowCount. "live" is a count(*) run against the dataset for this call. "cached" is the figure Socrata stored when it last built its column cache, returned when the count request did not succeed; Socrata does not refresh it as rows land. Absent exactly when rowCount is absent.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'domain': {'enum': ['data.cdc.gov', 'chronicdata.cdc.gov'], 'type': 'string', 'default': 'data.cdc.gov', 'description': 'CDC Socrata host to read the vocabulary from. "data.cdc.gov" (default) and "chronicdata.cdc.gov" front the same catalog and publish the same vocabulary, so this selects which host answers, never which values exist.'}, 'filter': {'type': 'string', 'description': 'Narrow both vocabularies to the values related to this text. A value matches when every word of the filter appears inside one of its words ("vaccin" reaches "Vaccinations" and "covid-19 vaccination"), or when the whole value appears in the filter. Matching is not fuzzy â\x80\x94 a misspelling returns nothing rather than a guess â\x80\x94 and a filter under three letters is ignored.'}, 'tag_limit': {'type': 'integer', 'default': 50, 'maximum': 500, 'minimum': 1, 'description': 'Tags to return in this call (default 50, max 500). Tags are ranked by entry count, so the default page is the most-used end of the vocabulary; the response reports how many matched and a nextOffset while more remain. Categories are never paged â\x80\x94 all 55 arrive whole.'}, 'tag_offset': {'type': 'integer', 'default': 0, 'maximum': 10000, 'minimum': 0, 'description': 'Index of the first tag to return, for continuing past a previous call (default 0). Ranking is stable, so tag_offset plus tag_limit walks the vocabulary without gaps or repeats. An offset at or past the number of matching tags returns an empty tag list rather than an error.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['domain', 'categories', 'tags', 'vocabularySize', 'categoryCount', 'tagCount']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'cap': {'type': 'number', 'description': 'The tag_limit that bounded this response.'}, 'tags': {'type': 'array', 'items': {'type': 'object', 'required': ['value', 'datasetCount'], 'properties': {'value': {'type': 'string', 'description': 'The value as the catalog spells it â\x80\x94 pass it verbatim to cdc_discover_datasets. Categories are matched case-sensitively by the catalog; tags case-insensitively.'}, 'datasetCount': {'type': 'number', 'description': 'Catalog entries carrying this value. Charts, maps, stories, files, and links are counted alongside datasets, so this is an upper bound on the queryable entries a filter returns.'}}, 'description': 'One vocabulary value with its catalog entry count.', 'additionalProperties': False}, 'description': "The requested window of domain tags, ranked by entry count. Pass values to cdc_discover_datasets' tags input; tags union there, so each one added widens the result set."}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['rate_limited', 'dataset_not_found', 'access_denied', 'upstream_error', 'invalid_query'], 'description': 'Machine-readable failure mode. Declared by this tool: `rate_limited`: Socrata API returns 429 Too Many Requests. `dataset_not_found`: Socrata returned 404 for the vocabulary endpoint itself â\x80\x94 the Discovery API address is wrong or the service moved. `access_denied`: Socrata returned 403 â\x80\x94 the catalog refused this request rather than failing to serve it. `upstream_error`: Socrata catalog API returned a 5xx server error. `invalid_query`: Socrata rejected the vocabulary request with a 400. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'shown': {'type': 'number', 'description': 'Number of tags returned in this response.'}, 'domain': {'enum': ['data.cdc.gov', 'chronicdata.cdc.gov'], 'type': 'string', 'description': 'CDC Socrata host this vocabulary was read from.'}, 'notice': {'type': 'string', 'description': 'Guidance when the response is a subset of the vocabulary, when a filter too short to discriminate was ignored, when the filter matched nothing, or when tag_offset ran past the end of the matches.'}, 'tagCount': {'type': 'number', 'description': 'Tags matching the filter, before tag_limit and tag_offset.'}, 'truncated': {'type': 'boolean', 'description': 'True when the returned tags are a subset of the matching ones. Absent means every matching tag is in this response.'}, 'categories': {'type': 'array', 'items': {'type': 'object', 'required': ['value', 'datasetCount'], 'properties': {'value': {'type': 'string', 'description': 'The value as the catalog spells it â\x80\x94 pass it verbatim to cdc_discover_datasets. Categories are matched case-sensitively by the catalog; tags case-insensitively.'}, 'datasetCount': {'type': 'number', 'description': 'Catalog entries carrying this value. Charts, maps, stories, files, and links are counted alongside datasets, so this is an upper bound on the queryable entries a filter returns.'}}, 'description': 'One vocabulary value with its catalog entry count.', 'additionalProperties': False}, 'description': "Every domain category matching the filter, ranked by entry count. Pass a value to cdc_discover_datasets' category input exactly as spelled here."}, 'nextOffset': {'type': 'number', 'description': 'Value to pass as tag_offset on the next call to continue after the last tag returned. Present only while matching tags remain.'}, 'categoryCount': {'type': 'number', 'description': 'Categories matching the filter. Every one of them is in this response.'}, 'vocabularySize': {'type': 'object', 'required': ['categories', 'tags'], 'properties': {'tags': {'type': 'number', 'description': 'Domain tags published for this host.'}, 'categories': {'type': 'number', 'description': 'Domain categories published for this host.'}}, 'description': 'Size of each full vocabulary on this host, before any filter was applied.', 'additionalProperties': False}, 'truncationCeiling': {'type': 'number', 'description': 'Upper bound on the entry count of every tag not returned. Tags are ranked by entry count, so no omitted tag is carried by more entries than the last one shown.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['datasetId'], 'properties': {'group': {'type': 'string', 'description': 'SoQL GROUP BY clause. Requires aggregate functions in select.'}, 'limit': {'type': 'integer', 'default': 100, 'maximum': 5000, 'minimum': 1, 'description': 'Max rows to return (default 100, max 5000). Fewer come back when the page would carry the response past its 200,000-character budget, counted over the whole result â\x80\x94 the rows as JSON and as the rendered table together; the response says so and gives a nextOffset to resume from.'}, 'order': {'type': 'string', 'description': 'SoQL ORDER BY clause. Field name with optional ASC/DESC: "total_deaths DESC". Set one whenever paging with offset: SODA does not order results implicitly, so consecutive offsets without a deterministic order can skip or repeat rows. When the dataset has no natural unique column, Socrata\'s documented minimum tie-breaker is the system field `:id`, present on every dataset â\x80\x94 order=":id".'}, 'where': {'type': 'string', 'description': 'SoQL WHERE clause. Strings must be single-quoted: "state=\'California\' AND year=2020". If a column name matches a SoQL keyword (group, select, where, order, limit, offset, having, search), wrap it in backticks: "`group`=\'By Year\'".'}, 'domain': {'enum': ['data.cdc.gov', 'chronicdata.cdc.gov'], 'type': 'string', 'default': 'data.cdc.gov', 'description': 'CDC Socrata host to query. "data.cdc.gov" (default) and "chronicdata.cdc.gov" front the same catalog, so a four-by-four ID returns the same rows from either and the default works whichever host the dataset was found on.'}, 'having': {'type': 'string', 'description': 'SoQL HAVING clause. Filters aggregated results.'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 1000000, 'minimum': 0, 'description': 'Row offset for pagination (max 1,000,000). Pair with a deterministic order clause â\x80\x94 an offset walk over unordered results can skip or repeat rows.'}, 'search': {'type': 'string', 'description': 'Full-text search across all text columns. For precise filtering use the where parameter instead.'}, 'select': {'type': 'string', 'description': 'SoQL SELECT clause â\x80\x94 column names, aliases, or aggregates: "state, sum(deaths) as total_deaths". Omit for all columns. To enumerate distinct values of a column, set select to "{column}, count(*) as count" with group="{column}" and order="count DESC".'}, 'datasetId': {'type': 'string', 'pattern': '^[a-z0-9]{4}-[a-z0-9]{4}$', 'description': 'Four-by-four dataset identifier (e.g., "bi63-dtpu"). Obtain from cdc_discover_datasets.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['rows', 'rowCount', 'effectiveQuery']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'cap': {'type': 'number', 'description': 'The requested limit that bounded this response.'}, 'rows': {'type': 'array', 'items': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'description': 'Result rows with requested fields. Most values are strings (including numbers/dates); geo columns return GeoJSON objects.'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['dataset_not_found', 'no_such_column', 'type_mismatch', 'invalid_query', 'not_queryable', 'access_denied', 'rate_limited', 'upstream_error'], 'description': 'Machine-readable failure mode. Declared by this tool: `dataset_not_found`: Dataset ID does not exist or has been retired. `no_such_column`: WHERE/SELECT/GROUP/ORDER references a column that does not exist on this dataset. `type_mismatch`: Filter value type does not match the column data type (e.g., quoting a number). `invalid_query`: Socrata rejected the SoQL query for other syntax or semantic reasons. `not_queryable`: The ID names a non-tabular asset: the data endpoint answered with rows carrying no fields, and the asset reports no columns. `access_denied`: Socrata returned 403 â\x80\x94 typically an ID naming a story, file, or external link rather than a tabular dataset. `rate_limited`: Socrata API returns 429 Too Many Requests. `upstream_error`: Socrata data API returned a 5xx server error. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'shown': {'type': 'number', 'description': 'Number of rows returned in this response.'}, 'notice': {'type': 'string', 'description': 'Guidance when no rows matched, when offset ran past the end of the result set, when further rows remain, or when the response budget cut the page short â\x80\x94 how to verify filters, lower offset, resume paging, or broaden the query.'}, 'rowCount': {'type': 'number', 'description': 'Number of rows returned in this response.'}, 'truncated': {'type': 'boolean', 'description': 'True when rows exist beyond the ones returned, established by fetching one row more than the limit rather than inferred from the row count. Absent means this response is the complete remainder of the result set.'}, 'nextOffset': {'type': 'number', 'description': 'Offset to pass on the next call to resume immediately after the last row returned. Present only when further rows exist and the resume point is within the offset ceiling; a deterministic order clause is what makes the walk gap-free.'}, 'effectiveQuery': {'type': 'string', 'description': 'The SoQL clauses sent to Socrata, as `$clause=value` pairs joined by "&". Values read exactly as they were supplied â\x80\x94 not URL-encoded â\x80\x94 so a clause can be copied back into the matching parameter of another call.'}}, 'additionalProperties': False}
입력 스키마
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'sex': {'enum': ['all', 'male', 'female'], 'type': 'string', 'default': 'all', 'description': 'Filter by sex.'}, 'limit': {'type': 'integer', 'maximum': 5000, 'minimum': 1, 'description': "Rows to return from the table CDC sent (1â\x80\x935000). Omit to take as many as fit. Either way fewer come back when the page would carry the response past its 200,000-character budget, counted over the whole result â\x80\x94 the rows, their cell notes, and the caveats and messages, as JSON and as the rendered table together; the response says so and gives a nextOffset to resume from. WONDER's request carries no limit of its own, so this pages a table already fetched in full rather than narrowing the query: the deaths, rates, caveats and hidden-row notices are the same whichever page is read."}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 10000, 'minimum': 0, 'description': 'Index of the first row to return, for continuing past a previous call (default 0, max 10,000). Rows keep the order CDC returned them in, which is stable for a given query, so offset plus limit walks the table without gaps or repeats. An offset at or past the row total returns an empty page rather than an error.'}, 'database': {'enum': ['underlying_1999_2020', 'provisional', 'underlying_2018_2024', 'multiple_1999_2020', 'multiple_2018_2024'], 'type': 'string', 'default': 'underlying_1999_2020', 'description': 'Which WONDER mortality database to query. "underlying_1999_2020" (D76) is final data for 1999â\x80\x932020 and the default. "provisional" (D176) runs 2018 through the current year, updated weekly, and returns the most recent years labelled e.g. "2025 (provisional)". "underlying_2018_2024" (D158) is settled â\x80\x94 not provisional â\x80\x94 data for 2018â\x80\x932024. "multiple_1999_2020" (D77) and "multiple_2018_2024" (D157) record every cause listed on the death certificate; without an mcd_icd10 filter they return the same figures as the underlying-cause database for the same era, so pick one only to use that filter. The two 1999â\x80\x932020 databases report race in CDC\'s four bridged groups; the other three use the six single-race groups â\x80\x94 figures broken out by race are not comparable between the two families.'}, 'group_by': {'type': 'array', 'items': {'enum': ['year', 'age_group', 'sex', 'race'], 'type': 'string'}, 'default': ['year'], 'maxItems': 4, 'minItems': 1, 'description': 'Dimensions to break results out by (1â\x80\x934, each at most once), in output-column order â\x80\x94 e.g. ["year"], ["year","sex"], ["age_group","race"]. Results are always national. Cause of death is a filter (cause_icd10), not a grouping. "race" resolves to whichever race vocabulary the selected database uses â\x80\x94 four bridged groups (Asian and Pacific Islander combined) on the 1999â\x80\x932020 databases, six single-race categories on the others, one of them "More than one race" â\x80\x94 so a race series from one family cannot be spliced onto one from the other.'}, 'mcd_icd10': {'anyOf': [{'type': 'string', 'const': ''}, {'type': 'string', 'const': '999--999'}, {'type': 'string', 'pattern': '^[A-Z][0-9]{2}(\\.[0-9]+)?(-[A-Z][0-9]{2}(\\.[0-9]+)?)?$', 'description': 'ICD-10 code or range, same form as cause_icd10 â\x80\x94 a chapter such as "S00-T98" (injury and poisoning, a chapter the underlying-cause finder does not list), a block such as "J09-J18" (influenza and pneumonia), or a single code such as "T40.1" (heroin).'}, {'type': 'array', 'items': {'anyOf': [{'type': 'string', 'const': '999--999'}, {'type': 'string', 'pattern': '^[A-Z][0-9]{2}(\\.[0-9]+)?(-[A-Z][0-9]{2}(\\.[0-9]+)?)?$', 'description': 'ICD-10 code or range, same form as cause_icd10 â\x80\x94 a chapter such as "S00-T98" (injury and poisoning, a chapter the underlying-cause finder does not list), a block such as "J09-J18" (influenza and pneumonia), or a single code such as "T40.1" (heroin).'}], 'description': 'One list entry: an ICD-10 code or range, or the withheld-cause marker.'}, 'maxItems': 50, 'minItems': 1, 'description': 'A list of 1â\x80\x9350 entries, each in the single-value form, matched as a union: a death counts once when it matches any of them, so a code set such as X40â\x80\x93X44 plus X60â\x80\x93X64 is one series with one set of rates. Repeated entries are ignored.'}], 'description': 'Filter to deaths with any of these ICD-10 codes recorded anywhere on the death certificate, whether or not it was the underlying cause â\x80\x94 e.g. "died with a respiratory condition listed", a population no underlying-cause query can produce. Takes one code or range, or a list of them, e.g. opioid involvement as ["T40.0","T40.1","T40.2","T40.3","T40.4","T40.6"]. Valid only when database is "multiple_1999_2020", "multiple_2018_2024", or "provisional"; the other databases record only the underlying cause and reject it. "999--999", the withheld-cause marker described under cause_icd10, is offered here too but only by "provisional". Combines with cause_icd10, which keeps meaning the underlying cause: a death must match both filters. Omit for all causes.'}, 'age_groups': {'type': 'array', 'items': {'enum': ['1', '1-4', '5-14', '15-24', '25-34', '35-44', '45-54', '55-64', '65-74', '75-84', '85+', 'NS'], 'type': 'string'}, 'description': 'Restrict to deaths in any of the listed age groups â\x80\x94 e.g. ["25-34","35-44"] covers both; a repeated group counts once. "1" is the under-1-year group. "NS" is the group CDC puts a death in when the age was not recorded; it is not covered by any of the ten-year groups, so a filter listing all eleven of those still leaves those deaths out and returns fewer deaths than the same query unfiltered. List "NS" alongside them to match an unfiltered total, or on its own to count them. Omit for all ages, which includes them.'}, 'year_range': {'type': 'object', 'required': ['from', 'to'], 'properties': {'to': {'type': 'integer', 'maximum': 2026, 'minimum': 1999, 'description': 'Last year (1999â\x80\x932026 across all databases; the selected one holds a narrower span).'}, 'from': {'type': 'integer', 'maximum': 2026, 'minimum': 1999, 'description': 'First year (1999â\x80\x932026 across all databases; the selected one holds a narrower span).'}}, 'description': "Inclusive year range; from must not be later than to. These bounds span every database (1999â\x80\x932026); the years the selected one actually holds are narrower, and a range outside them is rejected with that database's span named. Omit for all years the database holds."}, 'cause_icd10': {'anyOf': [{'type': 'string', 'const': ''}, {'type': 'string', 'const': '999--999'}, {'type': 'string', 'pattern': '^[A-Z][0-9]{2}(\\.[0-9]+)?(-[A-Z][0-9]{2}(\\.[0-9]+)?)?$', 'description': 'ICD-10 underlying-cause code or range. WONDER takes a node of its ICD-10 tree â\x80\x94 a chapter such as "A00-B99" (infectious) or "V01-Y89" (external causes), a block such as "X40-X49" (accidental poisoning) or "C00-C97" (malignant neoplasms), or a single code such as "I21" â\x80\x94 and rejects any other span, e.g. "X40-X44", naming it in the error. List the codes (or blocks) to cover a span that is not a tree node.'}, {'type': 'array', 'items': {'anyOf': [{'type': 'string', 'const': '999--999'}, {'type': 'string', 'pattern': '^[A-Z][0-9]{2}(\\.[0-9]+)?(-[A-Z][0-9]{2}(\\.[0-9]+)?)?$', 'description': 'ICD-10 underlying-cause code or range. WONDER takes a node of its ICD-10 tree â\x80\x94 a chapter such as "A00-B99" (infectious) or "V01-Y89" (external causes), a block such as "X40-X49" (accidental poisoning) or "C00-C97" (malignant neoplasms), or a single code such as "I21" â\x80\x94 and rejects any other span, e.g. "X40-X44", naming it in the error. List the codes (or blocks) to cover a span that is not a tree node.'}], 'description': 'One list entry: an ICD-10 code or range, or the withheld-cause marker.'}, 'maxItems': 50, 'minItems': 1, 'description': 'A list of 1â\x80\x9350 entries, each in the single-value form, matched as a union: a death counts once when it matches any of them, so a code set such as X40â\x80\x93X44 plus X60â\x80\x93X64 is one series with one set of rates. Repeated entries are ignored.'}], 'description': 'Filter to ICD-10 underlying causes of death â\x80\x94 the single condition CDC certified as having started the chain of events leading to death. Takes one code or range, or a list of them for a cause defined as a code set, e.g. drug overdose as ["X40","X41","X42","X43","X44","X60","X61","X62","X63","X64","X85","Y10","Y11","Y12","Y13","Y14"]. Omit for all causes. Accepted by every database. "999--999" is not an ICD-10 code but CDC\'s own marker for deaths whose cause it is still withholding under the provisional database\'s six-month reporting lag; it counts that backlog, and only the "provisional" database offers it.'}}, 'additionalProperties': False}
출력 스키마
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['rows', 'rowCount', 'database', 'databaseTitle', 'caveats', 'cellNotes', 'messages', 'suppressedCount', 'effectiveQuery', 'totalCount']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'cap': {'type': 'number', 'description': 'Rows this call asked for â\x80\x94 limit when set, otherwise every row from offset to the end of the table. A shown below it means the response budget cut the page short.'}, 'rows': {'type': 'array', 'items': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': ['string', 'number', 'null']}}, 'description': 'Result rows. Each carries the requested group-by dimensions plus deaths, population, crude_rate, and age_adjusted_rate (per 100,000) when age standardization is possible â\x80\x94 it is omitted when age_group is a grouping dimension or age_groups selects a single group. Dimension values are CDC\'s own labels with only surrounding whitespace removed, so the same year keys identically across databases; nothing inside a label is changed, and on the provisional database a year reads "2025 (provisional)" or "2026 (provisional and partial)" rather than a bare year. A measure cell CDC returned as a status token instead of a number is null here; cellNotes names the cell and the token. These are one page of the table CDC sent, in its order, bounded by limit and by the response budget; totalCount says how many rows the whole table holds.'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['invalid_query', 'rate_limited', 'upstream_error'], 'description': 'Machine-readable failure mode. Declared by this tool: `invalid_query`: The request contradicts itself â\x80\x94 a year_range whose from is later than its to, or a group_by dimension listed twice â\x80\x94 or does not fit the selected database â\x80\x94 a year_range outside the years it holds, mcd_icd10 against a database that records only the underlying cause, or the withheld-cause marker against one that keeps no withheld backlog â\x80\x94 or WONDER itself rejected it, e.g. an ICD-10 code or range its tree does not hold, or a filter/grouping combination it does not allow. `rate_limited`: A request reached WONDER less than 15 seconds after the previous response to the same source IP finished, and WONDER returned 429. This server queues its own calls, so the earlier request usually came from another client sharing that IP. `upstream_error`: WONDER returned an unexpected response or was unreachable. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'shown': {'type': 'number', 'description': 'Number of rows returned in this response.'}, 'notice': {'type': 'string', 'description': 'Guidance when no rows matched, when the returned rows are a page of a larger table â\x80\x94 naming whether limit or the response budget ended it â\x80\x94 or the offset ran past it, and a note when CDC returned a status token in place of a measure value.'}, 'caveats': {'type': 'array', 'items': {'type': 'string'}, 'description': 'CDC-provided caveats and footnotes: data revisions, population-estimate sources, suppression and rate-reliability rules. CDC\'s links to its methodology pages are kept as Markdown links, e.g. "[More information.](https://wonder.cdc.gov/wonder/help/ucd-expanded.html#Confidence-Intervals)". They describe the whole table CDC assembled, so they come back complete on every page rather than scoped to the rows returned.'}, 'database': {'type': 'string', 'description': 'WONDER dataset code the rows came from â\x80\x94 e.g. "D76", "D176", "D157".'}, 'messages': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Notices CDC attached to this table, verbatim apart from links, which are kept as Markdown links. The ones that matter say rows were withheld before the table was sent â\x80\x94 "Rows with zero Deaths are hidden." and "Rows with suppressed Deaths are hidden." A withheld row is absent from rows entirely, with nothing in the table marking the gap, so while this array is non-empty a stratum missing from rows may have been dropped rather than unobserved, and any count, ranking, or completeness claim drawn from rows is partial. These describe the whole table, so they come back complete on every page. Empty when CDC withheld no rows.'}, 'rowCount': {'type': 'number', 'description': 'Number of rows returned in this response â\x80\x94 the page size whenever it falls short of totalCount.'}, 'cellNotes': {'type': 'array', 'items': {'type': 'object', 'required': ['row', 'column', 'token'], 'properties': {'row': {'type': 'number', 'description': 'Zero-based index into rows â\x80\x94 the rows in this response, so it is relative to the page rather than to the whole table.'}, 'token': {'type': 'string', 'description': 'Token CDC returned in place of a number: "Suppressed" (withheld for confidentiality, fewer than 10 persons), "Unreliable" (rate from fewer than 20 deaths â\x80\x94 published, not withheld), or "Not Applicable" (no population denominator).'}, 'column': {'type': 'string', 'description': 'Measure column whose numeric value the token replaced.'}}, 'description': 'One flagged measure cell: where it is and what CDC put there.', 'additionalProperties': False}, 'description': 'One entry per measure cell CDC returned as a status token rather than a number, covering the rows in this response only. Those cells read null in rows, so this is what tells a withheld value apart from an unreliable one or a genuinely absent one.'}, 'truncated': {'type': 'boolean', 'description': 'True when rows remain past the ones returned. Absent means this response runs to the end of the table, which is also the case for an offset past it.'}, 'nextOffset': {'type': 'number', 'description': 'Offset to pass on the next call to resume immediately after the last row returned. Present only when further rows remain.'}, 'totalCount': {'type': 'number', 'description': 'Rows in the whole table CDC returned, before any page was taken. Exact rather than estimated â\x80\x94 the table is parsed in full before a page is taken from it.'}, 'databaseTitle': {'type': 'string', 'description': 'CDC\'s own title for that database, e.g. "Underlying Cause of Death, 1999-2020". Names the era and record type the rows describe, so a result read on its own is self-describing.'}, 'effectiveQuery': {'type': 'string', 'description': 'Human-readable summary of the grouping and filters sent to WONDER.'}, 'suppressedCount': {'type': 'number', 'description': 'How many cellNotes carry the "Suppressed" token â\x80\x94 cells CDC withheld for confidentiality. Counted over the rows in this response, so it tracks the page rather than the whole table.'}}, 'additionalProperties': False}
최근 도구 변경
유사한 MCP 서버
Clink Forge
Provides pay-per-call access to attested government datasets, primarily CDC and HHS health data plus EPA air-quality observations.
Medicare Coverage
Provides structured Medicare coverage documents, policy timelines, utilization, enrollment, supplier, and payment-related data fr…
Openfda
Provides access to FDA drug, labeling, approval, adverse-event, recall, shortage, warning-letter, and enforcement data for biomed…
Fda Drug Competition
Analyzes FDA Orange Book drug applications, patents, exclusivities, generic competition, and loss-of-exclusivity timelines.
Cms Open Payments
Searches and analyzes CMS Open Payments data on payments from pharmaceutical and device companies to physicians, hospitals, and o…
Fda Devices
Searches FDA medical-device regulatory datasets covering 510(k)s, PMAs, classifications, registrations, recalls, UDI records, and…
Clinicaltables
Searches NIH clinical vocabularies and registries for conditions, diseases, drugs, procedures, ICD codes, LOINC codes, and health…
Pharma Intel
Combines clinical trial, FDA, PubMed, drug identification, safety, pipeline, sales, patent, and pharmaceutical sponsor data for d…