MCP App Store
by KeenEthics

Overview

Dotfile is the compliance platform for KYC and KYB onboarding. Connect your Dotfile account to ask where a case stands and what blocks it, read its history, audit your screening, identity verification and document checks, follow your team's workload and time to decision, and understand how your templates and automations are set up. The assistant can also act for you where your role allows it: assign, tag, approve, reject or delete cases and checks, add notes, send communications, and apply one of these actions to a whole selection of cases, checks, individuals or companies as a bulk action. It can also buy fresh company data and order registry documents from the business data vendors your workspace is set up with: each new request is a real purchase under your workspace's vendor contract, billed by the vendor on your own contract or by Dotfile on its contract, as it is from the Dotfile console; the assistant sells no Dotfile subscription, plan or credit. It sees only the workspaces your Dotfile account can see and every action runs with your own permissions. It does not take or return a person's social security or tax identification number through the fields that hold them, nor identity document numbers or the files that show them.

Tools

add_case_tags

ChatGPT
Attach existing workspace tags to a case. Attach or detach one or more existing tags on the case identified by case_id. Parameters: - case_id: the id of the case to tag - tags: tag labels or ids (use list_tags to find them) The tags must already exist in the workspace; use create_tag first if needed.

add_document_order_file_to_check

ChatGPT
Attach the file of a completed document order to a document check. Parameters: - document_order_id: The id of the document order whose file to attach (from list_document_orders); only completed orders have a file - check_id: The id of the document check to attach the file to; the check must accept new files (not approved or already under review) After the document analysis, the check is submitted for review so it becomes eligible for AI review.

add_note

ChatGPT
Add a note to a case. Create, update or delete notes and note comments (replies) on the case identified by case_id. Parameters: - case_id: the id of the case the note belongs to - content: the note or comment text — required for add_note, update_note (max 10,000 characters) and add_comment, update_comment (max 3,000 characters) - note_id: required for update_note, delete_note and add_comment (use list_notes to find it) - comment_id: required for update_comment and delete_comment (use list_notes to find it) Use notes to document observations, findings, decisions or rationale on the case; use comments to reply to an existing note.

add_note_comment

ChatGPT
Reply to a note on a case with a comment. Create, update or delete notes and note comments (replies) on the case identified by case_id. Parameters: - case_id: the id of the case the note belongs to - content: the note or comment text — required for add_note, update_note (max 10,000 characters) and add_comment, update_comment (max 3,000 characters) - note_id: required for update_note, delete_note and add_comment (use list_notes to find it) - comment_id: required for update_comment and delete_comment (use list_notes to find it) Use notes to document observations, findings, decisions or rationale on the case; use comments to reply to an existing note.

approve_case

ChatGPT
Approve the case identified by case_id. Records an approval decision and moves the case to the approved status. Parameters: - case_id: the id of the case to approve - comment: optional note explaining the decision (the workspace may require one) Approval can be blocked when the case template requires all controls to be completed first.

bulk_add_case_tags

ChatGPT
Attach existing workspace tags to every selected case. Runs 'add_case_tags' once per selected case, as a durable background job under your own permissions: you need what 'add_case_tags' needs, and its bulk permission when it has one. The call returns a bulkActionId as soon as the job is dispatched; follow its status and counters with get_bulk_action_result or list_bulk_actions, and stop the remaining invocations with cancel_bulk_action. An invocation that already ran is not undone. args holds the parameters of 'add_case_tags' every invocation receives. 'add_case_tags' gets case_id from the selected case and action = add from this tool; neither can be passed. Every invocation needs tags, from args or from its item's args. A parameter 'add_case_tags' does not take, or a missing required one, refuses the call before the job starts; a requirement that depends on another parameter is checked per invocation, which then fails. Select the cases with exactly one of: - entity_ids: the ids of the cases to target. - filter: a json-logic filter selecting every matching case, with the column keys of the console case table. Tell the user how many cases it matches before running a write they cannot take back. - items: one entry per invocation, with its own parameters merged over args, for a parameter that differs per case. The same case may appear more than once. About 'add_case_tags': Attach existing workspace tags to a case. Attach or detach one or more existing tags on the case identified by case_id. Parameters: - case_id: the id of the case to tag - tags: tag labels or ids (use list_tags to find them) The tags must already exist in the workspace; use create_tag first if needed.

bulk_add_document_order_file_to_check

ChatGPT
Attach the file of a completed document order to every selected document check, one order per check. Runs 'add_document_order_file_to_check' once per selected check, as a durable background job under your own permissions: you need what 'add_document_order_file_to_check' needs, and its bulk permission when it has one. The call returns a bulkActionId as soon as the job is dispatched; follow its status and counters with get_bulk_action_result or list_bulk_actions, and stop the remaining invocations with cancel_bulk_action. An invocation that already ran is not undone. args holds the parameters of 'add_document_order_file_to_check' every invocation receives. 'add_document_order_file_to_check' gets check_id from the selected check; neither can be passed. Every invocation needs document_order_id, from args or from its item's args. A parameter 'add_document_order_file_to_check' does not take, or a missing required one, refuses the call before the job starts; a requirement that depends on another parameter is checked per invocation, which then fails. Select the checks with exactly one of: - entity_ids: the ids of the checks to target. - filter: a json-logic filter selecting every matching check, with the column keys of the console check table. Tell the user how many checks it matches before running a write they cannot take back. - items: one entry per invocation, with its own parameters merged over args, for a parameter that differs per check. The same check may appear more than once. About 'add_document_order_file_to_check': Attach the file of a completed document order to a document check. Parameters: - document_order_id: The id of the document order whose file to attach (from list_document_orders); only completed orders have a file - check_id: The id of the document check to attach the file to; the check must accept new files (not approved or already under review) After the document analysis, the check is submitted for review so it becomes eligible for AI review.

bulk_add_note

ChatGPT
Add the same note to every selected case. Runs 'add_note' once per selected case, as a durable background job under your own permissions: you need what 'add_note' needs, and its bulk permission when it has one. The call returns a bulkActionId as soon as the job is dispatched; follow its status and counters with get_bulk_action_result or list_bulk_actions, and stop the remaining invocations with cancel_bulk_action. An invocation that already ran is not undone. args holds the parameters of 'add_note' every invocation receives. 'add_note' gets case_id from the selected case and action = add_note from this tool; neither can be passed. Every invocation needs content, from args or from its item's args. A parameter 'add_note' does not take, or a missing required one, refuses the call before the job starts; a requirement that depends on another parameter is checked per invocation, which then fails. Select the cases with exactly one of: - entity_ids: the ids of the cases to target. - filter: a json-logic filter selecting every matching case, with the column keys of the console case table. Tell the user how many cases it matches before running a write they cannot take back. - items: one entry per invocation, with its own parameters merged over args, for a parameter that differs per case. The same case may appear more than once. About 'add_note': Add a note to a case. Create, update or delete notes and note comments (replies) on the case identified by case_id. Parameters: - case_id: the id of the case the note belongs to - content: the note or comment text — required for add_note, update_note (max 10,000 characters) and add_comment, update_comment (max 3,000 characters) - note_id: required for update_note, delete_note and add_comment (use list_notes to find it) - comment_id: required for update_comment and delete_comment (use list_notes to find it) Use notes to document observations, findings, decisions or rationale on the case; use comments to reply to an existing note.

bulk_add_note_comment

ChatGPT
Reply to a note on every selected case with a comment, one note per invocation. Runs 'add_note_comment' once per selected case, as a durable background job under your own permissions: you need what 'add_note_comment' needs, and its bulk permission when it has one. The call returns a bulkActionId as soon as the job is dispatched; follow its status and counters with get_bulk_action_result or list_bulk_actions, and stop the remaining invocations with cancel_bulk_action. An invocation that already ran is not undone. args holds the parameters of 'add_note_comment' every invocation receives. 'add_note_comment' gets case_id from the selected case and action = add_comment from this tool; neither can be passed. Every invocation needs note_id, content, from args or from its item's args. A parameter 'add_note_comment' does not take, or a missing required one, refuses the call before the job starts; a requirement that depends on another parameter is checked per invocation, which then fails. Select the cases with exactly one of: - entity_ids: the ids of the cases to target. - filter: a json-logic filter selecting every matching case, with the column keys of the console case table. Tell the user how many cases it matches before running a write they cannot take back. - items: one entry per invocation, with its own parameters merged over args, for a parameter that differs per case. The same case may appear more than once. About 'add_note_comment': Reply to a note on a case with a comment. Create, update or delete notes and note comments (replies) on the case identified by case_id. Parameters: - case_id: the id of the case the note belongs to - content: the note or comment text — required for add_note, update_note (max 10,000 characters) and add_comment, update_comment (max 3,000 characters) - note_id: required for update_note, delete_note and add_comment (use list_notes to find it) - comment_id: required for update_comment and delete_comment (use list_notes to find it) Use notes to document observations, findings, decisions or rationale on the case; use comments to reply to an existing note.

bulk_approve_cases

ChatGPT
Approve every selected case. Runs 'approve_case' once per selected case, as a durable background job under your own permissions: you need what 'approve_case' needs, and its bulk permission when it has one. The call returns a bulkActionId as soon as the job is dispatched; follow its status and counters with get_bulk_action_result or list_bulk_actions, and stop the remaining invocations with cancel_bulk_action. An invocation that already ran is not undone. args holds the parameters of 'approve_case' every invocation receives. 'approve_case' gets case_id from the selected case; neither can be passed. A parameter 'approve_case' does not take, or a missing required one, refuses the call before the job starts; a requirement that depends on another parameter is checked per invocation, which then fails. Select the cases with exactly one of: - entity_ids: the ids of the cases to target. - filter: a json-logic filter selecting every matching case, with the column keys of the console case table. Tell the user how many cases it matches before running a write they cannot take back. - items: one entry per invocation, with its own parameters merged over args, for a parameter that differs per case. The same case may appear more than once. About 'approve_case': Approve the case identified by case_id. Records an approval decision and moves the case to the approved status. Parameters: - case_id: the id of the case to approve - comment: optional note explaining the decision (the workspace may require one) Approval can be blocked when the case template requires all controls to be completed first.

bulk_buy_company_data

ChatGPT
Buy fresh company profile data from a business data vendor for every selected company, one billed vendor request per company. Runs 'buy_company_data' once per selected company, as a durable background job under your own permissions: you need what 'buy_company_data' needs, and its bulk permission when it has one. The call returns a bulkActionId as soon as the job is dispatched; follow its status and counters with get_bulk_action_result or list_bulk_actions, and stop the remaining invocations with cancel_bulk_action. An invocation that already ran is not undone. args holds the parameters of 'buy_company_data' every invocation receives. 'buy_company_data' gets company_id from the selected company; neither can be passed. A parameter 'buy_company_data' does not take, or a missing required one, refuses the call before the job starts; a requirement that depends on another parameter is checked per invocation, which then fails. Select the companies with exactly one of: - entity_ids: the ids of the companies to target. - filter: a json-logic filter selecting every matching company, with the column keys of the console company table. Tell the user how many companies it matches before running a write they cannot take back. - items: one entry per invocation, with its own parameters merged over args, for a parameter that differs per company. The same company may appear more than once. About 'buy_company_data': Buy fresh company profile data for an existing company from a business data vendor, under the vendor contract the workspace is configured with (Dotfile's or the workspace's own), as a company data fetch from the console does. Every call is a new purchase request to the vendor. Once the vendor returns the data, the purchase is recorded as company data usage of the workspace and counts toward its plan limit; a call is refused once the limit is reached. On the workspace's own contract the vendor bills the workspace; on Dotfile's contract Dotfile bills the usage, except on trial and internal workspaces. There is no deduplication, so buying twice is a second purchase. This tool sells no Dotfile subscription, plan or credit. Check how recent the current data is before buying; the result includes when the previous data was fetched. Parameters: - company_id: The id of the company to buy data for - vendor: The vendor to buy from; omit to buy from the vendor of the company's most recent purchase After a purchase, use get_company_data_changes to compare the refreshed data with the previous snapshot.

