Koskamo

Verrow MCP

Provides rural and small-town US public data for AI agents, including zoning, airspace, soil, and permit checks. It returns structured JSON with source citations and uses the x402 payment protocol for paid queries.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Verrow MCP logo, by Verrow, LLCCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-02Published by Verrow, LLC
MCP endpoint (Streamable HTTP)
https://api.verrow.ai/mcp
Vendor documentation

What you can do with it

  • Check local zoning regulations
  • Verify airspace restrictions
  • Retrieve soil and wind data
  • Check environmental use allowances

Source and maintenance

Community listingRegistry 0.4.0
Maintenance checked

Protocol and capabilities

Server
ruralgraph 0.1.0
MCP protocol
2025-06-18
Tools
24 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  }
}

Tools

24 advertised

list_coverage
Advertised by the server during the last successful anonymous check.

List every jurisdiction and data kind this service covers, with the data_as_of date for each. Free.

list_coverage input schema
{
  "type": "object",
  "properties": {}
}
check_coverage
Advertised by the server during the last successful anonymous check.

Check whether a jurisdiction and data kind is covered before paying for a query. Free. Input: jurisdiction (name or slug), optional data_kind.

check_coverage input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "jurisdiction"
  ],
  "properties": {
    "data_kind": {
      "type": "string",
      "maxLength": 60
    },
    "jurisdiction": {
      "type": "string",
      "maxLength": 120,
      "minLength": 2
    }
  },
  "additionalProperties": false
}
get_pricing
Advertised by the server during the last successful anonymous check.

List every tool and its price per call in USDC. Free.

get_pricing input schema
{
  "type": "object",
  "properties": {}
}
create_api_key
Advertised by the server during the last successful anonymous check.

Create a prepaid API key. The key is shown once; store it in a secret store. Free.

create_api_key input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "label": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "payer": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "credit_code": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1
    }
  },
  "additionalProperties": false
}
list_watches
Advertised by the server during the last successful anonymous check.

List watches for an owner token returned when the watch was created. Free.

list_watches input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "owner_token"
  ],
  "properties": {
    "owner_token": {
      "type": "string",
      "pattern": "^w_[A-Za-z0-9_-]{20,}$"
    }
  },
  "additionalProperties": false
}
cancel_watch
Advertised by the server during the last successful anonymous check.

Cancel a watch using its id and owner token. Free.

cancel_watch input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "watch_id",
    "owner_token"
  ],
  "properties": {
    "watch_id": {
      "type": "string",
      "format": "uuid"
    },
    "owner_token": {
      "type": "string",
      "pattern": "^w_[A-Za-z0-9_-]{20,}$"
    }
  },
  "additionalProperties": false
}
get_label_rate
Advertised by the server during the last successful anonymous check.

US EPA pesticide product lookup by EPA registration number (e.g. 66551-1). Returns today: product name and registration status, signal word, restricted-use flag, formulation, active ingredients, and label PDF file names with acceptance dates. The application rate, REI and PPE numbers are printed inside those PDFs; this release returns them as UNKNOWN until label-text extraction ships (Phase 2). $0.05 per call in USDC.

get_label_rate input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "epa_reg_no"
  ],
  "properties": {
    "epa_reg_no": {
      "type": "string",
      "pattern": "^\\d{1,7}-\\d{1,5}$"
    }
  },
  "additionalProperties": false
}
get_zoning
Advertised by the server during the last successful anonymous check.

get_zoning Verified: 100% golden accuracy (78/78), 100% page-cited, UNKNOWN never charged, 100% uptime (24h), data as of 2026-10-26.

get_zoning input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "jurisdiction"
  ],
  "properties": {
    "zone": {
      "type": "string",
      "maxLength": 60,
      "minLength": 1
    },
    "jurisdiction": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    }
  },
  "additionalProperties": false
}
check_use_allowed
Advertised by the server during the last successful anonymous check.

check_use_allowed Verified: 100% golden accuracy (78/78), 100% page-cited, UNKNOWN never charged, 100% uptime (24h), data as of 2026-10-26.

check_use_allowed input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "jurisdiction",
    "use"
  ],
  "properties": {
    "use": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1
    },
    "zone": {
      "type": "string",
      "maxLength": 60,
      "minLength": 1
    },
    "jurisdiction": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    }
  },
  "additionalProperties": false
}
get_recent_decisions
Advertised by the server during the last successful anonymous check.

get_recent_decisions Verified: 100% golden accuracy (78/78), 100% page-cited, UNKNOWN never charged, 100% uptime (24h), data as of 2026-10-26.

get_recent_decisions input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "jurisdiction"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "maximum": 50,
      "minimum": 1
    },
    "jurisdiction": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    }
  },
  "additionalProperties": false
}
check_airspace
Advertised by the server during the last successful anonymous check.

check_airspace Verified: 100% golden accuracy (78/78), 100% page-cited, UNKNOWN never charged, 100% uptime (24h), data as of 2026-10-26.

check_airspace input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "lat",
    "lon"
  ],
  "properties": {
    "lat": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "lon": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    }
  },
  "additionalProperties": false
}
get_wind
Advertised by the server during the last successful anonymous check.

get_wind Verified: 100% golden accuracy (78/78), 100% page-cited, UNKNOWN never charged, 100% uptime (24h), data as of 2026-10-26.

get_wind input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "lat",
    "lon"
  ],
  "properties": {
    "lat": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "lon": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    }
  },
  "additionalProperties": false
}
get_esa_limits
Advertised by the server during the last successful anonymous check.

get_esa_limits Verified: 100% golden accuracy (78/78), 100% page-cited, UNKNOWN never charged, 100% uptime (24h), data as of 2026-10-26.

get_esa_limits input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "lat",
    "lon"
  ],
  "properties": {
    "lat": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "lon": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "month": {
      "type": "integer",
      "maximum": 12,
      "minimum": 1
    }
  },
  "additionalProperties": false
}
get_soil
Advertised by the server during the last successful anonymous check.

get_soil Verified: 100% golden accuracy (78/78), 100% page-cited, UNKNOWN never charged, 100% uptime (24h), data as of 2026-10-26.

get_soil input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "lat",
    "lon"
  ],
  "properties": {
    "lat": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "lon": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    }
  },
  "additionalProperties": false
}
check_license
Advertised by the server during the last successful anonymous check.

check_license Verified: 100% golden accuracy (78/78), 100% page-cited, UNKNOWN never charged, 100% uptime (24h), data as of 2026-10-26.

check_license input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "license_number": {
      "type": "string",
      "maxLength": 60,
      "minLength": 1
    }
  },
  "additionalProperties": false
}
check_state_registration
Advertised by the server during the last successful anonymous check.

check_state_registration Verified: 100% golden accuracy (78/78), 100% page-cited, UNKNOWN never charged, 100% uptime (24h), data as of 2026-10-26.

check_state_registration input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "jurisdiction"
  ],
  "properties": {
    "data_kind": {
      "type": "string",
      "maxLength": 60,
      "minLength": 1
    },
    "jurisdiction": {
      "type": "string",
      "maxLength": 30,
      "minLength": 1
    }
  },
  "additionalProperties": false
}
spray_check
Advertised by the server during the last successful anonymous check.

spray_check Verified: 100% golden accuracy (78/78), 100% page-cited, UNKNOWN never charged, 100% uptime (24h), data as of 2026-10-26.

spray_check input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "epa_reg_no",
    "lat",
    "lon"
  ],
  "properties": {
    "lat": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "lon": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "epa_reg_no": {
      "type": "string",
      "maxLength": 30,
      "minLength": 1
    }
  },
  "additionalProperties": false
}
solar_siting_check
Advertised by the server during the last successful anonymous check.

solar_siting_check Verified: 100% golden accuracy (78/78), 100% page-cited, UNKNOWN never charged, 100% uptime (24h), data as of 2026-10-26.

solar_siting_check input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "jurisdiction"
  ],
  "properties": {
    "parcel": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "address": {
      "type": "string",
      "maxLength": 300,
      "minLength": 1
    },
    "district": {
      "type": "string",
      "maxLength": 40,
      "minLength": 1
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "jurisdiction": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    }
  },
  "additionalProperties": false
}
county_pack
Advertised by the server during the last successful anonymous check.

county_pack Verified: 100% golden accuracy (78/78), 100% page-cited, UNKNOWN never charged, 100% uptime (24h), data as of 2026-10-26.

county_pack input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "jurisdiction"
  ],
  "properties": {
    "label": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "jurisdiction": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    }
  },
  "additionalProperties": false
}
get_site_report
Advertised by the server during the last successful anonymous check.

