MCP App Store
by KeenEthics

Overview

Kryptos brings your crypto portfolio, transaction history, tax figures and accounting ledger into ChatGPT, across 5,000+ exchanges, wallets and blockchains. Ask what you hold and what it is worth, search your transaction history by asset, wallet, label or date, review DeFi positions and NFT collections, and look at the ledger detail behind any trade. Kryptos also finds the data problems that make crypto tax wrong — missing prices, missing cost basis, sells with no matching purchase, balances that disagree with the ledger, wallets you never connected — and lets you fix them in the same conversation: recategorise a transaction, correct a price, merge a transfer that detection missed, or add a trade that never made it into an export. Finance teams can map transactions to a chart of accounts, apply categorisation rules, generate double-entry journals and push them to Xero, QuickBooks or Softledger. You sign in to Kryptos with OAuth and grant access to one workspace. Kryptos never asks for exchange API keys or wallet private keys in the conversation. It reads and records only — no tool can send, swap, withdraw, deposit or trade any asset. Requires a Kryptos account.

Tools

add_transaction_comment

ChatGPT
Append a comment to a transaction — an audit note, not a change to the data.

add_wallet

ChatGPT
Add a blockchain wallet by its public address. Call get_integration_metadata first for the chain’s provider id. Starts an initial sync of the address’s on-chain activity unless skipInitialSync is set. Enterprise workspaces must supply primaryPortfolioId. Takes public addresses only — never API keys, secrets or passwords; exchange accounts are connected in the Kryptos web app.

apply_rules

ChatGPT
Re-evaluate every rule against all ledgers and regenerate all journals. Asynchronous — returns a task id; poll get_task. Rule-assigned legs are re-derived; manually assigned legs are kept. Journals already pushed to an ERP are not re-sent — push them again with sync_to_erp and explicit transactionIds.

assign_address_to_contact

ChatGPT
Link a chain address to a contact. This resolves the matching counterparty and writes the contact name onto every ledger leg involving the address — the step that makes transaction history readable.

assign_ledger_accounts

ChatGPT
Assign COA codes to a single ledger leg and regenerate its journal immediately. Codes come from list_chart_of_accounts; find untagged legs with list_coa_ledgers(missingCoa=true).

bulk_assign_ledger_accounts

ChatGPT
Assign the SAME COA codes across many transactions at once. Takes transaction ids, not ledger ids — every eligible leg on each transaction is tagged, so the transactions should be of one kind. Queues a recompute rather than regenerating inline; poll get_task.

bulk_update_transaction_labels

ChatGPT
Apply the same label, description, notes or tags to many transactions at once (data holds the fields). One id in a locked period rejects the whole batch.

cancel_sync_job

ChatGPT
Cancel a running sync.

cancel_task

ChatGPT
Cancel a running background job.

check_contact_exists

ChatGPT
Whether a contact name is already taken (case-insensitive). Call before create_contact to avoid duplicates.

check_spam_status

ChatGPT
Look up the spam status of many asset/chain pairs at once. pairs is a list of { assetId, chainId }.

connect_erp

ChatGPT
Start connecting Xero or QuickBooks. Returns an OAuth authorization URL the user must open in a browser and approve — the connection completes when the provider redirects back. Takes no credentials; Softledger, which uses client credentials, is connected in the Kryptos web app.

create_chart_of_account

ChatGPT
Create a custom GL account that exists only in Kryptos. Journals using it cannot be pushed to an ERP — create ERP accounts with create_erp_accounts instead.

create_contact

ChatGPT
Create a contact. Creating one does not label any transactions by itself — call assign_address_to_contact to link an address, which is what writes the name onto ledger legs.

create_contacts_upload_url

ChatGPT
Get a 15-minute signed URL to upload a contacts CSV (up to 5 MB, 500 rows, the Kryptos contacts template: Name,Email,Telegram,Country,Postcode,Blockchain,Address) for import_contacts_from_csv. Only for clients that can run shell commands. Steps: (1) call this; (2) PUT the file: curl -X PUT -H "Content-Type: text/csv" --upload-file <local file> "<uploadUrl>"; (3) call import_contacts_from_csv with the returned gcsPath. Requires the ADMIN or OWNER role.

