Skip to content

Profiles ​

Reference for the 50 CryptoComply MCP tools in the Profiles family.

Tools in this group ​

Read-only: no.

Link an existing blockchain address to a profile so the wallet shows up in the profile's portfolio. The address must already exist in this organization (use blockchain_address_create first if it doesn't).

The profile's own screening frequency is never copied. An address with no group joins the profile's group; one already in a group keeps it. Either way its screening frequency is then reset to its group's frequency for its current risk, replacing one set by hand; an address never screened keeps its frequency.

Previews first.

Parameters

  • organization_id (int, required) — Organization scope.
  • profile_id (int, required) — Profile id (from profile_list).
  • address_id (int, required) — Blockchain address id (from blockchain_address_list).
  • confirm_token (str | None, optional) — From this tool's preview; omit to get one.

Read-only: no.

Remove the link between a blockchain address and a profile. The address stays in the organization and keeps its group; its screening frequency is reset to that group's frequency for its current risk, replacing one set by hand.

Previews first.

Parameters

  • organization_id (int, required) — Organization scope.
  • profile_id (int, required) — Profile id (from profile_list).
  • address_id (int, required) — Blockchain address id (from blockchain_address_list).
  • confirm_token (str | None, optional) — From this tool's preview; omit to get one.

profile_analysis_snapshot ​

Read-only: yes.

One table of the organization's profiles (name, country, contact), optionally with wallet, watchlist and RFI counts per profile. Use it for a sweep over many profiles; narrow with group_ids and review_status, and add include only for the counts you need.

Parameters

  • organization_id (OrganizationId, required) — (no description)
  • group_ids (Annotated[list[int] | None, Field(description='Optional list of group IDs to restrict the result set.')], optional) — (no description)
  • review_status (Annotated[list[ReviewStatusLiteral] | None, Field(description=REVIEW_STATUS_FILTER)], optional) — (no description)
  • include (Annotated[list[ProfileAnalysisIncludeLiteral] | None, Field(description='Aggregate domains to join in. Omit for base fields only.')], optional) — (no description)
  • limit (Limit, optional) — (no description)
  • offset (Offset, optional) — (no description)

profile_assign ​

Read-only: no.

Hand a profile to an active member for review, replacing whoever holds it now. The member is notified with your rationale; the previous reviewer is not told, so let them know. The review status doesn't change.

To take an unassigned profile yourself, use profile_claim — it needs no assign permission.

Previews first.

Parameters

  • organization_id (int, required) — Organization scope.
  • profile_id (int, required) — Profile id (from profile_list).
  • assigned_to_user_id (int, required) — User id (from member_list). The member to hand it to.
  • rationale (str | None, optional) — Why it is being handed to this member; delivered to them. Required, at least 10 characters.
  • confirm_token (str | None, optional) — From this tool's preview; omit to get one.

profile_attachment_list ​

Read-only: yes.

List file attachments on a profile (passports, KYC docs, RFI responses, etc.). Each row carries a short-lived download URL so the analyst can open the file directly. Pair with profile_retrieve to inspect the underlying profile.

Parameters

  • organization_id (int, required) — Organization scope.
  • profile_id (int, required) — Profile id (from profile_list).
  • attachment_type (Optional, optional) — Filter by document type.
  • sort_by (Literal, optional) — '-' prefix = descending.
  • limit (int, optional) — Max results.
  • offset (int, optional) — Results to skip.
  • include_notes (bool, optional) — True = each row also carries its notes. Omit unless you need them.

profile_attachment_note_create ​

Read-only: no.

Add a note to a profile attachment.

Previews first.

Parameters

  • organization_id (int, required) — Organization scope.
  • attachment_id (int, required) — Attachment id (from profile_attachment_list).
  • content (str, required) — The note's text, as the person wrote it.
  • confirm_token (str | None, optional) — From this tool's preview; omit to get one.

profile_attachment_note_delete ​

Read-only: no.

Permanently delete a note on a profile attachment; it can't be restored. Any member who may delete notes can delete anyone's: the preview says when the note isn't the caller's, so confirm with them that they still want it gone.

Previews first.

Parameters

  • organization_id (int, required) — Organization scope.
  • attachment_id (int, required) — Attachment id (from profile_attachment_list).
  • note_id (int, required) — Note id (from profile_attachment_note_list).
  • confirm_token (str | None, optional) — From this tool's preview; omit to get one.

profile_attachment_note_list ​

Read-only: yes.

List notes on a profile attachment.

Parameters

  • organization_id (int, required) — Organization scope.
  • attachment_id (int, required) — Attachment id (from profile_attachment_list).
  • sort_by (Literal, optional) — '-' prefix = descending.
  • limit (int, optional) — Max results.
  • offset (int, optional) — Results to skip.

profile_attachment_note_update ​

Read-only: no.

Update the text of a note on a profile attachment. Applies at once, with no preview.