bulk_close_cases

ChatGPT
Close every selected case. Runs 'close_case' once per selected case, as a durable background job under your own permissions: you need what 'close_case' needs, and its bulk permission when it has one. The call returns a bulkActionId as soon as the job is dispatched; follow its status and counters with get_bulk_action_result or list_bulk_actions, and stop the remaining invocations with cancel_bulk_action. An invocation that already ran is not undone. args holds the parameters of 'close_case' every invocation receives. 'close_case' gets case_id from the selected case; neither can be passed. A parameter 'close_case' does not take, or a missing required one, refuses the call before the job starts; a requirement that depends on another parameter is checked per invocation, which then fails. Select the cases with exactly one of: - entity_ids: the ids of the cases to target. - filter: a json-logic filter selecting every matching case, with the column keys of the console case table. Tell the user how many cases it matches before running a write they cannot take back. - items: one entry per invocation, with its own parameters merged over args, for a parameter that differs per case. The same case may appear more than once. About 'close_case': Close the case identified by case_id. Records a closing decision and moves the case to the closed status. Parameters: - case_id: the id of the case to close - comment: optional note explaining the decision (the workspace may require one)

bulk_create_company_checks

ChatGPT
Create a check on every selected company. Runs 'create_check' once per selected company, as a durable background job under your own permissions: you need what 'create_check' needs, and its bulk permission when it has one. The call returns a bulkActionId as soon as the job is dispatched; follow its status and counters with get_bulk_action_result or list_bulk_actions, and stop the remaining invocations with cancel_bulk_action. An invocation that already ran is not undone. args holds the parameters of 'create_check' every invocation receives. 'create_check' gets entityId from the selected company and entityType = company from this tool; neither can be passed. Every invocation needs type, from args or from its item's args. A parameter 'create_check' does not take, or a missing required one, refuses the call before the job starts; a requirement that depends on another parameter is checked per invocation, which then fails. Select the companies with exactly one of: - entity_ids: the ids of the companies to target. - filter: a json-logic filter selecting every matching company, with the column keys of the console company table. Tell the user how many companies it matches before running a write they cannot take back. - items: one entry per invocation, with its own parameters merged over args, for a parameter that differs per company. The same company may appear more than once. About 'create_check': Create a check on an individual or company. Supports 10 check types with entity compatibility validation. Check types: - aml (AML screening) — AML screening against PEP, sanctions, and adverse-media watchlists. Individual or company. - company_monitoring (Company monitoring) — Ongoing monitoring of a company's legal and financial status. Company only. - id_verification (Identity verification) — Automated identity verification of an individual, completed in the identity verification vendor's own hosted flow. Individual only. - id_document (Identity document) — Upload and review of a government-issued identity document. Individual only. - document (Document) — Upload and review of a specific document type required for the case. Individual or company. - ekyc (eKYC) — Comprehensive electronic KYC flow combining identity document verification, identity verification and watchlist screening in a single journey hosted by the vendor. Individual only. - electronic_signature (Electronic signature) — Electronic signature collection on a document template. Individual only. - email_phone_verification (Email & Phone verification) — Verification of an individual's email address and phone number, with the fraud and trust signals the vendor returns alongside them. Individual only. - fraud_database (Fraud Database) — Screening against fraud databases (bank-account, identity-fraud lists). Individual or company. - online_reputation (Online Reputation) — Analysis of a company's public online presence and reputation. Company only. Identity verification and eKYC checks send the individual to the vendor's hosted flow, which collects the document and face capture: this tool never receives images or biometric data. Parameters: - type: The type of check to create. Pick the exact type the user asked for; never substitute a similar-sounding or related type. - entityId: The ID of the individual or company to run the check on. - entityType: Whether the entity is an individual or a company. - settings: Optional check-type-specific settings.

bulk_create_individual_checks

ChatGPT
Create a check on every selected individual. Runs 'create_check' once per selected individual, as a durable background job under your own permissions: you need what 'create_check' needs, and its bulk permission when it has one. The call returns a bulkActionId as soon as the job is dispatched; follow its status and counters with get_bulk_action_result or list_bulk_actions, and stop the remaining invocations with cancel_bulk_action. An invocation that already ran is not undone. args holds the parameters of 'create_check' every invocation receives. 'create_check' gets entityId from the selected individual and entityType = individual from this tool; neither can be passed. Every invocation needs type, from args or from its item's args. A parameter 'create_check' does not take, or a missing required one, refuses the call before the job starts; a requirement that depends on another parameter is checked per invocation, which then fails. Select the individuals with exactly one of: - entity_ids: the ids of the individuals to target. - filter: a json-logic filter selecting every matching individual, with the column keys of the console individual table. Tell the user how many individuals it matches before running a write they cannot take back. - items: one entry per invocation, with its own parameters merged over args, for a parameter that differs per individual. The same individual may appear more than once. About 'create_check': Create a check on an individual or company. Supports 10 check types with entity compatibility validation. Check types: - aml (AML screening) — AML screening against PEP, sanctions, and adverse-media watchlists. Individual or company. - company_monitoring (Company monitoring) — Ongoing monitoring of a company's legal and financial status. Company only. - id_verification (Identity verification) — Automated identity verification of an individual, completed in the identity verification vendor's own hosted flow. Individual only. - id_document (Identity document) — Upload and review of a government-issued identity document. Individual only. - document (Document) — Upload and review of a specific document type required for the case. Individual or company. - ekyc (eKYC) — Comprehensive electronic KYC flow combining identity document verification, identity verification and watchlist screening in a single journey hosted by the vendor. Individual only. - electronic_signature (Electronic signature) — Electronic signature collection on a document template. Individual only. - email_phone_verification (Email & Phone verification) — Verification of an individual's email address and phone number, with the fraud and trust signals the vendor returns alongside them. Individual only. - fraud_database (Fraud Database) — Screening against fraud databases (bank-account, identity-fraud lists). Individual or company. - online_reputation (Online Reputation) — Analysis of a company's public online presence and reputation. Company only. Identity verification and eKYC checks send the individual to the vendor's hosted flow, which collects the document and face capture: this tool never receives images or biometric data. Parameters: - type: The type of check to create. Pick the exact type the user asked for; never substitute a similar-sounding or related type. - entityId: The ID of the individual or company to run the check on. - entityType: Whether the entity is an individual or a company. - settings: Optional check-type-specific settings.

bulk_delete_cases

ChatGPT
Delete every selected case. Runs 'delete_case' once per selected case, as a durable background job under your own permissions: you need what 'delete_case' needs, and its bulk permission when it has one. The call returns a bulkActionId as soon as the job is dispatched; follow its status and counters with get_bulk_action_result or list_bulk_actions, and stop the remaining invocations with cancel_bulk_action. An invocation that already ran is not undone. args holds the parameters of 'delete_case' every invocation receives. 'delete_case' gets case_id from the selected case; neither can be passed. A parameter 'delete_case' does not take, or a missing required one, refuses the call before the job starts; a requirement that depends on another parameter is checked per invocation, which then fails. Select the cases with exactly one of: - entity_ids: the ids of the cases to target. - filter: a json-logic filter selecting every matching case, with the column keys of the console case table. Tell the user how many cases it matches before running a write they cannot take back. - items: one entry per invocation, with its own parameters merged over args, for a parameter that differs per case. The same case may appear more than once. About 'delete_case': Delete the case identified by case_id. This soft-deletes the case and everything attached to it. Use with care — prefer rejecting or closing a case over deleting it.

bulk_delete_checks

ChatGPT
Delete every selected check. Runs 'delete_check' once per selected check, as a durable background job under your own permissions: you need what 'delete_check' needs, and its bulk permission when it has one. The call returns a bulkActionId as soon as the job is dispatched; follow its status and counters with get_bulk_action_result or list_bulk_actions, and stop the remaining invocations with cancel_bulk_action. An invocation that already ran is not undone. args holds the parameters of 'delete_check' every invocation receives. 'delete_check' gets check_id from the selected check; neither can be passed. A parameter 'delete_check' does not take, or a missing required one, refuses the call before the job starts; a requirement that depends on another parameter is checked per invocation, which then fails. Select the checks with exactly one of: - entity_ids: the ids of the checks to target. - filter: a json-logic filter selecting every matching check, with the column keys of the console check table. Tell the user how many checks it matches before running a write they cannot take back. - items: one entry per invocation, with its own parameters merged over args, for a parameter that differs per check. The same check may appear more than once. About 'delete_check': Delete a check. Parameters: - check_id: the id of the check to delete (use query_entities to find it)

bulk_delete_note

ChatGPT
Delete a note from every selected case, one note per invocation. Runs 'delete_note' once per selected case, as a durable background job under your own permissions: you need what 'delete_note' needs, and its bulk permission when it has one. The call returns a bulkActionId as soon as the job is dispatched; follow its status and counters with get_bulk_action_result or list_bulk_actions, and stop the remaining invocations with cancel_bulk_action. An invocation that already ran is not undone. args holds the parameters of 'delete_note' every invocation receives. 'delete_note' gets case_id from the selected case and action = delete_note from this tool; neither can be passed. Every invocation needs note_id, from args or from its item's args. A parameter 'delete_note' does not take, or a missing required one, refuses the call before the job starts; a requirement that depends on another parameter is checked per invocation, which then fails. Select the cases with exactly one of: - entity_ids: the ids of the cases to target. - filter: a json-logic filter selecting every matching case, with the column keys of the console case table. Tell the user how many cases it matches before running a write they cannot take back. - items: one entry per invocation, with its own parameters merged over args, for a parameter that differs per case. The same case may appear more than once. About 'delete_note': Delete a note from a case. Create, update or delete notes and note comments (replies) on the case identified by case_id. Parameters: - case_id: the id of the case the note belongs to - content: the note or comment text — required for add_note, update_note (max 10,000 characters) and add_comment, update_comment (max 3,000 characters) - note_id: required for update_note, delete_note and add_comment (use list_notes to find it) - comment_id: required for update_comment and delete_comment (use list_notes to find it) Use notes to document observations, findings, decisions or rationale on the case; use comments to reply to an existing note.

bulk_delete_note_comment

ChatGPT
Delete a note comment on every selected case, one comment per invocation. Runs 'delete_note_comment' once per selected case, as a durable background job under your own permissions: you need what 'delete_note_comment' needs, and its bulk permission when it has one. The call returns a bulkActionId as soon as the job is dispatched; follow its status and counters with get_bulk_action_result or list_bulk_actions, and stop the remaining invocations with cancel_bulk_action. An invocation that already ran is not undone. args holds the parameters of 'delete_note_comment' every invocation receives. 'delete_note_comment' gets case_id from the selected case and action = delete_comment from this tool; neither can be passed. Every invocation needs comment_id, from args or from its item's args. A parameter 'delete_note_comment' does not take, or a missing required one, refuses the call before the job starts; a requirement that depends on another parameter is checked per invocation, which then fails. Select the cases with exactly one of: - entity_ids: the ids of the cases to target. - filter: a json-logic filter selecting every matching case, with the column keys of the console case table. Tell the user how many cases it matches before running a write they cannot take back. - items: one entry per invocation, with its own parameters merged over args, for a parameter that differs per case. The same case may appear more than once. About 'delete_note_comment': Delete a comment from a note. Create, update or delete notes and note comments (replies) on the case identified by case_id. Parameters: - case_id: the id of the case the note belongs to - content: the note or comment text — required for add_note, update_note (max 10,000 characters) and add_comment, update_comment (max 3,000 characters) - note_id: required for update_note, delete_note and add_comment (use list_notes to find it) - comment_id: required for update_comment and delete_comment (use list_notes to find it) Use notes to document observations, findings, decisions or rationale on the case; use comments to reply to an existing note.

