Skip to content

RFIs

Reference for the 11 CryptoComply MCP tools in the RFIs family.

Tools in this group

rfi_create

Read-only: no.

Send a Request-For-Information to a client: a unique public link is generated and emailed asking them to provide specific fields and/or document types.

Only fields visible AND externally-requestable in the profile's group can be requested. Unknown names are dropped as long as at least one valid field is given — but a list where EVERY name is unknown falls back to requesting the whole offerable set, so pass real keys. Discover them via group_field_schema_get for the profile's group (org custom fields included; create a new one with custom_field_create) — the same offerable set an intake form can ask.

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 creates the RFI and queues the email. On success: {status: "ok", rfi_id, profile_id, unique_link}.

Parameters

  • organization_id (int, required) — Organization scope.
  • profile_id (int, required) — Profile id to send the RFI to.
  • request_text (str, required) — Body of the request — shown to the client in the email.
  • requested_fields (list[str] | None, optional) — Profile-field names to request (e.g. ['date_of_birth', 'address']) — must be offerable keys from group_field_schema_get for this profile's group; org custom fields included. Optional.
  • requested_documents (list[str] | None, optional) — ProfileAttachmentType codes (e.g. ['IDENTIFICATION', 'PROOF_OF_ADDRESS']). Optional.
  • additional_recipients (list[str] | None, optional) — Extra emails to CC on the request. Optional.
  • custom_questions (list[str] | None, optional) — Ad-hoc free-text questions to ask this contact (e.g. 'How did you acquire your holdings?'). Each becomes a required text field on the public form. Max 500 chars per question. Optional.
  • confirm_token (str | None, optional) — Token from a prior dry-run call. Omit on the first call.

rfi_follow_up

Read-only: no.

Send a follow-up RFI: open a new request round for the same profile, linked to a prior RFI as its parent. Use after a client responded but more information is still needed.

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 creates the follow-up and queues the email. On success: {status: "ok", rfi_id, profile_id, unique_link}.

Parameters

  • organization_id (int, required) — Organization scope.
  • profile_id (int, required) — Profile id the parent RFI belongs to.
  • rfi_id (int, required) — Parent RFI id this follow-up continues (from rfi_list).
  • request_text (str, required) — Body of the follow-up request — shown to the client.
  • requested_fields (list[str] | None, optional) — Profile-field names to request. Optional.
  • requested_documents (list[str] | None, optional) — ProfileAttachmentType codes to request. Optional.
  • additional_recipients (list[str] | None, optional) — Extra emails to CC on the request. Optional.
  • custom_questions (list[str] | None, optional) — Ad-hoc free-text questions to ask this contact — ideal for follow-up rounds probing a prior response. Each becomes a required text field on the public form. Max 500 chars per question. Optional.
  • confirm_token (str | None, optional) — Token from a prior dry-run call. Omit on the first call.

rfi_list

Read-only: yes.

List Request-For-Information records sent for a profile, most recent first. Status is derived: sent (not opened), opened (client clicked the link), or responded (client submitted the form) — it does not surface revoked or expired links, which still read as sent/opened. Use when the analyst wants to see what KYC info has been asked of a client.