Parameters

  • organization_id (int, required) — Organization scope.
  • attachment_id (int, required) — Attachment id (from profile_attachment_list).
  • note_id (int, required) — Note id (from profile_attachment_note_list).
  • content (str, required) — The note's full new text, as the person wrote it; it replaces the old one.

profile_audit_log ​

Read-only: yes.

List BusinessLogEntry rows (create / update / delete / access) for a profile, most recent first. Each row carries the actor, its field_changes as display text and the analyst's rationale when one was captured. Use when the user asks 'who changed what on this profile and why?'

Name an entry by its actor_name, action_label and field_changes. subject names the profile and links its page.

Parameters

  • organization_id (int, required) — Organization scope.
  • profile_id (int, required) — Profile id (from profile_list).
  • sort_by (Literal, optional) — '-' prefix = descending.
  • limit (int, optional) — Max results.
  • offset (int, optional) — Results to skip.

profile_bulk_add_note ​

Read-only: no.

Create the same note on many profiles in one call. The note content is appended as-is to each profile's note timeline (HTML or plain text).

Previews first. Each id is processed individually; a row that fails does not stop the others. Answers with the per-row bulk envelope. Each succeeded row carries the created note_id.

Parameters

  • organization_id (OrganizationId, required) — (no description)
  • profile_ids (Annotated[list[int], bulk_ids(BULK_ADD_NOTE_MAX_PROFILES, 'Profile IDs to attach the note to.')], required) — (no description)
  • content (Annotated[str, Field(min_length=1, description='Note content (HTML or plain text).')], required) — (no description)
  • confirm_token (ConfirmToken, optional) — (no description)

profile_bulk_assign ​

Read-only: no.

Hand several profiles to the same member in one call, replacing whoever holds each. The member is notified with your reason; the previous reviewers are not told. rationale applies to every profile. To take profiles yourself, use profile_bulk_claim.

Previews first. Each id is processed individually; a row that fails does not stop the others. Answers with the per-row bulk envelope.

Parameters

  • organization_id (int, required) — Organization scope.
  • profile_ids (list, required) — Profile ids to assign.
  • assigned_to_user_id (int, required) — User id (from member_list). The member to hand it to.
  • rationale (str | None, optional) — Why it is being handed to this member; delivered to them. Required, at least 10 characters.
  • confirm_token (str | None, optional) — From this tool's preview; omit to get one.

profile_bulk_claim ​

Read-only: no.

Claim several unassigned profiles for yourself in one call.

Needs only read access. A profile someone else already holds is that row's failure and the rest are still claimed.

Previews first. Each id is processed individually; a row that fails does not stop the others. Answers with the per-row bulk envelope.

Parameters

  • organization_id (int, required) — Organization scope.
  • profile_ids (list, required) — Profile ids to claim.
  • confirm_token (str | None, optional) — From this tool's preview; omit to get one.

profile_bulk_unassign ​

Read-only: no.

Return several profiles to the unassigned pool in one call; their reviewers are not notified. rationale applies to every profile. A profile nobody holds is that row's failure and the rest are still cleared.

Previews first. Each id is processed individually; a row that fails does not stop the others. Answers with the per-row bulk envelope.

Parameters

  • organization_id (int, required) — Organization scope.
  • profile_ids (list, required) — Profile ids to unassign.
  • rationale (str | None, optional) — Why the current assignee is being removed; kept in the history. Required, at least 10 characters.
  • confirm_token (str | None, optional) — From this tool's preview; omit to get one.

profile_bulk_update_status ​

Read-only: no.

Approve, decline or archive many profiles at once: move them to one review status. Each profile moves one status at a time along the shortest allowed path (Declined → Under Review → Approved), saved like a single profile update: reaching Approved, Declined or Escalated notifies the team; Declined or Archived stops periodic screening and closes open alerts as cleared (Declined can go back to Under Review); Archived is final. Approved is refused for a profile that, or whose wallets, has open alerts or undecided hits. One profile failing leaves the others moved; repeating skips those already there.

Archiving often means the relationship ended: offer relationship_status='IN', which also ends each primary's related parties'. When the preview lists parties or wallets it could also change, ask the person.

Previews first. Each id is processed individually; a row that fails does not stop the others. Answers with the per-row bulk envelope. The preview groups the profiles by path, says what the moves set off, what each moving profile still has open and what refuses each approval.