bulk_get_case_timelines

ChatGPT
Read the activity timeline of every selected case. Runs 'get_entity_timeline' once per selected case, as a durable background job under your own permissions: you need what 'get_entity_timeline' needs, and its bulk permission when it has one. The call returns a bulkActionId as soon as the job is dispatched; follow its status and counters with get_bulk_action_result or list_bulk_actions, and stop the remaining invocations with cancel_bulk_action. Each invocation's result is kept on its item of the bulk action, in the Dotfile console; it does not come back through this connector. args holds the parameters of 'get_entity_timeline' every invocation receives. 'get_entity_timeline' gets entity_id from the selected case and entity_type = case from this tool; neither can be passed. A parameter 'get_entity_timeline' does not take, or a missing required one, refuses the call before the job starts; a requirement that depends on another parameter is checked per invocation, which then fails. Select the cases with exactly one of: - entity_ids: the ids of the cases to target. - filter: a json-logic filter selecting every matching case, with the column keys of the console case table. - items: one entry per invocation, with its own parameters merged over args, for a parameter that differs per case. The same case may appear more than once. About 'get_entity_timeline': Read the activity journal of one case, company, individual, case control or check — the same feed the console shows on the entity. Returns the events newest first, each with its date, its author and, when the event changed fields, the previous and next value of each one. Use this to reconstruct a history and attribute it: who created the case, who applied the template and when, every status the case went through, who approved or rejected a check, why a communication was cancelled. The author is named whenever the platform knows it: a workspace member or a business contact by their name, an API key by its name. Events the platform performed on its own are attributed to the system, and an event an AI agent performed says so. Filter with source_events to follow one thread of the history — the status changes, the check decisions — and leave it out to read everything. Events recorded before the platform started storing which event produced them carry no source event, so a filtered read skips that older history. Pass a check id for a check, not the id of its result data. Ids come from query_entities for a case, company, individual or check, and from list_case_controls for a control.

bulk_get_check

ChatGPT
Read the details and outcome of every selected check. Runs 'get_check' once per selected check, as a durable background job under your own permissions: you need what 'get_check' needs, and its bulk permission when it has one. The call returns a bulkActionId as soon as the job is dispatched; follow its status and counters with get_bulk_action_result or list_bulk_actions, and stop the remaining invocations with cancel_bulk_action. Each invocation's result is kept on its item of the bulk action, in the Dotfile console; it does not come back through this connector. args holds the parameters of 'get_check' every invocation receives. 'get_check' gets check_id from the selected check; neither can be passed. A parameter 'get_check' does not take, or a missing required one, refuses the call before the job starts; a requirement that depends on another parameter is checked per invocation, which then fails. Select the checks with exactly one of: - entity_ids: the ids of the checks to target. - filter: a json-logic filter selecting every matching check, with the column keys of the console check table. - items: one entry per invocation, with its own parameters merged over args, for a parameter that differs per check. The same check may appear more than once. About 'get_check': Read a single check's details and outcome as readable text: - header: check type, id and status - Result: the latest decision (approved, rejected, error) or pending - Review: who reviewed it (user, system or api), when, and their comment - Findings: each analysis result with its outcome, expected and received values - Details: the remaining result data (extracted information, screening hits, settings, provider findings). Files appear by id, name and mime type. - Files: every attached file with its role (front, back, document…), name, mime type and file_id, to read its text or download it Storage locations, raw provider payloads and internal bookkeeping fields are not returned. Use this to inspect a check before acting on it — for example to see why it needs review, or what an AI/human review concluded. Parameters: - check_id: the id of the check to read (use query_entities to find it)

bulk_get_check_timelines

ChatGPT
Read the activity timeline of every selected check. Runs 'get_entity_timeline' once per selected check, as a durable background job under your own permissions: you need what 'get_entity_timeline' needs, and its bulk permission when it has one. The call returns a bulkActionId as soon as the job is dispatched; follow its status and counters with get_bulk_action_result or list_bulk_actions, and stop the remaining invocations with cancel_bulk_action. Each invocation's result is kept on its item of the bulk action, in the Dotfile console; it does not come back through this connector. args holds the parameters of 'get_entity_timeline' every invocation receives. 'get_entity_timeline' gets entity_id from the selected check and entity_type = check from this tool; neither can be passed. A parameter 'get_entity_timeline' does not take, or a missing required one, refuses the call before the job starts; a requirement that depends on another parameter is checked per invocation, which then fails. Select the checks with exactly one of: - entity_ids: the ids of the checks to target. - filter: a json-logic filter selecting every matching check, with the column keys of the console check table. - items: one entry per invocation, with its own parameters merged over args, for a parameter that differs per check. The same check may appear more than once. About 'get_entity_timeline': Read the activity journal of one case, company, individual, case control or check — the same feed the console shows on the entity. Returns the events newest first, each with its date, its author and, when the event changed fields, the previous and next value of each one. Use this to reconstruct a history and attribute it: who created the case, who applied the template and when, every status the case went through, who approved or rejected a check, why a communication was cancelled. The author is named whenever the platform knows it: a workspace member or a business contact by their name, an API key by its name. Events the platform performed on its own are attributed to the system, and an event an AI agent performed says so. Filter with source_events to follow one thread of the history — the status changes, the check decisions — and leave it out to read everything. Events recorded before the platform started storing which event produced them carry no source event, so a filtered read skips that older history. Pass a check id for a check, not the id of its result data. Ids come from query_entities for a case, company, individual or check, and from list_case_controls for a control.

bulk_get_company_data_changes

ChatGPT
Compare the two latest company data snapshots of every selected company. Runs 'get_company_data_changes' once per selected company, as a durable background job under your own permissions: you need what 'get_company_data_changes' needs, and its bulk permission when it has one. The call returns a bulkActionId as soon as the job is dispatched; follow its status and counters with get_bulk_action_result or list_bulk_actions, and stop the remaining invocations with cancel_bulk_action. Each invocation's result is kept on its item of the bulk action, in the Dotfile console; it does not come back through this connector. args holds the parameters of 'get_company_data_changes' every invocation receives. 'get_company_data_changes' gets company_id from the selected company; neither can be passed. A parameter 'get_company_data_changes' does not take, or a missing required one, refuses the call before the job starts; a requirement that depends on another parameter is checked per invocation, which then fails. Select the companies with exactly one of: - entity_ids: the ids of the companies to target. - filter: a json-logic filter selecting every matching company, with the column keys of the console company table. - items: one entry per invocation, with its own parameters merged over args, for a parameter that differs per company. The same company may appear more than once. About 'get_company_data_changes': Compare the two most recent purchased data snapshots of a company and return the changes as categorized old/new value pairs (same categories as company monitoring alerts). The comparison is computed deterministically in code; nothing is purchased and nothing is billed. Parameters: - company_id: The id of the company to compare snapshots for - vendor: Compare the two latest snapshots from this vendor; omit to use the vendor of the most recent snapshot Use after buy_company_data to detect discrepancies between the previous and the refreshed profile.

bulk_get_company_timelines

ChatGPT
Read the activity timeline of every selected company. Runs 'get_entity_timeline' once per selected company, as a durable background job under your own permissions: you need what 'get_entity_timeline' needs, and its bulk permission when it has one. The call returns a bulkActionId as soon as the job is dispatched; follow its status and counters with get_bulk_action_result or list_bulk_actions, and stop the remaining invocations with cancel_bulk_action. Each invocation's result is kept on its item of the bulk action, in the Dotfile console; it does not come back through this connector. args holds the parameters of 'get_entity_timeline' every invocation receives. 'get_entity_timeline' gets entity_id from the selected company and entity_type = company from this tool; neither can be passed. A parameter 'get_entity_timeline' does not take, or a missing required one, refuses the call before the job starts; a requirement that depends on another parameter is checked per invocation, which then fails. Select the companies with exactly one of: - entity_ids: the ids of the companies to target. - filter: a json-logic filter selecting every matching company, with the column keys of the console company table. - items: one entry per invocation, with its own parameters merged over args, for a parameter that differs per company. The same company may appear more than once. About 'get_entity_timeline': Read the activity journal of one case, company, individual, case control or check — the same feed the console shows on the entity. Returns the events newest first, each with its date, its author and, when the event changed fields, the previous and next value of each one. Use this to reconstruct a history and attribute it: who created the case, who applied the template and when, every status the case went through, who approved or rejected a check, why a communication was cancelled. The author is named whenever the platform knows it: a workspace member or a business contact by their name, an API key by its name. Events the platform performed on its own are attributed to the system, and an event an AI agent performed says so. Filter with source_events to follow one thread of the history — the status changes, the check decisions — and leave it out to read everything. Events recorded before the platform started storing which event produced them carry no source event, so a filtered read skips that older history. Pass a check id for a check, not the id of its result data. Ids come from query_entities for a case, company, individual or check, and from list_case_controls for a control.

bulk_get_individual_timelines

ChatGPT
Read the activity timeline of every selected individual. Runs 'get_entity_timeline' once per selected individual, as a durable background job under your own permissions: you need what 'get_entity_timeline' needs, and its bulk permission when it has one. The call returns a bulkActionId as soon as the job is dispatched; follow its status and counters with get_bulk_action_result or list_bulk_actions, and stop the remaining invocations with cancel_bulk_action. Each invocation's result is kept on its item of the bulk action, in the Dotfile console; it does not come back through this connector. args holds the parameters of 'get_entity_timeline' every invocation receives. 'get_entity_timeline' gets entity_id from the selected individual and entity_type = individual from this tool; neither can be passed. A parameter 'get_entity_timeline' does not take, or a missing required one, refuses the call before the job starts; a requirement that depends on another parameter is checked per invocation, which then fails. Select the individuals with exactly one of: - entity_ids: the ids of the individuals to target. - filter: a json-logic filter selecting every matching individual, with the column keys of the console individual table. - items: one entry per invocation, with its own parameters merged over args, for a parameter that differs per individual. The same individual may appear more than once. About 'get_entity_timeline': Read the activity journal of one case, company, individual, case control or check — the same feed the console shows on the entity. Returns the events newest first, each with its date, its author and, when the event changed fields, the previous and next value of each one. Use this to reconstruct a history and attribute it: who created the case, who applied the template and when, every status the case went through, who approved or rejected a check, why a communication was cancelled. The author is named whenever the platform knows it: a workspace member or a business contact by their name, an API key by its name. Events the platform performed on its own are attributed to the system, and an event an AI agent performed says so. Filter with source_events to follow one thread of the history — the status changes, the check decisions — and leave it out to read everything. Events recorded before the platform started storing which event produced them carry no source event, so a filtered read skips that older history. Pass a check id for a check, not the id of its result data. Ids come from query_entities for a case, company, individual or check, and from list_case_controls for a control.

bulk_list_available_documents

ChatGPT
List the registry documents that can be ordered for every selected company. Runs 'list_available_documents' once per selected company, as a durable background job under your own permissions: you need what 'list_available_documents' needs, and its bulk permission when it has one. The call returns a bulkActionId as soon as the job is dispatched; follow its status and counters with get_bulk_action_result or list_bulk_actions, and stop the remaining invocations with cancel_bulk_action. Each invocation's result is kept on its item of the bulk action, in the Dotfile console; it does not come back through this connector. args holds the parameters of 'list_available_documents' every invocation receives. 'list_available_documents' gets company_id from the selected company; neither can be passed. A parameter 'list_available_documents' does not take, or a missing required one, refuses the call before the job starts; a requirement that depends on another parameter is checked per invocation, which then fails. Select the companies with exactly one of: - entity_ids: the ids of the companies to target. - filter: a json-logic filter selecting every matching company, with the column keys of the console company table. - items: one entry per invocation, with its own parameters merged over args, for a parameter that differs per company. The same company may appear more than once. About 'list_available_documents': List the official documents that can be ordered for a company from the registry vendors. Parameters: - company_id: The id of the company to list available documents for Each result includes a productRef, the vendor, a price tier and the expected delivery time. The productRef identifies the document in an order.