create_csv_upload_url

ChatGPT
Get a 15-minute signed URL to upload a CSV, XLS or XLSX file of any size up to maxBytes straight to Kryptos storage. Only for clients that can run shell commands. Steps: (1) call this; (2) PUT the file: curl -X PUT -H "Content-Type: <contentType>" --upload-file <local file> "<uploadUrl>"; (3) call register_csv_upload with the returned filePath; (4) call start_csv_import with the uploadId.

create_custom_rule

ChatGPT
Create a categorisation rule. Existing rules are not re-evaluated automatically — call apply_rules afterwards to backfill. Use list_chart_of_accounts for valid coa codes and get_supported_labels for label.

create_default_rules

ChatGPT
Seed the standard rule set. Only seeds when the workspace has no default rules (new workspaces already have them), so it will not restore one that was deleted.

create_erp_accounts

ChatGPT
Create or update GL accounts in the ERP itself (batch, up to 500; existing codes are updated). Writes to the external system — confirm with the user. Check the result for per-account errors.

create_manual_transaction

ChatGPT
Create a transaction by hand. Call get_supported_labels for a valid label and search_assets for each assetId — labels are a closed set and assetId must be a real catalog id, not a ticker. A trade needs both incomingAssets and outgoingAssets; a deposit only incoming; a withdrawal only outgoing.

create_portfolio

ChatGPT
Create a portfolio to group integrations.

delete_chart_of_account

ChatGPT
Delete a GL account by code. Any ledger or rule referencing it has that reference nulled, so journals will need regenerating. Previously this tool ran with NO scope check at all.

delete_contact

ChatGPT
Delete a contact. Unlinks its addresses, restores the affected counterparties to their previous state and strips the aliases from ledgers. Requires ADMIN or OWNER.

delete_integration

ChatGPT
Disconnect an integration. Destructive: it queues a worker that removes the transactions, ledgers and holdings that came from it, which changes cost basis and tax figures. Confirm with the user first.

delete_portfolio

ChatGPT
Delete a portfolio. Confirm with the user — integrations assigned to it are affected.

delete_rule

ChatGPT
Soft-delete a rule (sets isWorking=false). Legs it already tagged keep their accounts until apply_rules re-evaluates them.

delete_transactions

ChatGPT
Permanently delete transactions. Destructive and not undoable: it removes their ledgers and journals and re-runs transfer detection, which changes cost basis and tax figures. Confirm the exact ids with the user first.

detect_wallet_chains

ChatGPT
Detect which EVM chains a wallet address has activity on. Use before add_wallet to avoid connecting empty chains.

disconnect_erp

ChatGPT
Disconnect an ERP. Destructive: wipes the chart of accounts that came from it. Confirm with the user.

edit_transaction

ChatGPT
Restate a transaction’s legs — assets, quantities, prices — and reprocess it so balances, cost basis and journals are recomputed. This is the correct way to fix a wrong amount or a wrong fiat value; there is no transaction-level value override in v2. Send the complete leg list, not a partial one.

generate_report

ChatGPT
Start generating a tax report. Asynchronous — returns a task id; poll get_task, then get_report_link for the download. Accuracy depends on reconciliation being clean, so check get_reconciliation_summary first.

get_accounting_breakdown

ChatGPT
Derived breakdown over a date range: income, expenses, gifts, other gains and unmatched items. Both bounds are required; for a tax year use its start and end. Refused, with the reason, if the range touches a tax year the plan does not cover.

get_accounting_settings

ChatGPT
Resolved accounting configuration actually in force: cost-basis method, fiscal-year boundaries and jurisdiction toggles.

get_accounting_status

ChatGPT
When gains were last calculated and whether any output exists yet. Check this before trusting tax figures — a stale calculation is the usual reason numbers look wrong.

get_asset_graph

ChatGPT
A single asset's value and cost-basis over time.

get_asset_holding