Parameters

  • organization_id (OrganizationId, required) — (no description)
  • profile_ids (Annotated[list[int], bulk_ids(BULK_UPDATE_STATUS_MAX_PROFILES, 'Profile IDs to transition.')], required) — (no description)
  • target_status (Annotated[ReviewStatusLiteral, Field(description='Final status every profile should end up in.')], required) — (no description)
  • rationale_template (Annotated[str | None, Field(min_length=1, max_length=500, description="The user's own reason, recorded on every transition step. Leave it out: the review asks the user for it. Never write it yourself.")], optional) — (no description)
  • auto_traverse (Annotated[bool, Field(description='True: take each profile along the shortest allowed path. False: move only the profiles whose current status leads straight to the target.')], optional) — (no description)
  • relationship_status (Annotated[RelationshipStatusLiteral | None, Field(description="Also set each moved profile's relationship: AC (Active) or IN (Inactive). Omit to leave relationships as they are.")], optional) — (no description)
  • stop_wallet_screening (Annotated[bool, Field(description=STOP_WALLET_SCREENING)], optional) — (no description)
  • reactivate_parties (Annotated[bool, Field(description=REACTIVATE_PARTIES)], optional) — (no description)
  • resume_wallet_screening (Annotated[bool, Field(description=RESUME_WALLET_SCREENING)], optional) — (no description)
  • confirm_token (ConfirmToken, optional) — (no description)

profile_claim ​

Read-only: no.

Claim an unassigned profile for yourself, putting it in your Inbox.

Needs only read access, unlike profile_assign which directs someone else's work. This is the standard flow for a reviewer picking up unclaimed due diligence.

A profile that already has a reviewer cannot be claimed: it only moves on through profile_assign. The review status is untouched.

Previews first.

Parameters

  • organization_id (int, required) — Organization scope.
  • profile_id (int, required) — Profile id (from profile_list).
  • confirm_token (str | None, optional) — From this tool's preview; omit to get one.

profile_copy_list ​

Read-only: yes.

List the other profiles of a profile's subject, oldest first: the copies made of it (a Same Person decision or a copy into another group), the profile it was copied from, and their copies. Empty for a profile never copied. Each row is the profile with its group and review status.

Parameters

  • organization_id (int, required) — Organization scope.
  • profile_id (int, required) — Profile id (from profile_list).
  • limit (int, optional) — Max results.
  • offset (int, optional) — Results to skip.

profile_create ​

Read-only: no.

Create a compliance profile for a person or a company (individual or entity). Pass the screening details you have (birth or establishment date, citizenship, place of birth or establishment) here so the first screening uses them; set other fields later with profile_update.

Previews first. The profile starts Pending Review, is screened right away and the team is notified; when the organization has a default profile reviewer (default_assignee_list) it is assigned to them and they are notified. The preview says which apply.

Parameters

  • organization_id (int, required) — Organization scope.
  • profile_type (Literal, required) — individual for natural persons, entity for legal entities.
  • name (str, required) — The name the app shows the profile by.
  • group_id (int, required) — Group id (from group_list).
  • email (str, optional) — Contact email (used for RFIs).
  • full_legal_name (str, optional) — Full legal name the profile is screened under. Omit it to screen under name.
  • citizenship_country_code (str | None, optional) — (Individual only) ISO alpha2/alpha3 citizenship country.
  • place_of_establishment_country_code (str | None, optional) — (Entity only) ISO alpha2/alpha3 jurisdiction of formation.
  • date_of_birth (datetime.date | None, optional) — (Individual only) Date of Birth, e.g. 1990-05-12.
  • gender (Optional, optional) — (Individual only) Gender: M (Male), F (Female) or O (Other).
  • place_of_birth_country_code (str | None, optional) — (Individual only) ISO alpha2/alpha3 country of birth.
  • date_of_establishment (datetime.date | None, optional) — (Entity only) Date of Establishment.
  • confirm_token (str | None, optional) — From this tool's preview; omit to get one.

profile_find_duplicate_clusters ​

Read-only: yes.

Check specific people or profiles for repeats. Give profile_ids to see which profiles each one repeats, or people (name, email, wallet, document number) to find out whether someone outside the system is already on file. With neither it lists the largest groups of repeated profiles. Profiles are grouped when they share an email, document number or copy link, or a name with a phone or wallet; one sharing only a wallet, phone or name is listed as related, not merged. Each group shows its members and what ties them, how their data changed over time, and warnings when the data contradicts, read as one person with inconsistent data or several people sharing an identifier. A match is a lead, not proof: archiving is final, so never archive on a match alone.

Parameters

  • organization_id (OrganizationId, required) — (no description)
  • profile_ids (Annotated[list[int] | None, Field(max_length=50, description='Up to 50 profiles to find the cluster of.')], optional) — (no description)
  • people (Annotated[list[PersonInput] | None, Field(max_length=50, description='Up to 50 outside people to look up.')], optional) — (no description)
  • group_id (Annotated[int | None, Field(description=f'{GROUP_ID} Only profiles of this group.')], optional) — (no description)
  • max_clusters (Annotated[int, Field(ge=1, le=100, description='Scan only: clusters to return.')], optional) — (no description)

profile_find_identity_signals ​

Read-only: yes.

