Agent Data Tools: Company, compliance and checks
38 tools: OFAC sanctions, counterparty checks, company, domain, email. 25 free calls.
Description from the maker (original English)
Search and query government open-data portals (Socrata SODA API).
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
SOCRATA_APP_TOKEN, SOCRATA_DEFAULT_DOMAIN, SOCRATA_DATAFRAME_DROP_ENABLED, SOCRATA_CLAMP_LIMITS, MCP_LOG_LEVELYou need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Works in Claude on the web, desktop and mobile:
https://socrata.caseyjhand.com/mcpOpen Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"socrata": {
"command": "npx",
"args": [
"-y",
"@cyanheads/socrata-mcp-server"
],
"env": {
"SOCRATA_APP_TOKEN": "your-value",
"SOCRATA_DEFAULT_DOMAIN": "your-value",
"SOCRATA_DATAFRAME_DROP_ENABLED": "your-value",
"SOCRATA_CLAMP_LIMITS": "your-value",
"MCP_LOG_LEVEL": "your-value"
}
}
}
}Run this in your terminal
claude mcp add --transport http socrata https://socrata.caseyjhand.com/mcpclaude mcp add socrata --env SOCRATA_APP_TOKEN=your-value --env SOCRATA_DEFAULT_DOMAIN=your-value --env SOCRATA_DATAFRAME_DROP_ENABLED=your-value --env SOCRATA_CLAMP_LIMITS=your-value --env MCP_LOG_LEVEL=your-value -- npx -y @cyanheads/socrata-mcp-serverFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"socrata": {
"url": "https://socrata.caseyjhand.com/mcp"
}
}
}Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"socrata": {
"command": "npx",
"args": [
"-y",
"@cyanheads/socrata-mcp-server"
],
"env": {
"SOCRATA_APP_TOKEN": "your-value",
"SOCRATA_DEFAULT_DOMAIN": "your-value",
"SOCRATA_DATAFRAME_DROP_ENABLED": "your-value",
"SOCRATA_CLAMP_LIMITS": "your-value",
"MCP_LOG_LEVEL": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"socrata": {
"type": "http",
"url": "https://socrata.caseyjhand.com/mcp"
}
}
}Paste into .vscode/mcp.json in your project
{
"servers": {
"socrata": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@cyanheads/socrata-mcp-server"
],
"env": {
"SOCRATA_APP_TOKEN": "your-value",
"SOCRATA_DEFAULT_DOMAIN": "your-value",
"SOCRATA_DATAFRAME_DROP_ENABLED": "your-value",
"SOCRATA_CLAMP_LIMITS": "your-value",
"MCP_LOG_LEVEL": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
ChatGPT connects only to servers on the internet:
https://socrata.caseyjhand.com/mcpMenu names can differ slightly by plan and over time.
Your choice stays on this device in a cookie; no account needed.
SOCRATA_APP_TOKEN envSOCRATA_DEFAULT_DOMAIN envSOCRATA_DATAFRAME_DROP_ENABLED envSOCRATA_CLAMP_LIMITS envMCP_LOG_LEVEL envThese settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Tool names and descriptions exactly as the server reported them on Nov 6, 2026. The maker wrote them, not us; we show them as plain text.
socrata_find_datasetsSearch for datasets across all Socrata-powered government open-data portals, or scope to one portal with the domain parameter. Returns dataset IDs, names, domains, update timestamps, and column_names — the API field names SoQL takes, not display labels. Use socrata_get_dataset to
socrata_get_datasetFetch full metadata and column schema for a Socrata dataset by ID. Returns field names, data types, descriptions, row count, and licensing. Always call this before writing a socrata_query_dataset — the column types determine correct WHERE clause syntax: Number columns accept bare
socrata_query_datasetExecute a SoQL query against any dataset on any Socrata portal. Use the search parameter for quick full-text lookup, or combine select/where/group/having/order for full analytical control. Returns rows plus the assembled SoQL string so you can learn the pattern. Columns are refer
socrata_list_portalsList known Socrata-powered government open-data portals with their domain, organization name, and approximate dataset count. The catalog is a curated list of 39 well-known portals; dataset counts are fetched from the Discovery API and cached for ~24 hours. Filtering is client-sid
socrata_dataframe_describeList registered tables in a DataCanvas session — schema, row count, and column names. Shows what datasets are available for SQL queries via socrata_dataframe_query. Meaningful when the server has a DataCanvas. Use after socrata_query_dataset spills a large result set to canvas.
socrata_dataframe_queryRun SELECT-only SQL against a DataCanvas table populated by socrata_query_dataset. Columns SODA types as number (including aggregate aliases like count(*) as n) are staged as DOUBLE, so numeric comparisons work without a cast (year > 2020, amount < 500). Text and timestamp column
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026
The registry name was verified with the GitHub account cyanheads, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
Responded in 182 ms (HTTP 200)
No sign-in needed
Read 6 tool descriptions and found no hidden instructions to the AI
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 3 of 3 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
Either way works: install it on your computer or connect to the cloud version.
The GitHub repo last changed –, and the latest version (0.6.1) reached the registry 3 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT in developer mode.
In the same category: Agent Data Tools: Company, compliance and checks, Agent Data Tools, Private Law Wiki
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
38 tools: OFAC sanctions, counterparty checks, company, domain, email. 25 free calls.
641 agent tools: chain data, prices, sanctions, web, PDF. 25 free calls, then from $0.002.
Sourced answers, search and bank-case assessment for wiki.private.law by the Mothership runtime.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
@cyanheads/socrata-mcp-server Search and query government open-data portals (Socrata SODA API) via MCP. STDIO or Streamable HTTP. 7 Tools • 2 Data Resources • 1 Prompt • 1 Skill
Public Hosted Server: https://socrata.caseyjhand.com/mcp
Query city, county, state, and federal open-data portals built on Socrata. Discover portals and datasets, inspect column schemas, and run SoQL queries, or SQL over large result sets.
| Tool | Description |
|---|---|
socrata_list_portals | List known Socrata-powered government open-data portals with domain, organization name, and approximate dataset count |
socrata_find_datasets | Search for datasets across all Socrata portals or scope to one portal via the Discovery API |
socrata_get_dataset | Fetch full metadata and typed column schema for a dataset by ID — required before writing SoQL queries |
socrata_query_dataset | Execute a SoQL query against any dataset: search, select, where, group, having, order, with DataCanvas spillover |
socrata_dataframe_describe | List registered tables in a DataCanvas session — schema, row count, column names |
socrata_dataframe_query | Run SELECT-only SQL against DataCanvas tables populated by socrata_query_dataset |
socrata_dataframe_drop | Drop a DataCanvas canvas, or one table on it — opt-in via SOCRATA_DATAFRAME_DROP_ENABLED=true |
| Resource | Description |
|---|---|
socrata://datasets/{domain}/{datasetId} | Fetch full metadata and column schema for a dataset by stable URI — same payload as socrata_get_dataset |
socrata://portals | Paginated list of known Socrata portals with organization name and approximate dataset count |
All resource data is also reachable via tools. Use the corresponding tool for agent workflows — resources are for clients that support URI-addressable data.
| Prompt | Description |
|---|---|
explore_open_data | Structured six-step civic data investigation workflow: find portal → discover datasets → inspect schema → query → aggregate → synthesize |
socrata-guide covers dataset coverage checks, SoQL and DuckDB query syntax, and comparisons across staged tables. It ships with plugin installs, npm, Docker, and the MCPB bundle, and is available over MCP as skill://socrata-guide/SKILL.md.
socrata_list_portals tool0 means the portal exposes no dataset assets to the catalog; null means the count is temporarily unavailable)socrata_find_datasets), organization name, and approximate dataset count; the count includes datasets a portal federates from another Socrata tenant (Austin, Illinois, Mesa, and San Francisco publish through a data hub; Seattle catalogs under a sibling tenant)null when it has none, and the listing still returnsoffset > 0 names the offset to page belowsocrata_find_datasets tooldomain, filter by the portal's own categories/tags (several values of one filter are ORed), restrict only to an asset type (datasets, maps, files, calendars, stories)categories and tags require domain: each portal assigns its own, and without one Discovery matches them against a Socrata-wide taxonomy the results never report. Either without domain fails domain_required before any request; search across portals with query. An empty array or a blank entry reads as unsetlimit up to 10,000 with SOCRATA_CLAMP_LIMITS on, served 100 per call with a notice naming the offset that continues (the schema maximum is 100 with it off)offset must stay below 10,000, and totalCount stops at 10,000 with totalCountCapped: true marking that figure a lower boundcolumn_names — the API field names SoQL takes (cuisine_description, not the display label CUISINE DESCRIPTION), computed-region columns dropped — call socrata_get_dataset for typed schema before writing queriesasset_type (dataset, filter, map, chart, story, href, …; only dataset and filter answer socrata_query_dataset with rows) and parent_dataset_ids, the assets a filter, map, chart, or story is built from (dfnk-7re6, Chicago's crimes map → x2n5-8w5q); each is absent when the catalog lists nonelimit served below the one requesteddomain takes a bare hostname; URL forms (https://data.cdc.gov/) are reduced to the host. A scoped search covers every dataset the portal publishes, including ones federated from another Socrata tenant, reported under the portal's own domaindomain_required when categories or tags arrive without domain, result_window_exceeded when offset is 10,000 or more, rate_limited (retryable) when the Discovery API returns 429, retry_deadline_exceeded (retryable) when the call passes its 50-second deadline, unknown_domain when the Discovery catalog does not index the domain, invalid_domain when the domain is not a hostnamesocrata_get_dataset toolrow_count_source provenance), licensing, and asset_type (dataset, filter, map, …) when available; only dataset and filter answer socrata_query_dataset with rowsdata_type determines WHERE clause syntax: Number → bare literals (year=2023), Text → single-quoted strings (year='2023'):@computed_region_*) to reduce noise; includes per-column non-null counts when availabledomain from the same socrata_find_datasets result; URL-form domains are reduced to the host. dataset_id takes either letter case and is sent lowercased; a malformed ID fails argument validation before any requestnot_found (no such dataset on the domain queried — the message names the ID and domain, and the recovery names the portal that holds the ID when the Discovery catalog knows it), unknown_domain (the domain is not serving the Socrata API — it does not resolve, is not a Socrata portal, or redirects elsewhere; fails on the first attempt), invalid_domain (not a hostname), rate_limited (retryable; honors the upstream Retry-After), retry_deadline_exceeded (retryable; the call passed its 50-second deadline)socrata_query_dataset WHERE clausesocrata_query_dataset toolsearch for quick full-text lookup ($q), or combine select/where/group/having/order for full analytical control — clauses reference columns by API field name (field_name from socrata_get_dataset), never the display label; operators =, !=, >, <, LIKE, IN(...), BETWEEN, IS NULL, starts_with(), contains(), AND, OR, NOTcount(*), sum(), avg(), min(), max() with group/havingnot_tabular identifies assets without queryable rows: SODA refuses row access (stories, measures, files, external links), or answers with no fields (maps, charts, calendars, visualizations), which fails before any recount or staging. For the second kind the recovery names the tables the asset is built on (a7mk-8suc is a map built on t6tk-mr48; query that dataset_id on data.nj.gov.), with asset_type and parent_dataset_ids in the error data; without a listed parent, search with only: "datasets". query_rejected identifies a gateway refusal of query clauses when a bare row request succeeds; simplify the query and use SoQL case(condition, value, true, fallback) for conditional aggregates.limit up to 50,000 with SOCRATA_CLAMP_LIMITS on, but one call returns at most 5,000 rows: a larger limit is served as 5,000, with a notice naming the offset that continues when more rows match (off, the schema maximum is 5,000). Page with offsettotal_count counts the query as written — groups for a grouped query, distinct values for a distinct select — through a bounded SoQL $query pipe recount. It is present when the match holds more rows than the response, and absent when the response holds the whole match or when the recount failed or ran past 15 seconds. truncated is set only when total_count exceeds offset + row_count, or when the page fills limit and no count existsoffset > 0 gets a past-the-end notice naming the match size, or a may-be-past-the-end notice when the count failedassembled_query echoes the SoQL string for learning the syntax; all SODA 2.1 row values are strings except geo/location columns, which return nested objectslimit (canvas_id, table_name, canvas_row_count) — list its columns with socrata_dataframe_describe, then run SQL with socrata_dataframe_queryOnly the beginning is shown; read the rest in the repo