Parameters

  • organization_id (int, required) — Organization scope.
  • profile_id (int, required) — Profile id (from profile_list.results[].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.

rfi_proposal_accept

Read-only: no.

Accept one staged RFI item, applying the client's submitted value to the profile — writing a field, creating a wallet / related party, or attaching a document (a QUESTION item only acknowledges the answer on the audit trail). This is the compliance decision that lands RFI data; only accepted items ever touch the profile.

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 it. On success: {status: "ok", proposal_id, item_status}.

Parameters

  • organization_id (int, required) — Organization scope.
  • profile_id (int, required) — Profile id the RFI belongs to.
  • rfi_id (int, required) — RFI id (from rfi_list.results[].id).
  • proposal_id (int, required) — Staged item id (from rfi_proposal_list).
  • confirm_token (str | None, optional) — Token from a prior dry-run call. Omit on the first call.

rfi_proposal_accept_all

Read-only: no.

Accept every PENDING staged item on an RFI in one call — applies all of the client's submitted answers to the profile at once. Use after reviewing the items with rfi_proposal_list; reject any you don't want first, then accept the rest here.

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 them. On success: {status: "ok", rfi_id, accepted_count}.

Parameters

  • organization_id (int, required) — Organization scope.
  • profile_id (int, required) — Profile id the RFI belongs to.
  • rfi_id (int, required) — RFI id (from rfi_list.results[].id).
  • confirm_token (str | None, optional) — Token from a prior dry-run call. Omit on the first call.

rfi_proposal_list

Read-only: yes.

List the staged items from an RFI's responses awaiting adjudication (the "limbo"). When a client submits an RFI, the answers do NOT touch the profile — each becomes a PENDING item here that must be accepted (which applies it) or rejected. Filter by status for PENDING work, ACCEPTED, or REJECTED.

Each row is {id, item_type, field_key, proposed_value, previous_value, status, rationale, decided_at, created_at}. item_type is FIELD / WALLET / UBO / CONTROL_PERSON / ATTACHMENT / QUESTION. Compare proposed_value with the profile's live value via profile_retrieve, then adjudicate with rfi_proposal_accept / rfi_proposal_reject / rfi_proposal_accept_all.

Parameters

  • organization_id (int, required) — Organization scope.
  • profile_id (int, required) — Profile id the RFI belongs to.
  • rfi_id (int, required) — RFI id (from rfi_list.results[].id).
  • status (Optional, optional) — Filter by adjudication status. Omit for all.
  • limit (int, optional) — Max results (1-100).
  • offset (int, optional) — Results to skip for pagination.

rfi_proposal_reject

Read-only: no.

Reject one staged RFI item with a rationale — the client's submitted value is NOT applied to the profile; the item is kept as evidence. Use when the answer is wrong, incomplete, or a false match.

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 rejects it. On success: {status: "ok", proposal_id, item_status}.

Parameters

  • organization_id (int, required) — Organization scope.
  • profile_id (int, required) — Profile id the RFI belongs to.
  • rfi_id (int, required) — RFI id (from rfi_list.results[].id).
  • proposal_id (int, required) — Staged item id (from rfi_proposal_list).
  • rationale (str, optional) — Why the item is rejected (recorded on the audit trail).
  • confirm_token (str | None, optional) — Token from a prior dry-run call. Omit on the first call.

rfi_remind

Read-only: no.

Remind an RFI: re-send the existing link as a reminder. The link and expiry are unchanged (unlike resend), only a reminder email goes out. Rejected once the client responded, or if the link was revoked or has expired.

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 sends the reminder.

Parameters

  • organization_id (int, required) — Organization scope.
  • profile_id (int, required) — Profile id the RFI belongs to.
  • rfi_id (int, required) — RFI id (from rfi_list.results[].id).
  • confirm_token (str | None, optional) — Token from a prior dry-run call. Omit on the first call.

rfi_resend

Read-only: no.

Resend an RFI: issue a fresh public link and re-send the email. Any previously shared link stops working (410 Gone) and the expiry resets. Rejected once the client has already responded, or if the link was revoked (a resend must not silently undo a revoke — use a new RFI instead).

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 rotates the link and emails it.

Parameters

  • organization_id (int, required) — Organization scope.
  • profile_id (int, required) — Profile id the RFI belongs to.
  • rfi_id (int, required) — RFI id (from rfi_list.results[].id).
  • confirm_token (str | None, optional) — Token from a prior dry-run call. Omit on the first call.

rfi_retrieve

Read-only: yes.

Get full details of one RFI: request body, requested fields/documents, ad-hoc custom_questions, recipient(s), and the client's response payload (field answers + additional information) when present.

Parameters

  • organization_id (int, required) — Organization scope.
  • profile_id (int, required) — Profile id the RFI belongs to.
  • rfi_id (int, required) — RFI id (from rfi_list.results[].id).

rfi_revoke

Read-only: no.

Revoke an RFI's public link so it returns 410 Gone — use when a request was sent to the wrong contact or is no longer needed. Rejected once the client has already responded.

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 revokes the link.

Parameters

  • organization_id (int, required) — Organization scope.
  • profile_id (int, required) — Profile id the RFI belongs to.
  • rfi_id (int, required) — RFI id (from rfi_list.results[].id).
  • reason (str, optional) — Optional reason recorded on the revocation.
  • confirm_token (str | None, optional) — Token from a prior dry-run call. Omit on the first call.