Moltline TaxLots
REMOTE · MCP.MOLTLINESTUDIO.COM · SCANNED SEP 21
Crypto cost-basis lots (FIFO/LIFO/HIFO/specific-ID), Form 8949 rows, 1099-DA diff. 5 of 8 free.
Available components
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 Security83
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one. See how to fix → View diagnostics → Partial
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC is configured correctly; the domain's records validate against the full chain to the root. View diagnostics → Pass
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability61
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 2941 tokens (~367/item across 8 items; 8 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management50
- Stability observed for 15 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 8 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 9 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the Moltline TaxLots MCP server?
Moltline TaxLots is a hosted endpoint at https://mcp.moltlinestudio.com/taxlots, 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 · mcp.moltlinestudio.com
claude mcp add --transport http com-moltlinestudio-taxlots 'https://mcp.moltlinestudio.com/taxlots'
{
"mcpServers": {
"com-moltlinestudio-taxlots": {
"url": "https://mcp.moltlinestudio.com/taxlots"
}
}
} {
"servers": {
"com-moltlinestudio-taxlots": {
"type": "http",
"url": "https://mcp.moltlinestudio.com/taxlots"
}
}
} [mcp_servers.com-moltlinestudio-taxlots] url = "https://mcp.moltlinestudio.com/taxlots"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"com-moltlinestudio-taxlots": {
"type": "remote",
"url": "https://mcp.moltlinestudio.com/taxlots",
"enabled": true
}
}
} openclaw mcp add com-moltlinestudio-taxlots --url 'https://mcp.moltlinestudio.com/taxlots' --transport streamable-http
mcp_servers:
com-moltlinestudio-taxlots:
url: "https://mcp.moltlinestudio.com/taxlots" {
"McpServers": {
"com-moltlinestudio-taxlots": {
"Transport": "http",
"Url": "https://mcp.moltlinestudio.com/taxlots"
}
}
} assistant mcp add com-moltlinestudio-taxlots -t streamable-http -u 'https://mcp.moltlinestudio.com/taxlots'
{
"mcpServers": {
"com-moltlinestudio-taxlots": {
"type": "http",
"url": "https://mcp.moltlinestudio.com/taxlots"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
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.
- 20 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 43 to 47. That category is still filling its 30-day observation window: 13 days of observed history at the previous scan, 14 at this one. The score rises as the window fills, whether or not the server changes.
- 18 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 37 to 40. That category is still filling its 30-day observation window: 11 days of observed history at the previous scan, 12 at this one. The score rises as the window fills, whether or not the server changes.
- 16 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 30 to 33. That category is still filling its 30-day observation window: 9 days of observed history at the previous scan, 10 at this one. The score rises as the window fills, whether or not the server changes.
- 14 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.
- 11 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 13 to 17. That category is still filling its 30-day observation window: 4 days of observed history at the previous scan, 5 at this one. The score rises as the window fills, whether or not the server changes.
- 9 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.
- 7 Sept 26 +10
- Authorization: unverified → partial ▲ security
- HSTS header: unverified → pass ▲ security
- Stability: unverified → 0.03 ▲ functional
- 6 Sept 26 63
First indexed and scored.
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 21 Sept 2026 · Probed https://mcp.moltlinestudio.com/taxlots
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=moltlinestudio.com | CN=WE1,O=Google Trust Services,C=US | 15 Aug 2026 | 13 Nov 2026 | ECDSA 256 | ECDSA-SHA256 | 72e09c6114448e7a0ed370fb03c277cb |
| SANs: moltlinestudio.com, *.moltlinestudio.com | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC secure
Validation of mcp.moltlinestudio.com. — Secure
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| moltlinestudio.com. | present | 2371 | 13 | Verified |
| mcp.moltlinestudio.com. | Verified address RRset verified with the apex keys |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=15576000; includeSubDomains |
| content-security-policy | default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self' data:; connect-src 'self' https://api.moltlinestudio.com https://mcp.moltlinestudio.com; form-action 'self'; frame-ancestors 'none'; base-uri 'self'; object-src 'none'; upgrade-insecure-requests |
| x-content-type-options | nosniff |
| x-frame-options | DENY |
| referrer-policy | strict-origin-when-cross-origin |
| permissions-policy | camera=(), microphone=(), geolocation=() |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://mcp.moltlinestudio.com/taxlots | Verified | 200 | |
| http (plaintext) | http://mcp.moltlinestudio.com/taxlots | HTTPS enforced | 301 | https://mcp.moltlinestudio.com/taxlots |
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 →
build_lots Build Lots ~533
Build the lot inventory per account and every disposal with basis, gain and holding period. PREMIUM (license). Methods: fifo (the default rule when no specific identification is made, Treas. Reg. 1.1012-1(j)), lifo, hifo, or specific_id via a row's specific_lots {lot_id: qty}. Typical input {"ledger": <rows>, "method": "hifo", "transfers": <pairs from match_transfers>} returns {"disposals": [{"row": "cb9", "asset": "BTC", "qty": "0.5", "proceeds": "31000.00", "basis": "20000.00", "gain": "11000.00", "term": "long", ...}], "open_lots": [...], "summary": {"short_term": {...}, "long_term": {...}}}. Fees: a cash purchase's fee joins basis; a sale's or exchange's fee reduces the amount realized (1.1001-7); a network fee paid in the transferred asset is a disposal of those units (transfer_fee_policy dispose) unless you choose ignore. Transfers between your own accounts move lots with their basis and acquisition date. Use once ledger_lint reports no errors. Not tax advice: it applies the stated rules to your rows and shows its work. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"} (for example {"error": "method must be fifo, lifo, hifo or specific_id"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
| Name | Type | Req | Description |
|---|---|---|---|
| ledger | array | yes | canonical rows. |
| method | string | – | fifo, lifo, hifo or specific_id (rows without specific_lots fall back to fifo). |
| on_missing_lots | string | – | error (default), or zero_basis for lenient mode - disposals beyond the lots held get zero basis and unmatched transfer_out rows simply leave the inventory, each flagged. |
| tax_year | integer | – | when set, only disposals in that calendar year are returned (the inventory still runs from the start). |
| transfer_fee_policy | string | – | dispose (default) or ignore for network fees paid in the transferred asset. |
| transfers | array | – | pairs from match_transfers ({"out": id, "in": id, ...}); empty to auto-match with the defaults. |
Structured output declared, but exposes no named fields.
No examples provided.
form_8949_rows Form 8949 Rows ~365
Lay the disposals out as Form 8949 rows with box categories and totals. PREMIUM (license). Typical input {"disposals": <from build_lots>, "tax_year": 2026, "default_reporting": "proceeds_only"} returns {"part_i": {"B": [rows]}, "part_ii": {"E": [rows]}, "totals": {...}}. Columns follow the form: description (a), date acquired (b), date sold (c), proceeds (d), cost or other basis (e), code (f), adjustment (g), gain or loss (h). Box: A/D when the broker reported proceeds and basis, B/E when proceeds only, C/F when no broker form - set per row in reporting {row_id: value} or for all rows with default_reporting. Use to draft the schedule from computed disposals. Not a filing: check the current form instructions. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"} (for example {"error": "disposals must be a non-empty list from build_lots"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
| Name | Type | Req | Description |
|---|---|---|---|
| default_reporting | string | – | proceeds_and_basis, proceeds_only or none (default). |
| disposals | array | yes | rows from build_lots. |
| reporting | object | – | per-row override: proceeds_and_basis, proceeds_only or none. |
| tax_year | integer | yes | the calendar year of the disposals to include. |
| whole_dollars | boolean | – | round each row to whole dollars as the form permits. |
Structured output declared, but exposes no named fields.
No examples provided.
ledger_lint Ledger Lint ~230
Find the problems that break a lot build: missing values, duplicates, negative balances. FREE. Typical input {"ledger": <rows from parse_transactions>} returns {"issues": [{"severity": "error", "row": "cb12", "issue": "sell of 0.5 BTC exceeds balance 0.2 in account coinbase"}], "balances": {"coinbase": {"BTC": "0.2"}}, "counts": {...}}. Balances are running quantities per account and asset in time order, ignoring transfers' fiat values. Use after parse_transactions and before build_lots. Not a tax check: it checks the ledger's arithmetic consistency only. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"}. Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
| Name | Type | Req | Description |
|---|---|---|---|
| ledger | array | yes | canonical rows (ts, type, asset, qty, fiat_value, fees, account...). |
Structured output declared, but exposes no named fields.
No examples provided.
lp_position_math Lp Position Math ~367
Impermanent loss, hold-vs-pool value and basis split for a two-asset constant-product pool. FREE. Typical input {"deposit": {"asset_a": "ETH", "qty_a": "1", "price_a": "2000", "asset_b": "USDC", "qty_b": "2000", "price_b": "1"}, "current_prices": {"ETH": "3000", "USDC": "1"}} returns {"il_pct": "-2.02", "hold_value": "5000.00", "pool_value": "4898.98", "deposit_value": "4000.00", "basis_split": {...}}. The pool value assumes x*y=k with no fees; add fees_earned_fiat to see the net. The basis split is the deposit's fiat value at deposit, allocated by each side's share, which is the arithmetic a lot engine needs if the LP position is treated as one asset. Use for DeFi position reviews. Not a determination of whether the deposit is a taxable exchange. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"} (for example {"error": "deposit and current_prices must be objects"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
| Name | Type | Req | Description |
|---|---|---|---|
| current_prices | object | yes | {asset: price} for both assets now. |
| deposit | object | yes | asset_a, qty_a, price_a, asset_b, qty_b, price_b at the time of deposit. |
| fees_earned_fiat | number | – | fees accrued to the position, in fiat. |
Structured output declared, but exposes no named fields.
No examples provided.
match_transfers Match Transfers ~301
Pair withdrawals with the deposits that received them between your own accounts. FREE. Typical input {"ledger": <rows>, "window_minutes": 1440} returns {"pairs": [{"out": "kr91", "in": "cb14", "asset": "BTC", "from": "kraken", "to": "coinbase", "network_fee": "0.0001", "minutes": 42.0}], "unmatched": {"transfer_out": [...], "transfer_in": [...]}}. A pair needs the same asset, a different account, the deposit inside the window after the withdrawal, and a quantity within tolerance_pct of the amount sent net of the fee. Use before build_lots so basis and holding period move with the coins instead of being treated as a sale. Not for transfers to third parties: those stay unmatched and should be typed gift_out or sell. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"}. Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
| Name | Type | Req | Description |
|---|---|---|---|
| ledger | array | yes | canonical rows. |
| tolerance_pct | number | – | allowed quantity difference in percent after the fee (default 1). |
| window_minutes | integer | – | how long after the withdrawal the deposit may land (default one day). |
Structured output declared, but exposes no named fields.
No examples provided.
parse_transactions Parse Transactions ~358
Normalise an exchange CSV export into the canonical ledger rows. FREE. Supports the Coinbase transaction-history export (Transaction Type / Asset / Quantity Transacted columns), the Kraken ledgers export (txid / refid / type / asset / amount / fee) and a generic CSV with the canonical columns ts, type, asset, qty, fiat_value, fee_qty, fee_asset, fee_fiat, counter_asset, counter_qty, account, id. Typical input {"csv_text": "...", "source_hint": "coinbase"} returns {"rows": [...], "detected": "coinbase", "unrecognised": [...], "warnings": [...]}. Rows it cannot read are returned under unrecognised with the reason, never dropped silently. In every row qty is the whole amount that entered or left the account; when a fee was paid in the same asset, fee_qty is the part of qty that was the fee. Use before ledger_lint and build_lots. Not for other exchanges: convert those to the generic columns first. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"} (for example {"error": "csv_text must be the CSV file contents"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | account label to stamp on every row (defaults to the source name). |
| csv_text | string | yes | the CSV file contents (up to 2 MB). |
| source_hint | string | – | coinbase, kraken or generic; empty to detect from the header. |
Structured output declared, but exposes no named fields.
No examples provided.
reconcile_1099da Reconcile 1099Da ~378
Diff the broker's 1099-DA lines against the computed disposals. PREMIUM (license). Typical input {"disposals": <from build_lots>, "form_rows": [{"asset": "BTC", "date_sold": "2026-03-04", "qty": "0.5", "proceeds": "31000", "basis": "", "account": "coinbase"}]} returns {"matched": [...], "broker_missing_basis": [...], "basis_mismatch": [...], "proceeds_mismatch": [...], "unmatched_form_rows": [...], "unmatched_disposals": [...]}. A line matches a disposal on the same account (when given), asset and sale date with quantity and proceeds inside the tolerances; several lots sold in one order are summed first. Use when the form arrives and the basis column is blank for coins that came from your own wallet. Not a substitute for the broker's statement. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"} (for example {"error": "disposals must be a non-empty list from build_lots"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
| Name | Type | Req | Description |
|---|---|---|---|
| disposals | array | yes | rows from build_lots. |
| form_rows | array | yes | 1099-DA lines: asset, date_sold, qty, proceeds, basis (may be blank), account (optional), id (optional). |
| money_tolerance | number | – | allowed proceeds/basis difference in fiat units (default 1.00). |
| qty_tolerance_pct | number | – | allowed quantity difference in percent (default 0.5). |
Structured output declared, but exposes no named fields.
No examples provided.
wash_window_check Wash Window Check ~332
Flag loss disposals with a repurchase of the same asset inside the window. FREE. Typical input {"disposals": <from build_lots>, "acquisitions": [{"asset": "ETH", "ts": "2026-02-10T10:00:00Z", "qty": "2"}]} returns {"flags": [{"row": "cb7", "asset": "ETH", "loss": "-410.00", "repurchases": [...]}], "rule_status": "..."}. The 30-day window before and after the sale is the one IRC 1091 uses for stock or securities; as checked on the verification date that statute had not been extended to digital assets that are not securities, so the output is a heads-up for planning, not an adjustment. Use when reviewing loss harvesting. Not a determination that any rule applies. Errors: on invalid, missing, or malformed input this tool never raises a protocol error — it returns {"error": "<what is wrong and how to fix it>"} (for example {"error": "disposals and acquisitions must be lists"}). Every call is read-only and idempotent, so after correcting the input it is always safe to retry.
| Name | Type | Req | Description |
|---|---|---|---|
| acquisitions | array | yes | purchases/income rows with asset, ts, qty (ledger rows work as-is). |
| disposals | array | yes | rows from build_lots (uses asset, disposed_at, gain, row). |
| window_days | integer | – | days before and after the loss disposal to scan (default 30). |
Structured output declared, but exposes no named fields.
No examples provided.
What is the Moltline TaxLots MCP server?
Moltline TaxLots is an MCP server listed in the public MCP registry as com.moltlinestudio/taxlots. Crypto cost-basis lots (FIFO/LIFO/HIFO/specific-ID), Form 8949 rows, 1099-DA diff. 5 of 8 free. This page covers its hosted endpoint (https://mcp.moltlinestudio.com/taxlots).
Is the Moltline TaxLots MCP server safe to use?
Moltline TaxLots scores 79 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 Moltline TaxLots MCP server expose?
Moltline TaxLots exposes 8 tools: parse_transactions, ledger_lint, match_transfers, build_lots, form_8949_rows, and 3 more. Their descriptions and schemas cost roughly 2,864 tokens of context every time the server is loaded.
Does the Moltline TaxLots MCP server require authentication?
No. We connected to Moltline TaxLots without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the Moltline TaxLots MCP server still maintained?
Moltline TaxLots is still listed as active in the MCP registry. We last reached this channel on 21 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.