Sweep a group or the whole organization for suspicious email addresses and identity red flags: an email that may be fake, borrowed, shared or someone else's, so the account may not belong to the person it names. Signals: a phone number as the part before the @, a generic first name on a company domain, or another profile's full name. One row per profile with every signal it trips. Whether specific people repeat or share an identifier is profile_find_duplicate_clusters. These are leads: names written differently in other cultures can look odd.

Parameters

  • organization_id (OrganizationId, required) — (no description)
  • patterns (Annotated[list[IdentityHeuristicLiteral] | None, Field(description='Checks to run; all but the own-name check when omitted.')], optional) — (no description)
  • profile_ids (Annotated[list[int] | None, Field(max_length=500, description='Only these profiles.')], optional) — (no description)
  • group_id (Annotated[int | None, Field(description=f'{GROUP_ID} Only profiles of this group.')], optional) — (no description)
  • review_status (Annotated[list[ReviewStatusLiteral] | None, Field(description=REVIEW_STATUS_FILTER)], optional) — (no description)
  • limit (Limit, optional) — (no description)
  • offset (Offset, optional) — (no description)

profile_find_undispatched_rfis ​

Read-only: yes.

Profiles in RFI Sent that have no RFI since they entered that status, so the status was set without sending one. Returns when the status began and the date of the latest RFI, if any.

Parameters

  • organization_id (OrganizationId, required) — (no description)
  • group_id (Annotated[int | None, Field(description=f'{GROUP_ID} Only profiles of this group.')], optional) — (no description)
  • limit (Limit, optional) — (no description)
  • offset (Offset, optional) — (no description)

profile_form_invitation_list ​

Read-only: yes.

List the form invitations prefilled from a profile, or answered onto it, newest first (test sends left out): each with its form, status, the profile it is prefilled from, and whether intake_form_invitation_link may still change it. Needs invitation and profile read access.

Parameters

  • organization_id (int, required) — Organization scope.
  • profile_id (int, required) — Profile id (from profile_list).
  • limit (int, optional) — Max results.
  • offset (int, optional) — Results to skip.

profile_list ​

Read-only: yes.

List compliance profiles (individuals and entities) for an organization; opens the Profiles list, where the person filters, selects and assigns, tags or sends RFIs in bulk. Use it whenever the user asks to list, show or find profiles, clients or customers. Combine filters to narrow scope before drilling in with profile_retrieve.

Customers only: a profile on file only as another's related party (a UBO, a director…) is left out, so say so when giving a count. Those are listed by profile_related_list and profile_relationships_tree, and profile_search finds anyone by name or email.

Parameters

  • organization_id (int, required) — Organization scope.
  • risk (Optional, optional) — Filter by risk rating: Low, Medium, High, or Severe.
  • profile_type (Optional, optional) — Filter by profile type: individual or entity.
  • review_status (Optional, optional) — Review status code: PR (Pending Review), UR (Under Review), RS (RFI Sent), RR (RFI Responded - Pending Review), ES (Escalated), AP (Approved), DE (Declined), AR (Archived).
  • group_id (int | None, optional) — Group id (from group_list). Only profiles of this group.
  • name (str | None, optional) — Case-insensitive name substring match.
  • relationship_status (Optional, optional) — Relationship status: AC (Active) or IN (Inactive).
  • assigned_to_user_id (int | None, optional) — User id (from member_list). Only profiles this member reviews.
  • assigned_to_me (bool, optional) — Only profiles the caller reviews.
  • unassigned (bool | None, optional) — True = only profiles with no reviewer. False = only those with one.
  • has_open_items (bool | None, optional) — True = only profiles with at least one unresolved screening hit. False = none.
  • has_attachments (bool | None, optional) — True = only profiles with at least one attachment. False = none.
  • has_rfi (bool | None, optional) — True = only profiles ever sent an RFI. False = never.
  • pep (bool | None, optional) — True = only profiles declared as PEPs. False = only non-PEPs. Omit for both.
  • country_code (str | None, optional) — ISO alpha2 or alpha3 country code (e.g. 'IR', 'CU', 'IRN'). For individuals matches citizenship; for entities matches place_of_establishment. Common compliance use: jurisdiction audits.
  • tag_ids (list[int] | None, optional) — Restrict to profiles tagged with ANY of these tag ids (from profile_tag_list).
  • updated_after (datetime.datetime | None, optional) — Only include profiles modified at or after this UTC timestamp.
  • created_after (datetime.datetime | None, optional) — Only include profiles created at or after this UTC timestamp.
  • created_before (datetime.datetime | None, optional) — Only include profiles created before this UTC timestamp.
  • sort_by (Literal, optional) — '-' prefix = descending.
  • limit (int, optional) — Max results.
  • offset (int, optional) — Results to skip.

profile_note_create ​

Read-only: no.

Add a note to a profile.

Previews first.

Parameters

  • organization_id (int, required) — Organization scope.
  • profile_id (int, required) — Profile id (from profile_list).
  • content (str, required) — The note's text, as the person wrote it.
  • confirm_token (str | None, optional) — From this tool's preview; omit to get one.