bulk_list_case_controls

ChatGPT
Read the controls of every selected case. Runs 'list_case_controls' once per selected case, as a durable background job under your own permissions: you need what 'list_case_controls' needs, and its bulk permission when it has one. The call returns a bulkActionId as soon as the job is dispatched; follow its status and counters with get_bulk_action_result or list_bulk_actions, and stop the remaining invocations with cancel_bulk_action. Each invocation's result is kept on its item of the bulk action, in the Dotfile console; it does not come back through this connector. args holds the parameters of 'list_case_controls' every invocation receives. 'list_case_controls' gets case_id from the selected case; neither can be passed. A parameter 'list_case_controls' does not take, or a missing required one, refuses the call before the job starts; a requirement that depends on another parameter is checked per invocation, which then fails. Select the cases with exactly one of: - entity_ids: the ids of the cases to target. - filter: a json-logic filter selecting every matching case, with the column keys of the console case table. - items: one entry per invocation, with its own parameters merged over args, for a parameter that differs per case. The same case may appear more than once. About 'list_case_controls': List the controls on the case identified by case_id. Returns each one's id, control label, type and completion status. Use this to review the case's controls — for example before marking one as completed or uncompleted, to find the case control id.

bulk_list_communications

ChatGPT
Read the communications sent about every selected case. Runs 'list_communications' once per selected case, as a durable background job under your own permissions: you need what 'list_communications' needs, and its bulk permission when it has one. The call returns a bulkActionId as soon as the job is dispatched; follow its status and counters with get_bulk_action_result or list_bulk_actions, and stop the remaining invocations with cancel_bulk_action. Each invocation's result is kept on its item of the bulk action, in the Dotfile console; it does not come back through this connector. args holds the parameters of 'list_communications' every invocation receives. 'list_communications' gets case_id from the selected case; neither can be passed. A parameter 'list_communications' does not take, or a missing required one, refuses the call before the job starts; a requirement that depends on another parameter is checked per invocation, which then fails. Select the cases with exactly one of: - entity_ids: the ids of the cases to target. - filter: a json-logic filter selecting every matching case, with the column keys of the console case table. - items: one entry per invocation, with its own parameters merged over args, for a parameter that differs per case. The same case may appear more than once. About 'list_communications': List the communications (emails) on the case identified by case_id, most recent first. Returns each message's id, thread id, subject, status and sent date. Use this to read the communication history — for example before replying to a contact, to find the communication id to reply to. The history is paginated: one call returns at most limit messages and says how many the case holds. When more remain, the response gives a cursor; call again with it to read the next, older messages, until the response says the history is complete.

bulk_list_document_orders

ChatGPT
Read the document orders of every selected company. Runs 'list_document_orders' once per selected company, as a durable background job under your own permissions: you need what 'list_document_orders' needs, and its bulk permission when it has one. The call returns a bulkActionId as soon as the job is dispatched; follow its status and counters with get_bulk_action_result or list_bulk_actions, and stop the remaining invocations with cancel_bulk_action. Each invocation's result is kept on its item of the bulk action, in the Dotfile console; it does not come back through this connector. args holds the parameters of 'list_document_orders' every invocation receives. 'list_document_orders' gets company_id from the selected company; neither can be passed. A parameter 'list_document_orders' does not take, or a missing required one, refuses the call before the job starts; a requirement that depends on another parameter is checked per invocation, which then fails. Select the companies with exactly one of: - entity_ids: the ids of the companies to target. - filter: a json-logic filter selecting every matching company, with the column keys of the console company table. - items: one entry per invocation, with its own parameters merged over args, for a parameter that differs per company. The same company may appear more than once. About 'list_document_orders': List the documents already ordered for a company, with their status (created, processing, completed, failed). Parameters: - company_id: The id of the company to list ordered documents for Use get_document_download_link to get a download link for a completed order.

bulk_list_notes

ChatGPT
Read the notes and their comments of every selected case. Runs 'list_notes' once per selected case, as a durable background job under your own permissions: you need what 'list_notes' needs, and its bulk permission when it has one. The call returns a bulkActionId as soon as the job is dispatched; follow its status and counters with get_bulk_action_result or list_bulk_actions, and stop the remaining invocations with cancel_bulk_action. Each invocation's result is kept on its item of the bulk action, in the Dotfile console; it does not come back through this connector. args holds the parameters of 'list_notes' every invocation receives. 'list_notes' gets case_id from the selected case; neither can be passed. A parameter 'list_notes' does not take, or a missing required one, refuses the call before the job starts; a requirement that depends on another parameter is checked per invocation, which then fails. Select the cases with exactly one of: - entity_ids: the ids of the cases to target. - filter: a json-logic filter selecting every matching case, with the column keys of the console case table. - items: one entry per invocation, with its own parameters merged over args, for a parameter that differs per case. The same case may appear more than once. About 'list_notes': List the notes on the case identified by case_id. Returns each note and reply with its id, author, creation date and content as Markdown. Use this to read existing documentation, observations or comments — for example before updating or deleting a note, to find the note id.

bulk_place_document_order

ChatGPT
Order registry documents for every selected company, one document per invocation. Runs 'place_document_order' once per selected company, as a durable background job under your own permissions: you need what 'place_document_order' needs, and its bulk permission when it has one. The call returns a bulkActionId as soon as the job is dispatched; follow its status and counters with get_bulk_action_result or list_bulk_actions, and stop the remaining invocations with cancel_bulk_action. An invocation that already ran is not undone. args holds the parameters of 'place_document_order' every invocation receives. 'place_document_order' gets company_id from the selected company; neither can be passed. Every invocation needs product_ref, from args or from its item's args. A parameter 'place_document_order' does not take, or a missing required one, refuses the call before the job starts; a requirement that depends on another parameter is checked per invocation, which then fails. Select the companies with exactly one of: - entity_ids: the ids of the companies to target. - filter: a json-logic filter selecting every matching company, with the column keys of the console company table. Tell the user how many companies it matches before running a write they cannot take back. - items: one entry per invocation, with its own parameters merged over args, for a parameter that differs per company. The same company may appear more than once. About 'place_document_order': Place an order for exactly one document with a registry vendor, under the vendor contract the workspace is configured with (Dotfile's or the workspace's own), as an order from the console does. A new order is a purchase from the vendor and counts toward the workspace's document order plan limit; an order is refused once the limit is reached. On the workspace's own contract the vendor bills it, which list_available_documents shows as billed by the provider. On Dotfile's contract Dotfile bills it at the price tier resolved when the order is placed, usually the one list_available_documents shows, except on trial and internal workspaces. This tool sells no Dotfile subscription, plan or credit. The order may still be processing when this tool returns. Parameters: - company_id: The id of the company to order the document for - product_ref: The productRef of the document to order, among the documents available for that company Ordering the same document again for the company returns the existing order instead of ordering and billing it twice; only a failed order is placed again.

bulk_reject_cases

ChatGPT
Reject every selected case. Runs 'reject_case' once per selected case, as a durable background job under your own permissions: you need what 'reject_case' needs, and its bulk permission when it has one. The call returns a bulkActionId as soon as the job is dispatched; follow its status and counters with get_bulk_action_result or list_bulk_actions, and stop the remaining invocations with cancel_bulk_action. An invocation that already ran is not undone. args holds the parameters of 'reject_case' every invocation receives. 'reject_case' gets case_id from the selected case; neither can be passed. A parameter 'reject_case' does not take, or a missing required one, refuses the call before the job starts; a requirement that depends on another parameter is checked per invocation, which then fails. Select the cases with exactly one of: - entity_ids: the ids of the cases to target. - filter: a json-logic filter selecting every matching case, with the column keys of the console case table. Tell the user how many cases it matches before running a write they cannot take back. - items: one entry per invocation, with its own parameters merged over args, for a parameter that differs per case. The same case may appear more than once. About 'reject_case': Reject the case identified by case_id. Records a rejection decision and moves the case to the rejected status. Parameters: - case_id: the id of the case to reject - comment: optional note explaining the decision (the workspace may require one)

bulk_remove_case_tags

ChatGPT
Detach tags from every selected case. Runs 'remove_case_tags' once per selected case, as a durable background job under your own permissions: you need what 'remove_case_tags' needs, and its bulk permission when it has one. The call returns a bulkActionId as soon as the job is dispatched; follow its status and counters with get_bulk_action_result or list_bulk_actions, and stop the remaining invocations with cancel_bulk_action. An invocation that already ran is not undone. args holds the parameters of 'remove_case_tags' every invocation receives. 'remove_case_tags' gets case_id from the selected case and action = remove from this tool; neither can be passed. Every invocation needs tags, from args or from its item's args. A parameter 'remove_case_tags' does not take, or a missing required one, refuses the call before the job starts; a requirement that depends on another parameter is checked per invocation, which then fails. Select the cases with exactly one of: - entity_ids: the ids of the cases to target. - filter: a json-logic filter selecting every matching case, with the column keys of the console case table. Tell the user how many cases it matches before running a write they cannot take back. - items: one entry per invocation, with its own parameters merged over args, for a parameter that differs per case. The same case may appear more than once. About 'remove_case_tags': Detach tags from a case. Attach or detach one or more existing tags on the case identified by case_id. Parameters: - case_id: the id of the case to tag - tags: tag labels or ids (use list_tags to find them) The tags must already exist in the workspace; use create_tag first if needed.

bulk_reopen_cases

ChatGPT
Reopen every selected decided case. Runs 'reopen_case' once per selected case, as a durable background job under your own permissions: you need what 'reopen_case' needs, and its bulk permission when it has one. The call returns a bulkActionId as soon as the job is dispatched; follow its status and counters with get_bulk_action_result or list_bulk_actions, and stop the remaining invocations with cancel_bulk_action. An invocation that already ran is not undone. args holds the parameters of 'reopen_case' every invocation receives. 'reopen_case' gets case_id from the selected case; neither can be passed. A parameter 'reopen_case' does not take, or a missing required one, refuses the call before the job starts; a requirement that depends on another parameter is checked per invocation, which then fails. Select the cases with exactly one of: - entity_ids: the ids of the cases to target. - filter: a json-logic filter selecting every matching case, with the column keys of the console case table. Tell the user how many cases it matches before running a write they cannot take back. - items: one entry per invocation, with its own parameters merged over args, for a parameter that differs per case. The same case may appear more than once. About 'reopen_case': Reopen the case identified by case_id, moving it back to the open status. Only a decided case (approved, rejected or closed) can be reopened.

bulk_send_communication