ChatGPT
Detail for a single asset the workspace holds, including its per-wallet distribution. Resolve assetId with search_assets first.

get_asset_transaction_counts

ChatGPT
Transaction count per asset — use before mark_spam to see how much data marking an asset would hide.

get_calculated_balances

ChatGPT
Balances reconstructed from the ledger rather than reported by the provider. Compare against get_holdings to find sync gaps; get_missing_balances does that comparison for you.

get_contact

ChatGPT
One contact by id, with its linked chain addresses.

get_credential_status

ChatGPT
Validity and expiry of one integration’s credentials.

get_csv_upload

ChatGPT
Status and row counts for one CSV upload.

get_csv_upload_errors

ChatGPT
Signed download URL for the parse-error report of a CSV upload. Returns 404 when the file parsed cleanly.

get_dashboard

ChatGPT
Full portfolio dashboard: net worth, cost basis, unrealised gains, 24h change, top holdings, allocation by asset and by wallet type, and counts of transactions/integrations/NFTs/DeFi positions. The best single call for "how is my portfolio doing".

get_dashboard_totals

ChatGPT
Just the portfolio totals — net worth, liquid holdings, cost basis, unrealised gains and 24h change. Use this instead of summing get_holdings, which only ever returns one page.

get_defi_holdings

ChatGPT
DeFi positions across protocols. Filter by category to get only staking, lending, farming, perpetuals and so on — there is no separate tool per category.

get_defi_networks

ChatGPT
Distinct networks the workspace holds DeFi positions on — use to populate a filter before calling get_defi_holdings.

get_defi_totals

ChatGPT
DeFi overview totals: total balance, amount borrowed, earned rewards and number of connected protocols.

get_email_verification_status

ChatGPT
Whether the current user's email address has been verified.

get_erp_connection_status

ChatGPT
Whether an ERP is connected and which organisation is selected.

get_holdings

ChatGPT
List token holdings for the workspace with live prices. Returns one row per asset with quantity, market value, cost basis and unrealised gain. For portfolio-wide TOTALS use get_dashboard_totals — the totals of a single page of this list are not the portfolio total. Use get_defi_holdings for DeFi positions and get_nft_holdings for NFTs; neither appears here.

get_integration

ChatGPT
Detail for one integration by id. Previously this filtered the full list client-side; it is now a direct lookup.

get_integration_assets

ChatGPT
Per-asset breakdown held in one integration.

get_integration_counts_by_provider

ChatGPT
Number of active integrations per provider.

get_integration_metadata

ChatGPT
Catalog of supported providers with the credential fields each one needs. Call this before add_wallet to learn the required credentialKind and fields for a provider.

get_integration_missing_balances

ChatGPT
Per-asset differences between what this integration reports and what the ledger implies — the per-wallet version of get_missing_balances.

get_integration_sync_status

ChatGPT
Most recent sync time for the workspace — use to tell whether data is stale.

get_integrations

ChatGPT
List the connected wallets and exchanges (integrations) in the workspace, with sync state and asset counts.

get_interacted_assets

ChatGPT
Assets the workspace has ever transacted in, with fuzzy search. Useful for building an asset filter that only offers assets actually present.

get_ledger

ChatGPT
One ledger leg by id.

get_liabilities

ChatGPT
Liability positions (borrowed amounts). Reported separately from holdings, and already netted out of dashboard net worth.

get_live_rates

ChatGPT
Current market rates for the top crypto assets, ranked. This is a paged listing, not a lookup — it takes no symbol filter. To price a specific asset use search_assets, or read market value from get_holdings.

get_lock_boundaries

ChatGPT
Valid period-end dates a lock may be placed on.

get_missing_balances

ChatGPT
Assets where the provider-reported balance disagrees with the ledger-derived one. A negative difference implies a missing deposit, positive implies a missing withdrawal. The clearest signal that transaction history is incomplete.

get_missing_integrations

ChatGPT
Counterparties that appear in transactions but belong to no connected wallet — candidates for wallets the user should connect. Rows are groups, not addresses: when the counterparty is a recognised exchange every address for that exchange collapses into ONE row (is_exchange_address=true, provider_name set, address null), because a single exchange rotates many deposit addresses and each would otherwise repeat the same "connect X" suggestion. An unrecognised address stays its own row (is_exchange_address=false, address set, provider_name null). Exchanges the workspace has already connected are excluded. id is an opaque group key, NOT a counterparty id — to dismiss a row pass each of its counter_party_ids to ignore_counterparty.

get_missing_prices

ChatGPT
Ledger legs with no resolved price, grouped by asset and wallet. An unpriced leg has no fiat value, so it silently understates gains. Fix with update_ledger.

get_missing_purchases

ChatGPT
Sells with no prior buy — the running balance goes negative, meaning an acquisition is missing. Usually an unconnected wallet or an incomplete import. Grouped by asset and wallet.

get_nft

ChatGPT
Detail for one NFT by contract address and token id.

get_nft_collections

ChatGPT
NFT holdings grouped by collection, with per-collection counts and value.

get_nft_holdings

ChatGPT
NFTs held by the workspace, with floor-price estimates.

get_open_lots

ChatGPT
Open (unsold) lots as at a point in time, with their cost basis. Use to answer "what is my basis in X right now".

get_portfolio

ChatGPT
Detail for one portfolio.

get_portfolio_graph

ChatGPT
Portfolio value over time as a time series. Replaces the legacy day-count parameter with a fixed range.

get_recalculation_status

ChatGPT
Progress of a COA journal regeneration, by task id. Without a task id, list_tasks(operationType: "coa-pipeline", limit: 1) shows whether one is running. sync_to_erp is refused while one is.

get_reconciliation_summary

ChatGPT
Review-page badge counts and an overall data-quality percentage: how many transactions are missing prices, missing purchases, uncategorised, high-PnL unreviewed, or point at unidentified addresses. Start here before pulling any specific list.

get_report_catalog

ChatGPT
Report types that can be generated for this workspace’s country, per tax year. Call before generate_report — the available set is country-specific.

get_supported_labels

ChatGPT
Canonical transaction labels with their transaction type and tax treatment. Call this before update_transaction_label or create_custom_rule — labels are a closed set and an invalid one is rejected.

get_sync_job

ChatGPT
Status and progress of one sync job.

get_task

ChatGPT
Status, progress and result of one background job. Poll this after any tool that returns a task id — do not assume queued work has finished.

get_task_logs

ChatGPT
Audit log for a background job — use to explain why one failed.

get_tax_loss_harvesting

ChatGPT
Underwater positions and the loss that would be realised by selling them — a simulation, nothing is changed. Note wash-sale/superficial-loss rules vary by jurisdiction and are not all modelled, so treat this as a starting point rather than advice.

get_tax_report_disposals

ChatGPT
Lot-level disposal drill-down for a fiscal year: each sale matched against the acquisitions it consumed, with per-lot gain. The audit trail behind the year’s gain total. Available only for tax years the workspace’s plan covers; for any other year the call returns an error code saying why (NO_TAX_YEAR_PLAN, ENTERPRISE_PLAN_REQUIRED or PLAN_TRANSACTION_LIMIT_EXCEEDED).

get_tax_settings

ChatGPT
Tax configuration: cost-basis method, fiscal year boundaries and jurisdiction-specific toggles. These drive every gain calculation.

get_transaction

ChatGPT
One transaction with its ledger legs, by id.

get_transaction_ledgers

ChatGPT
One transaction's ledger legs. Each leg carries its own asset, quantity, price and direction — this is the level at which value and cost basis are computed. Cost basis, proceeds and gains are never returned by this tool (always null) — they are not zero. For a tax year the plan covers, read gains from get_tax_report_disposals or generate the report.

get_transaction_lots

ChatGPT
The acquisition lots matched against this transaction’s disposals: for each lot the asset, quantity, acquisition and disposal dates, and the transaction that acquired it — which purchases a sale used up. Cost basis, proceeds and gain are not returned by this tool (always null, which does not mean zero); per-lot gains are in get_tax_report_disposals.

get_transaction_summary

