io.github.lonniev/taxsort-mcp
REMOTE · TAXSORT-MCP.FASTMCP.APP
TaxSort — Tollbooth-monetized MCP server for personal tax transaction classification
Available components
Last scanned (10 hours ago)
Scores higher than 19% of remote servers
Reachable. Last reached 5 Nov 2026.
Category Finance and Payments
Recent critical change
Authorization (15 Oct 2026). See the changelog before you install this server.
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security89
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- The endpoint enforces authorisation, advertised via RFC 9728 protected-resource metadata. View diagnostics → Pass
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
- The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents. View diagnostics → Partial
Transport & Reachability0
- Transport blocked by authentication: the endpoint requires auth we don't have to verify streamable-http. See how to fix → View diagnostics → Unverified
Schema Quality & AI Usability0
- Schema blocked by authentication: the endpoint requires auth we don't have to read it. See how to fix → Unverified
Stability & Change Management0
- Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage0
- Tool coverage blocked by authentication: the endpoint requires auth we don't have to read its tools.Unverified
Tool Safety0
- Tool safety blocked by authentication: the endpoint requires auth we don't have to read its tools.Unverified
Capabilities0
- Capabilities blocked by authentication: the endpoint requires auth we don't have to read them. See how to fix → Unverified
Unverified: 6 categories
Categories scored 0 because we could not verify them: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm. Claim this server and supply a read-only token to verify it and lift the score.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 18 Oct 26 −40
- Endpoint reachability: reachable → behind authorisation ▼ security
- Stability: pass → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- Transport: pass → unverified ▼ security
- Authorization: fail → pass ▲ security
- First check of Authorization: partial security
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- First check of Schema quality: unverified functional
- 15 Oct 26 +4
- Authorization: unverified → fail ▼ critical
- Judged manipulation: unverified → pass ▲ security
- Schema quality: 128 → 193 ▼ functional
- Tool coverage: 41% → 100% ▲ functional
- Schema quality: good → excellent functional
- Destructive annotations: All 13 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation. functional
- 10 Oct 26 −1
- Judged manipulation: pass → unverified ▼ security
- 5 Oct 26 0
- Judged manipulation: pass → unverified ▼ security
- 30 Sept 26 0
- Tool “taxsort_check_proof_status” rewrote its description, which is the text the model reads security
- Tool “taxsort_receive_npub_proof” rewrote its description, which is the text the model reads security
- Tool “taxsort_request_npub_proof” rewrote its description, which is the text the model reads security
- “taxsort_check_proof_status” reworded the description of “dpop_token” cosmetic
- 29 Sept 26 0
- Tool “taxsort_restore_neon_schema” rewrote its description, which is the text the model reads security
- 28 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 25 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Probed https://taxsort-mcp.fastmcp.app/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=*.fastmcp.app | CN=Amazon RSA 2048 M04,O=Amazon,C=US | 17 Jun 2026 | 31 Dec 2026 | RSA 2048 | SHA256-RSA | a1583bafd89c7b58780ef1a0a0d2ad7 |
| SANs: *.fastmcp.app | ||||||
| CN=Amazon RSA 2048 M04,O=Amazon,C=US (CA) | CN=Amazon Root CA 1,O=Amazon,C=US | 23 Aug 2022 | 23 Aug 2030 | RSA 2048 | SHA256-RSA | 773124f2a952e3ed18a58bdb85d1bc0ce5f27 |
| CN=Amazon Root CA 1,O=Amazon,C=US (CA) | CN=Starfield Services Root Certificate Authority - G2,O=Starfield Technologies\, Inc.,L=Scottsdale,ST=Arizona,C=US | 25 May 2015 | 31 Dec 2037 | RSA 2048 | SHA256-RSA | 67f944a2a27cdf3fac2ae2b01f908eeb9c4c6 |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of taxsort-mcp.fastmcp.app. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| app. | present | 23684 | 8 | Verified |
| fastmcp.app. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication Enforced and verified
The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.
| Result | Enforced and verified |
|---|---|
| Enforced | On connection |
| HTTP status | 401 |
WWW-Authenticate challenge Bearer resource_metadata="https://taxsort-mcp.fastmcp.app/.well-known/oauth-protected-resource/mcp"
Bearer resource_metadata="https://taxsort-mcp.fastmcp.app/.well-known/oauth-protected-resource/mcp" | Header | Value |
|---|---|
| www-authenticate | Bearer resource_metadata="https://taxsort-mcp.fastmcp.app/.well-known/oauth-protected-resource/mcp" |
Protected resource metadata
| Document | https://taxsort-mcp.fastmcp.app/.well-known/oauth-protected-resource/mcp |
|---|---|
| Retrieved | Yes |
| Resource | https://taxsort-mcp.fastmcp.app/mcp |
| Authorisation server | https://taxsort-mcp.fastmcp.app/ |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://taxsort-mcp.fastmcp.app/mcp | Auth required | 401 | |
| http (plaintext) | http://taxsort-mcp.fastmcp.app/mcp | HTTPS enforced | 301 | https://taxsort-mcp.fastmcp.app/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
taxsort_account_statement Account statement ~181
Generate a patron's account statement at this operator. Returns the patron's purchase history, active credit tranches, per-tool usage breakdown, and recent daily usage logs. This is the patron's spending account — not the operator's Authority tax balance. Free — no credits consumed. Proof of npub ownership is required to prevent statement-scraping of arbitrary patrons.
| Name | Type | Req | Description |
|---|---|---|---|
| days | integer | – | Number of days of daily usage history to include (default 30). |
| dpop_token | string | yes | Proof that the caller holds npub: the grant envelope from receive_npub_proof, or the raw JSON of a kind-27235 Nostr event signed by npub whose `u` tag is this tool's name. |
| npub | string | yes | The patron's Nostr public key (npub1...). |
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_account_statement_infographic Account statement infographic ~181
Generate a visual SVG infographic of your account statement. Returns the same data as account_statement, rendered as a dark-themed SVG graphic with balance hero, metrics cards, health gauge, tranche table, and tool usage breakdown. Costs 1 api_sat per call. Proof is verified by ``debit_or_deny`` before any cost is incurred.
| Name | Type | Req | Description |
|---|---|---|---|
| days | integer | – | Number of days of daily usage history to include (default 30). |
| dpop_token | string | yes | Proof that the caller holds npub: the grant envelope from receive_npub_proof, or the raw JSON of a kind-27235 Nostr event signed by npub whose `u` tag is this tool's name. |
| npub | string | yes | The Nostr public key (npub1...) whose statement to render. |
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_adoption_status Adoption status ~132
Check this operator's adoption-request status at a chosen Authority. Free. Polls the Authority MCP-to-MCP for the status of this operator's request (pending / approved / rejected / provisioned).
| Name | Type | Req | Description |
|---|---|---|---|
| authority_npub | string | yes | The npub of the Authority the request was sent to. |
| dpop_token | string | – | Proof that the caller holds the operator's npub: the grant envelope from receive_npub_proof, or the raw JSON of a kind-27235 Nostr event signed by the operator whose `u` tag is this tool's name. |
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_apply_rules Apply classification rules ~195
Apply your classification rules to the transactions in a session. Each transaction takes the first matching rule (global and session-scoped, in rule-id order); its classification is written, replacing any it already had.
| Name | Type | Req | Description |
|---|---|---|---|
| dpop_token | string | – | Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content "", a `u` tag holding this tool's exa… |
| npub | string | – | The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it. |
| session_id | string | yes | TaxSort session id (the UUID string create_session returns; list_sessions lists yours). |
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_ask_advisor Ask the financial advisor ~235
Ask the Financial Advisor about using TaxSort. The question goes to Anthropic's Claude with a summary of the session's classified totals.
| Name | Type | Req | Description |
|---|---|---|---|
| dpop_token | string | – | Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content "", a `u` tag holding this tool's exa… |
| history | string | – | Earlier turns as a JSON array string of {"role": "user"|"assistant", "text": "..."}; the last 6 are used. Empty for a new conversation. |
| npub | string | – | The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it. |
| question | string | yes | The question, in plain words. |
| session_id | string | – | TaxSort session id whose classified totals ground the answer; empty for none. |
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_ask_tax_researcher Ask the tax researcher ~238
Ask the Tax Code Researcher about IRS provisions. The question goes to Anthropic's Claude with a summary of the session's classified totals.
| Name | Type | Req | Description |
|---|---|---|---|
| dpop_token | string | – | Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content "", a `u` tag holding this tool's exa… |
| history | string | – | Earlier turns as a JSON array string of {"role": "user"|"assistant", "text": "..."}; the last 6 are used. Empty for a new conversation. |
| npub | string | – | The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it. |
| question | string | yes | The question, in plain words. |
| session_id | string | – | TaxSort session id whose classified totals ground the answer; empty for none. |
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_check_authority_balance Authority balance ~73
Check this operator's tax balance at the Authority. Returns the sats available for certifying patron credit purchases. When this balance reaches zero, patron top-ups cannot be certified and the operator must call purchase_credits on the Authority. This is the operator's own funding — not a patron balance. Free.
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_check_balance Check balance ~167
Check a patron's credit balance at this operator. This is the patron's spending balance — credits purchased via Lightning for tool calls at this operator. For the operator's own balance at the Authority (needed to certify patron purchases), use authority_check_balance instead. Free — no credits required. Proof of npub ownership is required to prevent anyone-with-the-registry from enumerating balances.
| Name | Type | Req | Description |
|---|---|---|---|
| dpop_token | string | yes | Proof that the caller holds npub: the grant envelope from receive_npub_proof, or the raw JSON of a kind-27235 Nostr event signed by npub whose `u` tag is this tool's name. |
| npub | string | yes | The Nostr public key (npub1...) whose balance to check. |
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_check_payment Check payment ~153
Check the payment status of a Lightning invoice. Call after paying the invoice from purchase_credits. Free — no credits required. Proof of npub ownership is required to prevent credit-grant front-running by an observer of the invoice ID.
| Name | Type | Req | Description |
|---|---|---|---|
| dpop_token | string | yes | Proof that the caller holds npub: the grant envelope from receive_npub_proof, or the raw JSON of a kind-27235 Nostr event signed by npub whose `u` tag is this tool's name. |
| invoice_id | string | yes | The invoice ID returned by purchase_credits. |
| npub | string | yes | The Nostr public key (npub1...) that purchased the invoice. |
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_check_price Check price ~247
Preview the effective cost of a tool call. Shows the base cost and any constraint effects (discounts, free trials, surge pricing). Free — no credits required.
| Name | Type | Req | Description |
|---|---|---|---|
| dpop_token | string | – | Proof that the caller holds npub: the grant envelope from receive_npub_proof, or the raw JSON of a kind-27235 Nostr event signed by npub whose `u` tag is this tool's name. |
| npub | string | – | Optional patron npub; with it, the preview includes that patron's coupons and constraint effects. |
| tool_id | string | yes | Either the tool's UUID (from the pricing model) or a bare capability string (e.g. ``"deal_scenario"``). FE callers usually have the capability name; this resolves both so the FE doesn't need to deriv… |
| tool_kwargs | string | – | Optional JSON object with tool call parameters for ad valorem / categorical-multiplier pricing preview (e.g. '{"amount_sats": 5000}' or '{"difficulty": "sovereign", "mode": "live"}'). |
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_check_proof_status Check proof status ~172
Check whether a proof grant is still valid. Mirrors ``check_oauth_status`` for the npub-proof flow: a calling agent can ask "will my next paid call accept this dpop_token?" before burning credits on a guaranteed failure. Expiry is read from the grant itself; the only store consulted is the patron's revocation watermark. Free, no side effects — touches no relay.
| Name | Type | Req | Description |
|---|---|---|---|
| dpop_token | string | – | Proof that the caller holds npub: the grant envelope from receive_npub_proof, or the raw JSON of a kind-27235 Nostr event signed by npub whose `u` tag is this tool's name. |
| patron_npub | string | – | Required. The patron's npub (npub1...). |
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_check_unlock Check a session unlock ~176
Check if the unlock response is valid. A valid response spends the challenge and unlocks the patron's session.
| Name | Type | Req | Description |
|---|---|---|---|
| dpop_token | string | – | Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content "", a `u` tag holding this tool's exa… |
| npub | string | – | The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it. |
| response | string | yes | The patron's reply to the unlock DM; "Approve Unlock" (any case) unlocks. |
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_clear_transactions Clear a session's transactions ~170
Delete all transactions and classifications for a session, so CSVs can be re-imported.
| Name | Type | Req | Description |
|---|---|---|---|
| dpop_token | string | – | Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content "", a `u` tag holding this tool's exa… |
| npub | string | – | The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it. |
| session_id | string | yes | TaxSort session id (the UUID string create_session returns; list_sessions lists yours). |
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_count_rule_matches Count rule matches ~242
Count how many transactions match a rule pattern (live preview).
| Name | Type | Req | Description |
|---|---|---|---|
| amount_operator | string | – | Optional amount test: lt, lte, gt, gte, eq or neq; empty for no amount test. |
| amount_value | – | – | Signed amount in dollars the amount_operator compares against (negative for money out). |
| description_pattern | string | yes | Regular expression matched case-insensitively against the transaction's description, merchant and description override. |
| dpop_token | string | – | Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content "", a `u` tag holding this tool's exa… |
| npub | string | – | The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it. |
| session_id | string | yes | TaxSort session id (the UUID string create_session returns; list_sessions lists yours). |
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_create_feedback_issue Send feedback ~264
Create a GitHub issue for bug reports, feature requests, or feedback. The issue opens in the taxsort-mcp GitHub repo, prefixed "[Feedback]". Without an operator GitHub token, a prefilled new-issue link is returned instead.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | – | Issue body, Markdown. |
| category | string | – | One of feedback, bug, feature or question; also becomes a "cat:<category>" label. |
| contact | string | – | Optional way to reach the reporter (e.g. an email or Nostr handle), added to the issue body; empty to stay anonymous. |
| dpop_token | string | – | Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content "", a `u` tag holding this tool's exa… |
| npub | string | – | The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it. |
| title | string | yes | Issue title, plain text. |
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_create_session Create a session ~186
Create a new TaxSort session for a tax year.
| Name | Type | Req | Description |
|---|---|---|---|
| dpop_token | string | – | Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content "", a `u` tag holding this tool's exa… |
| label | string | – | Display name for the session; empty means "<tax_year> Taxes". |
| npub | string | – | The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it. |
| tax_year | integer | – | Four-digit tax year (e.g. 2025); 0 means the current calendar year. |
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_create_share_token Create a share token ~189
Create a share token so another user can access this session.
| Name | Type | Req | Description |
|---|---|---|---|
| dpop_token | string | – | Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content "", a `u` tag holding this tool's exa… |
| expires_days | integer | – | Days until the token expires (default 30); 0 means it never expires. |
| npub | string | – | The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it. |
| session_id | string | yes | TaxSort session id (the UUID string create_session returns; list_sessions lists yours). |
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_delete_account_transactions Delete an account's transactions ~180
Delete all transactions and classifications for a specific imported account.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | yes | The account name exactly as get_accounts lists it. |
| dpop_token | string | – | Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content "", a `u` tag holding this tool's exa… |
| npub | string | – | The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it. |
| session_id | string | yes | TaxSort session id (the UUID string create_session returns; list_sessions lists yours). |
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_delete_classification Delete a classification ~196
Remove a classification, reverting the transaction to unclassified.
| Name | Type | Req | Description |
|---|---|---|---|
| dpop_token | string | – | Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content "", a `u` tag holding this tool's exa… |
| npub | string | – | The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it. |
| session_id | string | yes | TaxSort session id (the UUID string create_session returns; list_sessions lists yours). |
| transaction_id | string | yes | The transaction's id as get_transactions returns it (e.g. "tx-1a2b3c4d"). |
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_delete_coupon Delete coupon ~146
Delete a coupon. Cascades to all patron redemptions. Any chain step referencing the deleted coupon_id becomes a no-op (the constraint returns neutral on unknown ids) — the Studio surfaces orphan references as warnings. RESTRICTED to operator — requires proof.
| Name | Type | Req | Description |
|---|---|---|---|
| coupon_id | string | yes | The id of the coupon to delete (from list_coupons). |
| dpop_token | string | – | Proof that the caller holds the operator's npub: the grant envelope from receive_npub_proof, or the raw JSON of a kind-27235 Nostr event signed by the operator whose `u` tag is this tool's name. |
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_delete_custom_category Delete a custom category ~155
Delete a custom category.
| Name | Type | Req | Description |
|---|---|---|---|
| category_id | integer | yes | The custom category's numeric id, as get_custom_categories returns it. |
| dpop_token | string | – | Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content "", a `u` tag holding this tool's exa… |
| npub | string | – | The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it. |
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_delete_operator_credential Delete operator credential ~266
Remove a single operator secret field. Deletes one key from the operator's encrypted credential blob without touching the others — the field-level counterpart to ``forget_credentials``, which wipes the whole row. Use it to retire a leftover after an SDK cutover (a Prefect key after Modal, or a stored but untemplated orphan like ``anthropic_api_key``) without taking the operator down for a full re-delivery. Stored-but-untemplated fields are first-class: the delete is keyed on what is vaulted, not on what the current template declares. Idempotent — already-absent fields report ``removed: false`` without rewriting the vault. RESTRICTED to the operator — requires the operator's proof (a kind-27235 event or a proof grant); patron proofs are rejected. A deletion is as destructive as a write.
| Name | Type | Req | Description |
|---|---|---|---|
| dpop_token | string | yes | Proof that the caller holds npub: the grant envelope from receive_npub_proof, or the raw JSON of a kind-27235 Nostr event signed by npub whose `u` tag is this tool's name. |
| field | string | yes | The operator credential field to remove (templated or not). |
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_delete_patron_credential Delete patron credential ~143
Remove a single patron credential field. Deletes one field from stored credentials without affecting other fields. Free. Proof of npub ownership is required — this is a write to the patron's sensitive credential vault.
| Name | Type | Req | Description |
|---|---|---|---|
| dpop_token | string | yes | Proof that the caller holds npub: the grant envelope from receive_npub_proof, or the raw JSON of a kind-27235 Nostr event signed by npub whose `u` tag is this tool's name. |
| field | string | yes | The credential field name to remove. |
| npub | string | yes | The patron's Nostr public key (npub1...). |
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_delete_rule Delete a classification rule ~154
Delete a classification rule by ID.
| Name | Type | Req | Description |
|---|---|---|---|
| dpop_token | string | – | Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content "", a `u` tag holding this tool's exa… |
| npub | string | – | The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it. |
| rule_id | integer | yes | The rule's numeric id, as get_rules returns it. |
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_forget_coupon Forget coupon ~163
Remove a coupon from this patron's redemption list. Cosmetic only — the coupon itself still exists at the operator, and the patron can re-redeem the same code later while the window allows. Free — requires proof of ``npub``.
| Name | Type | Req | Description |
|---|---|---|---|
| coupon_id | string | yes | The id of the redeemed coupon to remove (from list_my_coupons). |
| dpop_token | string | – | Proof that the caller holds npub: the grant envelope from receive_npub_proof, or the raw JSON of a kind-27235 Nostr event signed by npub whose `u` tag is this tool's name. |
| npub | string | yes | The patron's Nostr public key (npub1...). |
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_forget_credentials Forget credentials ~154
Delete vaulted credentials for a specific service and npub. For operator credentials, pass the operator's own npub. For patron credentials, pass the patron's npub. Always requires proof of npub ownership — a deletion is as destructive as a write.
| Name | Type | Req | Description |
|---|---|---|---|
| dpop_token | string | yes | Proof that the caller holds npub: the grant envelope from receive_npub_proof, or the raw JSON of a kind-27235 Nostr event signed by npub whose `u` tag is this tool's name. |
| npub | string | yes | The Nostr public key (npub1...) whose credentials to forget. |
| service | string | yes | The credential service to forget. |
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_get_accounts List accounts ~165
List all accounts in this session with their types and transaction counts.
| Name | Type | Req | Description |
|---|---|---|---|
| dpop_token | string | – | Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content "", a `u` tag holding this tool's exa… |
| npub | string | – | The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it. |
| session_id | string | yes | TaxSort session id (the UUID string create_session returns; list_sessions lists yours). |
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_get_amount_neighbors Find same-amount neighbors ~272
Fetch transactions with the same amount within ±days of a date. Used by the classifier to detect duplicates from overlapping CSV imports.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | number | yes | The exact signed transaction amount in dollars to match (negative for money out, positive for money in). |
| date | string | yes | Center date of the window, as YYYY-MM-DD. |
| days | integer | – | Half-width of the window in days on each side of date (default 14). |
| dpop_token | string | – | Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content "", a `u` tag holding this tool's exa… |
| exclude_id | string | – | A transaction id to leave out of the results, usually the one being checked; empty to exclude nothing. |
| npub | string | – | The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it. |
| session_id | string | yes | TaxSort session id (the UUID string create_session returns; list_sessions lists yours). |
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_get_anthropic_key Get the Anthropic key ~142
Get the Anthropic API key for FE-driven classification.
| Name | Type | Req | Description |
|---|---|---|---|
| dpop_token | string | – | Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content "", a `u` tag holding this tool's exa… |
| npub | string | – | The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it. |
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_get_api_usage_stats Get API usage statistics ~162
Get aggregated API usage statistics for cost analysis.
| Name | Type | Req | Description |
|---|---|---|---|
| dpop_token | string | – | Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content "", a `u` tag holding this tool's exa… |
| npub | string | – | The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it. |
| session_id | string | – | TaxSort session id to total just that session; empty totals all your sessions. |
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_get_custom_categories List custom categories ~137
Get custom categories defined by this user.
| Name | Type | Req | Description |
|---|---|---|---|
| dpop_token | string | – | Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content "", a `u` tag holding this tool's exa… |
| npub | string | – | The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it. |
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_get_github_token Get the GitHub token ~146
Get the GitHub token for creating issues in the taxsort-mcp repo.
| Name | Type | Req | Description |
|---|---|---|---|
| dpop_token | string | – | Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content "", a `u` tag holding this tool's exa… |
| npub | string | – | The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it. |
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_get_import_stats Get import statistics ~160
Get import statistics for a session.
| Name | Type | Req | Description |
|---|---|---|---|
| dpop_token | string | – | Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content "", a `u` tag holding this tool's exa… |
| npub | string | – | The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it. |
| session_id | string | yes | TaxSort session id (the UUID string create_session returns; list_sessions lists yours). |
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_get_nostr_profile Nostr profile ~102
Read an npub's public Nostr profile (NIP-01 kind-0 metadata). Free, no proof — the data is already public on relays. Returns the latest metadata fields (name, display_name, about, picture, banner, nip05, website, lud16) or an empty profile if none is published.
| Name | Type | Req | Description |
|---|---|---|---|
| npub | string | – | The Nostr public key (npub1...) whose profile to read. |
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_get_notarization_proof Notarization proof ~70
Generate a Merkle inclusion proof that a patron's balance was included in a Bitcoin-notarized snapshot.
| Name | Type | Req | Description |
|---|---|---|---|
| notarization_id | string | yes | The notarization record ID. |
| npub | string | yes | The patron's Nostr public key (npub1...). |
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_get_operator_onboarding_status Operator onboarding status ~57
Report this operator's configuration readiness. Shows which operator settings are configured, which are missing, and how to deliver each missing value. For patron-level credential status, use get_patron_onboarding_status instead. Free.
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_get_patron_credential_fields Patron credential fields ~192
List stored patron credential field names (not values). Returns the names of fields stored for a patron, plus each field's ``delivered_at`` ISO-8601 timestamp when known (null for secrets vaulted before timestamps were recorded). Values are never exposed — use this to verify which fields are configured and how old each one is. Free. Proof of npub ownership is required: the list of configured fields is itself sensitive (reveals which integrations a patron has set up).
| Name | Type | Req | Description |
|---|---|---|---|
| dpop_token | string | yes | Proof that the caller holds npub: the grant envelope from receive_npub_proof, or the raw JSON of a kind-27235 Nostr event signed by npub whose `u` tag is this tool's name. |
| npub | string | yes | The patron's Nostr public key (npub1...). |
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_get_patron_onboarding_status Patron onboarding status ~169
Report a patron's credential readiness for this operator. For set-once services (eXcalibur, TheBrain), shows which patron secrets are configured and which are missing. For dynamic/OAuth2 services (Schwab), reports that no patron credentials are needed. Free. Proof of npub ownership is required because credential presence is sensitive information about the patron's setup.
| Name | Type | Req | Description |
|---|---|---|---|
| dpop_token | string | yes | Proof that the caller holds npub: the grant envelope from receive_npub_proof, or the raw JSON of a kind-27235 Nostr event signed by npub whose `u` tag is this tool's name. |
| patron_npub | string | yes | The patron's Nostr public key (npub1...). |
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_get_pricing_model Pricing model ~51
Get the active pricing model for this operator. Free. If no model exists, self-initializes a scaffold with all registered tools at 0 sats. No economic data from code.
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_get_rules List classification rules ~170
Get all classification rules for the current patron.
| Name | Type | Req | Description |
|---|---|---|---|
| dpop_token | string | – | Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content "", a `u` tag holding this tool's exa… |
| npub | string | – | The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it. |
| session_id | string | – | TaxSort session id; when given, returns your global rules plus the rules scoped to this session. Empty returns all your rules. |
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_get_session Get a session ~159
Get session details and summary stats.
| Name | Type | Req | Description |
|---|---|---|---|
| dpop_token | string | – | Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content "", a `u` tag holding this tool's exa… |
| npub | string | – | The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it. |
| session_id | string | yes | TaxSort session id (the UUID string create_session returns; list_sessions lists yours). |
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_get_summary Get the tax summary ~292
Get a grouped spending summary for tax reporting. Expenses are money out (negative amounts) and income is money in, in dollars.
| Name | Type | Req | Description |
|---|---|---|---|
| dpop_token | string | – | Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content "", a `u` tag holding this tool's exa… |
| group_by | string | – | Grouping: taxline, subcategory, category, month or account, or two joined by "+" (e.g. "category+month"). |
| month | string | – | Only this month, as YYYY-MM; empty for the whole session. |
| npub | string | – | The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it. |
| scope | string | – | Which categories to total: "tax" (Schedule C and Schedule A), "all" (everything except Duplicate), or one category: "Schedule C", "Schedule A", "Internal Transfer", "Personal" or "Duplicate". Anythin… |
| session_id | string | yes | TaxSort session id (the UUID string create_session returns; list_sessions lists yours). |
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_get_transactions Get transactions ~444
Get transactions for a session with optional filters. Returns raw transactions LEFT JOINed with their classifications. Use unclassified_only=true to fetch pages of transactions needing classification by the FE. Use date_from/date_to for date range queries.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Only transactions from this account name, as get_accounts lists it; empty for all. |
| category | string | – | Only transactions classified in this category (e.g. "Schedule C", "Schedule A", "Personal", "Internal Transfer", "Duplicate"); empty for all. Ignored when unclassified_only is true. |
| date_from | string | – | Earliest transaction date to include, as YYYY-MM-DD; empty for no lower bound. |
| date_to | string | – | Latest transaction date to include, as YYYY-MM-DD; empty for no upper bound. |
| dpop_token | string | – | Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content "", a `u` tag holding this tool's exa… |
| limit | integer | – | Maximum number of transactions to return (default 200). |
| month | string | – | Only transactions in this month, as YYYY-MM; empty for all. |
| npub | string | – | The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it. |
| offset | integer | – | Number of matching transactions to skip, for paging (default 0). |
| search | string | – | Case-insensitive regular expression matched against the description, merchant and description override; empty for no search. |
| session_id | string | yes | TaxSort session id (the UUID string create_session returns; list_sessions lists yours). |
| subcategory | string | – | Only transactions with this exact subcategory (e.g. "Office Supplies"); empty for all. |
| unclassified_only | boolean | – | True to return only transactions with no classification yet. |
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_get_transactions_paged Get a page of transactions ~509
Server-side filtered, grouped, sorted, paginated transactions. group_sort controls the order of groups (A-Z vs Z-A). sort_col + sort_dir control row order within each group. When group_by='none', only sort_col + sort_dir apply.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Only transactions from this account name, as get_accounts lists it; empty for all. |
| category | string | – | Only transactions classified in this category (e.g. "Schedule C", "Personal"); empty for all. |
| classified_only | boolean | – | True to return only transactions that have a classification. |
| dpop_token | string | – | Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content "", a `u` tag holding this tool's exa… |
| group_by | string | – | How rows are grouped: none, category, subcategory, taxline, month, account or merchant, or two joined by "+" (e.g. "month+category"). |
| group_sort | string | – | Order of the groups: "asc" (A-Z) or "desc" (Z-A). |
| month | string | – | Only transactions in this month, as YYYY-MM; empty for all. |
| npub | string | – | The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it. |
| page | integer | – | Zero-based page number. |
| page_size | integer | – | Rows per page (default 200). |
| search | string | – | Case-insensitive regular expression matched against the description, merchant and description override; empty for no search. |
| session_id | string | yes | TaxSort session id (the UUID string create_session returns; list_sessions lists yours). |
| sort_col | string | – | Column that orders rows within each group: date, description, amount, account or category. |
| sort_dir | string | – | Row order within each group: "asc" or "desc". |
| subcategory | string | – | Only transactions with this exact subcategory (e.g. "Office Supplies"); empty for all. |
| unclassified_only | boolean | – | True to return only transactions with no classification yet; takes precedence over classified_only. |
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_import_csv Import a CSV file ~330
Import a CSV file into a session. The bank format (Chase, US Bank, Schwab, SoFi, PayPal, Coinbase, a checkbook register, or generic) is detected from the header row. Rows already in the session are skipped. A checkbook register also writes its payee and category onto matching bank transactions (same amount, within one day).
| Name | Type | Req | Description |
|---|---|---|---|
| account_name | string | – | Account name to file these transactions under; empty means the filename without its extension. |
| content | string | yes | The whole CSV file as text, header row first; comma- or tab-delimited. |
| dpop_token | string | – | Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content "", a `u` tag holding this tool's exa… |
| filename | string | yes | The file's name (e.g. "chase-4821-2025.csv"); its stem names the account unless account_name is given, and a 20xx year in it dates checkbook rows that lack a year. |
| npub | string | – | The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it. |
| session_id | string | yes | TaxSort session id (the UUID string create_session returns; list_sessions lists yours). |
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_list_canonical_identities Tool identities ~250
Return canonical (tool_id, mcp_name, …) for every tool the wheel exposes. The authoritative source for any client (Studio, agents, FE) that needs to know how this MCP identifies its tools. Reconcile uses this output to UUID-join against the stored pricing model — no name-based UUID derivation, no guessing. Includes both ToolIdentity-seeded tools and any UUID recorded by ``@paid_tool`` that is missing from the registry. The latter appear with ``registered: false`` (and in the top-level ``unregistered`` array) so Reconcile can flag deploy drift instead of silently reporting clean when a live tool was never seeded (#174). If the operator renames a function or rebrands a slug, the mcp_name in this output changes but tool_id stays. That's the whole point of the canonical-UUID design. Also diffs the live FastMCP wire surface against the registry. Tools exposed on the wire but absent from the registry appear in ``unregistered`` so Reconcile can flag deploy drift instead of silently under-reporting (issue #175). Free, no side effects.
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_list_constraint_types Constraint types ~51
List all available constraint types and their parameter schemas. Returns the type, category, description, and parameter specs for every constraint that can be used in a pricing pipeline. Free — no credits required.
Input schema present but exposes no named parameters.
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_list_coupons Coupons ~122
List every coupon this operator has minted (newest first). Each row carries the current ``times_redeemed`` counter — the Studio renders a progress bar from this against ``total_uses``. RESTRICTED to operator — requires proof.
| Name | Type | Req | Description |
|---|---|---|---|
| dpop_token | string | – | Proof that the caller holds the operator's npub: the grant envelope from receive_npub_proof, or the raw JSON of a kind-27235 Nostr event signed by the operator whose `u` tag is this tool's name. |
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_list_feedback_issues List my feedback ~138
List feedback issues submitted by this patron.
| Name | Type | Req | Description |
|---|---|---|---|
| dpop_token | string | – | Proof that the caller holds npub. Either the grant envelope that receive_npub_proof returned, or the raw JSON of a kind-27235 Nostr event signed by npub: content "", a `u` tag holding this tool's exa… |
| npub | string | – | The patron's Nostr public key (npub1...). Tool fees are paid from this patron's balance; dpop_token proves the caller holds it. |
Structured output declared, but exposes no named fields.
No examples provided.
taxsort_list_my_coupons My coupons ~148
List the coupons this patron has redeemed on this operator. Returns both active and exhausted redemptions with a per-row ``status`` (``active`` / ``window_closed`` / ``patron_limit`` / ``total_limit``). Free — requires proof of ``npub``.
| Name | Type | Req | Description |
|---|---|---|---|
| dpop_token | string | – | Proof that the caller holds npub: the grant envelope from receive_npub_proof, or the raw JSON of a kind-27235 Nostr event signed by npub whose `u` tag is this tool's name. |
| npub | string | yes | The patron's Nostr public key (npub1...). |
Structured output declared, but exposes no named fields.
No examples provided.
How do I install the io.github.lonniev/taxsort-mcp server?
io.github.lonniev/taxsort-mcp is a hosted endpoint at https://taxsort-mcp.fastmcp.app/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · taxsort-mcp.fastmcp.app
claude mcp add --transport http lonniev-taxsort-mcp 'https://taxsort-mcp.fastmcp.app/mcp'
What is the io.github.lonniev/taxsort-mcp server?
io.github.lonniev/taxsort-mcp is listed in the public MCP registry as io.github.lonniev/taxsort-mcp. TaxSort, Tollbooth-monetized MCP server for personal tax transaction classification. This page covers its hosted endpoint (https://taxsort-mcp.fastmcp.app/mcp).
Is the io.github.lonniev/taxsort-mcp server safe to use?
io.github.lonniev/taxsort-mcp scores 36 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the io.github.lonniev/taxsort-mcp server expose?
io.github.lonniev/taxsort-mcp exposes 88 tools: taxsort_check_balance, taxsort_purchase_credits, taxsort_check_payment, taxsort_restore_credits, taxsort_account_statement, and 83 more. Their descriptions and schemas cost roughly 16,374 tokens of context every time the server is loaded.
Does the io.github.lonniev/taxsort-mcp server require authentication?
Yes. io.github.lonniev/taxsort-mcp asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.
Is the io.github.lonniev/taxsort-mcp server still maintained?
io.github.lonniev/taxsort-mcp is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.