profile_note_delete ​

Read-only: no.

Permanently delete a note on a profile; it can't be restored. Any member who may delete notes can delete anyone's: the preview says when the note isn't the caller's, so confirm with them that they still want it gone.

Previews first.

Parameters

  • organization_id (int, required) — Organization scope.
  • profile_id (int, required) — Profile id (from profile_list).
  • note_id (int, required) — Note id (from profile_note_list).
  • confirm_token (str | None, optional) — From this tool's preview; omit to get one.

profile_note_list ​

Read-only: yes.

List analyst notes attached to a profile, most recent first. Notes capture rationale, findings, or context the analyst wants in the audit trail. Use profile_note_create to add one.

Parameters

  • organization_id (int, required) — Organization scope.
  • profile_id (int, required) — Profile id (from profile_list).
  • sort_by (Literal, optional) — '-' prefix = descending.
  • limit (int, optional) — Max results.
  • offset (int, optional) — Results to skip.

profile_note_update ​

Read-only: no.

Update the text of a note on a profile. Applies at once, with no preview.

Parameters

  • organization_id (int, required) — Organization scope.
  • profile_id (int, required) — Profile id (from profile_list).
  • note_id (int, required) — Note id (from profile_note_list).
  • content (str, required) — The note's full new text, as the person wrote it; it replaces the old one.

Read-only: no.

Record a related party on a profile: to_profile_id holds the named role(s) in from_profile_id. For a company's UBO, from_profile_id is the company and to_profile_id the owner — the same direction the profile's related parties list shows, and the one an approval checks: the company can't be approved until each of its related parties is approved or declined.

Previews first. Both profiles must already exist in this organization. A pair can be recorded only once; use profile_related_update to change its roles.