ChatGPT
Workspace-wide transaction counts: total, per type, and the missing-price / missing-purchase badge counts. Computed server-side over every transaction — do not try to derive this by paging get_transactions.

get_transaction_types

ChatGPT
Transaction types, each with the labels that belong to it.

get_transactions

ChatGPT
List transactions with their ledger legs. Supports filtering by label, type, wallet, asset, address, time window, value and reconciliation flags. Spam and Ignore-labelled transactions are excluded unless you opt in. Cost basis, proceeds and gains are never returned by this tool (always null) — they are not zero. For a tax year the plan covers, read gains from get_tax_report_disposals or generate the report.

get_user_info

ChatGPT
The authenticated user: name, email, country, base currency and preferences. For the workspace the session is bound to, use get_workspace; for a portfolio summary, get_dashboard.

get_workspace

ChatGPT
Workspace settings: name, type, country, base currency, cost-basis method, timezone and last-sync timestamps.

get_year_end_lots

ChatGPT
Open lots at the start and end of a fiscal year — the carried-forward cost basis that ties one tax year to the next. Only for tax years the plan covers; otherwise refused with the reason.

ignore_counterparty

ChatGPT
Mark a counterparty as ignored so it stops appearing in the missing-integrations review list. Use for addresses that will never be named — burn addresses, dust senders. id must be a counter_parties id: from get_missing_integrations take an entry of the row's counter_party_ids, NOT its id, which is an opaque group key. An exchange row needs every one of its counter_party_ids ignored.

import_contacts_from_csv

ChatGPT
Create contacts in bulk from a CSV in Kryptos storage — uploaded with create_contacts_upload_url, or through the web app. Requires the ADMIN or OWNER role.

list_chart_of_accounts

ChatGPT
The workspace chart of accounts. Enterprise workspaces only — a retail workspace gets 403 ENTERPRISE_REQUIRED.

list_coa_ledgers

ChatGPT
Ledger legs from the accounting perspective. Filter to those still missing a COA code to find what blocks a clean journal set, optionally within a date window (e.g. the month being closed). meta.total is the count.

list_contact_addresses

ChatGPT
Chain addresses linked to a contact.

list_contacts

ChatGPT
User-created contacts — named people and businesses.

list_counterparties

ChatGPT
Auto-detected counterparties — addresses the workspace has transacted with, each with a transaction count and whether it is already linked to a contact. Filter to unresolved ones to find what is worth naming.

list_countries

ChatGPT
Supported countries with their tax rules, allowed cost-basis methods and default currency. Use to validate a country before creating a workspace or changing tax settings.

list_csv_uploads

ChatGPT
CSV import history with per-file status.

list_erp_account_classes

ChatGPT
Valid account classes for the platform — the allowed values when creating accounts. Each ERP has its own enum.

list_erp_tenants

ChatGPT
Organisations/companies available in the connected ERP. Xero can expose several; QuickBooks one; Softledger returns its locations, with isRoot marking the consolidation root ("Global").

list_erps

ChatGPT
ERP integrations available to connect (Xero, QuickBooks, Softledger).

list_journals

ChatGPT
Generated double-entry journals with their ERP sync state (syncedToERP, erpError). Filter by the transaction date with startTime/endTime — e.g. a month being closed — and by sync state. A transaction with an untagged leg has no journal; find those with list_coa_ledgers(missingCoa: true).

list_ledgers

ChatGPT
Ledger legs across all transactions. Use when the question is about individual legs (missing prices, per-asset flows) rather than whole transactions. Cost basis, proceeds and gains are never returned by this tool (always null) — they are not zero. For a tax year the plan covers, read gains from get_tax_report_disposals or generate the report.

list_mfa_factors

ChatGPT
Second factors enrolled on the account. Read-only: enrolling and removing factors requires an OTP-confirmed flow not exposed here.

list_period_locks

ChatGPT
Filed/frozen periods. Transactions dated inside a locked period cannot be edited or deleted — this is why an edit may be rejected.

list_portfolios

ChatGPT
Portfolios in the workspace. Enterprise workspaces must assign every integration to one, so call this before add_wallet there.

