Koskamo

Opportunity Zones MCP

Provides an MCP server and REST API for Opportunity Zone address and tract lookups, including 2018 and 2027 round status, rural flags, Census statistics, and various tax benefit calculators for developers and AI agents.

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.

Opportunity Zones MCP logo, by Janover Capital LLCVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-02Operated by Janover Capital LLC
MCP endpoint (Streamable HTTP)
https://www.opportunityzones.help/api/oz/mcp
Vendor documentation

What its tools do

13 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

13 of 13 have a description · 13 of 13 declare behavior hints · 3 of 11 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to www.opportunityzones.help ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Lookup address to check 2018 and 2027 Opportunity Zone status
  • Calculate OZ 2.0 investment benefits and tax implications
  • Check tract GEOID status and rural flags
  • Get state counts and official source data

Source and maintenance

Vendor evidenceRegistry 1.2026.1102.0

Protocol and capabilities

Server
opportunityzones-help 1.0.0
MCP protocol negotiated in check
2025-06-18
Tools
13 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Opportunity Zone tools: address and tract lookup for both the 2018 zones and the 2027 designation round (with rural flags and official status sources), state counts, the program calendar, and calculators for the 180-day deadline, the Dec 31, 2026 inclusion, OZ 2.0 benefits, substantial improvement, the 90% asset test, QOZB tests and the working capital safe harbor. Dates are YYYY-MM-DD, money in dollars, rates in percent. Not tax advice. For project debt financing, use get_financing_link. Published by Janover Capital LLC.

Tools

13 advertised

lookup_address — Is this address in an Opportunity Zone?
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Geocodes a US street address (Census Bureau geocoder, falling back to OpenStreetMap; tract assignment by the FCC Census Block API) and returns its 2018 Opportunity Zone status (2010 tract), its status for the 2027 designation round (2020 tract: eligible, nominated or certified, with source), the rural flags, and Census ACS tract statistics.