Parameters

  • organization_id (int, required) — Organization scope.
  • from_profile_id (int, required) — The profile the party is related to (e.g. the company).
  • to_profile_id (int, required) — The related party (e.g. the company's UBO).
  • relation_types (list, required) — Role(s) the related party holds in the profile. Multi-valued (a person can be both UBO and Control Person of the same entity).
  • confirm_token (str | None, optional) — From this tool's preview; omit to get one.

Read-only: yes.

List profiles related to a given profile (directed edges originating from it). Use when the analyst asks 'who is this profile connected to?' — common for UBO / control-person investigations.

Parameters

  • organization_id (int, required) — Organization scope.
  • profile_id (int, required) — Profile id (from profile_list).
  • sort_by (Literal, optional) — '-' prefix = descending.
  • limit (int, optional) — Max results.
  • offset (int, optional) — Results to skip.

Read-only: yes.

Per-related-party open-alert counts for a profile. Returns one row per related profile (UBO, controller, officer, etc.) that has at least one open alert in the same organization, counting watchlist + negative-news directly and blockchain-address alerts via linked addresses.

Use during EDD lateral-walk: 'before I close this alert, which related parties of the same customer have open alerts?' Most open alerts first.

Parameters

  • organization_id (int, required) — Organization scope.
  • profile_id (int, required) — Profile id (from profile_list).
  • limit (int, optional) — Max results.
  • offset (int, optional) — Results to skip.

Read-only: no.

Update the relation types on an existing related-profile edge. Pass the full intended type set — this replaces, not appends. Use to add (e.g.) CONTROL_PERSON to a row that previously only said ULTIMATE_BENEFICIAL_OWNER, or to retire a role by dropping it from the list.

Previews first.

Parameters

  • organization_id (int, required) — Organization scope.
  • related_profile_id (int, required) — RelatedProfile id (from profile_related_list).
  • relation_types (list, required) — New full set of relation types (replaces the existing list).
  • confirm_token (str | None, optional) — From this tool's preview; omit to get one.

profile_relationships_tree ​

Read-only: yes.

The whole web of relationships around a profile, as a tree rather than a flat list. profile_related_list gives one profile's direct links; this walks outward in both directions to the connected component and renders it from its roots, so a UBO two hops away is visible without chaining calls.

Traversal is bounded — a component too large or too deep is truncated and says so — so a densely linked book cannot turn one question into an unbounded walk.

Returns the tree as the API serves it: roots, each with its nested children and the relation that ties them.

Parameters

  • organization_id (int, required) — Organization scope.
  • profile_id (int, required) — Profile id (from profile_list).

profile_retrieve ​

Read-only: yes.

Get full details of one profile. Returns either an IndividualProfileDetail (date_of_birth, citizenship, id_number, SSN, passport, …) or an EntityProfileDetail (place_of_establishment, unique_identification_number, high_risk_jurisdiction_footprint, …) — the profile_type field tells you which.

Parameters

  • organization_id (int, required) — Organization scope.
  • profile_id (int, required) — Profile id (from profile_list).

profile_review_transitions ​

Read-only: yes.

The review statuses a profile can move to next, each as {code, label}, with its current one. Use before changing review_status with profile_update. Approved carries blocked_by while a related party is neither approved nor declined, or the profile or one of its wallets has open alerts or undecided hits: approval is refused until each is settled, so tell the user which. Archived is final: an archived profile can't move again. A status further away is in further_statuses with the path that reaches it, by label; profile_bulk_update_status walks a profile along it in one call.

Parameters

  • organization_id (int, required) — Organization scope.
  • profile_id (int, required) — Profile id (from profile_list).

profile_risk_changes ​

Read-only: yes.

List risk-rating change history for a profile, most recent first. Each row carries from_risk → to_risk and the user who made the change.

Parameters

  • organization_id (int, required) — Organization scope.
  • profile_id (int, required) — Profile id (from profile_list).
  • sort_by (Literal, optional) — '-' prefix = descending.
  • limit (int, optional) — Max results.
  • offset (int, optional) — Results to skip.

profile_screen ​

Read-only: no.

Run a watchlist screening of a profile now, against sanctions, PEP and other watchlists. New matches open an alert, which notifies the team and lands on whoever holds the profile, else on whoever holds a related party, else on the default alert assignee when one is set (see default_assignee_list). Editing a screening detail such as the legal name, birth date or citizenship already screens the profile again, so this is for a fresh check without an edit.

Previews first.

Poll progress with profile_screening_status.

Parameters

  • organization_id (int, required) — Organization scope.
  • profile_id (int, required) — Profile id (from profile_list).
  • confirm_token (str | None, optional) — From this tool's preview; omit to get one.

profile_screening_hit_list ​

Read-only: yes.

List watchlist hits (sanctions and PEP matches): one profile's, unresolved first, or the whole organization's when profile_id is omitted, so one call answers which profiles have hits to review; to show or review a profile's hits, make one call with profile_id, never one per hit. Pass resolution=NO_RESOLUTION for the hits still awaiting review; omitting it returns every hit, reviewed or not. Each row is a hit as profile_screening_hit_retrieve returns it. Record a verdict with profile_screening_hit_resolve.

Parameters

  • organization_id (OrganizationId, required) — (no description)
  • profile_id (Annotated[int | None, Field(description=f'{PROFILE_ID} Its hits only; omit for every profile in the organization.')], optional) — (no description)
  • resolution (Annotated[ProfileScreeningHitResolutionLiteral | None, Field(description=SCREENING_HIT_RESOLUTION)], optional) — (no description)
  • profile_risk (Annotated[ProfileRiskLiteral | None, Field(description='Only hits on profiles of this risk rating.')], optional) — (no description)
  • sort_by (Annotated[CreatedAtSortLiteral, Field(description=SORT_BY)], optional) — (no description)
  • limit (Limit, optional) — (no description)
  • offset (Offset, optional) — (no description)

profile_screening_hit_record ​

Read-only: yes.

The whole watchlist record behind one screening_hit: aliases, identifiers, addresses, sanctions, positions, the provider's narrative, cited sources and associates.

Parameters

  • organization_id (OrganizationId, required) — (no description)
  • screening_hit_id (ScreeningHitId, required) — (no description)

profile_screening_hit_resolve ​

Read-only: no.

Resolve a watchlist hit on a profile as TRUE_MATCH, FALSE_POSITIVE, NEEDS_INFO, or NO_RESOLUTION (reset). The first transition off NO_RESOLUTION moves the linked watchlist alert into Under Review, but only while that alert is still OPEN.

You must hold the linked alert or review the profile (else claim the alert via alert_claim, or have it assigned to you via alert_assign, first).

Resolving requires notes explaining the decision. TRUE_MATCH and FALSE_POSITIVE can be changed later — including on a CLOSED alert — but the call must carry notes explaining why, and the audit trail records it as a change of decision. Resetting a hit to NO_RESOLUTION under a CLOSED alert is still refused: the alert could not have been closed in that state. After changing a hit under a closed alert, consider alert_revise_decision — the disposition was written against the verdict you just changed.

A NEEDS_INFO hit waits on the profile's contact: the success response carries a next_step pointing at rfi_create to ask for what would settle it.

Previews first.

Parameters

  • organization_id (OrganizationId, required) — (no description)
  • profile_id (ProfileId, required) — (no description)
  • screening_hit_id (ScreeningHitId, required) — (no description)
  • resolution (Annotated[ProfileScreeningHitResolutionLiteral, Field(description=SCREENING_HIT_RESOLUTION)], required) — (no description)
  • notes (Annotated[str | None, Field(description='Analyst reasoning recorded on the hit. Required to resolve it, and to change a hit already resolved as TRUE_MATCH or FALSE_POSITIVE.')], optional) — (no description)
  • confirm_token (ConfirmToken, optional) — (no description)

profile_screening_hit_retrieve ​

Read-only: yes.

One watchlist hit (profile screening_hit) with what deciding it weighs. For a profile's hits, use profile_screening_hit_list.

Parameters

  • organization_id (OrganizationId, required) — (no description)
  • screening_hit_id (ScreeningHitId, required) — (no description)

profile_screening_status ​

Read-only: yes.

Get the current screening progress for a profile, or {status: 'idle'} if no screening is running. Reflects the same cache key the frontend polls; poll this after kicking off a run with profile_screen.

Parameters

  • organization_id (int, required) — Organization scope.
  • profile_id (int, required) — Profile id (from profile_list).

Read-only: yes.

Check whether people or companies are already on file: pass up to 200 names and/or emails and get the matching profiles for each, in one call. A name matches a profile's name or legal name exactly, ignoring case and extra spaces; an email matches exactly. Related parties are searched too (is_related_party), unlike profile_list. For a partial name use profile_list(name=...).

One result per term, in the order given, with the profiles it matches.

Parameters

  • organization_id (int, required) — Organization scope.
  • names (list[typing.Annotated[str, FieldInfo(annotation=NoneType, required=True, metadata=[MinLen(min_length=1), MaxLen(max_length=256)])]] | None, optional) — Full names to look for.
  • emails (list[typing.Annotated[str, FieldInfo(annotation=NoneType, required=True, metadata=[MinLen(min_length=3), MaxLen(max_length=256)])]] | None, optional) — Email addresses to look for.

profile_snapshot_details ​

Read-only: yes.

For the profile view only: the profile page's overview (assignee, cadence, open counts, tags), which of its tabs the group shows, and every filled-in field by section.

Parameters

  • organization_id (int, required) — Organization scope.
  • profile_id (int, required) — Profile id (from profile_list).

profile_tag_assign ​

Read-only: no.

Bulk-modify profile tags across many profiles at once; mode chooses add (default) / remove / replace (see the mode arg). Use profile_tag_list to find tag_ids.

Previews first. Each id is processed individually; a row that fails does not stop the others. Answers with the per-row bulk envelope.

Parameters

  • organization_id (int, required) — Organization scope.
  • profile_ids (list, required) — Profile ids that will be modified.
  • tag_ids (list, required) — Tag ids (from profile_tag_list) to add / remove / install.
  • mode (Literal, optional) — add: preserve existing tags; insert new tag→profile rows (default). remove: delete the listed tag→profile rows. replace: strip every existing tag from each profile, then assign exactly tag_ids.
  • rationale (str | None, optional) — Why the person is tagging them, in their words. Needed when the organization audits tag changes; the proposal says so. Ask; never invent it.
  • confirm_token (str | None, optional) — From this tool's preview; omit to get one.

profile_tag_create ​

Read-only: no.

Create one of the organization's own profile tags; names are unique in the organization. Global tags are shared by every organization and can't be created here.

Previews first.

Parameters

  • organization_id (int, required) — Organization scope.
  • name (str, required) — Tag name, unique in the organization.
  • color (Literal, optional) — Tag color in the app.
  • description (str, optional) — What this tag represents.
  • confirm_token (str | None, optional) — From this tool's preview; omit to get one.

profile_tag_delete ​

Read-only: no.

Delete one of the organization's own profile tags (shared global tags can't be deleted). A tag still on any profile is refused: remove it from them first, or pass force to delete it anyway, which removes it from every profile and notes that in each one's history. Can't be undone.

