Planomy Tax Data · OpenAPI Overlay 1.0.0

API Evangelist enhancements for Planomy Tax Data JSON

7 actions 7 updates update extends openapi/planomy-tax-data-openapi.yml
Derived by API Evangelist Built from the contracts Planomy Tax Data publishes. Planomy Tax Data did not publish this file.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-agent-guidancex-apievangelist-profilex-apievangelist-repox-authenticationx-artifactsx-corsx-freshnessx-caching

Targets 5

$.info
$.paths['/tax-data/{year}.json'].get
$.paths['/tax-data/index.json'].get
$.components.schemas.StateTaxPreset
$.components.schemas.SourceReference

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for Planomy Tax Data JSON
  version: 1.0.0
extends: openapi/planomy-tax-data-openapi.yml
x-provenance:
  generated: '2026-08-09'
  method: generated
  source: >-
    Live probes of https://planomy.net/tax-data/ plus the published documentation at
    https://planomy.net/data/ and https://planomy.net/embed/
  note: >-
    Planomy publishes no OpenAPI, so the document this overlay extends is itself API
    Evangelist-authored from observed responses. This overlay carries the enrichment layer — rating
    metadata, the observed-vs-documented CORS divergence, caching guidance and the cross-links to the
    rest of the repo — separately from the description of the wire behaviour.
actions:
  - target: $.info
    update:
      x-apievangelist-profile: https://apis.io/provider/planomy-tax-data/
      x-apievangelist-repo: https://github.com/api-evangelist/planomy-tax-data
      x-authentication: none
      x-artifacts:
        conventions: conventions/planomy-tax-data-conventions.yml
        errors: errors/planomy-tax-data-problem-types.yml
        lifecycle: lifecycle/planomy-tax-data-lifecycle.yml
        data-model: data-model/planomy-tax-data-data-model.yml
        conformance: conformance/planomy-tax-data-conformance.yml
        json-schema: json-schema/planomy-tax-data-tax-year-dataset.json
        components: components/planomy-tax-data-components.yml
        agentic-access: agentic-access/planomy-tax-data-agentic-access.yml
  - target: $.info
    update:
      x-cors:
        documented: false
        observed: true
        observed_header: 'access-control-allow-origin: *'
        preflight: OPTIONS returns 405, so only CORS simple requests succeed.
        verified: '2026-08-09'
        note: >-
          The published documentation states no CORS header is sent. The deployed edge sends a
          wildcard. Stated policy and deployed behaviour disagree; the header is undocumented and
          could be withdrawn without notice.
  - target: $.info
    update:
      x-freshness:
        cadence: >-
          Upstream-driven. Retirement-plan limits late October / early November, HSA figures in
          spring, Medicare premiums in November.
        signals: [publishedAt, lastUpdated, 'sources.*.retrieved']
        recommended_poll: >-
          Conditional GET with If-None-Match, no more than daily. The origin answered 304 on
          2026-08-09.
  - target: $.paths['/tax-data/{year}.json'].get
    update:
      x-caching:
        strategy: conditional-get
        etag: strong
        example_request_header: 'If-None-Match: "8642a3ae66c6d4201323c66ae6e07c15"'
        verified_304: true
      x-agent-guidance: >-
        Resolve `year` from getTaxDataIndex. A year that is valid but unpublished and a malformed
        year both return the same HTML 404, so the manifest is the only reliable way to tell them
        apart.
  - target: $.paths['/tax-data/index.json'].get
    update:
      x-agent-guidance: >-
        Call this first. `latest` is the year to use unless the caller named one; `years[]` is the
        complete set; `yearUrlTemplate` is how to build the URL.
  - target: $.components.schemas.StateTaxPreset
    update:
      x-coverage-warning: >-
        Ten keys only (NONE, PA, IL, MA, VA, CA, NY, NJ, OR, MN) — a preset list for the Planomy
        planner, not 50-state coverage. Only the explicit `NONE` key means "no state income tax"; a
        state that is simply absent is unmodelled, and treating absence as zero will understate tax.
  - target: $.components.schemas.SourceReference
    update:
      x-why-this-matters: >-
        This is the provider's strongest design decision. Every section carries a `source` key into
        this map, so any single figure can be traced to a named IRS, SSA, CMS or Federal Register
        document with the date Planomy last checked it. Agents citing a figure should cite through
        this map, not through planomy.net.

Work with this as data

Every overlay here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for openapi overlays

4 MCP tools reach this
  • find_overlaysBrowse and filter every overlay in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This overlay
curl "https://apis.io/api/v1/overlays/planomy-tax-data-overlay"
All openapi overlays
curl "https://apis.io/api/v1/overlays?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.