US County Data Skill
The tool
Give your agent county-level facts. Call it as an MCP tool to pull income, demographics, health and cost-of-living for any US county.
Once your client is connected to the VerveKit MCP server, this appears in its tool list as USCountyDataSkill. It is read-only and open-world: it fetches, it never mutates anything on your side, so most clients will call it without asking you to confirm.
{
"name": "USCountyDataSkill",
"arguments": {
"state": "MO",
"county": "Jackson"
}
}What that looks like in a conversation
You don't name the tool — the model picks it. Asking about MO in the terms this source covers is enough for it to reach for USCountyDataSkill on its own.
Connecting
One server URL covers every skill in the catalog, including this one. Authorization is OAuth — the client opens a browser once and there is no key to paste into a config file.
{
"mcpServers": {
"vervekit": {
"url": "https://api.vervekit.com/v1/mcp"
}
}
}https://api.vervekit.com/v1/mcpPer-client setup — Claude Desktop, Cursor, VS Code, ChatGPT — is on the MCP setup page.
Arguments
These are the properties on the tool's inputSchema, so a well-behaved client validates them before the call is made.
| Argument | Type | Example | Description |
|---|---|---|---|
stateRequired | string | MO | The two letter name of the US state the county is in (e.g., MO) |
countyRequired | string | Jackson | The name of the US county to get data about (e.g. Jackson) |
What the model gets back
The result carries a structuredContent object matching the tool's declared outputSchema, so a client can read fields without parsing prose. status is "ok" on success and error is null; a null field means the value wasn't available for that input, not that the call failed.
{
"status": "ok",
"error": null,
"data": {
"name": "jackson county",
"state": "MO",
"age": {
"0-4": 0.0644100874666257,
"5-9": 0.06532756955438819,
"10-14": 0.06595060390235714,
"15-19": 0.05967616438434107,
"20-24": 0.059725950234064615,
"25-29": 0.08192474939936928,
"30-34": 0.07523353119652466,
"35-39": 0.06868029092005673,
"40-44": 0.05831060964906666,
"45-49": 0.058805623240603636,
"50-54": 0.05858087569042305,
"55-59": 0.0674783182624454,
"60-64": 0.06208437705811146,
"65-69": 0.05099777955110233,
"70-74": 0.03891546504962227,
"75-79": 0.026437708656052324,
"80-84": 0.01748905778145719,
"85+": 0.01997123800338828
},
"male": 339932,
"female": 363079,
"health": {
"poorhealth": 20.588989742,
"physicallyunhealthydays": 4.247736361,
"mentallyunhealthydays": 4.8111015035,
"lowbirthweightpercent": 9.1518749808,
"smokerspercent": 20.957241772,
"obesitypercent": 31.5,
"foodenvindex": 7.5,
"physicallyinactivepercent": 23.2,
"excessivedrinkingpercent": 18.940103365,
"alcoholimpaireddrivingdeaths": 152,
"teenbirthrate": 31.109351559,
"uninsured": 12.486314662,
"withannualmammogram": 45,
"vaccinated": 51,
"childreninpoverty": 19.6,
"80thpercentileincome": 108296,
"20thpercentileincome": 23275,
"childreninsingleparenthouseholds": 33.224850811,
"violentcrimerate": 941.43198334,
"averagedailypm25": 9.1,
"severehousingproblems": 15.347550638,
"drivealonetowork": 83.470246386,
"longcommutedrivesalone": 33.7
},
"longitude": -94.34749665503394,
"latitude": 39.016701918102484,
"education": {
"lessthanhighschool": 9.4,
"highschool": 28.3,
"somecollege": 30.7,
"bachelors": 31.6Fields
| Field | Type | Example | Description |
|---|---|---|---|
name | string | jackson county | County name in lowercase format |
state | string | MO | Two-letter state code where county is located |
agePremium | object | {…} | Age distribution percentages by age groups |
age.0-4 | number | 0.0644100874666257 | Percentage of population aged 0-4 years |
age.5-9 | number | 0.06532756955438819 | Percentage of population aged 5-9 years |
age.10-14 | number | 0.06595060390235714 | Percentage of population aged 10-14 years |
age.15-19 | number | 0.05967616438434107 | Percentage of population aged 15-19 years |
age.20-24 | number | 0.059725950234064615 | Percentage of population aged 20-24 years |
age.25-29 | number | 0.08192474939936928 | Percentage of population aged 25-29 years |
age.30-34 | number | 0.07523353119652466 | Percentage of population aged 30-34 years |
age.35-39 | number | 0.06868029092005673 | Percentage of population aged 35-39 years |
age.40-44 | number | 0.05831060964906666 | Percentage of population aged 40-44 years |
age.45-49 | number | 0.058805623240603636 | Percentage of population aged 45-49 years |
age.50-54 | number | 0.05858087569042305 | Percentage of population aged 50-54 years |
age.55-59 | number | 0.0674783182624454 | Percentage of population aged 55-59 years |
age.60-64 | number | 0.06208437705811146 | Percentage of population aged 60-64 years |
age.65-69 | number | 0.05099777955110233 | Percentage of population aged 65-69 years |
age.70-74 | number | 0.03891546504962227 | Percentage of population aged 70-74 years |
age.75-79 | number | 0.026437708656052324 | Percentage of population aged 75-79 years |
age.80-84 | number | 0.01748905778145719 | Percentage of population aged 80-84 years |
age.85+ | number | 0.01997123800338828 | Percentage of population aged 85 years and older |
malePremium | number | 339932 | Total male population count in county |
femalePremium | number | 363079 | Total female population count in county |
healthPremium | object | {…} | Health metrics and indicators for the county |
health.poorhealth | number | 20.588989742 | Percentage of population reporting poor health status |
health.physicallyunhealthydays | number | 4.247736361 | Average physically unhealthy days per month |
health.mentallyunhealthydays | number | 4.8111015035 | Average mentally unhealthy days per month |
health.lowbirthweightpercent | number | 9.1518749808 | Percentage of low birth weight births |
health.smokerspercent | number | 20.957241772 | Percentage of population that smokes |
health.obesitypercent | number | 31.5 | Percentage of population classified as obese |
health.foodenvindex | number | 7.5 | Food environment index rating for county |
health.physicallyinactivepercent | number | 23.2 | Percentage of physically inactive population |
health.excessivedrinkingpercent | number | 18.940103365 | Percentage of excessive alcohol drinkers |
health.alcoholimpaireddrivingdeaths | number | 152 | Annual alcohol-impaired driving deaths in county |
health.teenbirthrate | number | 31.109351559 | Birth rate among teenage population |
health.uninsured | number | 12.486314662 | Percentage of uninsured population |
health.withannualmammogram | number | 45 | Percentage receiving annual mammogram screening |
health.vaccinated | number | 51 | Percentage of vaccinated population |
health.childreninpoverty | number | 19.6 | Percentage of children living in poverty |
health.80thpercentileincome | number | 108296 | 80th percentile income level in dollars |
health.20thpercentileincome | number | 23275 | 20th percentile income level in dollars |
health.childreninsingleparenthouseholds | number | 33.224850811 | Percentage of children in single-parent households |
health.violentcrimerate | number | 941.43198334 | Violent crime rate per 100,000 people |
health.averagedailypm25 | number | 9.1 | Average daily PM2.5 air pollution level |
health.severehousingproblems | number | 15.347550638 | Percentage with severe housing cost burden |
health.drivealonetowork | number | 83.470246386 | Percentage driving alone to work |
health.longcommutedrivesalone | number | 33.7 | Percentage with long commute driving alone |
longitudePremium | number | -94.34749665503394 | Geographic longitude coordinate of county |
latitudePremium | number | 39.016701918102484 | Geographic latitude coordinate of county |
educationPremium | object | {…} | Educational attainment distribution for county |
education.lessthanhighschool | number | 9.4 | Percentage with less than high school education |
education.highschool | number | 28.3 | Percentage with high school education |
education.somecollege | number | 30.7 | Percentage with some college education |
education.bachelors | number | 31.6 | Percentage with bachelor's degree or higher |
zipcodesPremium | array | ["64137","64111","64053"] | Array of all ZIP codes within the county |
lifeexpectancy | number | 77.19 | Average life expectancy in years |
avgincome | number | 47054 | Average annual household income in dollars |
povertyrate | number | 13.7 | Percentage of population below poverty line |
costoflivingPremium | object | {…} | Cost of living metrics for the county |
costofliving.livingwage | number | 14.55 | Living wage per hour in dollars |
Failure modes
Errors come back as tool errors with a sentence the model can act on, not a bare status code.
| Status | What it means |
|---|---|
400 / 422 | The arguments didn't validate. The message names the offending one. |
401 | The OAuth session is invalid or expired — reconnect the server. |
403 | Out of credits. Not a bad key — the month's allowance is spent. |
404 | This skill isn't part of VerveKit. Check the catalog. |
429 | Brief rate limit. Retrying after a moment succeeds. |
Other ways to use US County Data Skill
Set up US County Data Skill on VerveKit, or reach the same source a different way. Your VerveKit account and credits work on all of them — one key, one balance.
Frequently asked questions
Do I have to tell the agent to use USCountyDataSkill?
No. The tool's name and description are in the model's context once the server is connected, so it selects the tool when the question calls for it. Naming it explicitly works too and is useful when you want to force the call.
Does connecting the server expose every tool at once?
Yes — one connection lists the whole VerveKit catalog. Clients with a tool budget can usually filter the list; the credit cost is per call, so an unused tool costs nothing.
What does a call cost?
5 credits each time the tool actually runs. A model that reasons about the tool without calling it costs nothing.
Is there a REST version of this?
Yes — the same source is available as a plain HTTPS endpoint on APIVerve, linked above. Same data, same credits, same account.