Previews first.

Parameters

  • organization_id (int, required) — Organization scope.
  • tag_id (int, required) — Tag id from profile_tag_list.
  • force (bool, optional) — Delete it even though profiles carry it, removing it from all of them.
  • confirm_token (str | None, optional) — From this tool's preview; omit to get one.

profile_tag_list ​

Read-only: yes.

List profile tags available to this organization (global tags + org-specific). Use to find tag_id values for filtering or bulk-assignment workflows.

Parameters

  • organization_id (int, required) — Organization scope.
  • name_contains (str | None, optional) — Case-insensitive substring match on tag name.
  • sort_by (Literal, optional) — '-' prefix = descending.
  • limit (int, optional) — Max results.
  • offset (int, optional) — Results to skip.

profile_tag_update ​

Read-only: no.

Rename a profile tag, or change its color or description. Only the organization's own tags; global tags are shared across organizations and cannot be edited here. Omitted fields are left as they are. Find tag_id with profile_tag_list.

Previews first.

Parameters

  • organization_id (int, required) — Organization scope.
  • tag_id (int, required) — Tag id from profile_tag_list.
  • name (str | None, optional) — New tag name, unique in the organization.
  • color (Optional, optional) — New tag color in the app.
  • description (str | None, optional) — What this tag represents.
  • confirm_token (str | None, optional) — From this tool's preview; omit to get one.

profile_unassign ​

Read-only: no.

Return a profile that has a reviewer to the unassigned pool, so anyone can pick it up. Needs the unassign permission, even for your own profile. The reviewer is not notified. rationale goes on the audit trail. The review status doesn't change.

