Appearance
Custom
Reference for the 2 CryptoComply MCP tools in the Custom family.
Tools in this group
custom_field_create
Read-only: no.
Add a field to every profile of one type in the organization. It can't be removed, and its key and type can't change (its wording can, in the app), so settle the type and choices with the user first. externally_requestable lets RFIs and intake forms ask it where its section is shown.
Previews first.
Parameters
organization_id(OrganizationId, required) — (no description)profile_type(Annotated[ProfileTypeLiteral, 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="What staff see, e.g. 'Telegram handle'. Clients readquestion_textinstead.")], required) — (no description)question_text(Annotated[str, Field(min_length=1, max_length=512, description="The question clients read in RFIs and intake forms, e.g. 'What is your Telegram handle?'.")], 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)placeholder(Annotated[str | None, Field(max_length=120, description="Hint inside the empty answer box, e.g. 'e.g. @ada'. Not for boolean, date or consent.")], optional) — (no description)section(Annotated[str | None, Field(description='Section key from group_field_schema_retrieve. Omit for the default section.')], optional) — (no description)externally_requestable(Annotated[bool, Field(description='Whether RFIs and intake forms can ask it.')], optional) — (no description)prefill(Annotated[bool, Field(description='Prefill on invitations: an invitation prefilled from a profile shows the answer it holds; false asks it fresh every time. Never applies to a consent.')], optional) — (no description)field_type(Annotated[CustomFieldTypeLiteral, Field(description="'text' is one line (256 characters), 'long_text' uncapped, 'boolean' Yes/No (other fields can show or hide on it), 'enum'/'multi_enum' needchoices, 'country'/'multi_country' pick from the country list, 'consent' needsbody_htmlandstatementsand is kept on the profile as a record of what was shown and ticked.")], optional) — (no description)choices(Annotated[list[dict[str, str]] | None, Field(description="'enum'/'multi_enum' only: options as{value, label}; the label is shown.")], optional) — (no description)conditional(Annotated[dict[str, Any] | None, Field(description='Show it only when another field matches:{field, op, value}, op eq/neq/in/empty/notempty (intakesvalues, a list; empty/notempty take no value).')], optional) — (no description)body_html(Annotated[str | None, Field(description="'consent' only: the HTML text agreed to, shown above the checkboxes.")], optional) — (no description)statements(Annotated[list[dict[str, Any]] | None, Field(description="'consent' only: one checkbox each,{key, caption, required?};required(default true) means it must be ticked to submit.")], optional) — (no description)confirm_token(ConfirmToken, optional) — (no description)
custom_field_update
Read-only: no.
Change an existing custom field of the organization: its wording (field_label, question_text, question_description), placeholder, section, externally_requestable, prefill, a select's choices, its conditional, or a consent's body_html and statements. Send only what changes in changes; placeholder: null removes its placeholder. Its key, type and profile type never change. The change reaches every profile, intake form and RFI that shows the field; a form that overrides the placeholder keeps its own.
Previews first.
Parameters
organization_id(OrganizationId, required) — (no description)key(Annotated[str, Field(pattern='^[a-z][a-z0-9_]*$', max_length=64, description="The field's key, e.g. 'telegram_handle'.")], required) — (no description)changes(Annotated[dict[str, Any], Field(min_length=1, description='The attributes to change, e.g.{"placeholder": "e.g. @ada"}; a nullplaceholderremoves it, and an attribute left out keeps its value.')], required) — (no description)confirm_token(ConfirmToken, optional) — (no description)