ChatGPT
Send an email about every selected case. An email cannot be recalled once sent. Runs 'send_communication' once per selected case, as a durable background job under your own permissions: you need what 'send_communication' needs, and its bulk permission when it has one. The call returns a bulkActionId as soon as the job is dispatched; follow its status and counters with get_bulk_action_result or list_bulk_actions, and stop the remaining invocations with cancel_bulk_action. An invocation that already ran is not undone. args holds the parameters of 'send_communication' every invocation receives. 'send_communication' gets case_id from the selected case; neither can be passed. Every invocation needs recipient, from args or from its item's args. A parameter 'send_communication' does not take, or a missing required one, refuses the call before the job starts; a requirement that depends on another parameter is checked per invocation, which then fails. Select the cases with exactly one of: - entity_ids: the ids of the cases to target. - filter: a json-logic filter selecting every matching case, with the column keys of the console case table. Tell the user how many cases it matches before running a write they cannot take back. - items: one entry per invocation, with its own parameters merged over args, for a parameter that differs per case. The same case may appear more than once. About 'send_communication': Send an email communication. Parameters: - recipient: who to reach - business_contact: email a named business contact of a case. The email is recorded in the case's communication history and wrapped in the workspace's branded template (header, logo, footer), so write only the message itself — no greeting/signature template or HTML page layout. Requires case_id, individual_id, subject and content; optional client_portal_id and reply_to_communication_id. - case_contact: same email, but the relevant business contact of the case is resolved automatically — use it when you know the case and not which individual to email. When the case has no reachable business contact, nothing is sent and the tool reports it. Requires case_id, subject and content; optional client_portal_id. - workspace_member: email a member of the workspace — a colleague, not a case contact. Plain email (no branded template), NOT recorded in any case's communication history. Requires user_id, subject and content. - reminder: schedule a reminder for the business contacts of a case, generated from its pending checks and sent by the communication worker; a reminder already scheduled for a contact is not duplicated. Requires case_id only. - case_id: the case to email about (business_contact, case_contact and reminder) - individual_id: the business contact to email (business_contact only; use query_entities or list the case individuals to find it) - user_id: the workspace member's user id (workspace_member only; use list_workspace_members to find it) - subject / content: the email subject and body — required for every recipient but reminder; content is Markdown (headings, lists, bold, links), rendered to HTML - client_portal_id: optional client portal to link to from the email (business_contact and case_contact; use list_client_portals to turn a portal name into its id and see its link access). Depending on that access, the contact either enters the portal directly from the link or first confirms their email with a one-time login link; the result says which, so relay it rather than promising direct access - reply_to_communication_id: optional id of a communication to reply to, keeping the same thread (business_contact only)

bulk_set_assignee

ChatGPT
Assign every selected case, to the same member or to one per case. Runs 'set_assignee' once per selected case, as a durable background job under your own permissions: you need what 'set_assignee' needs, and its bulk permission when it has one. The call returns a bulkActionId as soon as the job is dispatched; follow its status and counters with get_bulk_action_result or list_bulk_actions, and stop the remaining invocations with cancel_bulk_action. An invocation that already ran is not undone. args holds the parameters of 'set_assignee' every invocation receives. 'set_assignee' gets case_id from the selected case; neither can be passed. Every invocation needs assigneeId, from args or from its item's args. A parameter 'set_assignee' does not take, or a missing required one, refuses the call before the job starts; a requirement that depends on another parameter is checked per invocation, which then fails. Select the cases with exactly one of: - entity_ids: the ids of the cases to target. - filter: a json-logic filter selecting every matching case, with the column keys of the console case table. Tell the user how many cases it matches before running a write they cannot take back. - items: one entry per invocation, with its own parameters merged over args, for a parameter that differs per case. The same case may appear more than once. About 'set_assignee': Change the assignee of the case identified by case_id. Use this tool to assign the case to a different team member or unassign it. Parameters: - case_id: The id of the case to assign - assigneeId: The user ID of the new assignee (or null to unassign) - assigneeName: Optional display name for confirmation Use this when the user wants to: - Assign the case to themselves - Assign the case to another team member - Unassign the case (make it available for others)

bulk_set_control_state

ChatGPT
Complete or reopen a manual control on every selected case. Runs 'set_control_state' once per selected case, as a durable background job under your own permissions: you need what 'set_control_state' needs, and its bulk permission when it has one. The call returns a bulkActionId as soon as the job is dispatched; follow its status and counters with get_bulk_action_result or list_bulk_actions, and stop the remaining invocations with cancel_bulk_action. An invocation that already ran is not undone. args holds the parameters of 'set_control_state' every invocation receives. 'set_control_state' gets case_id from the selected case; neither can be passed. Every invocation needs case_control_id, state, from args or from its item's args. A parameter 'set_control_state' does not take, or a missing required one, refuses the call before the job starts; a requirement that depends on another parameter is checked per invocation, which then fails. Select the cases with exactly one of: - entity_ids: the ids of the cases to target. - filter: a json-logic filter selecting every matching case, with the column keys of the console case table. Tell the user how many cases it matches before running a write they cannot take back. - items: one entry per invocation, with its own parameters merged over args, for a parameter that differs per case. The same case may appear more than once. About 'set_control_state': Mark a manual control on the case identified by case_id as completed, or as uncompleted (reopen it). Parameters: - case_id: the id of the case the control belongs to - case_control_id: the id of the case control (use list_case_controls to find it) - state: completed or uncompleted - comment: an optional note explaining the change Only manual controls can be marked; automatic controls are computed by the engine.

bulk_set_risk

ChatGPT
Set the risk of every selected case. Runs 'set_risk' once per selected case, as a durable background job under your own permissions: you need what 'set_risk' needs, and its bulk permission when it has one. The call returns a bulkActionId as soon as the job is dispatched; follow its status and counters with get_bulk_action_result or list_bulk_actions, and stop the remaining invocations with cancel_bulk_action. An invocation that already ran is not undone. args holds the parameters of 'set_risk' every invocation receives. 'set_risk' gets case_id from the selected case; neither can be passed. Every invocation needs mode, from args or from its item's args. A parameter 'set_risk' does not take, or a missing required one, refuses the call before the job starts; a requirement that depends on another parameter is checked per invocation, which then fails. Select the cases with exactly one of: - entity_ids: the ids of the cases to target. - filter: a json-logic filter selecting every matching case, with the column keys of the console case table. Tell the user how many cases it matches before running a write they cannot take back. - items: one entry per invocation, with its own parameters merged over args, for a parameter that differs per case. The same case may appear more than once. About 'set_risk': Set the risk of the case identified by case_id: a manual risk level, or re-enable the automatic assessment. Parameters: - case_id: the id of the case to set the risk of - mode: manual or automatic - level: required for manual — the new risk level (low, medium, high, critical, prohibited or not_defined to remove the risk) - comment: optional comment explaining the change (manual only) automatic re-promotes the case's latest automatic risk to be the current one, replacing a manual override; the case must have a current manual risk and at least one automatic risk.

bulk_set_template

ChatGPT
Apply a template to every selected case. Runs 'set_template' once per selected case, as a durable background job under your own permissions: you need what 'set_template' needs, and its bulk permission when it has one. The call returns a bulkActionId as soon as the job is dispatched; follow its status and counters with get_bulk_action_result or list_bulk_actions, and stop the remaining invocations with cancel_bulk_action. An invocation that already ran is not undone. args holds the parameters of 'set_template' every invocation receives. 'set_template' gets case_id from the selected case; neither can be passed. Every invocation needs templateId, from args or from its item's args. A parameter 'set_template' does not take, or a missing required one, refuses the call before the job starts; a requirement that depends on another parameter is checked per invocation, which then fails. Select the cases with exactly one of: - entity_ids: the ids of the cases to target. - filter: a json-logic filter selecting every matching case, with the column keys of the console case table. Tell the user how many cases it matches before running a write they cannot take back. - items: one entry per invocation, with its own parameters merged over args, for a parameter that differs per case. The same case may appear more than once. About 'set_template': Apply a template to the case identified by case_id. This assigns the template and triggers the automation pipeline to create checks and controls based on template rules.

bulk_start_ai_review

ChatGPT
Run an AI review on every selected check. Runs 'start_ai_review' once per selected check, as a durable background job under your own permissions: you need what 'start_ai_review' needs, and its bulk permission when it has one. The call returns a bulkActionId as soon as the job is dispatched; follow its status and counters with get_bulk_action_result or list_bulk_actions, and stop the remaining invocations with cancel_bulk_action. An invocation that already ran is not undone. args holds the parameters of 'start_ai_review' every invocation receives. 'start_ai_review' gets checkId from the selected check; neither can be passed. A parameter 'start_ai_review' does not take, or a missing required one, refuses the call before the job starts; a requirement that depends on another parameter is checked per invocation, which then fails. Select the checks with exactly one of: - entity_ids: the ids of the checks to target. - filter: a json-logic filter selecting every matching check, with the column keys of the console check table. Tell the user how many checks it matches before running a write they cannot take back. - items: one entry per invocation, with its own parameters merged over args, for a parameter that differs per check. The same check may appear more than once. About 'start_ai_review': Run an AI review on a single check. The agent type is resolved from the check type — no agent type input is needed. A check is eligible when its status is need_review and its type is one of: id_verification (AI agent: review_id_verification_check), id_document (AI agent: review_id_document_check), aml (AI agent: review_aml_check), document (AI agent: review_document_check). The call dispatches the review and returns immediately: the review runs in the background, so there is no decision yet. Once the review has finished, its outcome is recorded on the check: a recommended decision, or no decision when the agent could not reach one.

bulk_update_cases

ChatGPT
Update the editable fields of every selected case. Runs 'update_case' once per selected case, as a durable background job under your own permissions: you need what 'update_case' needs, and its bulk permission when it has one. The call returns a bulkActionId as soon as the job is dispatched; follow its status and counters with get_bulk_action_result or list_bulk_actions, and stop the remaining invocations with cancel_bulk_action. An invocation that already ran is not undone. args holds the parameters of 'update_case' every invocation receives. 'update_case' gets case_id from the selected case; neither can be passed. A parameter 'update_case' does not take, or a missing required one, refuses the call before the job starts; a requirement that depends on another parameter is checked per invocation, which then fails. Select the cases with exactly one of: - entity_ids: the ids of the cases to target. - filter: a json-logic filter selecting every matching case, with the column keys of the console case table. Tell the user how many cases it matches before running a write they cannot take back. - items: one entry per invocation, with its own parameters merged over args, for a parameter that differs per case. The same case may appear more than once. About 'update_case': Update the editable fields of the case identified by case_id. Parameters (provide only what should change): - case_id: the id of the case to update (always required) - name: the case name - external_id: the external id (null to clear it) - custom_properties: a map of custom property key to value Status, assignee and template are not changed here — use the dedicated decision, assignee and template tools.

bulk_update_companies

ChatGPT
Update the fields of every selected company. Runs 'update_company' once per selected company, as a durable background job under your own permissions: you need what 'update_company' needs, and its bulk permission when it has one. The call returns a bulkActionId as soon as the job is dispatched; follow its status and counters with get_bulk_action_result or list_bulk_actions, and stop the remaining invocations with cancel_bulk_action. An invocation that already ran is not undone. args holds the parameters of 'update_company' every invocation receives. 'update_company' gets company_id from the selected company; neither can be passed. A parameter 'update_company' does not take, or a missing required one, refuses the call before the job starts; a requirement that depends on another parameter is checked per invocation, which then fails. Select the companies with exactly one of: - entity_ids: the ids of the companies to target. - filter: a json-logic filter selecting every matching company, with the column keys of the console company table. Tell the user how many companies it matches before running a write they cannot take back. - items: one entry per invocation, with its own parameters merged over args, for a parameter that differs per company. The same company may appear more than once. About 'update_company': Update the fields of the company identified by company_id: legal identity, registration, address, identifiers and custom property values. Provide only what should change; pass null to clear an optional field. Within address, the fields you omit keep their current value. custom_properties is keyed by the custom property keys the workspace defines; an unknown key is rejected.

bulk_update_individuals

