What the brand gets
The tax brand's API, CLI, MCP server, SDK, Site, Docs and App, each generated from its files, in its own words of return, taxpayer, review and preparer.
tax's wordsreturn is a jobtaxpayer is a subjectreview is a taskpreparer is a member
Ten files of Services, and the brand gets seven surfaces. Each one below is what the brand serves for this folder. brand.ts sets the words, so a business, an agent or a preparer reads return, taxpayer, review and preparer everywhere, and never the words services.dev uses inside.
Every route its openapi.json lists, one for each of the ten Services. Time adds the taxpayer's routes, the clocks with their acknowledge, satisfy and choose calls, and the subscriptions:
→ GET /openapi.json servers https://apis.tax (tax's own origin) · http://localhost:8787 (Where dev serves it now)
POST GET /returns
POST /amended-return
POST /annual-return
POST /carryforward-watch
POST /estimate
POST /information-returns
POST /notice-response
POST /question
POST /tax-plan
POST /transcript
POST /year-end-close
GET /amended-return.json
GET /annual-return.json
GET /carryforward-watch.json
GET /estimate.json
GET /information-returns.json
GET /notice-response.json
GET /question.json
GET /tax-plan.json
The help, run in the brand's folder:
npx services.dev help clocks assign <clock> <preparer> assign the preparer who answers for a clock
returns get <return> read a return
returns list the buyer's returns, newest first
taxpayers list the taxpayers your returns joined
taxpayers get <taxpayer> read a taxpayer
clocks list the clocks your returns and their taxpayers run
clocks get <clock> read a clock
clocks ack <clock> acknowledge a clock you answer for
clocks satisfy <clock> close a clock you answer for, on evidence on the record
clocks choose <clock> <option> choose one of a clock's lapse options at its date
subscriptions list your subscriptions
subscriptions get <subscription> read a subscription
subscriptions cancel <subscription> cancel a subscription
me taxpayers the taxpayers where you are of record
taxpayers withdraw <taxpayer> <successor> withdraw as the preparer of record, naming your successor
test-clocks create <frozen_at> make a test clock frozen at a time
test-clocks advance <clock> <to> move a test clock to a time, or by a span
get <return> returns get
tick <span> [--test-clock <tc_>] [--market <m>] test-clocks advance: move dev's own clock, or --test-clock that one, such as 7d; --market checks dev's simulated marketThe buyer toolset an agent lists, then the typed client services.dev sdk writes. An agent orders and reads returns, and never signs, files or consents for anyone:
→ tools/list order_return Order any of tax's 10 Services: name it in service, with its own fields.
get_return Read a return, now or after waiting up to wait seconds while it works or waits on a person.
list_returns The buyer's returns, newest first: OK, or EMPTY when none match.
accept_return Accept a delivered return.
send_back_return Send a return back with a note, and the AI redoes it: a delivered one as the buyer, a waiting one as the person at the line.
cancel_return Cancel a return before delivery.
end_return End a return at one of its ends, as that end's by allows.
reorder_return Order an ended return again, or a follow-on Service its end offers: a new return, with from on its record.
set_return_policy Set a return's policy values within their bounds: mechanics from the buyer or the brand's console, merits from the client alone.
send_return_signal Raise one of the Service's inbound signals.
send_return_message Say something in the return's thread as the client.
list_return_messages Read the return's messages, oldest first: one resource with the posts.
reissue_ask Reissue an open ask's link, to hand to its party again.
# SDK: the generated client's namespaces and their methods
amendedReturn order
annualReturn order
carryforwardWatch order
estimate order
informationReturns order
The head of the annual return's page, as a browser gets it:
→ GET /annual-return # accept: text/html Annual Return
Returns, e-filed.
$1,800 per return, filed 5 days before its deadline, 20% off if late, or we pay the penalty and its interest, up to $5,000, after we ask the IRS to take it off, charged when file is accepted. · A signer signs at sign, as the paid preparer for the brand's firm. The owner signs the §7216 consent first, uploads at organizer and signs Form 8879-CORP or 8879-PE at authorize.
curl http://localhost:8787/returns \The brand's own llms.txt: what it sells, then each Service with its price and who signs:
→ GET /llms.txt# tax
> tax sells Amended Return, Annual Return, Carryforward Watch, Estimated Payment, Information Returns, Notice Response, Tax Question, Tax Plan, Tax Transcript and Year-End Close. Order over MCP at http://localhost:8787/mcp or HTTP; every price is at http://localhost:8787/pricing.
## Amended Return
Amended returns. $900 per return, within 30 days, charged when file or aar is accepted. A preparer does the prepare step. A signer signs at sign, as the paid preparer for the brand's firm. The owner signs Form 8879-CORP or 8879-PE at authorize.
MCP: order_amended_return at http://localhost:8787/mcp
```
curl http://localhost:8787/returns -H 'content-type: application/json' -d '{"service":"amended-return","ein":"12-3456789","tax_year":"2026","entity":"C corp","jurisdictions":["US","US-CA"],"books":"https://books.example/acme","max_usd":900,"key":"any-string-you-choose"}'
```
…One brand serves three apps, each at its own path: the customer portal, the preparers' delivery portal and the owner console:
→ GET /portal # the customer portal, accept: text/html Your returns
→ GET /practitioners # the delivery portal, in a preparer's own session, accept: text/html
Practitioners
→ GET /console # the owner console, accept: text/html
Owner consoleThe customer portal, the delivery portal and the owner console show their screens. Brand() covers the words.