lookup_address input schema
{
  "type": "object",
  "required": [
    "address"
  ],
  "properties": {
    "address": {
      "type": "string",
      "description": "One-line US address, e.g. '2 Woodward Ave, Detroit, MI 48226'"
    }
  }
}
lookup_address annotations
{
  "title": "Is this address in an Opportunity Zone?",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
lookup_coordinates — Opportunity Zone status for a point
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Same as lookup_address for a latitude/longitude point.

lookup_coordinates input schema
{
  "type": "object",
  "required": [
    "lat",
    "lon"
  ],
  "properties": {
    "lat": {
      "type": "number"
    },
    "lon": {
      "type": "number"
    }
  }
}
lookup_coordinates annotations
{
  "title": "Opportunity Zone status for a point",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
get_tract — One census tract's Opportunity Zone record
Advertised by the server during the last successful anonymous check.
Advertised read-only

Status for an 11-digit census tract GEOID. A 2010 GEOID is checked against the 2018 designations and a 2020 GEOID against the 2027 round; many GEOIDs exist in both vintages. If you already geocoded a property, pass geoid_2010 and geoid_2020 instead of geoid.

get_tract input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "geoid": {
      "type": "string",
      "description": "11-digit tract GEOID (state+county+tract)"
    },
    "geoid_2010": {
      "type": "string",
      "description": "The property's 2010 tract GEOID (for 2018 status)"
    },
    "geoid_2020": {
      "type": "string",
      "description": "The property's 2020 tract GEOID (for 2027 status)"
    }
  }
}
get_tract annotations
{
  "title": "One census tract's Opportunity Zone record",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_state — Opportunity Zones in a state
Advertised by the server during the last successful anonymous check.
Advertised read-only

Counts of 2018 zones, rural zones, 2027-eligible tracts and their nomination/certification status for one state or territory, with the official source.

get_state input schema
{
  "type": "object",
  "required": [
    "state"
  ],
  "properties": {
    "state": {
      "type": "string",
      "description": "Two-letter code, FIPS code or name"
    }
  }
}
get_state annotations
{
  "title": "Opportunity Zones in a state",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_key_dates — Opportunity Zone key dates
Advertised by the server during the last successful anonymous check.
Advertised read-only

The program calendar: OZ 1.0 inclusion date, OZ 2.0 start, designation periods, filing dates.

get_key_dates input schema
{
  "type": "object",
  "required": [],
  "properties": {}
}
get_key_dates annotations
{
  "title": "Opportunity Zone key dates",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
calc_180_day_deadline — 180-day investment deadline
Advertised by the server during the last successful anonymous check.
Advertised read-only

Last day to invest a gain in a QOF, with every start date the taxpayer may choose (direct, pass-through K-1, section 1231, RIC/REIT dividend, installment) and whether the window reaches OZ 2.0 (Jan 1, 2027).

calc_180_day_deadline input schema
{
  "type": "object",
  "required": [
    "sale_date"
  ],
  "properties": {
    "kind": {
      "enum": [
        "direct",
        "passthrough",
        "1231",
        "reit_ric",
        "1256",
        "installment",
        "collectible"
      ],
      "type": "string"
    },
    "sale_date": {
      "type": "string",
      "description": "YYYY-MM-DD"
    },
    "dividend_date": {
      "type": "string"
    },
    "entity_year_end": {
      "type": "string"
    },
    "entity_return_due": {
      "type": "string"
    }
  }
}
calc_180_day_deadline annotations
{
  "title": "180-day investment deadline",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
calc_2026_inclusion — OZ 1.0 Dec 31, 2026 inclusion estimate
Advertised by the server during the last successful anonymous check.
Advertised read-only

Amount of deferred gain included on Dec 31, 2026 for a pre-2027 QOF investment, with the 10%/15% basis step-up where the holding period was met, and an estimated tax at the user's rate.

calc_2026_inclusion input schema
{
  "type": "object",
  "required": [
    "deferred_gain",
    "invest_date"
  ],
  "properties": {
    "rate_pct": {
      "type": "number"
    },
    "invest_date": {
      "type": "string"
    },
    "deferred_gain": {
      "type": "number"
    },
    "fmv_12_31_2026": {
      "type": "number"
    }
  }
}
calc_2026_inclusion annotations
{
  "title": "OZ 1.0 Dec 31, 2026 inclusion estimate",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
calc_oz2_benefit — OZ 2.0 benefit vs paying tax now
Advertised by the server during the last successful anonymous check.
Advertised read-only

Models an OZ 2.0 investment (5-year deferral, 10% or rural 30% step-up, 10-year exclusion capped at year 30) against paying tax now and investing the remainder.

calc_oz2_benefit input schema
{
  "type": "object",
  "required": [
    "gain",
    "rate_now_pct",
    "growth_pct",
    "hold_years"
  ],
  "properties": {
    "gain": {
      "type": "number"
    },
    "rural": {
      "type": "boolean"
    },
    "growth_pct": {
      "type": "number"
    },
    "hold_years": {
      "type": "number"
    },
    "invest_date": {
      "type": "string"
    },
    "discount_pct": {
      "type": "number"
    },
    "rate_now_pct": {
      "type": "number"
    },
    "rate_later_pct": {
      "type": "number"
    }
  }
}
calc_oz2_benefit annotations
{
  "title": "OZ 2.0 benefit vs paying tax now",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
calc_substantial_improvement — Substantial improvement test
Advertised by the server during the last successful anonymous check.
Advertised read-only

How much must be added to a building's basis within 30 months (100%, or 50% in a zone made up entirely of rural areas).

calc_substantial_improvement input schema
{
  "type": "object",
  "required": [
    "purchase_price"
  ],
  "properties": {
    "rural": {
      "type": "boolean"
    },
    "land_value": {
      "type": "number"
    },
    "start_date": {
      "type": "string"
    },
    "spent_so_far": {
      "type": "number"
    },
    "purchase_price": {
      "type": "number"
    }
  }
}
calc_substantial_improvement annotations
{
  "title": "Substantial improvement test",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
calc_90_percent_test — QOF 90% asset test
Advertised by the server during the last successful anonymous check.
Advertised read-only

Averages the two semiannual testing dates and, if the fund falls short, computes the Form 8996 Part IV penalty month by month (pass month-end figures in monthly for an exact figure; otherwise testing-date figures are applied to each half-year and the result is flagged as an approximation) at an underpayment rate the caller supplies.

calc_90_percent_test input schema
{
  "type": "object",
  "required": [
    "d2_qozp",
    "d2_total"
  ],
  "properties": {
    "months": {
      "type": "number",
      "description": "Months the entity was a QOF this year, 1-12 (default 12)"
    },
    "d1_qozp": {
      "type": "number"
    },
    "d2_qozp": {
      "type": "number"
    },
    "monthly": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "Optional month-end figures for Form 8996 Part IV: [{total, qozp, rate_pct}]"
    },
    "d1_total": {
      "type": "number"
    },
    "d2_total": {
      "type": "number"
    },
    "single_date": {
      "type": "boolean",
      "description": "true if only the year-end test applies (first year under 6 months); otherwise d1_* are required"
    },
    "underpayment_rate_pct": {
      "type": "number",
      "description": "IRS underpayment rate for the period, percent"
    }
  }
}
calc_90_percent_test annotations
{
  "title": "QOF 90% asset test",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
check_qozb — Qualified Opportunity Zone Business tests
Advertised by the server during the last successful anonymous check.
Advertised read-only

Checks the 70% tangible property, 50% gross income, 40% intangibles and 5% nonqualified financial property tests and the excluded-business list.

check_qozb input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "nqfp": {
      "type": "number"
    },
    "total_basis": {
      "type": "number"
    },
    "sin_business": {
      "type": "boolean"
    },
    "tangible_qozbp": {
      "type": "number"
    },
    "tangible_total": {
      "type": "number"
    },
    "gross_income_zone": {
      "type": "number"
    },
    "intangibles_total": {
      "type": "number"
    },
    "gross_income_total": {
      "type": "number"
    },
    "intangibles_used_in_zone": {
      "type": "number"
    }
  }
}
check_qozb annotations
{
  "title": "Qualified Opportunity Zone Business tests",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
plan_working_capital — Working capital safe harbor timeline
Advertised by the server during the last successful anonymous check.
Advertised read-only

Spend-by dates for each cash infusion under the 31-month working capital safe harbor, and the 62-month outer limit available to start-up businesses.

plan_working_capital input schema
{
  "type": "object",
  "required": [
    "infusions"
  ],
  "properties": {
    "startup": {
      "type": "boolean"
    },
    "disaster": {
      "type": "boolean"
    },
    "infusions": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string"
          },
          "amount": {
            "type": "number"
          }
        }
      }
    }
  }
}
plan_working_capital annotations
{
  "title": "Working capital safe harbor timeline",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_financing_link — Get an Opportunity Zone financing quote
Advertised by the server during the last successful anonymous check.
Advertised read-only

Link where a developer, sponsor or business owner can request debt financing for a project in an Opportunity Zone. Routed to Janover Capital LLC's desk; free, no obligation. Janover arranges loans; it does not sell fund interests.

get_financing_link input schema
{
  "type": "object",
  "required": [],
  "properties": {}
}
get_financing_link annotations
{
  "title": "Get an Opportunity Zone financing quote",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (4 of 4 answered).

  1. 2026-11-02: 3 of 3 checks answered
  2. 2026-11-03: 1 of 1 checks answered

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
588 ms
95th percentile latency
588 ms

Maintenance history

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

  • · probe · passed · 588 ms · metadata changed · 13 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 opportunity-zones-mcp https://www.opportunityzones.help/api/oz/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 opportunity-zones-mcp --url https://www.opportunityzones.help/api/oz/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable opportunity-zones-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "opportunity-zones-mcp": {
      "url": "https://www.opportunityzones.help/api/oz/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "opportunity-zones-mcp": {
      "type": "streamableHttp",
      "url": "https://www.opportunityzones.help/api/oz/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start opportunity-zones-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "opportunity-zones-mcp": {
      "type": "http",
      "url": "https://www.opportunityzones.help/api/oz/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 opportunity-zones-mcp https://www.opportunityzones.help/api/oz/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": {
    "opportunity-zones-mcp": {
      "url": "https://www.opportunityzones.help/api/oz/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": {
    "opportunity-zones-mcp": {
      "serverUrl": "https://www.opportunityzones.help/api/oz/mcp"
    }
  }
}

Let your agent find its tools

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

Do you run Opportunity Zones MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing