Appearance
Blockchain Addresses
Reference for the 18 CryptoComply MCP tools in the Blockchain Addresses family.
Tools in this group
blockchain_address_alert_listblockchain_address_bulk_screenblockchain_address_createblockchain_address_exposureblockchain_address_inquiry_listblockchain_address_inquiry_retrieveblockchain_address_listblockchain_address_notes_createblockchain_address_notes_deleteblockchain_address_notes_listblockchain_address_notes_updateblockchain_address_retrieveblockchain_address_risk_changesblockchain_address_screenblockchain_address_tag_assignblockchain_address_tag_createblockchain_address_tag_listblockchain_address_update
blockchain_address_alert_list
Read-only: yes.
List alerts associated with a specific blockchain address, most recent first. Only BlockchainAddressAlert rows that share the address are returned; the general alert_list covers all alert types across the org.
Parameters
organization_id(int, required) — Organization the address belongs to.address_id(int, required) — Blockchain address id.sort_by(Literal, optional) — Sort order. Prefix with '-' for descending (e.g. '-created_at' for newest first).limit(int, optional) — Max results (1-100).offset(int, optional) — Results to skip for pagination.
blockchain_address_bulk_screen
Read-only: no.
Trigger fresh vendor screening across a batch of blockchain addresses in one call. Useful when an analyst needs to re-screen N addresses (e.g. all ETH addresses flagged as overdue by last_screened_before).
Two-step write tool — billed by the vendor for every address screened. Each address is processed individually; per-address failures don't abort the batch. Capped at 100 addresses per call.
On success: {status: "ok", succeeded: [{address_id, inquiry_id}], failed: [{address_id, error}]}.
Parameters
organization_id(int, required) — Organization the addresses belong to.address_ids(list, required) — Address ids to screen.confirm_token(str | None, optional) — Token from a prior dry-run call. Omit on the first call.
blockchain_address_create
Read-only: no.
Register a new blockchain address under an organization.
Two-step write tool. First call without confirm_token returns a dry-run preview + a 60-second token. Second call with the same arguments + confirm_token applies the change. The dry-run response includes _meta.ui.resourceUri = "ui://diff_confirm" for clients that render the MCP Apps iframe; clients without App support read preview as plain text and ask the user verbally.
On confirm, queues an initial vendor screening (Chainalysis / TRM) for the address — pass skip_initial_screening=true to defer.
On success: {status: "ok", address_id, address}.
Parameters
organization_id(int, required) — Organization to attach the address to.address(str, required) — The on-chain address (e.g. 0x... for EVM).name(str, optional) — Human-readable label for the address.blockchain(str | None, optional) — Blockchain code (BTC, ETH, BNB, etc.). Omit to auto-detect.skip_initial_screening(bool, optional) — Skip the initial vendor screening that normally fires on creation.confirm_token(str | None, optional) — Token from a prior dry-run call. Omit on the first call.
blockchain_address_exposure
Read-only: yes.
Get the vendor-agnostic exposure breakdown for a blockchain address: total USD value at risk, per-category breakdown (sanctioned entity, darknet market, mixer, exchange, …) and whichever vendor (Chainalysis / TRM) ran the last inquiry. Pulls from the address's most recent BlockchainAddressInquiry; the as_of field tells you how stale the data is. Re-screen with blockchain_address_screen if needed.
Parameters
organization_id(int, required) — Organization the address belongs to.address_id(int, required) — Blockchain address id.
blockchain_address_inquiry_list
Read-only: yes.
List vendor screening history (BlockchainAddressInquiry rows) for an address, most recent first. Each row carries the vendor, risk level + label, whether the risk changed from the previous inquiry, total USD exposure, and HTTP code. Use to audit how risk evolved across screenings.
Parameters
organization_id(int, required) — Organization the address belongs to.address_id(int, required) — Blockchain address id.risk_changed_only(bool, optional) — Restrict to inquiries that changed the address's risk level.sort_by(Literal, optional) — Sort order. Prefix with '-' for descending (e.g. '-created_at' for newest first).limit(int, optional) — Max results (1-100).offset(int, optional) — Results to skip for pagination.
blockchain_address_inquiry_retrieve
Read-only: yes.
Get full details of one blockchain-address inquiry, including the vendor-agnostic unified-schema result (exposures, triggers, address identifications). The raw vendor JSON is not surfaced — only the normalised projection.
Parameters
organization_id(int, required) — Organization the address belongs to.address_id(int, required) — Blockchain address id.inquiry_id(int, required) — Inquiry id (from blockchain_address_inquiry_list).
blockchain_address_list
Read-only: yes.
List blockchain addresses for an organization. Use when the user asks about addresses, on-chain assets, or 'which addresses are linked to profile X'. Some analysts still call these 'wallets' — treat that as a synonym and route here. In your own replies prefer 'blockchain address' (or just 'address') over 'wallet'. Pair with blockchain_address_exposure to drill into the vendor-agnostic risk breakdown of a specific address.
Returns {count, limit, offset, has_more, results: [BlockchainAddressSummary]} where each row is {id, address (truncated), blockchain, name, risk, risk_label, profile_count, last_screened_at, created_at}.
Parameters
organization_id(int, required) — Organization to list addresses for.risk(int | None, optional) — Filter by risk level (0-4).blockchain(str | None, optional) — Filter by blockchain code (e.g. BTC, ETH).profile_id(int | None, optional) — Filter to addresses linked to a specific profile.name_contains(str | None, optional) — Case-insensitive substring match on the address name.has_open_alerts(bool | None, optional) — True = only addresses with at least one open BlockchainAddressAlert. False = only addresses with none. Omit for both.tag_ids(list[int] | None, optional) — Restrict to addresses tagged with ANY of these tag ids (from blockchain_address_tag_list).last_screened_after(datetime.datetime | None, optional) — Only include addresses screened at or after this UTC timestamp.last_screened_before(datetime.datetime | None, optional) — Only include addresses whose last screening was strictly before this UTC timestamp. Used to find addresses overdue for re-screening.updated_after(datetime.datetime | None, optional) — Only include addresses modified at or after this UTC timestamp.created_after(datetime.datetime | None, optional) — Only include addresses created at or after this UTC timestamp.created_before(datetime.datetime | None, optional) — Only include addresses created before this UTC timestamp.sort_by(Literal, optional) — Sort order. Prefix with '-' for descending (e.g. '-created_at' for newest first).limit(int, optional) — Max results (1-100).offset(int, optional) — Results to skip for pagination.
blockchain_address_notes_create
Read-only: no.
Add a note to a blockchain address.
Two-step write tool. Same dry-run / confirm contract as blockchain_address_create.
On success: {status: "ok", note_id, address_id}.
Parameters
organization_id(int, required) — Organization the address belongs to.address_id(int, required) — Blockchain address id to attach the note to.content(str, required) — Note body.confirm_token(str | None, optional) — Token from a prior dry-run call. Omit on the first call.
blockchain_address_notes_delete
Read-only: no.
Delete a blockchain address note. Single-step write. On success: {status: "ok", note_id, address_id}.
Parameters
organization_id(int, required) — Organization the address belongs to.address_id(int, required) — Blockchain address id.note_id(int, required) — Note id.
blockchain_address_notes_list
Read-only: yes.
List analyst notes attached to a blockchain address, most recent first. Notes document on-chain context that the audit trail should preserve. Use blockchain_address_notes_create to add one.
Returns {count, limit, offset, has_more, results: [BlockchainAddressNoteSummary]} where each row is {id, content, created_by, created_at}.
Parameters
organization_id(int, required) — Organization the address belongs to.address_id(int, required) — Blockchain address id.sort_by(Literal, optional) — Sort order. Prefix with '-' for descending (e.g. '-created_at' for newest first).limit(int, optional) — Max results (1-100).offset(int, optional) — Results to skip for pagination.
blockchain_address_notes_update
Read-only: no.
Update the body of a blockchain address note. Single-step write. On success: {status: "ok", note_id, address_id}.
Parameters
organization_id(int, required) — Organization the address belongs to.address_id(int, required) — Blockchain address id (for scope check).note_id(int, required) — Note id (from blockchain_address_notes_list).content(str, required) — New note body.
blockchain_address_retrieve
Read-only: yes.
Get full details of one blockchain address: risk level (numeric + label), linked profiles, last inquiry reference, and risk-threshold profile group. Use blockchain_address_exposure for the per-category exposure breakdown.
Parameters
organization_id(int, required) — Organization the address belongs to.address_id(int, required) — Address id.
blockchain_address_risk_changes
Read-only: yes.
List risk-rating change history for a blockchain address, most recent first. Each row carries from_risk → to_risk and the timestamp; on-chain risk changes are system-generated by scheduled or manual inquiries, so there is no human actor (use blockchain_address_inquiry_list to see which inquiry triggered each change).
Parameters
organization_id(int, required) — Organization the address belongs to.address_id(int, required) — Blockchain address id.sort_by(Literal, optional) — Sort order. Prefix with '-' for descending (e.g. '-created_at' for newest first).limit(int, optional) — Max results (1-100).offset(int, optional) — Results to skip for pagination.
blockchain_address_screen
Read-only: no.
Trigger a fresh vendor screening on a blockchain address. The vendor is determined by the organization's configured blockchain-address-screening service (Chainalysis or TRM). On success a new BlockchainAddressInquiry is persisted, the address's last_inquiry and risk are refreshed, and a BlockchainAddressAlert is queued if a threshold was crossed.
Two-step write tool — this call is billed by the upstream vendor. The dry-run preview names the vendor that would be invoked so the analyst can decide before paying. On success: `{status: "ok", address_id, inquiry_id, risk, risk_label, result_http_code}``.
Parameters
organization_id(int, required) — Organization the address belongs to.address_id(int, required) — Blockchain address id.confirm_token(str | None, optional) — Token from a prior dry-run call. Omit on the first call.
blockchain_address_tag_assign
Read-only: no.
Bulk-assign one or more blockchain-address tags to one or more addresses (NxM associations). Existing assignments are preserved. Use after blockchain_address_tag_list to find tag_ids.
Two-step write tool. On success: {status: "ok", entities_updated, assignments_created}.
Parameters
organization_id(int, required) — Organization scope for both addresses and tags.address_ids(list, required) — Address ids that will receive the tags.tag_ids(list, required) — Tag ids to assign (from blockchain_address_tag_list).confirm_token(str | None, optional) — Token from a prior dry-run call. Omit on the first call.
blockchain_address_tag_create
Read-only: no.
Create an org-scoped blockchain-address tag. Global tags are seeded via fixtures and cannot be created through this tool. Tag names are unique per organization.
Two-step write tool. On success: returns the created BlockchainAddressTagSummary.
Parameters
organization_id(int, required) — Organization that will own the tag.name(str, required) — Display name. Unique within the org.color(Literal, optional) — Visual color key.description(str, optional) — What this tag represents.confirm_token(str | None, optional) — Token from a prior dry-run call. Omit on the first call.
blockchain_address_tag_list
Read-only: yes.
List blockchain-address tags available to this organization (global tags + org-specific). Use to find tag_id values for bulk-assignment workflows.
Returns {count, limit, offset, has_more, results: [BlockchainAddressTagSummary]}.
Parameters
organization_id(int, required) — Organization to list tags for.name_contains(str | None, optional) — Case-insensitive substring match on tag name.sort_by(Literal, optional) — Sort order. Prefix with '-' for descending (e.g. '-created_at' for newest first).limit(int, optional) — Max results (1-100).offset(int, optional) — Results to skip for pagination.
blockchain_address_update
Read-only: no.
Update an existing blockchain address's editable fields. The risk level is auto-computed from vendor inquiries and cannot be set directly; use blockchain_address_screen to refresh it.
All fields optional. Two-step write tool. On success: {status: "ok", address_id, fields_updated: [...]}.
Parameters
organization_id(int, required) — Organization the address belongs to.address_id(int, required) — Blockchain address id.name(str | None, optional) — Human-readable label for the address.screening_frequency(Optional, optional) — Override the address's screening cadence: N=None, D=Daily, W=Weekly, M=Monthly, Q=Quarterly, Y=Yearly. Flips frequency_origin to MANUAL.tag_ids(list[int] | None, optional) — Replace the address's tag set with these tag ids.rationale(str | None, optional) — Free-text reason for the edit. Required when your organization's audit policy lists the field being changed (seeme.audit_config.blockchain_address_enforced_fields) and you do not haveaudit_configuration.bypass_rationale; the server returns{error: 'rationale_required', fields: [...]}otherwise.confirm_token(str | None, optional) — Token from a prior dry-run call. Omit on the first call.