ChatGPT
Update the fields of every selected individual. Runs 'update_individual' once per selected individual, as a durable background job under your own permissions: you need what 'update_individual' needs, and its bulk permission when it has one. The call returns a bulkActionId as soon as the job is dispatched; follow its status and counters with get_bulk_action_result or list_bulk_actions, and stop the remaining invocations with cancel_bulk_action. An invocation that already ran is not undone. args holds the parameters of 'update_individual' every invocation receives. 'update_individual' gets individual_id from the selected individual; neither can be passed. A parameter 'update_individual' does not take, or a missing required one, refuses the call before the job starts; a requirement that depends on another parameter is checked per invocation, which then fails. Select the individuals with exactly one of: - entity_ids: the ids of the individuals to target. - filter: a json-logic filter selecting every matching individual, with the column keys of the console individual table. Tell the user how many individuals it matches before running a write they cannot take back. - items: one entry per invocation, with its own parameters merged over args, for a parameter that differs per individual. The same individual may appear more than once. About 'update_individual': Update the fields of the individual identified by individual_id: identity, contact details, address, identifiers and custom property values. Provide only what should change; pass null to clear an optional field. Within address, the fields you omit keep their current value — the country of residence is address.country. nationalities replaces the whole list. custom_properties is keyed by the custom property keys the workspace defines; an unknown key is rejected. Roles, ownership and the other relations to the case are not changed here. This connector does not take social_security_number or tax_identification_number, which are government identifiers: set them in the Dotfile console.

bulk_update_note

ChatGPT
Replace the content of a note on every selected case, one note per invocation. Runs 'update_note' once per selected case, as a durable background job under your own permissions: you need what 'update_note' needs, and its bulk permission when it has one. The call returns a bulkActionId as soon as the job is dispatched; follow its status and counters with get_bulk_action_result or list_bulk_actions, and stop the remaining invocations with cancel_bulk_action. An invocation that already ran is not undone. args holds the parameters of 'update_note' every invocation receives. 'update_note' gets case_id from the selected case and action = update_note from this tool; neither can be passed. Every invocation needs note_id, content, from args or from its item's args. A parameter 'update_note' does not take, or a missing required one, refuses the call before the job starts; a requirement that depends on another parameter is checked per invocation, which then fails. Select the cases with exactly one of: - entity_ids: the ids of the cases to target. - filter: a json-logic filter selecting every matching case, with the column keys of the console case table. Tell the user how many cases it matches before running a write they cannot take back. - items: one entry per invocation, with its own parameters merged over args, for a parameter that differs per case. The same case may appear more than once. About 'update_note': Replace the content of a note on a case. Create, update or delete notes and note comments (replies) on the case identified by case_id. Parameters: - case_id: the id of the case the note belongs to - content: the note or comment text — required for add_note, update_note (max 10,000 characters) and add_comment, update_comment (max 3,000 characters) - note_id: required for update_note, delete_note and add_comment (use list_notes to find it) - comment_id: required for update_comment and delete_comment (use list_notes to find it) Use notes to document observations, findings, decisions or rationale on the case; use comments to reply to an existing note.

bulk_update_note_comment

ChatGPT
Replace the content of a note comment on every selected case, one comment per invocation. Runs 'update_note_comment' once per selected case, as a durable background job under your own permissions: you need what 'update_note_comment' needs, and its bulk permission when it has one. The call returns a bulkActionId as soon as the job is dispatched; follow its status and counters with get_bulk_action_result or list_bulk_actions, and stop the remaining invocations with cancel_bulk_action. An invocation that already ran is not undone. args holds the parameters of 'update_note_comment' every invocation receives. 'update_note_comment' gets case_id from the selected case and action = update_comment from this tool; neither can be passed. Every invocation needs comment_id, content, from args or from its item's args. A parameter 'update_note_comment' does not take, or a missing required one, refuses the call before the job starts; a requirement that depends on another parameter is checked per invocation, which then fails. Select the cases with exactly one of: - entity_ids: the ids of the cases to target. - filter: a json-logic filter selecting every matching case, with the column keys of the console case table. Tell the user how many cases it matches before running a write they cannot take back. - items: one entry per invocation, with its own parameters merged over args, for a parameter that differs per case. The same case may appear more than once. About 'update_note_comment': Replace the content of a comment on a note. Create, update or delete notes and note comments (replies) on the case identified by case_id. Parameters: - case_id: the id of the case the note belongs to - content: the note or comment text — required for add_note, update_note (max 10,000 characters) and add_comment, update_comment (max 3,000 characters) - note_id: required for update_note, delete_note and add_comment (use list_notes to find it) - comment_id: required for update_comment and delete_comment (use list_notes to find it) Use notes to document observations, findings, decisions or rationale on the case; use comments to reply to an existing note.

buy_company_data

ChatGPT
Buy fresh company profile data for an existing company from a business data vendor, under the vendor contract the workspace is configured with (Dotfile's or the workspace's own), as a company data fetch from the console does. Every call is a new purchase request to the vendor. Once the vendor returns the data, the purchase is recorded as company data usage of the workspace and counts toward its plan limit; a call is refused once the limit is reached. On the workspace's own contract the vendor bills the workspace; on Dotfile's contract Dotfile bills the usage, except on trial and internal workspaces. There is no deduplication, so buying twice is a second purchase. This tool sells no Dotfile subscription, plan or credit. Check how recent the current data is before buying; the result includes when the previous data was fetched. Parameters: - company_id: The id of the company to buy data for - vendor: The vendor to buy from; omit to buy from the vendor of the company's most recent purchase After a purchase, use get_company_data_changes to compare the refreshed data with the previous snapshot.

cancel_bulk_action

ChatGPT
Cancel a bulk action you dispatched earlier, by its bulkActionId. Only a pending or running bulk action can be cancelled — already-settled items keep their outcome. Items still waiting are cancelled; items already in flight finish on their own.

close_case

ChatGPT
Close the case identified by case_id. Records a closing decision and moves the case to the closed status. Parameters: - case_id: the id of the case to close - comment: optional note explaining the decision (the workspace may require one)

create_case

ChatGPT
Create a new case for a company (KYB) or an individual (KYC). Parameters: - entity_type: company or individual - search_ref / company: for a company, provide exactly one of the two. search_ref is a searchRef from a search_company_data result: this tool then fetches detailed company data and creates the case with its beneficial owners and affiliated companies. company is the company's own fields, for data you already hold (a spreadsheet, a user's input): only name is required, and the case holds that company alone. Prefer search_ref whenever the company can be found, it yields a far richer case - first_name / last_name: required for individual - birth_date (yyyy-MM-dd), birth_country (ISO 3166-1 alpha-2), email: optional, individual only - case_name: optional custom case name. Defaults to "KYB - {companyName}" or "KYC - {firstName} {lastName}" - template_id: optional case template ID

create_check

ChatGPT
Create a check on an individual or company. Supports 10 check types with entity compatibility validation. Check types: - aml (AML screening) — AML screening against PEP, sanctions, and adverse-media watchlists. Individual or company. - company_monitoring (Company monitoring) — Ongoing monitoring of a company's legal and financial status. Company only. - id_verification (Identity verification) — Automated identity verification of an individual, completed in the identity verification vendor's own hosted flow. Individual only. - id_document (Identity document) — Upload and review of a government-issued identity document. Individual only. - document (Document) — Upload and review of a specific document type required for the case. Individual or company. - ekyc (eKYC) — Comprehensive electronic KYC flow combining identity document verification, identity verification and watchlist screening in a single journey hosted by the vendor. Individual only. - electronic_signature (Electronic signature) — Electronic signature collection on a document template. Individual only. - email_phone_verification (Email & Phone verification) — Verification of an individual's email address and phone number, with the fraud and trust signals the vendor returns alongside them. Individual only. - fraud_database (Fraud Database) — Screening against fraud databases (bank-account, identity-fraud lists). Individual or company. - online_reputation (Online Reputation) — Analysis of a company's public online presence and reputation. Company only. Identity verification and eKYC checks send the individual to the vendor's hosted flow, which collects the document and face capture: this tool never receives images or biometric data. Parameters: - type: The type of check to create. Pick the exact type the user asked for; never substitute a similar-sounding or related type. - entityId: The ID of the individual or company to run the check on. - entityType: Whether the entity is an individual or a company. - settings: Optional check-type-specific settings.

create_tag

ChatGPT
Add a tag to the workspace tag list. Create, rename or delete a tag in the workspace tag list. Parameters: - label: the tag label (max 100 characters, must be unique in the workspace) — required for create and update - tag_id: the id of the tag to rename or delete (use list_tags to find it) — required for update and delete Use list_tags first: create only what does not exist yet, and resolve the id of what does. Deleting a tag also detaches it from every case it was on. This writes the tag list itself. To put an existing tag on a case, use add_case_tags or remove_case_tags.

create_template

ChatGPT
Create a case template. Create, update or delete a case template. A template with rules cannot be deleted; delete its rules first. The key is immutable after creation.

create_template_rule

ChatGPT
Create one or several rules of the same kind on a template. Create, update or delete a template rule. An update changes only the fields you pass: activation_json_logic (null removes the condition) on every kind, deduplication and variants (the list you pass replaces all existing variants) on a check rule, auto_purchase_settings on an auto-purchase rule. check_target, check_type, check_settings and control_id are fixed once the rule exists; delete and recreate the rule to change them. To create several rules of the same kind on one template, pass them in "rules" in a single call instead of calling this tool once per rule: the user approves them together and they are created atomically. A rule only decides which check a case gets: for identity verification and eKYC checks, the vendor collects the document and face capture in its own hosted flow, and none of it passes through this tool.

delete_case

ChatGPT
Delete the case identified by case_id. This soft-deletes the case and everything attached to it. Use with care — prefer rejecting or closing a case over deleting it.

delete_check

ChatGPT
Delete a check. Parameters: - check_id: the id of the check to delete (use query_entities to find it)

delete_note

ChatGPT
Delete a note from a case. Create, update or delete notes and note comments (replies) on the case identified by case_id. Parameters: - case_id: the id of the case the note belongs to - content: the note or comment text — required for add_note, update_note (max 10,000 characters) and add_comment, update_comment (max 3,000 characters) - note_id: required for update_note, delete_note and add_comment (use list_notes to find it) - comment_id: required for update_comment and delete_comment (use list_notes to find it) Use notes to document observations, findings, decisions or rationale on the case; use comments to reply to an existing note.

delete_note_comment

ChatGPT
Delete a comment from a note. Create, update or delete notes and note comments (replies) on the case identified by case_id. Parameters: - case_id: the id of the case the note belongs to - content: the note or comment text — required for add_note, update_note (max 10,000 characters) and add_comment, update_comment (max 3,000 characters) - note_id: required for update_note, delete_note and add_comment (use list_notes to find it) - comment_id: required for update_comment and delete_comment (use list_notes to find it) Use notes to document observations, findings, decisions or rationale on the case; use comments to reply to an existing note.

delete_tag

ChatGPT
Delete a tag from the workspace tag list, detaching it from every case. Create, rename or delete a tag in the workspace tag list. Parameters: - label: the tag label (max 100 characters, must be unique in the workspace) — required for create and update - tag_id: the id of the tag to rename or delete (use list_tags to find it) — required for update and delete Use list_tags first: create only what does not exist yet, and resolve the id of what does. Deleting a tag also detaches it from every case it was on. This writes the tag list itself. To put an existing tag on a case, use add_case_tags or remove_case_tags.

delete_template

ChatGPT
Delete a case template that has no rules. Create, update or delete a case template. A template with rules cannot be deleted; delete its rules first. The key is immutable after creation.

delete_template_rule

ChatGPT
Delete a template rule. Create, update or delete a template rule. An update changes only the fields you pass: activation_json_logic (null removes the condition) on every kind, deduplication and variants (the list you pass replaces all existing variants) on a check rule, auto_purchase_settings on an auto-purchase rule. check_target, check_type, check_settings and control_id are fixed once the rule exists; delete and recreate the rule to change them. To create several rules of the same kind on one template, pass them in "rules" in a single call instead of calling this tool once per rule: the user approves them together and they are created atomically. A rule only decides which check a case gets: for identity verification and eKYC checks, the vendor collects the document and face capture in its own hosted flow, and none of it passes through this tool.

describe_analytic_datasets

ChatGPT
Describe the analytic datasets available for charts: their dimensions (with type and allowed values), the named counts and numerics their measures can reference, and whether they support a state snapshot, a per-bucket as-of series, or a first-event-per-group restriction. These are the exact keys an analytics query takes. A dimension that is not groupable cannot be used as a breakdown; one that is not filterable cannot appear in filters.

describe_entity_columns

ChatGPT
List the columns of an entity: their key, type, whether they can be filtered or sorted, the operators they accept and, when they have a fixed option list, their allowed values. Includes this workspace's custom properties, so the keys differ from one workspace to the next. These keys are the ones an entity filter takes. Columns of relation kind (assignee, template, tags) filter on the ids of workspace members, templates or tags, and carry no option list here. Custom property columns appear as the keys to filter on.

get_bulk_action_result

ChatGPT
Fetch the current status and item counters of any bulk action by its bulkActionId, including pending and terminal jobs. Status partial means processing completed with failed or skipped items, not full success. failed and cancelled are terminal failures; pending and running are not terminal. Missing or inaccessible jobs return an error, never success. For an AI review (start_ai_review) this returns each reviewed check's decision (approved / rejected) with the reviewer's reasoning, plus the aggregate counts. Use job status and item counters to wait for completion; the review fields (total, approved, rejected, undecided, items) describe only linked AI reviews, not overall job progress. Returns at most 50 per-item rows (the counts always reflect the full set).

get_check

ChatGPT
Read a single check's details and outcome as readable text: - header: check type, id and status - Result: the latest decision (approved, rejected, error) or pending - Review: who reviewed it (user, system or api), when, and their comment - Findings: each analysis result with its outcome, expected and received values - Details: the remaining result data (extracted information, screening hits, settings, provider findings). Files appear by id, name and mime type. - Files: every attached file with its role (front, back, document…), name, mime type and file_id, to read its text or download it Storage locations, raw provider payloads and internal bookkeeping fields are not returned. Use this to inspect a check before acting on it — for example to see why it needs review, or what an AI/human review concluded. Parameters: - check_id: the id of the check to read (use query_entities to find it)

get_check_file_text

ChatGPT
Read the text of one file attached to a check, such as the front of an identity document or a page of a submitted document. PDFs and images (PNG, JPEG, TIFF) are read with OCR; other formats return a message saying the text can't be read. The result says when only part of the file was read. Parameters: - check_id: the id of the check the file is attached to - file_id: the id of the file, as listed in the check's files

get_client_portal_form

ChatGPT
Read one client portal's editable form: its setting, ordered steps, blocks, field options and conditional logic. By default translations include only language and completeness metadata; set include_wording to include the raw per-language wording dictionary. Use list_client_portals to find the id.

get_company_data_changes

ChatGPT
Compare the two most recent purchased data snapshots of a company and return the changes as categorized old/new value pairs (same categories as company monitoring alerts). The comparison is computed deterministically in code; nothing is purchased and nothing is billed. Parameters: - company_id: The id of the company to compare snapshots for - vendor: Compare the two latest snapshots from this vendor; omit to use the vendor of the most recent snapshot Use after buy_company_data to detect discrepancies between the previous and the refreshed profile.

get_document_text

ChatGPT
Read the text content of a completed document order (PDF or scanned image, via OCR). Parameters: - document_order_id: The id of the document order to read (from list_document_orders) Only completed orders have a file to read. Use this to inspect what a purchased document actually contains. Long documents can be read only in part: the result then says which pages and how many characters it covers, and links the full PDF.

get_entity_timeline

ChatGPT
Read the activity journal of one case, company, individual, case control or check — the same feed the console shows on the entity. Returns the events newest first, each with its date, its author and, when the event changed fields, the previous and next value of each one. Use this to reconstruct a history and attribute it: who created the case, who applied the template and when, every status the case went through, who approved or rejected a check, why a communication was cancelled. The author is named whenever the platform knows it: a workspace member or a business contact by their name, an API key by its name. Events the platform performed on its own are attributed to the system, and an event an AI agent performed says so. Filter with source_events to follow one thread of the history — the status changes, the check decisions — and leave it out to read everything. Events recorded before the platform started storing which event produced them carry no source event, so a filtered read skips that older history. Pass a check id for a check, not the id of its result data. Ids come from query_entities for a case, company, individual or check, and from list_case_controls for a control.

get_risk_engine_version

ChatGPT
Read one version of a risk engine: its code, and whether that code is the one currently scoring cases. The code is the rules. It reads the case through $.input, and reaches a level by calling $.set_risk with it. Read it to explain why a case got the level it did, or to see what a level depends on before changing it. Parameters: - version_id: the id of the version to read — use list_risk_engines to find it

get_workspace_settings

