# montaye

> Agent-first compliance API: what the law says, with its official source, and what it means for a business.
> Today: US federal income tax withholding (IRS Pub 15-T) and California PIT withholding (EDD Method B), checked
> against the documents' own worked answers to the cent.

Start: `POST https://montaye.com/v1/trial-keys` gives a key without sign-up (see [auth.md](https://montaye.com/auth.md)); send it as
`Authorization: Bearer <key>`. Every answer names the fact revisions and official documents it used; every refusal
is a stable code (`application/problem+json`, `type` = https://montaye.com/refusals/<code>).

## API

- [Compute withholding for one paycheck](https://montaye.com/openapi.json): `POST /v1/payroll/calculate`, MCP tool `payroll_calculate` (needs a key). Federal income tax (IRS Pub 15-T, Worksheet 1A) and California PIT (EDD Method B) withholding for one pay period. Every line names the fact revisions it read and the official document and page they come from. The employee data is not stored.
- [Read a fact with its source and history](https://montaye.com/openapi.json): `GET /v1/facts`, MCP tool `fact_read` (needs a key). One fact as montaye’s computations read it: the revision in force on a day (or the one a calculation line names by revision_id), its values (amounts, bracket tables, lookup grids), the official document with the page and words it was read from, and every span of the same fact the published facts hold, earliest first. Values are decimal strings; ratios are fractions (0.062), never percents. GET /v1/status lists the codes. Fields are only ever added.
- [Judge a rule from root facts, with its reasoning](https://montaye.com/openapi.json): `POST /v1/rules/evaluate`, MCP tool `rule_evaluate` (needs a key). One of montaye’s own rules, read from an official document and checked against the worked examples it prints, judged for the fields you give: us.resident_alien takes us.citizen, us.lawful_permanent_resident, the days present in the United States this year and the two before (IRS Pub 519’s green card and substantial presence tests) and us.closer_connection_exception (its closer connection exception). Not given, a standard of the law settles that one: as the days alone make it when the law draws the line (present 183 days or more this year, it does not hold), else as the standard says while nobody has judged the rest (not claimed on Form 8840, it does not hold), its reasoning on the step that reads it. The answer is true, false or unknown with the fields it waits on, each step of the reasoning with its arithmetic done exactly and how far it is from the line, the documents and pages it is read from, and what the rule leaves to a person (days that do not count, the first-year choice). Nothing you send is stored. GET /v1/status lists the rules. Fields are only ever added.
- [Compute a Delaware corporation’s franchise tax](https://montaye.com/openapi.json): `POST /v1/franchise-tax/calculate`, MCP tool `franchise_tax_calculate` (needs a key). Delaware’s annual franchise tax for one year by both of its methods (Authorized Shares, and Assumed Par Value Capital when the issued shares and gross assets are given), and the lesser, which is what is owed. Every step names the fact revision it read and the Division of Corporations’ own sentence. The annual report fee is not included.
- [Get a trial API key](https://montaye.com/openapi.json): `POST /v1/trial-keys`, MCP tool `account_create_trial`. Opens a trial account and returns its API key, with no sign-up. The key is shown once; only its hash is kept. The trial plan includes a fixed number of paycheck computations.
- [See the account’s usage](https://montaye.com/openapi.json): `GET /v1/usage`, MCP tool `usage_list` (needs a key). What the key’s account has used against its plan, and its most recent calls with their outcome or refusal code.
- [See what montaye watches and how fresh it is](https://montaye.com/openapi.json): `GET /v1/status`, MCP tool `status_read`. The facts computations read now (each with its official source), the ones that stop being in force within 90 days with nothing published after them (and how far their successor has come), every official document and dataset montaye watches with when it was last checked and what the check found, the datasets the reference tables come from (each with its licence, and the notice it asks to travel with the data), and how montaye’s background jobs ran. No key needed; nothing of any customer is in it.

## Machine-readable

- [OpenAPI 3.1](https://montaye.com/openapi.json)
- [API catalog (RFC 9727)](https://montaye.com/.well-known/api-catalog)
- [MCP server card](https://montaye.com/mcp/server-card): Streamable HTTP at https://montaye.com/mcp
- [Refusal codes](https://montaye.com/refusals)

## Optional

- [How to get a key](https://montaye.com/auth.md)