list_reports

ChatGPT
Reports already generated for this workspace, with their status.

list_rules

ChatGPT
Categorisation rules in rank order — the order they are evaluated in, first match winning.

list_spam

ChatGPT
Assets marked as spam in this workspace. Spam assets are hidden from holdings, transactions and reports by default.

list_sync_jobs

ChatGPT
Sync history for the workspace, newest first.

list_tasks

ChatGPT
Background jobs for the workspace — syncs, recomputes, report generation, ERP pushes — with status and progress.

list_tax_report_years

ChatGPT
Fiscal years that have a computed tax report — use to populate a year picker.

list_tax_reports

ChatGPT
Per-fiscal-year capital-gains summaries: proceeds, cost basis, realised gains and losses, disposal count and missing-purchase count. Income and expenses are not in it — use get_accounting_breakdown with the year’s bounds. year is the calendar year the tax year starts in. A year the plan does not cover comes back as a stub with locked: true and a lockReason.

list_workspaces

ChatGPT
Workspaces the user belongs to. Note the MCP session is bound to a single workspace at consent — every other tool acts on that one regardless of what this returns.

lock_period

ChatGPT
Freeze a period as filed. Afterwards no transaction dated within it can be changed. Confirm with the user — unlocking is a separate deliberate act.

mark_spam

ChatGPT
Mark or unmark assets as spam. Marking is chain-scoped, so the same ticker on another chain is unaffected. entries is a list of { assetId, chainId, isSpam }. Airdropped scam tokens are the usual case.

merge_transactions

ChatGPT
Merge several transactions into one — typically the two sides of a transfer between your own wallets that detection missed.

preview_csv_upload

ChatGPT
Read what an uploaded file holds: its first row as headers plus the next rows, every cell as text (the first sheet of a spreadsheet). Use it to check a file's columns, date format or source exchange before or after importing it.

register_csv_upload

ChatGPT
Record a file PUT to a create_csv_upload_url URL as an upload, so start_csv_import can process it. Call it once per file, after the PUT has succeeded.

rename_journal

ChatGPT
Rename a journal. Marks it as manually titled so a later recompute preserves the name.

reorder_rules

ChatGPT
Set the rank of many rules at once. Because the first match wins, reordering changes which account a leg gets — call apply_rules afterwards to make existing journals reflect it.

resync_all_integrations

ChatGPT
Re-sync every matching integration in the workspace. Defaults to incremental. Expensive and rate-limited by providers — confirm with the user before calling. Pass syncMode 'resync_from_start' to wipe and re-import each one from scratch; that is far heavier still and destroys connector-sourced data, so confirm explicitly.

resync_integration

ChatGPT
Re-sync one integration. Defaults to incremental (identical to sync_integration) — it is NOT destructive unless you ask for it. To actually re-import from scratch pass syncMode 'resync_from_start', which deletes the integration's prior data first; to backfill a gap without deleting, pass startTime.

search_assets

ChatGPT
Search the global asset catalog and return ranked candidates. Use this to find the assetId required by create_manual_transaction, edit_transaction and update_ledger. Prefer contractAddress when you have one — it is an exact match. A bare ticker in q is fuzzy and can match counterfeit tokens that reuse the symbol, so confirm the result before writing it to a transaction. An empty query returns the top assets by market rank.

search_contacts_and_wallets

ChatGPT
One search across contacts, counterparties and wallets. Use when the user names something and it is unclear which of the three they mean.

search_integrations

ChatGPT
Fuzzy search integrations by alias, address, account name or provider.

select_erp_tenant

ChatGPT
Choose which ERP organisation to sync with (Xero), or set the fallback location (Softledger). For Softledger this does NOT decide where journals post — that comes from each journal's own lines — it only covers journals whose accounts carry no location at all.

split_transaction

ChatGPT
Split a merged transfer, swap or bridge back into its constituent transactions. The inverse of merge_transactions.

start_csv_import

ChatGPT
Begin processing uploaded CSV/XLSX files — from upload_csv, register_csv_upload or the web app. Asynchronous; poll get_csv_upload.