ChatGPT
Read the configuration of the current workspace — the defaults and policies that change how the product behaves for this customer. Returns the whole settings tree as JSON, in the exact shape update_workspace_settings accepts, so you can read a value, change it and write it back without guessing field names. It covers the check policies (automatic approval, rejection and expiration per check type, and each check's vendor), AML screening, risk levels and review periods, per-country company-data vendors and UBO thresholds, communication senders and reminders, data retention, MFA, SSO and IP allowlist. Vendor credentials are not returned: OAuth tokens, API key ids, DNS proof records and external provider ids are left out. Feature flags are not part of workspace settings and are not returned here.

list_aml_screening_profiles

ChatGPT
List the AML screening profiles available to this workspace, including their IDs, archive/default status and stored screening settings. Without profile_id, this returns local snapshots without refreshing Mesh. Before updating a profile, call again with its profile_id to fetch only that profile's current provider settings and expected_version. Profiles unavailable for edit do not include an expected_version. Read-only collections are managed in Mesh and preserved automatically; omit them from updates. Use this tool before updating, archiving or unarchiving.

list_analytic_dashboards

ChatGPT
List the analytics dashboards of this workspace, with their id, name and number of widgets. A dashboard with an id is one the workspace created and can take a widget; one with a null id is a Dotfile dashboard and is read-only.

list_assignment_rules

ChatGPT
List the workspace's assignment rules — the rules that decide who a case, company or individual gets assigned to. Returns each rule with its position, status, scope, strategy, condition and the user ids it assigns to. Use it to explain why something was assigned the way it was, and before create_assignment_rule, update_assignment_rule or delete_assignment_rule to get a rule's id. The pool is user ids only. Put a name to one with list_workspace_members, which lists the colleagues you are allowed to see. How the rules run: only enabled rules are evaluated, in ascending position order, and the first rule whose condition matches wins — later rules are not considered. A case that already has an assignee is skipped entirely. It also returns the field paths a condition may reference, per scope, including this workspace's custom properties. Read them before writing a condition: a path that is not in that list is rejected.

list_available_documents

ChatGPT
List the official documents that can be ordered for a company from the registry vendors. Parameters: - company_id: The id of the company to list available documents for Each result includes a productRef, the vendor, a price tier and the expected delivery time. The productRef identifies the document in an order.

list_bulk_actions

ChatGPT
List the bulk actions currently active (pending or running) in the workspace, with their progress. Use it to check what is in flight before dispatching a new one, or to find the bulkActionId of a running action to cancel it.

list_case_controls

ChatGPT
List the controls on the case identified by case_id. Returns each one's id, control label, type and completion status. Use this to review the case's controls — for example before marking one as completed or uncompleted, to find the case control id.

list_client_portals

ChatGPT
List every non-deleted client portal of the workspace, including offline portals. Returns each portal's id, name, type, status, default language, custom domain, whether its draft has unpublished changes, and its link access: direct (the contact enters from the emailed link) or secured (the contact first confirms their email with a one-time login link). Only an online portal can be linked to from a communication.

list_communications

ChatGPT
List the communications (emails) on the case identified by case_id, most recent first. Returns each message's id, thread id, subject, status and sent date. Use this to read the communication history — for example before replying to a contact, to find the communication id to reply to. The history is paginated: one call returns at most limit messages and says how many the case holds. When more remain, the response gives a cursor; call again with it to read the next, older messages, until the response says the history is complete.

list_controls

ChatGPT
List controls configured in the workspace referential, including subtype settings, archive state, and templates that reference them. Use list_case_controls for controls attached to a specific case.

list_custom_properties

ChatGPT
List the custom properties the workspace defines, with the groups they are organised in. Each property comes with its id, key, label, type, target entity, settings, options, group and the number of entities that already hold a value for it. Parameters: - target_entity: case, company, individual — omit to list every property of the workspace - page: page number, 1 by default - per_page: properties per page, 50 by default and at most 100 Properties are ordered by label, then by id. The answer starts with the total and the range shown, and names the next page to request while properties remain — keep requesting pages until it no longer does to read the whole referential. Groups are listed on page 1 only. Call it before create_custom_property, update_custom_property, archive_custom_property, unarchive_custom_property, delete_custom_property, create_custom_property_group, update_custom_property_group or delete_custom_property_group to get the id to write on, the keys and labels already taken, and the entity count an archive or a delete destroys. This is the referential — the fields themselves. To write a value on a company or an individual use update_company or update_individual, and to filter or sort on a property use the column keys describe_entity_columns returns.

list_document_orders

ChatGPT
List the documents already ordered for a company, with their status (created, processing, completed, failed). Parameters: - company_id: The id of the company to list ordered documents for Use get_document_download_link to get a download link for a completed order.

list_document_templates

ChatGPT
List document templates in the workspace, optionally filtered by type. Returns template labels, keys, descriptions, types and status. Use this with filter type=electronic_signature before creating electronic signature checks (unit or bulk) to find the correct documentTemplateKey. Only a published template renders: one reported as a draft has edits nobody has published yet, and one reported without a file cannot render at all. Archived templates are never listed.

list_document_types

ChatGPT
List all custom document types in the workspace, with the settings that decide how each one is reviewed: id, label, key, target entity types, whether the type is internal, whether an analysis and a fraud analysis are configured, and whether a conclusive analysis approves or rejects the check on its own. Use this before creating document checks (unit or bulk) to find the correct documentTypeKey, and before create_document_type, update_document_type, archive_document_type or unarchive_document_type to find the id to write to. Archived document types are not listed.

list_notes

ChatGPT
List the notes on the case identified by case_id. Returns each note and reply with its id, author, creation date and content as Markdown. Use this to read existing documentation, observations or comments — for example before updating or deleting a note, to find the note id.

list_risk_engines

ChatGPT
List the risk engines of the workspace — the code that scores every case and assigns it a risk level. Returns each engine's id, name, status and versions. An engine is versioned: a version with no number is a draft being edited, a numbered version is published and immutable, and the "current" version is the one an online engine runs. Only an online engine with a current version scores cases; an offline engine is configured but idle. Use this to resolve an engine's name to its id, and to find the version id to read with get_risk_engine_version. The version code itself is not listed here — it is too long — so read a version to see the rules. Archived engines are left out unless include_archived is true. An archived engine no longer scores anything and cannot be changed.

list_spaces

ChatGPT
List the spaces visible to the current workspace member, including their IDs, slugs, member counts and open invite counts. Use this before renaming a space.

list_tags

ChatGPT
List all available tags in the workspace. Returns tag names and IDs. Use this before adding tags to cases (unit or bulk) to find existing tags.

list_templates

ChatGPT
Read the workspace case templates. Without template_id, returns one page of templates ordered by name, each with its id, key, description, behaviour flags and the number of check, control and auto-purchase rules it runs. The response says how many templates exist and which page to request next. With template_id, returns that template with its complete check, control, auto-purchase and variant rule configuration. When the rules do not fit in one response, the response says which rules_offset to request next. Use this before set_template to find the correct template ID.

list_workspace_members

ChatGPT
List the members of the workspace — the colleagues who work here. Returns each member's user id, name and email. Use this to resolve a person's name to their user id, for instance before emailing them with send_communication. Parameters: - assignable_to_case_id: the id of a case to restrict the list to the members that case can be assigned to — assignment is restricted to the members of the case's space, so this list can be narrower. Use it to resolve an assignee before set_assignee. When the person you act for belongs to a space, the list is limited to that space, so a colleague outside it will not appear.

list_workspaces

ChatGPT
List the dotfile workspaces you can act in, with their ids and names.

place_document_order

ChatGPT
Place an order for exactly one document with a registry vendor, under the vendor contract the workspace is configured with (Dotfile's or the workspace's own), as an order from the console does. A new order is a purchase from the vendor and counts toward the workspace's document order plan limit; an order is refused once the limit is reached. On the workspace's own contract the vendor bills it, which list_available_documents shows as billed by the provider. On Dotfile's contract Dotfile bills it at the price tier resolved when the order is placed, usually the one list_available_documents shows, except on trial and internal workspaces. This tool sells no Dotfile subscription, plan or credit. The order may still be processing when this tool returns. Parameters: - company_id: The id of the company to order the document for - product_ref: The productRef of the document to order, among the documents available for that company Ordering the same document again for the company returns the existing order instead of ordering and billing it twice; only a failed order is placed again.

query_entities

ChatGPT
Read cases, checks, companies or individuals across the workspace with a json-logic filter — the same columns, operators and values the console list offers a human on that entity. Use it for any question about the portfolio: counts, distributions, "which X are Y", building the set of rows a report is about. It returns the selected columns per row with the row id, plus the total number of matches. Fields: column keys follow entity__mappingType__snake_case (e.g. check__default__status, case__relation__assignee, individual__custom__<your_custom_property_key>). A query on one entity can also filter and select columns of the entities it hangs off — checks reach company, individual and case columns; companies and individuals reach case columns. A rejected key comes back with the valid ones. Values of relation columns (assignee, template, tags) are the ids of workspace members, templates or tags. Scope: reads the whole workspace (a space member sees their space). Add a case__default__id rule to read only one case's rows.

reject_case

ChatGPT
Reject the case identified by case_id. Records a rejection decision and moves the case to the rejected status. Parameters: - case_id: the id of the case to reject - comment: optional note explaining the decision (the workspace may require one)

remove_case_tags

ChatGPT
Detach tags from a case. Attach or detach one or more existing tags on the case identified by case_id. Parameters: - case_id: the id of the case to tag - tags: tag labels or ids (use list_tags to find them) The tags must already exist in the workspace; use create_tag first if needed.

rename_tag

ChatGPT
Rename a tag of the workspace tag list. Create, rename or delete a tag in the workspace tag list. Parameters: - label: the tag label (max 100 characters, must be unique in the workspace) — required for create and update - tag_id: the id of the tag to rename or delete (use list_tags to find it) — required for update and delete Use list_tags first: create only what does not exist yet, and resolve the id of what does. Deleting a tag also detaches it from every case it was on. This writes the tag list itself. To put an existing tag on a case, use add_case_tags or remove_case_tags.

reopen_case

ChatGPT
Reopen the case identified by case_id, moving it back to the open status. Only a decided case (approved, rejected or closed) can be reopened.

save_analytic_widget

ChatGPT
Add a chart to one of the workspace’s custom dashboards, so it is still there in a later session. The chart takes the same fields as an analytics query, plus where to put it. Give EITHER dashboardId for a dashboard that already exists, OR dashboardName to have one created and the chart added to it in a single step; never both. The call writes to the workspace. Only a custom dashboard can take a widget: Dotfile’s own dashboards are read-only, and their ids are not accepted. A dashboard created through dashboardName is visible to the whole workspace; the user can narrow it to themselves from the dashboard list. On a validation error it answers with a sentence saying exactly what is wrong — fix it and call again.

search_company_data

ChatGPT
Search external company data providers by name and/or registration number in a given country. Returns an array of matching companies with their searchRef identifiers. A searchRef identifies one provider record, to create a company from that provider's data.

send_communication

ChatGPT
Send an email communication. Parameters: - recipient: who to reach - business_contact: email a named business contact of a case. The email is recorded in the case's communication history and wrapped in the workspace's branded template (header, logo, footer), so write only the message itself — no greeting/signature template or HTML page layout. Requires case_id, individual_id, subject and content; optional client_portal_id and reply_to_communication_id. - case_contact: same email, but the relevant business contact of the case is resolved automatically — use it when you know the case and not which individual to email. When the case has no reachable business contact, nothing is sent and the tool reports it. Requires case_id, subject and content; optional client_portal_id. - workspace_member: email a member of the workspace — a colleague, not a case contact. Plain email (no branded template), NOT recorded in any case's communication history. Requires user_id, subject and content. - reminder: schedule a reminder for the business contacts of a case, generated from its pending checks and sent by the communication worker; a reminder already scheduled for a contact is not duplicated. Requires case_id only. - case_id: the case to email about (business_contact, case_contact and reminder) - individual_id: the business contact to email (business_contact only; use query_entities or list the case individuals to find it) - user_id: the workspace member's user id (workspace_member only; use list_workspace_members to find it) - subject / content: the email subject and body — required for every recipient but reminder; content is Markdown (headings, lists, bold, links), rendered to HTML - client_portal_id: optional client portal to link to from the email (business_contact and case_contact; use list_client_portals to turn a portal name into its id and see its link access). Depending on that access, the contact either enters the portal directly from the link or first confirms their email with a one-time login link; the result says which, so relay it rather than promising direct access - reply_to_communication_id: optional id of a communication to reply to, keeping the same thread (business_contact only)

set_assignee

ChatGPT
Change the assignee of the case identified by case_id. Use this tool to assign the case to a different team member or unassign it. Parameters: - case_id: The id of the case to assign - assigneeId: The user ID of the new assignee (or null to unassign) - assigneeName: Optional display name for confirmation Use this when the user wants to: - Assign the case to themselves - Assign the case to another team member - Unassign the case (make it available for others)

set_control_state

ChatGPT
Mark a manual control on the case identified by case_id as completed, or as uncompleted (reopen it). Parameters: - case_id: the id of the case the control belongs to - case_control_id: the id of the case control (use list_case_controls to find it) - state: completed or uncompleted - comment: an optional note explaining the change Only manual controls can be marked; automatic controls are computed by the engine.

set_risk

ChatGPT
Set the risk of the case identified by case_id: a manual risk level, or re-enable the automatic assessment. Parameters: - case_id: the id of the case to set the risk of - mode: manual or automatic - level: required for manual — the new risk level (low, medium, high, critical, prohibited or not_defined to remove the risk) - comment: optional comment explaining the change (manual only) automatic re-promotes the case's latest automatic risk to be the current one, replacing a manual override; the case must have a current manual risk and at least one automatic risk.

set_template

ChatGPT
Apply a template to the case identified by case_id. This assigns the template and triggers the automation pipeline to create checks and controls based on template rules.

show_analytic_widget

ChatGPT
Compute an analytics query on the workspace — a trend, a distribution, a rate, a comparison, a breakdown — and return the chart definition with the rows behind it. Pick type for the question: kpi for one number, line for a trend over time, bar for comparing categories or a trend over time (optionally split by category), donut for a distribution across one dimension, pivot for two dimensions crossed, table for one row per group. Dimension, count and numeric keys must be the exact keys of an analytic dataset. Prefer windowMode: state_snapshot for questions about the present ("how many cases are open now"), which ignores the time window; the default bounds events to it. For the same question asked over time ("how many were open at the end of each week"), use windowMode: state_as_of_bucket with a timeBucket — it reads the state as of each bucket rather than counting what moved in it, and needs a dataset of periods (supportsAsOfBucket). On a validation error it answers with a sentence saying exactly what is wrong — fix it and call again.

start_ai_review

ChatGPT
Run an AI review on a single check. The agent type is resolved from the check type — no agent type input is needed. A check is eligible when its status is need_review and its type is one of: id_verification (AI agent: review_id_verification_check), id_document (AI agent: review_id_document_check), aml (AI agent: review_aml_check), document (AI agent: review_document_check). The call dispatches the review and returns immediately: the review runs in the background, so there is no decision yet. Once the review has finished, its outcome is recorded on the check: a recommended decision, or no decision when the agent could not reach one.

update_case

ChatGPT
Update the editable fields of the case identified by case_id. Parameters (provide only what should change): - case_id: the id of the case to update (always required) - name: the case name - external_id: the external id (null to clear it) - custom_properties: a map of custom property key to value Status, assignee and template are not changed here — use the dedicated decision, assignee and template tools.

update_company

ChatGPT
Update the fields of the company identified by company_id: legal identity, registration, address, identifiers and custom property values. Provide only what should change; pass null to clear an optional field. Within address, the fields you omit keep their current value. custom_properties is keyed by the custom property keys the workspace defines; an unknown key is rejected.

update_individual

ChatGPT
Update the fields of the individual identified by individual_id: identity, contact details, address, identifiers and custom property values. Provide only what should change; pass null to clear an optional field. Within address, the fields you omit keep their current value — the country of residence is address.country. nationalities replaces the whole list. custom_properties is keyed by the custom property keys the workspace defines; an unknown key is rejected. Roles, ownership and the other relations to the case are not changed here. This connector does not take social_security_number or tax_identification_number, which are government identifiers: set them in the Dotfile console.

update_note

ChatGPT
Replace the content of a note on a case. Create, update or delete notes and note comments (replies) on the case identified by case_id. Parameters: - case_id: the id of the case the note belongs to - content: the note or comment text — required for add_note, update_note (max 10,000 characters) and add_comment, update_comment (max 3,000 characters) - note_id: required for update_note, delete_note and add_comment (use list_notes to find it) - comment_id: required for update_comment and delete_comment (use list_notes to find it) Use notes to document observations, findings, decisions or rationale on the case; use comments to reply to an existing note.

update_note_comment

ChatGPT
Replace the content of a comment on a note. Create, update or delete notes and note comments (replies) on the case identified by case_id. Parameters: - case_id: the id of the case the note belongs to - content: the note or comment text — required for add_note, update_note (max 10,000 characters) and add_comment, update_comment (max 3,000 characters) - note_id: required for update_note, delete_note and add_comment (use list_notes to find it) - comment_id: required for update_comment and delete_comment (use list_notes to find it) Use notes to document observations, findings, decisions or rationale on the case; use comments to reply to an existing note.

update_template

ChatGPT
Update a case template. Create, update or delete a case template. A template with rules cannot be deleted; delete its rules first. The key is immutable after creation.

update_template_rule

ChatGPT
Update a template rule. Create, update or delete a template rule. An update changes only the fields you pass: activation_json_logic (null removes the condition) on every kind, deduplication and variants (the list you pass replaces all existing variants) on a check rule, auto_purchase_settings on an auto-purchase rule. check_target, check_type, check_settings and control_id are fixed once the rule exists; delete and recreate the rule to change them. To create several rules of the same kind on one template, pass them in "rules" in a single call instead of calling this tool once per rule: the user approves them together and they are created atomically. A rule only decides which check a case gets: for identity verification and eKYC checks, the vendor collects the document and face capture in its own hosted flow, and none of it passes through this tool.

whoami

ChatGPT
Return the authenticated Dotfile user.

Capabilities

Writes

Example Prompts

Click any prompt to copy it.

Similar Apps