Previews first.

Parameters

  • organization_id (int, required) — Organization scope.
  • profile_id (int, required) — Profile id (from profile_list).
  • rationale (str | None, optional) — Why the current assignee is being removed; kept in the history. Required, at least 10 characters.
  • confirm_token (str | None, optional) — From this tool's preview; omit to get one.

profile_update ​

Read-only: no.

Update a profile's editable fields. Bounded subset of the underlying model — covers what an analyst commonly changes (PEP declaration, jurisdiction, review status to approve, decline or archive, relationship status, basic identity) without exposing every column.

All fields are optional: omit anything you don't want to touch.

Saving can screen the profile again, notify the team, stop periodic screening or archive it for good; the preview says which. Ending a primary's relationship also ends its related parties' (a party another active primary holds stays) and restarting it restores screening: when the preview lists parties or wallets it could also change, ask the person. Approved is refused while a related party is still undecided, or while the profile or one of its wallets has open alerts or undecided hits: the refusal lists them. Declining or archiving closes its open alerts as cleared. When archiving, offer to set the relationship Inactive in the same call, and vice versa.

Previews first.

Parameters

  • organization_id (int, required) — Organization scope.
  • profile_id (int, required) — Profile id (from profile_list).
  • name (str | None, optional) — The name the app shows the profile by.
  • full_legal_name (str | None, optional) — Full legal name the profile is screened under; changing it screens the profile again.
  • email (str | None, optional) — Contact email, where RFIs are sent.
  • review_status (Optional, optional) — Due-diligence workflow status: PR (Pending Review), UR (Under Review), RS (RFI Sent), RR (RFI Responded - Pending Review), ES (Escalated), AP (Approved), DE (Declined), AR (Archived). Only transitions valid from the current status are accepted — check profile_review_transitions first; an invalid transition returns 400.
  • relationship_status (Optional, optional) — Business-relationship lifecycle status: AC (Active) or IN (Inactive).
  • pep (bool | None, optional) — Whether the profile is declared a politically exposed person.
  • pep_position (str | None, optional) — Title held by the PEP.
  • pep_country_code (str | None, optional) — ISO alpha2/alpha3 country of the PEP role.
  • pep_current_in_office (bool | None, optional) — Whether the PEP still holds the position.
  • pep_start_date (datetime.date | None, optional) — When the PEP position began.
  • pep_end_date (datetime.date | None, optional) — When the PEP position ended.
  • risk (Optional, optional) — The profile's Risk Rating.
  • date_of_birth (datetime.date | None, optional) — (Individual only) Date of Birth, e.g. 1990-05-12.
  • gender (Optional, optional) — (Individual only) Gender: M (Male), F (Female) or O (Other).
  • place_of_birth_country_code (str | None, optional) — (Individual only) ISO alpha2/alpha3 country of birth.
  • citizenship_country_code (str | None, optional) — (Individual only) ISO alpha2/alpha3 citizenship country.
  • country_of_residence_code (str | None, optional) — (Individual only) ISO alpha2/alpha3 country of residence.
  • place_of_establishment_country_code (str | None, optional) — (Entity only) ISO alpha2/alpha3 jurisdiction of formation.
  • date_of_establishment (datetime.date | None, optional) — (Entity only) Date of Establishment.
  • screening_frequency (Optional, optional) — Set the profile's screening cadence: N=None, D=Daily, W=Weekly, M=Monthly, Q=Quarterly, Y=Yearly. It lasts until something resets it: a change to the profile's risk rating, or to its group's cadence for that risk, puts it back on the group's cadence; declining, archiving or an Inactive relationship turns it off.
  • stop_wallet_screening (bool, optional) — With relationship_status IN on a primary profile: also stop screening its wallets, and its ended parties', that no profile still in screening is linked to. Off unless the person asks; the preview lists them.
  • reactivate_parties (bool, optional) — With relationship_status AC on a primary profile: also make its Inactive related parties Active again and restart their screening. On unless the person says to leave them.
  • resume_wallet_screening (bool, optional) — With relationship_status AC on a primary profile: also restart screening of its wallets, and its reactivated parties', on their group's frequency. Off unless the person asks; the preview lists them.
  • tag_ids (list[int] | None, optional) — Replace the profile's tag set with these tag ids. Omit to leave tags alone; an empty list removes every tag.
  • fields (dict[str, typing.Any] | None, optional) — Any other field of the profile page, custom fields included, by its key: text, a choice's value, true/false, a number, an ISO date, a country code, or a list for a multi-choice or multi-country field; null clears it. Not for a field the arguments above set.
  • rationale (str | None, optional) — Why the person is making the change, in their words. Needed when the organization audits a field being changed; the proposal names those fields. Ask; never invent it.
  • confirm_token (str | None, optional) — From this tool's preview; omit to get one.