Available MCP Work tools
This page provides a more detailed reference for the tools available through Autologyx MCP Work.
MCP Work tools allow approved AI assistants and agents to interact with live Autologyx work. The tools are focused on operational activity, such as finding records, reading and updating record data, creating tasks, assigning work, and generating documents from configured templates.
MCP Work does not expose Autologyx configuration tools. It is not intended to create Object Classes, build forms, configure Sequences, manage roles, or change administration settings. Configuration and administration remain controlled through the normal Autologyx configuration experience.
How to read this page
Each tool is described using the same general structure:
| Section | Meaning |
|---|---|
| Purpose | What the tool is used for |
| Typical use | When an agent might use the tool |
| Required inputs | Inputs the tool needs before it can run |
| Optional inputs | Inputs that refine the request |
| Important requirements | Constraints, dependencies, or safe-use notes |
| Typical output | The kind of result the agent should expect |
The exact response body may vary by environment, permissions, Object Class configuration, Task Template configuration, and product version.
Common concepts
Tool permissions
Agents can only use the MCP Work tools they have been granted. Tool access should be combined with the normal Autologyx role-based access model so that an agent can only see and do what is appropriate for the user, service account, process, or use case.
Object Class and Object Record IDs
Many record tools require an Object Class ID, an Object Record ID, or both.
An agent will often need to search for an Object Class first, then inspect its fields, then search or update records within that class.
Field aliases
When creating or updating Object Records, field values are passed using field aliases.
For create and update tools, the alias is normally the field slug value without the field_ prefix. For example, use first_name, not field_first_name.
For search filters and show_fields, custom Object Class fields normally use the field_ prefix. For example, use field_first_name.
Filters
Search tools support filters. A filter contains a field name and a value. Some filters can use lookup suffixes such as __icontains, __in, __gt, __gte, __lt, __lte, __range, __containsall, or __containssome, depending on the field type.
For example:
{
"filters": [
{
"name": "field_status",
"value": "Open"
},
{
"name": "field_client_name__icontains",
"value": "example"
}
]
}Pagination and ordering
Many search tools support limit, offset, and ordering.
Use these where an agent may retrieve many results. This helps avoid overly broad requests and makes tool use easier to review.
Write actions
Tools that create, update, assign, unassign, save, generate, download, or remove relationships should be treated as write or action tools.
Give agents access to write tools only where the use case requires it. Use human review gates where the action is sensitive, high impact, externally visible, or difficult to reverse.
Record tool endpoints
Record tools allow agents to inspect the data model, find and work with Object Records, manage record relationships, and use document automation.
check_object_records_hierarchy_creation
Checks the status of an asynchronous Object Record hierarchy creation process.
Purpose
Use this tool after create_object_records_hierarchy to confirm whether the hierarchy creation has completed.
Typical use
An agent starts a hierarchy creation request and then checks the transaction status before telling the user the matter structure has been created.
Required inputs
| Input | Type | Notes |
|---|---|---|
id | string | Transaction ID returned by create_object_records_hierarchy |
Important requirements
Only use this tool for transactions initiated by create_object_records_hierarchy.
Interpret the returned status carefully:
| Status | Meaning |
|---|---|
queued | The operation has not completed yet |
processing | The operation is still running |
completed | The hierarchy was created successfully |
failed | The hierarchy creation failed |
If the status is queued or processing, the agent should check again later. The user should not be told that the hierarchy has been created until the status is completed.
Typical output
A transaction status object.
create_object_record
Creates a new Object Record.
Purpose
Use this tool when an agent needs to create a new record in an existing Object Class.
Typical use
An agent creates a new legal request record from information provided by a user in a co-pilot conversation.
Required inputs
| Input | Type | Notes |
|---|---|---|
object_class | integer | Object Class ID for the new record |
Optional inputs
| Input | Type | Notes |
|---|---|---|
fields | array | Field values to set on creation |
Each item in fields contains:
| Key | Type | Notes |
|---|---|---|
alias | string | Field alias without the field_ prefix |
value | string | Field value. For set fields, pass a JSON-encoded array |
Example body
{
"object_class": 12,
"fields": [
{
"alias": "client_name",
"value": "Example Client"
},
{
"alias": "request_type",
"value": "Contract review"
}
]
}Important requirements
The agent must know the correct Object Class and field aliases. Use list_object_class_fields first where needed.
This is a write action. Use appropriate permissions and review patterns.
Typical output
The created Object Record or a confirmation of the created record.
create_object_records_hierarchy
Creates a parent Object Record and nested child Object Records as an asynchronous operation.
Purpose
Use this tool when an agent needs to create a structured record hierarchy in one operation.
Typical use
An agent creates a new matter with related child records for parties, documents, and initial work items.
Required inputs
| Input | Type | Notes |
|---|---|---|
object_class | integer | Object Class ID for the parent record |
Optional inputs
| Input | Type | Notes |
|---|---|---|
fields | array | Field values for the parent record |
children | array | Nested child records. Children can contain their own children arrays |
Important requirements
Before using this tool, the agent must discover allowed child classes with list_object_class_children. This should be repeated recursively for each child class level the agent intends to create.
This tool initiates an asynchronous process. It does not mean the hierarchy has been created immediately.
After starting the operation, the agent must use the transaction ID returned by this tool and call check_object_records_hierarchy_creation until the status is completed or failed.
This is a write action and can create multiple records. Some co-pilot style agents may ask the user for confirmation before running a bulk or multi-record operation.
Typical output
A transaction object with an ID and status, such as queued.
download_object_record_document
Downloads a generated Object Record document payload and metadata.
Purpose
Use this tool when an agent needs to retrieve the generated document file after confirming that it is available.
Typical use
An agent retrieves a generated document so it can be reviewed, summarised, or provided to a user where permitted.
Required inputs
| Input | Type | Notes |
|---|---|---|
object_record | integer | Object Record ID |
document_template | integer | Document Template ID |
uuid | string | Document UUID extracted from get_object_record_document metadata |
Important requirements
Call get_object_record_document first and extract the UUID from the document URL.
The response contains metadata and base64-encoded file content, not a plain binary file.
This tool may expose document content, so permissions and audit are important.
Typical output
A JSON object containing file metadata and base64-encoded content.
generate_object_record_document
Starts document generation for an Object Record and Document Template.
Purpose
Use this tool when an agent needs to generate a document using an existing Autologyx document template.
Typical use
An agent generates a first draft engagement letter using data from a matter record.
Required inputs
| Input | Type | Notes |
|---|---|---|
object_record | integer | Object Record ID |
document_template | integer | Document Template ID |
Optional inputs
| Input | Type | Notes |
|---|---|---|
object_record_field | string | Field where the generated document should be added. Prefix the alias with field_ |
Important requirements
This starts the generation process. The generated document may not be immediately ready.
Use get_object_record_document to check status and retrieve metadata.
This is an action tool and may create or attach a document. Use human review where the document will be externally visible or legally significant.
Typical output
A generation response or reference that can be followed using document status tools.
get_document_template
Retrieves details for a single Document Template.
Purpose
Use this tool when an agent needs to inspect a known template before document generation.
Typical use
An agent checks a document template before generating a draft document from record data.
Required inputs
| Input | Type | Notes |
|---|---|---|
object_class | integer | Object Class ID |
pk | string | Document Template ID |
Important requirements
Use this where the agent needs to confirm template details before calling generate_object_record_document.
Typical output
Details of the Document Template visible to the agent.
get_object_class
Retrieves details for a single Object Class.
Purpose
Use this tool when an agent already has an Object Class ID and needs to inspect the class before working with its records.
Typical use
An agent retrieves details for a matter Object Class before explaining what type of records it contains.
Required inputs
| Input | Type | Notes |
|---|---|---|
pk | string | Object Class ID |
Important requirements
The Object Class must exist and be visible to the agent.
Typical output
Details of the Object Class, including identifiers, metadata, and available permissions.
get_object_record
Retrieves details for a single Object Record.
Purpose
Use this tool when an agent needs to inspect a known record before taking action or answering a question.
Typical use
An agent reviews the current details of an intake record before suggesting next steps or creating a follow-up task.
Required inputs
| Input | Type | Notes |
|---|---|---|
pk | string | Object Record ID |
Important requirements
The record must exist and be visible to the agent.
Use this tool before update actions where the current record state matters.
Typical output
The Object Record details visible to the agent.
get_object_record_document
Retrieves metadata, status, and download information for a generated Object Record document.
Purpose
Use this tool to check whether document generation is still processing, completed, or failed.
Typical use
An agent checks whether a document generated from a template is ready to download or review.
Required inputs
| Input | Type | Notes |
|---|---|---|
object_record | integer | Object Record ID |
document_template | integer | Document Template ID |
Important requirements
If the document is completed and a file download is needed, the agent must extract the document UUID from the document URL returned in the metadata and then call download_object_record_document.
Do not guess the UUID.
Typical output
Document metadata, processing status, error details if generation failed, and a document URL where available.
list_object_class_children
Retrieves direct child Object Classes for a parent Object Class.
Purpose
Use this tool when an agent needs to understand which child record types can sit under a parent record type.
Typical use
An agent checks which child Object Classes can be created under a matter before preparing a matter hierarchy.
Required inputs
| Input | Type | Notes |
|---|---|---|
object_class | integer | Parent Object Class ID |
Important requirements
This tool is required before using create_object_records_hierarchy to create child records. If the hierarchy has multiple levels, the agent should check allowed child classes at each level.
Typical output
A list of direct child Object Classes related to the parent Object Class.
list_object_class_fields
Retrieves valid fields and aliases for a specific Object Class.
Purpose
Use this tool before creating, updating, or filtering Object Records where the agent needs to know which field aliases are valid.
Typical use
An agent checks the field aliases for an intake record before updating priority, client_name, or matter_type.
Required inputs
| Input | Type | Notes |
|---|---|---|
object_class | integer | Object Class ID |
Optional inputs
| Input | Type | Notes |
|---|---|---|
limit | integer | Maximum number of fields to return |
offset | integer | Number of fields to skip |
Important requirements
Use this tool before passing field aliases into create_object_record or update_object_record where the agent is not already certain of the schema.
Typical output
A list of fields for the Object Class, including aliases and field metadata.
list_object_class_parents
Retrieves direct parent Object Classes for a child Object Class.
Purpose
Use this tool when an agent needs to understand where a child record type can sit in the data model.
Typical use
An agent checks which parent record types can contain a document review record.
Required inputs
| Input | Type | Notes |
|---|---|---|
object_class | integer | Child Object Class ID |
Important requirements
This is a relationship discovery tool. It does not create or remove any relationship.
Typical output
A list of direct parent Object Classes related to the child Object Class.
remove_object_record_child
Removes the relationship between a parent Object Record and a child Object Record.
Purpose
Use this tool when an agent needs to disconnect a child record from a parent record.
Typical use
An agent removes a child record that was linked to the wrong parent, after user confirmation.
Required inputs
| Input | Type | Notes |
|---|---|---|
object_record_parent | integer | Parent Object Record ID |
object_record_child | integer | Child Object Record ID |
Important requirements
This is a write action that changes record relationships.
Use this tool carefully. The agent should normally confirm the intended parent and child records before removing a relationship.
Typical output
A success status or confirmation that the relationship has been removed.
search_document_templates
Searches Document Templates for a specific Object Class.
Purpose
Use this tool when an agent needs to find a document template before generating a document.
Typical use
An agent searches for the correct engagement letter template for a matter type.
Required inputs
| Input | Type | Notes |
|---|---|---|
object_class | integer | Object Class ID |
Optional inputs
| Input | Type | Notes |
|---|---|---|
limit | integer | Maximum number of results to return |
offset | integer | Number of results to skip |
ordering | string | Sort field, with - for descending order |
filters | array | Filter objects with name and value |
Important requirements
The agent must have permission to see the relevant templates.
This tool only searches templates. It does not generate a document.
Typical output
A paginated list of matching Document Templates.
search_object_classes
Searches Object Classes matching the supplied criteria.
Purpose
Use this tool when an agent needs to discover which Object Classes are available before searching for records or explaining a data model.
Typical use
An agent is asked to find open legal intake records. It first searches Object Classes to identify the correct intake Object Class.
Required inputs
This tool can be called without a body. Filters are optional.
Optional inputs
| Input | Type | Notes |
|---|---|---|
limit | integer | Maximum number of results to return |
offset | integer | Number of results to skip |
ordering | string | Sort field, with - for descending order |
filters | array | Filter objects with name and value |
Important requirements
The agent must have permission to list Object Classes.
This is a discovery tool. It does not create or change configuration.
Typical output
A paginated list of Object Classes visible to the agent.
search_object_record_children
Finds child records linked to a specific parent Object Record.
Purpose
Use this tool when an agent needs to navigate downward from a parent record to related child records.
Typical use
An agent lists all document review records under a matter.
Required inputs
| Input | Type | Notes |
|---|---|---|
object_record | integer | Parent Object Record ID |
Optional inputs
| Input | Type | Notes |
|---|---|---|
child_object_class | integer | Restrict results to a specific child Object Class |
limit | integer | Maximum number of results to return |
offset | integer | Number of results to skip |
Important requirements
Use child_object_class where possible to avoid returning unrelated child records.
Typical output
A paginated list of direct child Object Records.
search_object_record_documents
Searches documents linked to an Object Record.
Purpose
Use this tool when an agent needs to find documents associated with a record.
Typical use
An agent lists documents already generated or attached to a matter before generating a new one.
Required inputs
| Input | Type | Notes |
|---|---|---|
object_record | integer | Object Record ID |
Optional inputs
| Input | Type | Notes |
|---|---|---|
limit | integer | Maximum number of results to return |
offset | integer | Number of results to skip |
ordering | string | Sort field, with - for descending order |
filters | array | Filter objects with name and value |
Important requirements
Search results depend on the agent’s permissions and the documents associated with the record.
Typical output
A paginated list of documents linked to the Object Record.
search_object_record_parents
Finds parent records linked to a specific child Object Record.
Purpose
Use this tool when an agent needs to navigate upward from a child record to its parent records.
Typical use
An agent identifies the matter or client record associated with a document review record.
Required inputs
| Input | Type | Notes |
|---|---|---|
object_record | integer | Child Object Record ID |
Optional inputs
| Input | Type | Notes |
|---|---|---|
limit | integer | Maximum number of results to return |
offset | integer | Number of results to skip |
Important requirements
The returned parents depend on the relationships visible to the agent.
Typical output
A paginated list of direct parent Object Records.
search_object_records
Searches Object Records matching the supplied criteria.
Purpose
Use this tool when an agent needs to find records within a specific Object Class.
Typical use
An agent finds all open onboarding records assigned to a team, or all matters for a particular client.
Required inputs
| Input | Type | Notes |
|---|---|---|
object_class | integer | Object Class ID to search within |
Optional inputs
| Input | Type | Notes |
|---|---|---|
limit | integer | Maximum number of results to return |
offset | integer | Number of results to skip |
ordering | string | Sort field, with - for descending order |
filters | array | Filter objects with name and value |
show_fields | array | Field aliases to include in the response, normally prefixed with field_ |
Important requirements
Search as narrowly as possible. Use filters and show_fields to avoid returning more data than the agent needs.
Custom Object Class fields in filters normally require the field_ prefix.
Typical output
A paginated list of matching Object Records.
update_object_record
Updates fields on an existing Object Record.
Purpose
Use this tool when an agent needs to update structured data on a known record.
Typical use
An agent updates an intake record with a classification, priority, missing-information flag, or reviewer recommendation.
Required inputs
| Input | Type | Notes |
|---|---|---|
pk | string | Object Record ID |
Optional inputs
| Input | Type | Notes |
|---|---|---|
fields | array | Field values to update |
Each item in fields contains:
| Key | Type | Notes |
|---|---|---|
alias | string | Field alias without the field_ prefix |
value | string | Field value. For set fields, pass a JSON-encoded array |
Example body
{
"fields": [
{
"alias": "triage_status",
"value": "Needs review"
}
]
}Important requirements
This is a write action. The agent should usually retrieve the record first and update only the fields required for the task.
Use human review where the update affects important decisions, record status, or external communications.
Typical output
The updated Object Record or a confirmation of the update.
Task tool endpoints
Task tools allow agents to find, create, read, update, assign, unassign, and manage Tasks.
assign_task_to_user_groups
Assigns a Task to one or more user groups.
Purpose
Use this tool when an agent needs to assign a task to a team or group rather than a named user.
Typical use
An agent assigns a new intake task to the legal operations user group.
Required inputs
| Input | Type | Notes |
|---|---|---|
task | integer | Task ID |
user_groups | array | Array of user group IDs |
Important requirements
This is a write action that changes task assignment.
Use group assignment where work should be picked up by a team queue rather than a specific individual.
Typical output
Confirmation that the task assignment has been updated.
assign_task_to_users
Assigns a Task to one or more users.
Purpose
Use this tool when an agent needs to assign a task to named users.
Typical use
An agent assigns a review task to the responsible lawyer.
Required inputs
| Input | Type | Notes |
|---|---|---|
task | integer | Task ID |
users | array | Array of user IDs |
Important requirements
This is a write action that changes task assignment.
The agent should normally confirm the intended assignee before assigning important work.
Typical output
Confirmation that the task assignment has been updated.
create_automatic_task
Creates a new Automatic Task against an Object Record from a Task Template.
Purpose
Use this tool where a configured automatic task should be created as part of a repeatable process.
Typical use
An agent starts a configured task based on an existing Task Template after a record reaches a certain condition.
Required inputs
| Input | Type | Notes |
|---|---|---|
object_record | integer | Object Record ID |
task_template | integer | Task Template ID |
Important requirements
The selected Task Template determines the task behaviour. Use search_task_templates and get_task_template where the agent needs to identify or confirm the correct template.
This is a write action.
Typical output
The created Task or confirmation that the Task has been created.
create_manual_task
Creates a new Manual Task against an Object Record.
Purpose
Use this tool when an agent needs to create a human-facing task with a name, instructions, and optional due date.
Typical use
An agent creates a review task for a lawyer after identifying a contract that needs human approval.
Required inputs
| Input | Type | Notes |
|---|---|---|
object_record | integer | Object Record ID |
task_template | integer | Task Template ID |
name | string | Task name, maximum 100 characters |
Optional inputs
| Input | Type | Notes |
|---|---|---|
instructions | string | Task instructions, maximum 5000 characters |
due_date | string | Due date in ISO-8601 date format |
Example body
{
"object_record": 1001,
"task_template": 25,
"name": "Review supplier contract",
"instructions": "Please review the non-standard liability provisions and confirm whether escalation is required.",
"due_date": "2026-07-31"
}Important requirements
This is a write action that creates work for a user or team.
The agent should use the correct Task Template and provide clear instructions.
Typical output
The created Task or confirmation that the Task has been created.
get_task
Retrieves current details, configuration, schema, and response data for a Task.
Purpose
Use this tool when an agent needs to inspect a task before saving or updating task data.
Typical use
An agent reviews the schema of a task form before saving a partial response.
Required inputs
| Input | Type | Notes |
|---|---|---|
pk | string | Task ID |
Important requirements
Use this tool before save_task.
The response contains important sections:
| Section | Meaning |
|---|---|
configuration.plugin_config.configuration.data_schema | Defines allowed keys and value types for task data |
response | Contains current task response values |
Typical output
Task details, form schema, current response data, and configuration information.
get_task_template
Retrieves details for a single Task Template.
Purpose
Use this tool when an agent needs to inspect a known Task Template before creating a task.
Typical use
An agent checks the review task template before creating a manual task for a lawyer.
Required inputs
| Input | Type | Notes |
|---|---|---|
pk | string | Task Template ID |
Important requirements
The Task Template must exist and be visible to the agent.
Typical output
Details of the Task Template.
save_task
Saves or updates Task data while keeping the Task outstanding.
Purpose
Use this tool when an agent needs to store task form data without completing the task.
Typical use
An agent fills in part of a review task based on extracted information, leaving the task outstanding for a lawyer to check.
Required inputs
| Input | Type | Notes |
|---|---|---|
task | integer | Task ID |
data | object | Flat, single-level dictionary containing task data |
Important requirements
The agent must call get_task first for the specific task ID.
The agent must inspect the task schema at configuration.plugin_config.configuration.data_schema to identify allowed keys and value types.
The agent must preserve existing data from response unless the user has explicitly asked to overwrite a specific field.
The submitted data object should be a complete merged dictionary, not just the changed fields.
Example pattern
- Call
get_task. - Read the schema.
- Read the existing
responsedata. - Modify only the requested values.
- Submit the complete merged
dataobject tosave_task.
Important note
This tool saves task data. It does not complete the task.
Typical output
The updated task data or confirmation that the task has been saved.
search_task_templates
Searches Task Templates matching the supplied criteria.
Purpose
Use this tool when an agent needs to find the right Task Template before creating a task.
Typical use
An agent searches for a legal review task template before creating a review task on a matter.
Required inputs
This tool can be called without a body. Filters are optional.
Optional inputs
| Input | Type | Notes |
|---|---|---|
limit | integer | Maximum number of results to return |
offset | integer | Number of results to skip |
ordering | string | Sort field, with - for descending order |
filters | array | Filter objects with name and value |
Important requirements
This is a discovery tool. It does not create a task.
Typical output
A paginated list of Task Templates visible to the agent.
search_tasks
Searches Tasks matching the supplied criteria.
Purpose
Use this tool when an agent needs to find tasks by status, assignee, date, or other available filters.
Typical use
An agent finds overdue tasks assigned to a legal operations team.
Required inputs
This tool can be called without a body. Filters are optional.
Optional inputs
| Input | Type | Notes |
|---|---|---|
limit | integer | Maximum number of results to return |
offset | integer | Number of results to skip |
ordering | string | Sort field, with - for descending order |
filters | array | Filter objects with name and value |
Current assignee filters
The current_assignees field has a custom structure with users and user_groups sets.
Examples:
{
"filters": [
{
"name": "current_assignees__users__containssome",
"value": "2,3"
}
]
}{
"filters": [
{
"name": "current_assignees__user_groups__containsall",
"value": "5"
}
]
}Important requirements
Use filters to avoid broad task searches. Assignment, due date, status, and process-specific filters should be used where available.
Typical output
A paginated list of Tasks visible to the agent.
unassign_task_from_user_groups
Removes one or more user group assignments from a Task.
Purpose
Use this tool when an agent needs to remove group assignment from a task.
Typical use
An agent removes the legal operations group from a task after assigning the task to a specific lawyer.
Required inputs
| Input | Type | Notes |
|---|---|---|
task | integer | Task ID |
user_groups | array | Array of user group IDs |
Important requirements
This is a write action that changes task assignment.
The agent should verify that the correct task and groups have been identified before unassigning.
Typical output
Confirmation that the user groups have been unassigned.
unassign_task_from_users
Removes one or more user assignments from a Task.
Purpose
Use this tool when an agent needs to remove named users from a task assignment.
Typical use
An agent removes a user assignment after the task has been reassigned to a different lawyer or team.
Required inputs
| Input | Type | Notes |
|---|---|---|
task | integer | Task ID |
users | array | Array of user IDs |
Important requirements
This is a write action that changes task assignment.
The agent should verify that the correct task and users have been identified before unassigning.
Typical output
Confirmation that the users have been unassigned.
Tool chaining examples
Create a legal review task from a record
A typical agent flow might be:
- Use
search_object_recordsto find the relevant matter or intake record. - Use
get_object_recordto review the record. - Use
search_task_templatesto find the legal review Task Template. - Use
create_manual_taskto create the review task. - Use
assign_task_to_usersorassign_task_to_user_groupsto assign the task.
Generate and retrieve a document
A typical agent flow might be:
- Use
get_object_recordto review the record. - Use
search_document_templatesto find the appropriate template. - Use
get_document_templateto confirm the template. - Use
generate_object_record_documentto start document generation. - Use
get_object_record_documentto check generation status. - Use
download_object_record_documentif the completed file needs to be retrieved.
Create a record hierarchy
A typical agent flow might be:
- Use
list_object_class_childrento discover allowed child classes. - Repeat child-class discovery for nested levels where needed.
- Use
create_object_records_hierarchyto start hierarchy creation. - Use
check_object_records_hierarchy_creationuntil the transaction iscompletedorfailed.
Designing safe tool access
MCP Work tools can perform real actions. Access should be designed around the intended use case.
For each agent, decide:
- which tools the agent can use
- which Object Classes it can access
- whether it can read only or also write
- whether it can create records
- whether it can create or assign tasks
- whether it can generate or download documents
- whether relationship changes are permitted
- which actions need user confirmation
- which actions need human review after completion
Start with the smallest toolset that solves the problem. Add additional tools only where there is a clear operational need.
Important reminder about agentic tool use
Important reminder
MCP Work tools can allow an agent to perform real actions in Autologyx.
Even where permissions, tool descriptions, prompts, and workflows have been carefully designed, an agent may misunderstand a request, select the wrong record, choose the wrong tool, or submit unexpected data.
Permissions, audit logging, validation, deterministic checks, user confirmations, and human review can reduce risk, but they cannot remove it entirely.
Use human review where an action affects important decisions, external communications, sensitive data, record updates, document generation, task assignment, or task completion.