Site feasibility report for an address/parcel: zoning, allowed-use verdict, permits, recent decisions, FEMA NFHL flood zone and soil, each cited. Returns 422 with no charge when zoning or flood zone is UNKNOWN. $4.00 per call in USDC. Verified: 100% golden accuracy (78/78), 100% page-cited, UNKNOWN never charged, 100% uptime (24h), data as of 2026-10-26.

get_site_report input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "address",
    "jurisdiction"
  ],
  "properties": {
    "parcel": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "address": {
      "type": "string",
      "maxLength": 300,
      "minLength": 1
    },
    "district": {
      "type": "string",
      "maxLength": 20,
      "minLength": 1
    },
    "latitude": {
      "type": "number",
      "maximum": 90,
      "minimum": -90
    },
    "longitude": {
      "type": "number",
      "maximum": 180,
      "minimum": -180
    },
    "jurisdiction": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "proposed_use": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1
    }
  },
  "additionalProperties": false
}
watch_town
Advertised by the server during the last successful anonymous check.

Watch a covered town for 30 days: council/planning decisions matching your keywords, delivered to an HTTPS webhook with HMAC signatures and retries. $9.00 per 30 days in USDC. Verified: 100% golden accuracy (78/78), 100% page-cited, UNKNOWN never charged, 100% uptime (24h), data as of 2026-10-26.

watch_town input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "jurisdiction",
    "keywords",
    "webhook_url"
  ],
  "properties": {
    "label": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "keywords": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 60,
        "minLength": 1
      },
      "maxItems": 10,
      "minItems": 1
    },
    "webhook_url": {
      "type": "string",
      "format": "uri"
    },
    "jurisdiction": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    }
  },
  "additionalProperties": false
}
watch_parcel
Advertised by the server during the last successful anonymous check.

Watch a parcel for 30 days: new permits or decisions touching it, delivered to an HTTPS webhook with HMAC signatures and retries. $4.00 per 30 days in USDC. Verified: 100% golden accuracy (78/78), 100% page-cited, UNKNOWN never charged, 100% uptime (24h), data as of 2026-10-26.

watch_parcel input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "jurisdiction",
    "webhook_url"
  ],
  "properties": {
    "label": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "parcel": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "address": {
      "type": "string",
      "maxLength": 300,
      "minLength": 1
    },
    "webhook_url": {
      "type": "string",
      "format": "uri"
    },
    "jurisdiction": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    }
  },
  "additionalProperties": false
}
request_coverage
Advertised by the server during the last successful anonymous check.

Request coverage for a town ($5). Becomes a top-priority demand signal and starts the records agent; you get $5 of call credits for that town once covered. Refund queued after 14 days if not covered. Verified: 100% golden accuracy (78/78), 100% page-cited, UNKNOWN never charged, 100% uptime (24h), data as of 2026-10-26.

request_coverage input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "jurisdiction"
  ],
  "properties": {
    "needs": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 200,
        "minLength": 1
      },
      "maxItems": 10,
      "minItems": 1
    },
    "jurisdiction": {
      "type": "string",
      "maxLength": 120,
      "minLength": 1
    },
    "official_site_url": {
      "type": "string",
      "format": "uri"
    }
  },
  "additionalProperties": false
}
topup_credits
Advertised by the server during the last successful anonymous check.

Add $5 of prepaid USDC credit to an API key, paid over x402. Credits are spent per call at listed prices. $5.00 per top-up. Verified: 100% golden accuracy (78/78), 100% page-cited, UNKNOWN never charged, 100% uptime (24h), data as of 2026-10-26.

topup_credits input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "api_key"
  ],
  "properties": {
    "api_key": {
      "type": "string",
      "pattern": "^rk_[A-Za-z0-9_-]{20,}$"
    }
  },
  "additionalProperties": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
285 ms
95th percentile latency
285 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 285 ms · metadata changed · 24 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http verrow-mcp https://api.verrow.ai/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add verrow-mcp --url https://api.verrow.ai/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable verrow-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "verrow-mcp": {
      "url": "https://api.verrow.ai/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "verrow-mcp": {
      "type": "streamableHttp",
      "url": "https://api.verrow.ai/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start verrow-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "verrow-mcp": {
      "type": "http",
      "url": "https://api.verrow.ai/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http verrow-mcp https://api.verrow.ai/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "verrow-mcp": {
      "url": "https://api.verrow.ai/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "verrow-mcp": {
      "serverUrl": "https://api.verrow.ai/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Verrow MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.