Appearance
Misc
Reference for the 9 CryptoComply MCP tools in the Misc family.
Tools in this group
analytics_summarycountry_listcustom_field_createlist_my_organizationsmemember_listrelationship_type_listscreening_frequency_optionswhoami
analytics_summary
Read-only: yes.
Return aggregate counts for an organization: open alerts, profiles by review status, blockchain addresses by risk, and profile inquiries by resolution. Use for the "what's the state of my book today?" opener.
Optional breakdown_by adds drill-down dimensions; supported values: group (adds profiles grouped by Group), risk (adds profiles grouped by risk rating). Omit for the default shape.
Returns {open_alert_count, profiles_by_review_status, blockchain_addresses_by_risk, profile_inquiries_by_resolution} plus any requested breakdowns.
Parameters
organization_id(Annotated[int, Field(description='Organization to summarise.')], required) — (no description)breakdown_by(Annotated[list[str] | None, Field(description="Optional list of additional drill-down dimensions. Supported: 'group', 'risk'.")], optional) — (no description)
country_list
Read-only: yes.
List countries from the ISO 3166-1 catalog. Use to resolve alpha-2 codes (e.g. 'IR'), alpha-3 codes ('IRN'), or names ('Iran') for profile creation, citizenship updates, jurisdiction audits, etc. Optional query substring-matches against name and both ISO codes (case-insensitive).
Returns a flat list of {id, alpha2, alpha3, english_name}. No pagination (the full catalog is ~250 entries).
Parameters
query(Annotated[str | None, Field(description='Case-insensitive substring matched against english_name, alpha2, and alpha3. Omit to return all countries.')], optional) — (no description)limit(Annotated[int, Field(ge=1, le=300, description='Max rows to return.')], optional) — (no description)
custom_field_create
Read-only: no.
Define a new custom field on the organization's profiles. Custom fields are org-level extra fields attached to a profile section; their values live on each profile's custom_fields blob. Set externally_requestable=true to make the field offerable in RFIs and intake forms (it then appears in intake_form_catalog for groups where its section is visible).
Three text fields, three audiences. field_label is the internal noun-phrase staff see — on the profile page, list columns, audit log, exports, and the field picker where an officer chooses what to request. question_text is the separate prompt the RFI/intake-form recipient reads (it falls back to field_label when omitted); question_description is optional helper text shown under that prompt. E.g. field_label 'Telegram handle', question_text 'What is your Telegram handle?'. question_text is required.
field_type picks the widget on intake forms: 'text' (default) is a single-line input capped at 256 characters — right for names, cities, IDs; 'long_text' is a multi-line box with no length cap — for descriptions, notes, or legal text; 'boolean' is a nullable Yes/No toggle (unanswered stays null) — and, being a closed-choice field, can be used as a visible_if condition source that shows/hides other questions (e.g. ask nationality only when 'Are you a US citizen?' is No).
Valid section keys are the section keys returned by intake_form_catalog (omit for the default section). The key must be a lowercase identifier and not collide with an existing field.
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.
On success: {status: "ok", field} (the definition as stored).
Parameters
organization_id(Annotated[int, Field(description='Organization to define the custom field on.')], required) — (no description)profile_type(Annotated[Literal['individual', 'entity'], Field(description='Profile type the field applies to.')], required) — (no description)key(Annotated[str, Field(pattern='^[a-z][a-z0-9_]*$', max_length=64, description="Stable lowercase identifier, e.g. 'telegram_handle'.")], required) — (no description)field_label(Annotated[str, Field(min_length=1, max_length=256, description="Internal noun-phrase on staff surfaces — profile page, list columns, audit log, exports, and the RFI field picker (e.g. 'Telegram handle'). Recipients seequestion_text, not this.")], required) — (no description)question_text(Annotated[str, Field(min_length=1, max_length=512, description="Recipient-facing prompt the field shows in RFIs and intake forms, e.g. 'What is your Telegram handle?'. Distinct fromfield_label, which stays the internal audit/export noun-phrase.")], required) — (no description)question_description(Annotated[str | None, Field(max_length=1024, description='Optional helper text shown under the question in RFIs and intake forms.')], optional) — (no description)section(Annotated[str | None, Field(description='Profile section key the field belongs to. Omit for the default section.')], optional) — (no description)externally_requestable(Annotated[bool, Field(description='Whether the field can be requested externally (RFIs, intake forms). Default false.')], optional) — (no description)field_type(Annotated[Literal['text', 'long_text', 'boolean', 'number', 'date', 'email', 'phone', 'enum', 'multi_enum', 'country', 'multi_country'], Field(description="Widget/type: 'text' (default; single-line, 256 chars), 'long_text' (multi-line, uncapped), 'boolean' (Yes/No), 'number', 'date' (ISO), 'email', 'phone', 'enum' (single choice), 'multi_enum' (multiple choice), 'country' or 'multi_country' (picked from the country catalog). 'enum'/'multi_enum' requirechoices; every other type must not set it.")], optional) — (no description)choices(Annotated[list[dict[str, str]] | None, Field(description="Options for an 'enum'/'multi_enum' field, each{value, label}(value is stored, label is shown). Required for those types, rejected for any other. Omit otherwise.")], optional) — (no description)conditional(Annotated[dict[str, Any] | None, Field(description="Show this field only when another field's value matches:{field, op, value}with op one of eq/neq/in/empty/notempty.fieldis another field's key — a model field or a sibling custom field.intakesvalues(a list); empty/notempty take no value.")], optional) — (no description)confirm_token(Annotated[str | None, Field(description=CONFIRM_TOKEN)], optional) — (no description)
list_my_organizations
Read-only: yes.
List every organization the authenticated user belongs to. Call this first to learn which organization_id values are valid for the other tools.
Returns {count, limit, offset, has_more, results} where each result is {organization_id, name, role}.
me
Read-only: yes.
Return the authenticated user's full profile inside a specific organization: identity, role, permissions, and feature flags. Mirrors the REST /api/v1/organizations/<id>/users/me/ endpoint so MCP-driven workflows can answer 'what role do I have here?', 'which permissions am I granted?', and 'which feature flags apply to me in this org?' from a single call. Use whoami instead when you only need the user's global identity (no organization context).
Returns {user_id, username, email, first_name, last_name, full_name, date_joined, last_login, is_staff, is_superuser, membership_id, organization_id, organization_name, role: {id, name, description, permissions: [codename, ...]}, feature_flags: [name, ...]}.
Parameters
organization_id(Annotated[int, Field(description="Organization to read the caller's membership for.")], required) — (no description)
member_list
Read-only: yes.
List members of an organization with their roles. Use when the user asks about team members, who has access, or who owns what.
Returns {count, limit, offset, has_more, results} where each result is {user_id, email, full_name, role}.
Parameters
organization_id(Annotated[int, Field(description='Organization whose members to list.')], required) — (no description)role_id(Annotated[int | None, Field(description='Filter by role id.')], optional) — (no description)limit(Annotated[int, Field(ge=1, le=100, description=LIMIT)], optional) — (no description)offset(Annotated[int, Field(ge=0, description=OFFSET)], optional) — (no description)
relationship_type_list
Read-only: yes.
List valid relationship-type codes for profile_related_add / profile_related_update. Codes include ULTIMATE_BENEFICIAL_OWNER, CONTROL_PERSON, PARENT_ENTITY/CONTROLLING_ENTITY, COMPLIANCE_OFFICER, OTHER.
Returns [{code, label, description: null}]. Always returns the full enum.
screening_frequency_options
Read-only: yes.
List screening-frequency options ('N'=Never, 'D'=Daily, 'W'=Weekly, 'M'=Monthly, 'Q'=Quarterly, 'Y'=Yearly). Use before calling profile_update or blockchain_address_update with a screening_frequency argument so you submit a valid code.
Each row carries the code, human label, and (where applicable) the cadence in days. Always returns the full enum — no filtering.
whoami
Read-only: yes.
Return the CryptoComply identity of the bearer-token holder. Use when the user asks 'who am I?' or 'which account am I authenticated as?' — the answer is always derived from the validated JWT, never inferred from the model's session context, and is the ground truth for every other tool call.
Returns {user_id, username, email, full_name, is_staff, is_superuser}.