sync_coa_from_erp

ChatGPT
Pull the chart of accounts from the ERP into Kryptos, reconciling accounts deleted upstream.

sync_integration

ChatGPT
Fetch new activity for one integration since its last sync. Asynchronous — poll get_sync_job with the returned id. Use resync_integration to re-import from scratch.

sync_to_erp

ChatGPT
Push journals to the ERP. Asynchronous — returns a task id; poll get_task (a partial_success result lists the journals that failed). Writes to the external accounting system — confirm with the user. Refused while journals are being regenerated. Only journals whose accounts were synced from that ERP can be pushed, and the workspace base currency must match the ERP organisation’s.

test_integration_credentials

ChatGPT
Check whether an existing integration’s stored credentials still work. Use when a sync is failing to tell an expired key from a provider outage.

trigger_accounting_recompute

ChatGPT
Recalculate cost basis and gains now, inside this request. It can take long on a large workspace, and the call may time out while the work carries on. Imports and edits already start a background recalculation; prefer trigger_recompute, which runs in the background and returns a task id.

trigger_recalculation

ChatGPT
Regenerate all COA journals. Asynchronous — returns a task id; poll get_recalculation_status with it. By default it also re-derives every rule-assigned leg’s COA codes; manually assigned legs are kept.

trigger_recompute

ChatGPT
Re-run the post-sync recompute pipeline (balances, transfer detection, accounting, COA). Asynchronous — it returns a task id; poll get_task for progress.

unassign_address_from_contact

ChatGPT
Unlink an address from a contact. Restores the counterparty’s previous state and removes the alias from ledger legs. Note the address id (aid) is a path parameter in v2, not a body field.

unlock_period

ChatGPT
Unfreeze a filed period so its transactions can be edited again. Doing so can change already-filed figures — confirm with the user.

update_contact

ChatGPT
Update a contact. Renaming re-aliases every ledger leg that referenced the old name, so history changes too.

update_integration

ChatGPT
Rename an integration, move it between portfolios, or enable/disable its syncing.

update_ledger

ChatGPT
Correct one ledger leg — most often a missing or wrong price, which is how a transaction’s fiat value is fixed in v2. Read the leg first with get_transaction_ledgers. A price needs priceCurrency and priceTimestamp (normally the leg’s own timestamp); a price in another currency is converted onto the workspace currency. Regenerates the transaction’s journal. GL codes are set with assign_ledger_accounts, not here.

update_portfolio

ChatGPT
Rename a portfolio or change its default flag.

update_rule

ChatGPT
Change a rule. Already-generated journals are unaffected until apply_rules runs.

update_tax_settings

ChatGPT
Change the workspace’s advanced tax toggles and tag exceptions. These re-derive historical gains and trigger a recompute — confirm with the user, and expect previously-filed figures to change. The cost-basis METHOD is NOT settable here; it lives on the workspace record and is constrained by the country.

update_transaction_label

ChatGPT
Change a transaction’s date/time, label, description, notes or tags, or dismiss a reconciliation flag. Does not touch amounts or prices — use edit_transaction for those. Changing a label can change tax treatment; moving the date can move the transaction into another tax year and is refused inside a locked period.

update_user_profile

ChatGPT
Update the current user's own name, client type or language. Country, base currency, timezone and cost-basis method are WORKSPACE settings, not user fields — use get_workspace / update_tax_settings for those. Email and password need OTP-confirmed flows not available here.

upload_csv

ChatGPT
Upload a CSV file by passing its text — for files up to 512 KB (a few thousand rows). Pass the file content exactly as it is: every row, unchanged, header included. The file is stored as uploaded; call start_csv_import with the returned uploadId to process it. For larger files or XLSX, use create_csv_upload_url if you can run shell commands; otherwise ask the user to upload the file in the Kryptos web app.

Capabilities

Writes

Example Prompts

Click any prompt to copy it.

App Stats

150

Tools

3

Prompts

ChatGPT

Platforms

Works with

ChatGPT

Data refreshed daily