Item CRM tools for the signed-in user: ask the Item assistant read-only questions; search, create and update CRM records, lists, views, notes, tasks, forms, dashboards and Skills; read Item’s guides to building Skills, using the Item app and composing HTML email; and read or act in connected services such as email, calendar, Slack, LinkedIn, Linear, Loops, Mailchimp, Klaviyo, Stripe and WhatsApp. Tools available to each user follow their Item permissions and connected accounts. Payments, refunds, subscriptions, paid orders and generic command or SQL execution are not available. Connect with Item OAuth.
Protocol
MCP 2025-11-25
Server version
1.1.0
Supports
Tools
Resources
Prompts
Logging
Completions
Overall score
B
Overall quality score: 75 out of 10075/100
Server metadata
Warnings70/100
Identity, discovery, and usage metadata advertised during the MCP handshake.
Item CRM tools for the signed-in user: ask the Item assistant read-only questions; search, create and update CRM records, lists, views, notes, tasks, forms, dashboards and Skills; read Item’s guides to building Skills, using the Item app and composing HTML email; and read or act in connected services such as email, calendar, Slack, LinkedIn, Linear, Loops, Mailchimp, Klaviyo, Stripe and WhatsApp. Tools available to each user follow their Item permissions and connected accounts. Payments, refunds, subscriptions, paid orders and generic command or SQL execution are not available. Connect with Item OAuth.
Item is a CRM and automation workspace. Always: call get_workspace_context first for the user, timezone, teammates and sender emails; search before creating records to avoid duplicates; never fill restricted fields via enrichment, web search or guessing; read get_item_guide (topic: skill-authoring) before building or editing a Skill. Writes take effect immediately, so confirm with the user before changing or sending anything. Use ask_item_assistant for reports and analytics.
Routing: a one-off request now = do it with tools. A reminder or to-do, including recurring ones = create_task. Automation that reacts to events or runs multi-step work = build a Skill.
Tasks: use create_task for to-dos, reminders and follow-ups; set assignee_user_id from get_workspace_context (default to the current user); pass scheduled_for in UTC (ending in Z) or with an offset; set is_recurring with a time_based trigger for repeating tasks; search existing tasks before creating to avoid duplicates, and use update_task (status succeeded to complete a task) rather than creating a new one.
Times: use the user's timezone from get_workspace_context and follow each tool's time format (calendar tools take local time plus timeZone).
People: assign tasks by user ID from get_workspace_context, never by a guessed name.
Email: send only from an address listed in get_workspace_context.
Records: check get_object_schema for required, restricted and unavailable fields before create or update; pass restrictedFieldNames on partial updates.
Enrichment: find the record first, then enrich; enrichment doesn't save anything until you update the record.
Skills: writing and tone instructions go in the action configuration; skill instructions only sequence steps using the exact [[action:N]] tokens returned by add_action.
Discoverability
2 of 6 checks33/100
Client listings and public setup information.
mcp.json on main domain
No matching manifest was found at /mcp.json or /.well-known/mcp.json.
Align the title with the capability actually described by this tool.
Description86/100
Check an HTML email for markup, security, compatibility and layout problems and return desktop and mobile previews. Nothing is sent.
Describe the returned information so the agent knows whether it will answer the request.
Inputs23/100
3 of 10 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
subject
Not provided
Missing description. Explain what this value means and how to supply it.
referenceImageFilePath
Optional reference image supplied by this skill, as a sandbox PNG/JPEG (max 4 MB). Returned beside both rendered previews for visual comparison. Choose the skill's reference, not a universal template. Markup/layout checks do not establish visual design approval.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
delivery › fromEmailAddress
Not provided
Missing description. Explain what this value means and how to supply it.
delivery › fromEmailConnectorId
Not provided
Missing description. Explain what this value means and how to supply it.
delivery › sendFromUserId
Not provided
Missing description. Explain what this value means and how to supply it.
delivery › toEmailAddresses
Not provided
Missing description. Explain what this value means and how to supply it.
delivery › ccEmailAddresses
Not provided
Missing description. Explain what this value means and how to supply it.
delivery › bccEmailAddresses
Not provided
Missing description. Explain what this value means and how to supply it.
html
Exact authored HTML. Supply either html or htmlFilePath.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
htmlFilePath
Path of an HTML file under data/ in your Item MCP workspace, such as data/welcome.html. Pass html instead to preview markup directly.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description87/100
Add a custom activity type to this workspace for future activities. Workspace admins only.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Describe the returned information so the agent knows whether it will answer the request.
Inputs38/100
1 of 2 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
name
Not provided
Missing description. Explain what this value means and how to supply it.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "create_activity_type",
"title": "Create activity type",
"description": "Add a custom activity type to this workspace for future activities. Workspace admins only.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name",
"_item_request_id"
],
"properties": {
"name": {
"type": "string",
"maxLength": 80,
"minLength": 1
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Create activity type",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description93/100
Remove a custom activity type from future activity choices. Existing activities keep their labels; built-in types cannot be deleted. Workspace admins only.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs38/100
1 of 2 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
activityTypeId
Not provided
Missing description. Explain what this value means and how to supply it.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "delete_activity_type",
"title": "Delete activity type",
"description": "Remove a custom activity type from future activity choices. Existing activities keep their labels; built-in types cannot be deleted. Workspace admins only.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"activityTypeId",
"_item_request_id"
],
"properties": {
"activityTypeId": {
"type": "string",
"format": "uuid"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Delete activity type",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description85/100
Allow one website origin to embed every form in this workspace.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Describe the returned information so the agent knows whether it will answer the request.
Inputs67/100
2 of 3 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
formId
Form ID from search_forms or create_form
Clear enough to supply this argument.
origin
Not provided
Missing description. Explain what this value means and how to supply it.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "add_form_embed_origin",
"title": "Allow form embed domain",
"description": "Allow one website origin to embed every form in this workspace.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"formId",
"origin",
"_item_request_id"
],
"properties": {
"formId": {
"type": "string",
"format": "uuid",
"description": "Form ID from search_forms or create_form"
},
"origin": {
"type": "string",
"maxLength": 500,
"minLength": 1
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Allow form embed domain",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description91/100
Stop one website origin from embedding this workspace’s forms.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs67/100
2 of 3 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
formId
Form ID from search_forms or create_form
Clear enough to supply this argument.
originId
Not provided
Missing description. Explain what this value means and how to supply it.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "remove_form_embed_origin",
"title": "Remove form embed domain",
"description": "Stop one website origin from embedding this workspace’s forms.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"formId",
"originId",
"_item_request_id"
],
"properties": {
"formId": {
"type": "string",
"format": "uuid",
"description": "Form ID from search_forms or create_form"
},
"originId": {
"type": "integer",
"exclusiveMinimum": 0
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Remove form embed domain",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
Create a draft form with the required email field. Returns its ID and edit link; the form is not public until published.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs19/100
1 of 4 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
title
Not provided
Missing description. Explain what this value means and how to supply it.
description
Not provided
Missing description. Explain what this value means and how to supply it.
ownerId
Not provided
Missing description. Explain what this value means and how to supply it.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "create_form",
"title": "Create form",
"description": "Create a draft form with the required email field. Returns its ID and edit link; the form is not public until published.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"title",
"_item_request_id"
],
"properties": {
"title": {
"type": "string",
"maxLength": 500,
"minLength": 1
},
"ownerId": {
"type": "string",
"format": "uuid"
},
"description": {
"type": "string",
"maxLength": 5000
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Create form",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description93/100
Change the requested settings of a form, such as title, description, owner, email collection, contact enrichment, completion redirect or logo removal. Omitted settings stay unchanged.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Describe the returned information so the agent knows whether it will answer the request.
Inputs16/100
3 of 16 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
formId
Form ID from search_forms or create_form
Clear enough to supply this argument.
changes › items › anyOf › 0 › setting
Not provided
Missing description. Explain what this value means and how to supply it.
changes › items › anyOf › 0 › value
Not provided
Missing description. Explain what this value means and how to supply it.
changes › items › anyOf › 1 › setting
Not provided
Missing description. Explain what this value means and how to supply it.
changes › items › anyOf › 1 › value
Not provided
Missing description. Explain what this value means and how to supply it.
changes › items › anyOf › 2 › setting
Not provided
Missing description. Explain what this value means and how to supply it.
changes › items › anyOf › 2 › value
Not provided
Missing description. Explain what this value means and how to supply it.
changes › items › anyOf › 3 › setting
Not provided
Missing description. Explain what this value means and how to supply it.
changes › items › anyOf › 3 › value
Not provided
Missing description. Explain what this value means and how to supply it.
changes › items › anyOf › 4 › setting
Not provided
Missing description. Explain what this value means and how to supply it.
changes › items › anyOf › 4 › value
Not provided
Missing description. Explain what this value means and how to supply it.
changes › items › anyOf › 5 › setting
Not provided
Missing description. Explain what this value means and how to supply it.
changes › items › anyOf › 5 › value
Full http(s) URL, or null to disable the redirect
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
changes › items › anyOf › 6 › setting
Not provided
Missing description. Explain what this value means and how to supply it.
changes › items › anyOf › 6 › value
Not provided
Missing description. Explain what this value means and how to supply it.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description91/100
Change a form’s colors, typefaces and padding, or reset them to Item defaults.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Describe the returned information so the agent knows whether it will answer the request.
Inputs40/100
10 of 20 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
formId
Form ID from search_forms or create_form
Clear enough to supply this argument.
changes › items › anyOf › 0 › setting
Not provided
Missing description. Explain what this value means and how to supply it.
changes › items › anyOf › 0 › value
A #RRGGBB color, or null to use the Item default
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
changes › items › anyOf › 1 › setting
Not provided
Missing description. Explain what this value means and how to supply it.
changes › items › anyOf › 1 › value
A #RRGGBB color, or null to use the Item default
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
changes › items › anyOf › 2 › setting
Not provided
Missing description. Explain what this value means and how to supply it.
changes › items › anyOf › 2 › value
A #RRGGBB color, or null to use the Item default
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
changes › items › anyOf › 3 › setting
Not provided
Missing description. Explain what this value means and how to supply it.
changes › items › anyOf › 3 › value
A #RRGGBB color, or null to use the Item default
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
changes › items › anyOf › 4 › setting
Not provided
Missing description. Explain what this value means and how to supply it.
changes › items › anyOf › 4 › value
A #RRGGBB color, or null to use the Item default
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
changes › items › anyOf › 5 › setting
Not provided
Missing description. Explain what this value means and how to supply it.
changes › items › anyOf › 5 › value
One of the form editor typefaces, or null for Item default
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
changes › items › anyOf › 6 › setting
Not provided
Missing description. Explain what this value means and how to supply it.
changes › items › anyOf › 6 › value
One of the form editor typefaces, or null for Item default
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
changes › items › anyOf › 7 › setting
Not provided
Missing description. Explain what this value means and how to supply it.
changes › items › anyOf › 7 › value
0, 4, 8, 12, 16, 20, 24, 28, or 32 pixels; null for default
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
changes › items › anyOf › 8 › setting
Not provided
Missing description. Explain what this value means and how to supply it.
changes › items › anyOf › 8 › value
Not provided
Missing description. Explain what this value means and how to supply it.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description85/100
Show or hide a form’s title and description on embedded pages.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs58/100
2 of 3 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
formId
Form ID from search_forms or create_form
Clear enough to supply this argument.
showTitleAndDescription
Not provided
Missing description. Explain what this value means and how to supply it.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "set_form_embed_display",
"title": "Set form embed display",
"description": "Show or hide a form’s title and description on embedded pages.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"formId",
"showTitleAndDescription",
"_item_request_id"
],
"properties": {
"formId": {
"type": "string",
"format": "uuid",
"description": "Form ID from search_forms or create_form"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
},
"showTitleAndDescription": {
"type": "boolean"
}
},
"additionalProperties": false
},
"annotations": {
"title": "Set form embed display",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description89/100
Publish a form so anyone with its link can submit it, or pause it to stop new submissions.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Describe the returned information so the agent knows whether it will answer the request.
Inputs67/100
2 of 3 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
formId
Form ID from search_forms or create_form
Clear enough to supply this argument.
isActive
Not provided
Missing description. Explain what this value means and how to supply it.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "set_form_status",
"title": "Publish or pause form",
"description": "Publish a form so anyone with its link can submit it, or pause it to stop new submissions.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"formId",
"isActive",
"_item_request_id"
],
"properties": {
"formId": {
"type": "string",
"format": "uuid",
"description": "Form ID from search_forms or create_form"
},
"isActive": {
"type": "boolean"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Publish or pause form",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description93/100
Delete a form. Its existing submissions remain stored.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs99/100
Input documentation gives an agent enough context to populate the arguments.
formId
Form ID from search_forms or create_form
Clear enough to supply this argument.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "delete_form",
"title": "Delete form",
"description": "Delete a form. Its existing submissions remain stored.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"formId",
"_item_request_id"
],
"properties": {
"formId": {
"type": "string",
"format": "uuid",
"description": "Form ID from search_forms or create_form"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Delete form",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description85/100
Add a question to the end of a form.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Describe the returned information so the agent knows whether it will answer the request.
Inputs40/100
5 of 12 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
label
Not provided
Missing description. Explain what this value means and how to supply it.
placeholder
Not provided
Missing description. Explain what this value means and how to supply it.
description
Not provided
Missing description. Explain what this value means and how to supply it.
showDescription
Not provided
Missing description. Explain what this value means and how to supply it.
isRequired
Not provided
Missing description. Explain what this value means and how to supply it.
display
For single_select only: radio buttons or a dropdown when explicitly requested; otherwise set null
Clear enough to supply this argument.
options › anyOf › 0 › items › id
Existing option ID from get_form; omit for a new option
Clear enough to supply this argument.
options › anyOf › 0 › items › label
Not provided
Missing description. Explain what this value means and how to supply it.
options › anyOf › 0 › items › selected
Whether this choice is selected by default
Clear enough to supply this argument.
formId
Form ID from search_forms or create_form
Clear enough to supply this argument.
fieldType
Not provided
Missing description. Explain what this value means and how to supply it.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description89/100
Change the requested settings of a form question, such as label, placeholder, description, visibility, required state or choices.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Describe the returned information so the agent knows whether it will answer the request.
Inputs26/100
5 of 19 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
formId
Form ID from search_forms or create_form
Clear enough to supply this argument.
fieldId
Field ID from get_form or create_form_field
Clear enough to supply this argument.
changes › items › anyOf › 0 › setting
Not provided
Missing description. Explain what this value means and how to supply it.
changes › items › anyOf › 0 › value
Not provided
Missing description. Explain what this value means and how to supply it.
changes › items › anyOf › 1 › setting
Not provided
Missing description. Explain what this value means and how to supply it.
changes › items › anyOf › 1 › value
Not provided
Missing description. Explain what this value means and how to supply it.
changes › items › anyOf › 2 › setting
Not provided
Missing description. Explain what this value means and how to supply it.
changes › items › anyOf › 2 › value
Not provided
Missing description. Explain what this value means and how to supply it.
changes › items › anyOf › 3 › setting
Not provided
Missing description. Explain what this value means and how to supply it.
changes › items › anyOf › 3 › value
Not provided
Missing description. Explain what this value means and how to supply it.
changes › items › anyOf › 4 › setting
Not provided
Missing description. Explain what this value means and how to supply it.
changes › items › anyOf › 4 › value
Not provided
Missing description. Explain what this value means and how to supply it.
changes › items › anyOf › 5 › setting
Not provided
Missing description. Explain what this value means and how to supply it.
changes › items › anyOf › 5 › value
Not provided
Missing description. Explain what this value means and how to supply it.
changes › items › anyOf › 6 › setting
Not provided
Missing description. Explain what this value means and how to supply it.
changes › items › anyOf › 6 › value › items › id
Existing option ID from get_form; omit for a new option
The title clearly communicates the tool’s action and subject. Keep it concise.
Description90/100
Remove a question from a form. The required email question cannot be removed while email collection is on.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs97/100
Input documentation gives an agent enough context to populate the arguments.
formId
Form ID from search_forms or create_form
Clear enough to supply this argument.
fieldId
Field ID from get_form or create_form_field
Clear enough to supply this argument.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "delete_form_field",
"title": "Delete form question",
"description": "Remove a question from a form. The required email question cannot be removed while email collection is on.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"formId",
"fieldId",
"_item_request_id"
],
"properties": {
"formId": {
"type": "string",
"format": "uuid",
"description": "Form ID from search_forms or create_form"
},
"fieldId": {
"type": "string",
"format": "uuid",
"description": "Field ID from get_form or create_form_field"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Delete form question",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description83/100
Copy a form question and its settings to the end of the same form.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Describe the returned information so the agent knows whether it will answer the request.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
formId
Form ID from search_forms or create_form
Clear enough to supply this argument.
fieldId
Field ID from get_form or create_form_field
Clear enough to supply this argument.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "duplicate_form_field",
"title": "Duplicate form question",
"description": "Copy a form question and its settings to the end of the same form.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"formId",
"fieldId",
"_item_request_id"
],
"properties": {
"formId": {
"type": "string",
"format": "uuid",
"description": "Form ID from search_forms or create_form"
},
"fieldId": {
"type": "string",
"format": "uuid",
"description": "Field ID from get_form or create_form_field"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Duplicate form question",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description86/100
Set the complete display order of a form’s questions. The email question stays first.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Describe the returned information so the agent knows whether it will answer the request.
Inputs67/100
2 of 3 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
formId
Form ID from search_forms or create_form
Clear enough to supply this argument.
fieldIds
Not provided
Missing description. Explain what this value means and how to supply it.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "reorder_form_fields",
"title": "Reorder form questions",
"description": "Set the complete display order of a form’s questions. The email question stays first.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"formId",
"fieldIds",
"_item_request_id"
],
"properties": {
"formId": {
"type": "string",
"format": "uuid",
"description": "Form ID from search_forms or create_form"
},
"fieldIds": {
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"description": "Field ID from get_form or create_form_field"
},
"minItems": 1
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Reorder form questions",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description89/100
Look up a person in external data providers, optionally starting from an existing contact’s email, LinkedIn URL and name, and return the profile data found. Nothing is saved to Item; a separate create or update saves it. May use enrichment credits.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Describe the returned information so the agent knows whether it will answer the request.
Inputs90/100
Explain the meaning of this value, not just its name.
include_phone
Seek a verified phone number only when requested (default false). Phone data already returned is always retained; never guess a number.
Clear enough to supply this argument.
contact_id
ID of existing contact to enrich
Clear enough to supply this argument.
email
Email address of the contact
Clear enough to supply this argument.
linkedin_url
LinkedIn profile URL of the contact
Clear enough to supply this argument.
name
Full name of the contact
Clear enough to supply this argument.
company
Company name of the contact
Clear enough to supply this argument.
context
Additional context to help disambiguate
Explain the meaning of this value, not just its name.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "enrich_contact",
"title": "Enrich contact",
"description": "Look up a person in external data providers, optionally starting from an existing contact’s email, LinkedIn URL and name, and return the profile data found. Nothing is saved to Item; a separate create or update saves it. May use enrichment credits.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"_item_request_id"
],
"properties": {
"name": {
"type": "string",
"description": "Full name of the contact"
},
"email": {
"type": "string",
"description": "Email address of the contact"
},
"company": {
"type": "string",
"description": "Company name of the contact"
},
"context": {
"type": "string",
"description": "Additional context to help disambiguate"
},
"contact_id": {
"type": "number",
"description": "ID of existing contact to enrich"
},
"linkedin_url": {
"type": "string",
"description": "LinkedIn profile URL of the contact"
},
"include_phone": {
"type": "boolean",
"default": false,
"description": "Seek a verified phone number only when requested (default false). Phone data already returned is always retained; never guess a number."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Enrich contact",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description87/100
Look up a company in external data providers, optionally starting from an existing company’s name and website, and return the matching company data found. Nothing is saved to Item; a separate create or update saves it. May use enrichment credits.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Describe the returned information so the agent knows whether it will answer the request.
Inputs83/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
company_id
ID of existing company to enrich
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
name
Company name
Clear enough to supply this argument.
domain
Company domain (e.g., acme.com)
Clear enough to supply this argument.
website
Company website URL (e.g., https://acme.com)
Clear enough to supply this argument.
context
Additional context to help disambiguate
Explain the meaning of this value, not just its name.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "enrich_company",
"title": "Enrich company",
"description": "Look up a company in external data providers, optionally starting from an existing company’s name and website, and return the matching company data found. Nothing is saved to Item; a separate create or update saves it. May use enrichment credits.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"_item_request_id"
],
"properties": {
"name": {
"type": "string",
"description": "Company name"
},
"domain": {
"type": "string",
"description": "Company domain (e.g., acme.com)"
},
"context": {
"type": "string",
"description": "Additional context to help disambiguate"
},
"website": {
"type": "string",
"description": "Company website URL (e.g., https://acme.com)"
},
"company_id": {
"type": "number",
"description": "ID of existing company to enrich"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Enrich company",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description89/100
Refresh Item’s interaction history for a contact from connected providers (stored LinkedIn history is not refreshed), then return the contact’s or company’s interactions. Results may be incomplete.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Describe the returned information so the agent knows whether it will answer the request.
Inputs67/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
contactId
The ID of the contact to review interactions for
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
companyId
The ID of the company to review interactions for
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "review_interactions",
"title": "Review interactions",
"description": "Refresh Item’s interaction history for a contact from connected providers (stored LinkedIn history is not refreshed), then return the contact’s or company’s interactions. Results may be incomplete.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"_item_request_id"
],
"properties": {
"companyId": {
"type": "number",
"description": "The ID of the company to review interactions for"
},
"contactId": {
"type": "number",
"description": "The ID of the contact to review interactions for"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Review interactions",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": false
}
}
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "query_run_trace",
"title": "Get Skill run trace",
"description": "Read the plan, steps, completion summary and exit reason of one Skill run, or of the latest run for a contact.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {
"runId": {
"type": [
"string",
"null"
],
"description": "Direct run id. Set to null for a contact lookup; never pair a run id with a contact id."
},
"window": {
"anyOf": [
{
"type": "object",
"properties": {
"endDate": {
"type": [
"string",
"null"
],
"description": "ISO8601 inclusive upper bound on the run timestamp."
},
"startDate": {
"type": [
"string",
"null"
],
"description": "ISO8601 inclusive lower bound on the run timestamp."
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Contact lookup time range. Set to null for a direct run lookup or an unrestricted contact lookup. Each unused date bound can be null. Translate phrases like \"yesterday\" into ISO8601 before calling."
},
"skillId": {
"type": [
"string",
"null"
],
"description": "Skill id (uuid) to constrain a contact lookup. Set to null for a direct run lookup or when the user has not named a skill."
},
"contactId": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0
},
{
"type": "null"
}
],
"description": "Positive contact id for the latest run for a person. Set to null for a direct run lookup. Never use 0. Set skillId to null to search across any skill."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Get Skill run trace",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description69/100
Search Skill run errors, completion summaries and exit reasons by text.
Describe the returned information so the agent knows whether it will answer the request.
Inputs89/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
query
Free-text search query. Supports natural language; the server converts to tsquery.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
skillId
Optional skill id (uuid) to scope the search. Omit for an organization-wide search.
Clear enough to supply this argument.
window › startDate
ISO8601 inclusive lower bound on the run timestamp.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
window › endDate
ISO8601 inclusive upper bound on the run timestamp.
Clear enough to supply this argument.
limit
Max matches to return. Default 10, cap 50.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
excludeRunIds
Run ids to exclude from results. Useful when auto-drilling from `query_skill_timeline` clusters to find additional historical examples.
Clear enough to supply this argument.
status
Optional terminal status filter. Narrows the search to runs with this status. Use `error` when the user asks about errors/failures, `finished` for completed-successfully runs, `cancelled` for user-cancelled runs, and `exited` for runs that exited early (e.g. via exit_early). Omit or pass `any` for status-agnostic search (default: `any`).
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description71/100
Count Skill runs grouped by Skill, status, contact or day over a time window.
Describe the returned information so the agent knows whether it will answer the request.
Inputs92/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
groupBy
Grouping dimension. "skill" groups by skill_id (labels from skill title); "status" groups by raw skill_runs.status; "contact" groups by the first trigger contact (unresolved → "Unknown contact"); "day" groups by the UTC date prefix of started_at.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
window › startDate
ISO8601 inclusive lower bound on the run timestamp.
Clear enough to supply this argument.
window › endDate
ISO8601 inclusive upper bound on the run timestamp.
Clear enough to supply this argument.
status
Optional status filter (reuses the search_runs_history mapping — "finished" → succeeded). Narrows the aggregate to runs with this status; omit or pass "any" for no filter.
Clear enough to supply this argument.
skillId
Optional skill id (uuid). Narrows the aggregate to a single skill — useful with groupBy="day" ("runs per day for skill X") or groupBy="contact" ("runs per contact for skill X").
Clear enough to supply this argument.
limit
Max groups to return. Default 20, cap 100.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "count_runs_grouped_by",
"title": "Count Skill runs",
"description": "Count Skill runs grouped by Skill, status, contact or day over a time window.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"groupBy"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Max groups to return. Default 20, cap 100."
},
"status": {
"enum": [
"any",
"error",
"exited",
"cancelled",
"finished"
],
"type": "string",
"description": "Optional status filter (reuses the search_runs_history mapping — \"finished\" → succeeded). Narrows the aggregate to runs with this status; omit or pass \"any\" for no filter."
},
"window": {
"type": "object",
"properties": {
"endDate": {
"type": "string",
"description": "ISO8601 inclusive upper bound on the run timestamp."
},
"startDate": {
"type": "string",
"description": "ISO8601 inclusive lower bound on the run timestamp."
}
},
"description": "Optional time window. Translate NL phrases like \"this week\" into ISO8601 before calling. Omit to use the 14-day default.",
"additionalProperties": false
},
"groupBy": {
"enum": [
"skill",
"status",
"contact",
"day"
],
"type": "string",
"description": "Grouping dimension. \"skill\" groups by skill_id (labels from skill title); \"status\" groups by raw skill_runs.status; \"contact\" groups by the first trigger contact (unresolved → \"Unknown contact\"); \"day\" groups by the UTC date prefix of started_at."
},
"skillId": {
"type": "string",
"description": "Optional skill id (uuid). Narrows the aggregate to a single skill — useful with groupBy=\"day\" (\"runs per day for skill X\") or groupBy=\"contact\" (\"runs per contact for skill X\")."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Count Skill runs",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description91/100
Record a past interaction, such as a call, meeting, site visit or text message, on the timelines of linked contacts, companies, deals or custom objects.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs31/100
7 of 17 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
title
The title of the activity
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
description
Not provided
Missing description. Explain what this value means and how to supply it.
activityType
Built-in key (phone_call, text_message, site_visit, meeting) or exact custom type name from list_activity_types
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
duration_ms
Not provided
Missing description. Explain what this value means and how to supply it.
direction
Not provided
Missing description. Explain what this value means and how to supply it.
outcome
Not provided
Missing description. Explain what this value means and how to supply it.
status
Not provided
Missing description. Explain what this value means and how to supply it.
from_number
Not provided
Missing description. Explain what this value means and how to supply it.
to_number
Not provided
Missing description. Explain what this value means and how to supply it.
channel
Not provided
Missing description. Explain what this value means and how to supply it.
ownerUserId
Not provided
Missing description. Explain what this value means and how to supply it.
customObjectIds
Not provided
Missing description. Explain what this value means and how to supply it.
companyId
Legacy single company ID; prefer companyIds
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
companyIds
Companies explicitly associated with this activity
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
contactIds
Contacts explicitly associated with this activity, independent of their company
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
date
Activity date in ISO 8601 format
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description79/100
Create a new object in the system. objectSlug is required, and include all field values for the object.
Duplicate guard for contacts and companies: before calling this tool, search internally for an existing record. If you used enrichment, search internally AGAIN using enriched identifiers such as domain, website, email, company name, or LinkedIn URL, and only create if that second search still finds no clear match.
If the task requested a restricted optional field, omit its value and list only its field name in restrictedFieldNames. A restricted required field blocks creation.
Explain mutations, irreversible effects, or prerequisites that matter before calling this tool.
Inputs82/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
objectSlug
Object type slug, such as contacts, companies, or deals.
Clear enough to supply this argument.
name
Display name for the new object.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
fields › items › name
Field name.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
fields › items › value
Field value.
Explain the meaning of this value, not just its name.
restrictedFieldNames
Names of restricted fields requested by the task that were intentionally omitted. Never include their values.
Clear enough to supply this argument.
profileImageUrl
Image URL - e.g. LinkedIn profile picture or the company logo. Do not pass anything here if the object is not a contact or company (it will be ignored).
Clear enough to supply this argument.
_skip_approval
Task runs only: set true to auto-execute without approval when this action is routine and low-risk.
Clear enough to supply this argument.
_item_request_id
Optional UUID for safe retries: reusing it returns the original result instead of repeating the action.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "create_object",
"title": "Create CRM object",
"description": "Create a new object in the system. objectSlug is required, and include all field values for the object.\n\nDuplicate guard for contacts and companies: before calling this tool, search internally for an existing record. If you used enrichment, search internally AGAIN using enriched identifiers such as domain, website, email, company name, or LinkedIn URL, and only create if that second search still finds no clear match.\n\nIf the task requested a restricted optional field, omit its value and list only its field name in restrictedFieldNames. A restricted required field blocks creation.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"objectSlug",
"name",
"fields"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"description": "Display name for the new object."
},
"fields": {
"type": "array",
"items": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"description": "Field name."
},
"value": {
"description": "Field value."
}
},
"additionalProperties": false
},
"description": "Field values to set on the new object, as name/value pairs."
},
"objectSlug": {
"type": "string",
"minLength": 1,
"description": "Object type slug, such as contacts, companies, or deals."
},
"_skip_approval": {
"type": "boolean",
"description": "Task runs only: set true to auto-execute without approval when this action is routine and low-risk."
},
"profileImageUrl": {
"type": [
"string",
"null"
],
"description": "Image URL - e.g. LinkedIn profile picture or the company logo. Do not pass anything here if the object is not a contact or company (it will be ignored)."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Optional UUID for safe retries: reusing it returns the original result instead of repeating the action."
},
"restrictedFieldNames": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"description": "Names of restricted fields requested by the task that were intentionally omitted. Never include their values."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Create CRM object",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description74/100
Update an existing object in the system. objectSlug and id are required. If the task requested a restricted field, omit its value and list only its field name in restrictedFieldNames; permitted fields will still be updated.
Explain mutations, irreversible effects, or prerequisites that matter before calling this tool.
Inputs74/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
objectSlug
Object type slug, such as contacts, companies, or deals.
Clear enough to supply this argument.
id
ID of the object to update.
Clear enough to supply this argument.
fields › items › name
Field name.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
fields › items › value
New field value.
Explain the meaning of this value, not just its name.
restrictedFieldNames
Names of restricted fields requested by the task that were intentionally omitted. Never include their values.
Clear enough to supply this argument.
profileImageUrl
Image URL - e.g. LinkedIn profile picture or the company logo. Do not pass anything here if you are not changing the image, or if object is not a contact or company (it will be ignored).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
Optional UUID for safe retries: reusing it returns the original result instead of repeating the action.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "update_object",
"title": "Update CRM object",
"description": "Update an existing object in the system. objectSlug and id are required. If the task requested a restricted field, omit its value and list only its field name in restrictedFieldNames; permitted fields will still be updated.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"objectSlug",
"id",
"fields"
],
"properties": {
"id": {
"type": "number",
"description": "ID of the object to update."
},
"fields": {
"type": "array",
"items": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"description": "Field name."
},
"value": {
"anyOf": [
{
"anyOf": [
{
"not": {}
},
{}
]
},
{
"type": "null"
}
],
"description": "New field value."
}
},
"additionalProperties": false
},
"description": "Field values to change, as name/value pairs."
},
"objectSlug": {
"type": "string",
"minLength": 1,
"description": "Object type slug, such as contacts, companies, or deals."
},
"profileImageUrl": {
"anyOf": [
{
"anyOf": [
{
"not": {}
},
{
"type": "string",
"description": "Image URL - e.g. LinkedIn profile picture or the company logo. Do not pass anything here if you are not changing the image, or if object is not a contact or company (it will be ignored)."
}
],
"description": "Image URL - e.g. LinkedIn profile picture or the company logo. Do not pass anything here if you are not changing the image, or if object is not a contact or company (it will be ignored)."
},
{
"type": "null"
}
],
"description": "Image URL - e.g. LinkedIn profile picture or the company logo. Do not pass anything here if you are not changing the image, or if object is not a contact or company (it will be ignored)."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Optional UUID for safe retries: reusing it returns the original result instead of repeating the action."
},
"restrictedFieldNames": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"description": "Names of restricted fields requested by the task that were intentionally omitted. Never include their values."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Update CRM object",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": true
}
}
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "delete_object",
"title": "Delete CRM object",
"description": "Delete an existing object in the system. id and objectSlug are required.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"objectSlug",
"id"
],
"properties": {
"id": {
"type": "number",
"description": "ID of the object to delete."
},
"objectSlug": {
"type": "string",
"minLength": 1,
"description": "Object type slug, such as contacts, companies, or deals."
},
"_skip_approval": {
"type": "boolean",
"description": "Task runs only: set true to auto-execute without approval when this action is routine and low-risk."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Optional UUID for safe retries: reusing it returns the original result instead of repeating the action."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Delete CRM object",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description93/100
Change your own workspace’s organization profile: identity, product, market, ideal customer profile or brand voice.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs67/100
Explain the meaning of this value, not just its name.
fieldKey
The Organization Context field key to update (see the field list in your context).
Explain the meaning of this value, not just its name.
value
New value: a string for text fields, an array of strings (the complete list) for tags fields. An empty string or empty array clears the field.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "update_organization_context",
"title": "Update organization context",
"description": "Change your own workspace’s organization profile: identity, product, market, ideal customer profile or brand voice.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"fieldKey",
"value",
"_item_request_id"
],
"properties": {
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
],
"description": "New value: a string for text fields, an array of strings (the complete list) for tags fields. An empty string or empty array clears the field."
},
"fieldKey": {
"type": "string",
"description": "The Organization Context field key to update (see the field list in your context)."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Update organization context",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description91/100
Create a saved view for an object type with columns, filters, sorting, table or Kanban layout, grouping, icon and team sharing.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs37/100
8 of 21 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
object_slug
Object type slug. Omit when the Assistant is open beside an object list.
Clear enough to supply this argument.
name
Not provided
Missing description. Explain what this value means and how to supply it.
columns
Not provided
Missing description. Explain what this value means and how to supply it.
filters › logical_operator
Not provided
Missing description. Explain what this value means and how to supply it.
filters › groups › items › logical_operator
Not provided
Missing description. Explain what this value means and how to supply it.
filters › groups › items › conditions › items › field
Exact field path from inspect_view, including relationship prefixes when present.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description92/100
Replace, add, remove or clear the filters of a saved view. Other settings are preserved.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs31/100
4 of 13 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
view_id
Saved view UUID, or "system-all" for the virtual All view.
Clear enough to supply this argument.
operation
Not provided
Missing description. Explain what this value means and how to supply it.
filters › logical_operator
Not provided
Missing description. Explain what this value means and how to supply it.
filters › groups › items › logical_operator
Not provided
Missing description. Explain what this value means and how to supply it.
filters › groups › items › conditions › items › field
Exact field path from inspect_view, including relationship prefixes when present.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description91/100
Replace, remove or clear the sort of a saved view. Other settings are preserved.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs63/100
4 of 6 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
view_id
Saved view UUID, or "system-all" for the virtual All view.
Clear enough to supply this argument.
operation
Not provided
Missing description. Explain what this value means and how to supply it.
sorting › items › field
Exact field path from inspect_view, including relationship prefixes when present.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
sorting › items › direction
Not provided
Missing description. Explain what this value means and how to supply it.
fields
Sort field paths to remove.
Clear enough to supply this argument.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "update_view_sorting",
"title": "Update view sorting",
"description": "Replace, remove or clear the sort of a saved view. Other settings are preserved.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"operation",
"_item_request_id"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string",
"maxLength": 512,
"minLength": 1,
"description": "Exact field path from inspect_view, including relationship prefixes when present."
},
"maxItems": 1,
"description": "Sort field paths to remove."
},
"sorting": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string",
"maxLength": 512,
"minLength": 1,
"description": "Exact field path from inspect_view, including relationship prefixes when present."
},
"direction": {
"enum": [
"asc",
"desc"
],
"type": "string"
}
},
"additionalProperties": false
},
"maxItems": 1,
"description": "Required for replace. The object-list UI supports one sort."
},
"view_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "string",
"const": "system-all"
}
],
"description": "Saved view UUID, or \"system-all\" for the virtual All view."
},
"operation": {
"enum": [
"replace",
"remove",
"clear"
],
"type": "string"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Update view sorting",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description89/100
Add columns to a saved view. Existing columns keep their order.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs75/100
3 of 4 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
view_id
Saved view UUID, or "system-all" for the virtual All view.
Clear enough to supply this argument.
columns
Not provided
Missing description. Explain what this value means and how to supply it.
after_column
Insert after this visible column. Use null or omit to append, including when the view has no stored columns.
Clear enough to supply this argument.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "add_view_columns",
"title": "Add view columns",
"description": "Add columns to a saved view. Existing columns keep their order.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"columns",
"_item_request_id"
],
"properties": {
"columns": {
"type": "array",
"items": {
"type": "string",
"maxLength": 512,
"minLength": 1,
"description": "Exact field path from inspect_view, including relationship prefixes when present."
},
"maxItems": 100,
"minItems": 1
},
"view_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "string",
"const": "system-all"
}
],
"description": "Saved view UUID, or \"system-all\" for the virtual All view."
},
"after_column": {
"anyOf": [
{
"type": "string",
"maxLength": 512,
"minLength": 1,
"description": "Exact field path from inspect_view, including relationship prefixes when present."
},
{
"type": "null"
}
],
"description": "Insert after this visible column. Use null or omit to append, including when the view has no stored columns."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Add view columns",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description92/100
Remove visible columns from a saved view. Other settings are preserved.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs58/100
2 of 3 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
view_id
Saved view UUID, or "system-all" for the virtual All view.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
columns
Not provided
Missing description. Explain what this value means and how to supply it.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "remove_view_columns",
"title": "Remove view columns",
"description": "Remove visible columns from a saved view. Other settings are preserved.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"columns",
"_item_request_id"
],
"properties": {
"columns": {
"type": "array",
"items": {
"type": "string",
"maxLength": 512,
"minLength": 1,
"description": "Exact field path from inspect_view, including relationship prefixes when present."
},
"maxItems": 100,
"minItems": 1
},
"view_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "string",
"const": "system-all"
}
],
"description": "Saved view UUID, or \"system-all\" for the virtual All view."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Remove view columns",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description92/100
Set the complete order of a saved view’s visible columns.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs97/100
Input documentation gives an agent enough context to populate the arguments.
view_id
Saved view UUID, or "system-all" for the virtual All view.
Clear enough to supply this argument.
columns
Complete ordered list of the view’s currently visible columns. Use add/remove tools before reordering when the set must change.
Clear enough to supply this argument.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "reorder_view_columns",
"title": "Reorder view columns",
"description": "Set the complete order of a saved view’s visible columns.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"columns",
"_item_request_id"
],
"properties": {
"columns": {
"type": "array",
"items": {
"type": "string",
"maxLength": 512,
"minLength": 1,
"description": "Exact field path from inspect_view, including relationship prefixes when present."
},
"maxItems": 100,
"minItems": 1,
"description": "Complete ordered list of the view’s currently visible columns. Use add/remove tools before reordering when the set must change."
},
"view_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "string",
"const": "system-all"
}
],
"description": "Saved view UUID, or \"system-all\" for the virtual All view."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Reorder view columns",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description93/100
Rename a saved view or change its icon, layout, Kanban grouping, totals, stage order or team sharing. Only the owner can change sharing.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs81/100
10 of 12 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
view_id
Saved view UUID, or "system-all" for the virtual All view.
Clear enough to supply this argument.
name
Not provided
Missing description. Explain what this value means and how to supply it.
icon
Exact icon name from inspect_view.available_icons.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
view_type
Not provided
Missing description. Explain what this value means and how to supply it.
group_by
Field used to group a Kanban view. Null is ignored as an unused provider placeholder; use clear_group_by to clear it.
Clear enough to supply this argument.
clear_group_by
Set true to explicitly clear the saved group field when switching to table layout.
Clear enough to supply this argument.
sum_by
Numeric/currency field totaled on each Kanban stage. Null is ignored as an unused provider placeholder; use clear_sum_by to clear it.
Clear enough to supply this argument.
clear_sum_by
Set true to explicitly clear the active Kanban total.
Clear enough to supply this argument.
stage_order
Ordered status values for the active Kanban group field. Null is ignored as an unused provider placeholder; use clear_stage_order to clear it.
Clear enough to supply this argument.
clear_stage_order
Set true to explicitly clear the custom Kanban stage order.
Clear enough to supply this argument.
is_shared
Whether teammates can see the view. Only its owner can change this.
Clear enough to supply this argument.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "configure_view",
"title": "Configure saved view",
"description": "Rename a saved view or change its icon, layout, Kanban grouping, totals, stage order or team sharing. Only the owner can change sharing.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"_item_request_id"
],
"properties": {
"icon": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Exact icon name from inspect_view.available_icons."
},
"name": {
"type": "string",
"maxLength": 255,
"minLength": 1
},
"sum_by": {
"anyOf": [
{
"type": "string",
"maxLength": 512,
"minLength": 1,
"description": "Exact field path from inspect_view, including relationship prefixes when present."
},
{
"type": "null"
}
],
"description": "Numeric/currency field totaled on each Kanban stage. Null is ignored as an unused provider placeholder; use clear_sum_by to clear it."
},
"view_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "string",
"const": "system-all"
}
],
"description": "Saved view UUID, or \"system-all\" for the virtual All view."
},
"group_by": {
"anyOf": [
{
"type": "string",
"maxLength": 512,
"minLength": 1,
"description": "Exact field path from inspect_view, including relationship prefixes when present."
},
{
"type": "null"
}
],
"description": "Field used to group a Kanban view. Null is ignored as an unused provider placeholder; use clear_group_by to clear it."
},
"is_shared": {
"type": "boolean",
"description": "Whether teammates can see the view. Only its owner can change this."
},
"view_type": {
"enum": [
"table",
"kanban"
],
"type": "string"
},
"stage_order": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"maxLength": 500,
"minLength": 1
},
"maxItems": 100
},
{
"type": "null"
}
],
"description": "Ordered status values for the active Kanban group field. Null is ignored as an unused provider placeholder; use clear_stage_order to clear it."
},
"clear_sum_by": {
"type": "boolean",
"description": "Set true to explicitly clear the active Kanban total."
},
"clear_group_by": {
"type": "boolean",
"description": "Set true to explicitly clear the saved group field when switching to table layout."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
},
"clear_stage_order": {
"type": "boolean",
"description": "Set true to explicitly clear the custom Kanban stage order."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Configure saved view",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description91/100
Copy a saved view, including its filters, sorting, columns and layout, as a private view owned by you.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Describe the returned information so the agent knows whether it will answer the request.
Inputs50/100
2 of 3 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
view_id
Saved view UUID, or "system-all" for the virtual All view.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
name
Not provided
Missing description. Explain what this value means and how to supply it.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "duplicate_view",
"title": "Duplicate saved view",
"description": "Copy a saved view, including its filters, sorting, columns and layout, as a private view owned by you.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"_item_request_id"
],
"properties": {
"name": {
"type": "string",
"maxLength": 255,
"minLength": 1
},
"view_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "string",
"const": "system-all"
}
],
"description": "Saved view UUID, or \"system-all\" for the virtual All view."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Duplicate saved view",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description93/100
Permanently delete a saved view you own. The default All view cannot be deleted.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs88/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
view_id
Saved view UUID, or "system-all" for the virtual All view.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "delete_view",
"title": "Delete saved view",
"description": "Permanently delete a saved view you own. The default All view cannot be deleted.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"_item_request_id"
],
"properties": {
"view_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "string",
"const": "system-all"
}
],
"description": "Saved view UUID, or \"system-all\" for the virtual All view."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Delete saved view",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description83/100
List all saved views for an object type. Views are pre-configured filters, columns, and sorting that users have saved. Use this to discover available views before executing them with execute_view.
Describe the returned information so the agent knows whether it will answer the request.
Inputs92/100
Input documentation gives an agent enough context to populate the arguments.
object_slug
The object type slug (e.g., "contacts", "companies", "deals")
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description88/100
Add one contact, company or custom object to a list. Requires listActionVersion 1.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs88/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
listActionVersion
Use version 1 for a newly proposed list membership change. Historical approvals cannot be reused.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
listId
The ID of the list to add the object to
Clear enough to supply this argument.
objectId
The ID of the object (contact, company, or custom object) to add to the list
Clear enough to supply this argument.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
{
"title": "Add record to list",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": false
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "add_to_list",
"title": "Add record to list",
"description": "Add one contact, company or custom object to a list. Requires listActionVersion 1.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"listActionVersion",
"listId",
"objectId",
"_item_request_id"
],
"properties": {
"listId": {
"type": "integer",
"description": "The ID of the list to add the object to",
"exclusiveMinimum": 0
},
"objectId": {
"type": "integer",
"description": "The ID of the object (contact, company, or custom object) to add to the list",
"exclusiveMinimum": 0
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
},
"listActionVersion": {
"type": "number",
"const": 1,
"description": "Use version 1 for a newly proposed list membership change. Historical approvals cannot be reused."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Add record to list",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description91/100
Get details for one Item list along with its member records, including the full field data for each member. Supports limit and offset for paginating large lists. List IDs come from list_lists.
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
listId
The ID of the list to retrieve
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
limit
Max number of members to return (default: 1000). Use for pagination.
Clear enough to supply this argument.
offset
Offset for pagination (default: 0)
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_list",
"title": "Get list members",
"description": "Get details for one Item list along with its member records, including the full field data for each member. Supports limit and offset for paginating large lists. List IDs come from list_lists.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"listId"
],
"properties": {
"limit": {
"type": "number",
"description": "Max number of members to return (default: 1000). Use for pagination."
},
"listId": {
"type": "number",
"description": "The ID of the list to retrieve"
},
"offset": {
"type": "number",
"description": "Offset for pagination (default: 0)"
}
},
"additionalProperties": false
},
"annotations": {
"title": "Get list members",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description91/100
Remove one record from a list. The record itself is not deleted. Requires listActionVersion 1.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs94/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
listActionVersion
Use version 1 for a newly proposed list membership change. Historical approvals cannot be reused.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
listId
The ID of the list to remove from
Clear enough to supply this argument.
objectId
The ID of the object to remove
Clear enough to supply this argument.
objectTypeId
The object type ID (1=contact, 2=company, or custom object type ID)
Clear enough to supply this argument.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
{
"title": "Remove record from list",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": true
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "remove_from_list",
"title": "Remove record from list",
"description": "Remove one record from a list. The record itself is not deleted. Requires listActionVersion 1.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"listActionVersion",
"listId",
"objectId",
"objectTypeId",
"_item_request_id"
],
"properties": {
"listId": {
"type": "integer",
"description": "The ID of the list to remove from",
"exclusiveMinimum": 0
},
"objectId": {
"type": "integer",
"description": "The ID of the object to remove",
"exclusiveMinimum": 0
},
"objectTypeId": {
"type": "integer",
"description": "The object type ID (1=contact, 2=company, or custom object type ID)",
"exclusiveMinimum": 0
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
},
"listActionVersion": {
"type": "number",
"const": 1,
"description": "Use version 1 for a newly proposed list membership change. Historical approvals cannot be reused."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Remove record from list",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": true
}
}
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "create_list",
"title": "Create list",
"description": "Create a new list for organizing Item objects of a single object type. Requires a name and the object type slug, with an optional description.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name",
"objectType"
],
"properties": {
"name": {
"type": "string",
"description": "Name for the new list"
},
"objectType": {
"type": "string",
"description": "Object type slug (e.g., \"contacts\", \"companies\", or a custom type slug)"
},
"description": {
"type": "string",
"description": "Optional description for the list"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Optional UUID for safe retries: reusing it returns the original result instead of repeating the action."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Create list",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description93/100
Change a list’s name. Membership, object type and ID are unchanged.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs88/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
listId
The ID of the list to rename
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
currentName
The current list name from list_lists, when known. Used only for user approval display.
Clear enough to supply this argument.
name
The new list name
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "rename_list",
"title": "Rename list",
"description": "Change a list’s name. Membership, object type and ID are unchanged.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"listId",
"name",
"_item_request_id"
],
"properties": {
"name": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "The new list name"
},
"listId": {
"type": "integer",
"description": "The ID of the list to rename",
"exclusiveMinimum": 0
},
"currentName": {
"type": "string",
"description": "The current list name from list_lists, when known. Used only for user approval display."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Rename list",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": true
}
}
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "create_note",
"title": "Create note",
"description": "Create a new note",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"content",
"title",
"object_slug"
],
"properties": {
"title": {
"type": [
"string",
"null"
],
"description": "The title of the note"
},
"content": {
"type": [
"string",
"null"
],
"description": "The content of the note"
},
"object_slug": {
"type": "string",
"description": "The slug of the object the note is associated with"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Optional UUID for safe retries: reusing it returns the original result instead of repeating the action."
},
"owned_by_object_id": {
"type": "number",
"description": "The object id to create the note for"
}
},
"additionalProperties": false
},
"annotations": {
"title": "Create note",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": false
}
}
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "edit_note",
"title": "Edit note",
"description": "Edit an existing note. For title or content, provide both the exact value you read and its replacement; a newer human edit returns a conflict.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The id of the note to update"
},
"emoji": {
"type": [
"string",
"null"
],
"description": "The emoji of the note in unified code"
},
"title": {
"type": "object",
"required": [
"expected",
"next"
],
"properties": {
"next": {
"type": [
"string",
"null"
],
"description": "The replacement value"
},
"expected": {
"type": [
"string",
"null"
],
"description": "The exact current value read before generating this edit"
}
},
"description": "Expected and replacement note title",
"additionalProperties": false
},
"content": {
"type": "object",
"required": [
"expected",
"next"
],
"properties": {
"next": {
"type": [
"string",
"null"
],
"description": "The replacement value"
},
"expected": {
"type": [
"string",
"null"
],
"description": "The exact current value read before generating this edit"
}
},
"description": "Expected and replacement note content",
"additionalProperties": false
},
"object_slug": {
"type": "string",
"description": "The slug of the object the note is associated with"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Optional UUID for safe retries: reusing it returns the original result instead of repeating the action."
},
"owned_by_object_id": {
"type": "number",
"description": "The id of the object to update the note for"
}
},
"additionalProperties": false
},
"annotations": {
"title": "Edit note",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": true
}
}
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "search_notes",
"title": "Search notes",
"description": "Search for notes",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"query"
],
"properties": {
"date": {
"type": "string",
"description": "The date to search for notes on"
},
"query": {
"type": "string",
"description": "The query in natural language to search for notes"
},
"to_date": {
"type": "string",
"description": "The date to search for notes to"
},
"from_date": {
"type": "string",
"description": "The date to search for notes from"
},
"object_slug": {
"type": "string",
"description": "Limit search to a specific object slug"
},
"created_by_user_id": {
"type": "string",
"description": "The id of the user that created the note"
},
"owned_by_object_id": {
"type": "number",
"description": "The id of the object that owns the note"
},
"last_edited_by_user_id": {
"type": "string",
"description": "The id of the user that last edited the note"
}
},
"additionalProperties": false
},
"annotations": {
"title": "Search notes",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description71/100
Search meeting recordings, transcripts and notes from Item and connected note takers such as Circleback, Fathom, Fireflies and Granola.
Describe the returned information so the agent knows whether it will answer the request.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
query
Natural language question about meeting recording content: transcripts, action items, notes, or insights. Be specific and include relevant context like person names, company names, topics, or time ranges.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
Read one meeting recording’s notes, summary, action items, insights and transcript. The transcript is returned in pages of up to 100,000 characters: pass transcript_offset from next_offset to read the next page. Nothing is saved.
The description explains the capability, when to use it, and what to expect.
Inputs92/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
meeting_recording_id
meeting_recording_id from a calendar event’s recording, or from a meeting recording search. Not the calendar event ID.
Clear enough to supply this argument.
transcript_offset
Transcript character offset to start from; use next_offset from the previous page.
Clear enough to supply this argument.
transcript_limit
Maximum transcript characters to return, up to 100,000.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_meeting_recording",
"title": "Get meeting recording",
"description": "Read one meeting recording’s notes, summary, action items, insights and transcript. The transcript is returned in pages of up to 100,000 characters: pass transcript_offset from next_offset to read the next page. Nothing is saved.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"meeting_recording_id"
],
"properties": {
"transcript_limit": {
"type": "integer",
"default": 20000,
"maximum": 100000,
"minimum": 1,
"description": "Maximum transcript characters to return, up to 100,000."
},
"transcript_offset": {
"type": "integer",
"default": 0,
"minimum": 0,
"description": "Transcript character offset to start from; use next_offset from the previous page."
},
"meeting_recording_id": {
"type": "integer",
"description": "meeting_recording_id from a calendar event’s recording, or from a meeting recording search. Not the calendar event ID.",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
},
"annotations": {
"title": "Get meeting recording",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description61/100
Search your synced email threads with Gmail search syntax.
Describe the concrete operation and its scope instead of restating the tool name.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
includeTrash
Include spam and trash. Default: false.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
mailboxScope
Whose mailboxes to search: me searches the acting user; all searches every mailbox you are permitted to read, including shared mail. Assistant and My Agent default to me; Standard Agent Skills default to all and should not select me because the execution identity may differ from the intended person. This selects mailbox ownership, not sender or recipient. On subsequent pages use pageToken alone.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
pageSize
Maximum threads per page. Default: 20; maximum: 50.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
pageToken
Optional. Opaque next-page token copied exactly from the previous response. Use null or omit it on the first page; never invent a token. When continuing, pass pageToken instead of rebuilding the query.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
query
Gmail-compatible search syntax. Convert the user's natural-language request into this syntax before calling the tool. Supported operators: from:, to:, cc:, bcc:, subject:, after:, before:, newer_than:, older_than:, label:, is:, in:, and has:attachment. Also supports exact phrases in quotes, OR, parentheses, Gmail OR braces, and - exclusions; adjacent terms are ANDed. from:me, to:me, cc:me, and bcc:me mean the acting user; in Standard Agent Skills, avoid these because the execution identity may differ from the intended person, and use a verified address instead. For Assistant and My Agent requests, "received by me" includes To, CC, and BCC, so use {to:me cc:me bcc:me} -from:me when those roles matter. Domain operands such as from:vercel.com match that participant domain and its subdomains. Never invent an email address or domain from a person's or company's name. A bare company name is only a subject/body probe; for complete participant-level company mail, resolve its real domain first and fan out the grounded participant roles. Dates accept YYYY/MM/DD, YYYY-MM-DD, or Unix seconds; relative dates accept values such as 7d, 2m, and 1y. after: includes midnight at the start of its date; before: excludes midnight at the start of its date. Both use the user's timezone. Bare terms search subject and body. Omit query to list mail in the selected mailboxScope except spam and trash.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "search_email_threads",
"title": "Search email threads",
"description": "Search your synced email threads with Gmail search syntax.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {
"query": {
"type": "string",
"maxLength": 2000,
"description": "Gmail-compatible search syntax. Convert the user's natural-language request into this syntax before calling the tool. Supported operators: from:, to:, cc:, bcc:, subject:, after:, before:, newer_than:, older_than:, label:, is:, in:, and has:attachment. Also supports exact phrases in quotes, OR, parentheses, Gmail OR braces, and - exclusions; adjacent terms are ANDed. from:me, to:me, cc:me, and bcc:me mean the acting user; in Standard Agent Skills, avoid these because the execution identity may differ from the intended person, and use a verified address instead. For Assistant and My Agent requests, \"received by me\" includes To, CC, and BCC, so use {to:me cc:me bcc:me} -from:me when those roles matter. Domain operands such as from:vercel.com match that participant domain and its subdomains. Never invent an email address or domain from a person's or company's name. A bare company name is only a subject/body probe; for complete participant-level company mail, resolve its real domain first and fan out the grounded participant roles. Dates accept YYYY/MM/DD, YYYY-MM-DD, or Unix seconds; relative dates accept values such as 7d, 2m, and 1y. after: includes midnight at the start of its date; before: excludes midnight at the start of its date. Both use the user's timezone. Bare terms search subject and body. Omit query to list mail in the selected mailboxScope except spam and trash."
},
"pageSize": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Maximum threads per page. Default: 20; maximum: 50."
},
"pageToken": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
],
"description": "Optional. Opaque next-page token copied exactly from the previous response. Use null or omit it on the first page; never invent a token. When continuing, pass pageToken instead of rebuilding the query."
},
"includeTrash": {
"type": "boolean",
"description": "Include spam and trash. Default: false."
},
"mailboxScope": {
"anyOf": [
{
"enum": [
"me",
"all"
],
"type": "string",
"description": "Whose mailboxes to search: me searches the acting user; all searches every mailbox you are permitted to read, including shared mail. Assistant and My Agent default to me; Standard Agent Skills default to all and should not select me because the execution identity may differ from the intended person. This selects mailbox ownership, not sender or recipient. On subsequent pages use pageToken alone."
},
{
"type": "null"
}
],
"description": "Whose mailboxes to search: me searches the acting user; all searches every mailbox you are permitted to read, including shared mail. Assistant and My Agent default to me; Standard Agent Skills default to all and should not select me because the execution identity may differ from the intended person. This selects mailbox ownership, not sender or recipient. On subsequent pages use pageToken alone."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Search email threads",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description67/100
Rank your synced Gmail and Outlook threads by topic or meaning.
Explain when to choose this tool and distinguish it from related operations.
Inputs81/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
mailboxScope
Whose mailboxes to search: me searches the acting user; all searches every mailbox you are permitted to read, including shared mail. Assistant and My Agent default to me; Standard Agent Skills default to all and should not select me because the execution identity may differ from the intended person. This selects mailbox ownership, not sender or recipient. On subsequent pages use pageToken alone.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
pageSize
Maximum ranked threads per page. Default: 20; maximum: 50.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
pageToken
Optional. Opaque next-page token copied exactly from the previous response. Use null or omit it on the first page; never invent a token. Pass it instead of repeating the query.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
query
A natural-language description of the email meaning, intent, or topic to rank. Pair this with literal search_email_threads when an about/regarding request may use different wording. Use literal search instead for exact people, addresses, domains, dates, labels, phrases, and exhaustive retrieval.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "semantic_search_email_threads",
"title": "Find email threads by topic",
"description": "Rank your synced Gmail and Outlook threads by topic or meaning.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {
"query": {
"type": "string",
"maxLength": 2000,
"minLength": 1,
"description": "A natural-language description of the email meaning, intent, or topic to rank. Pair this with literal search_email_threads when an about/regarding request may use different wording. Use literal search instead for exact people, addresses, domains, dates, labels, phrases, and exhaustive retrieval."
},
"pageSize": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Maximum ranked threads per page. Default: 20; maximum: 50."
},
"pageToken": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
],
"description": "Optional. Opaque next-page token copied exactly from the previous response. Use null or omit it on the first page; never invent a token. Pass it instead of repeating the query."
},
"mailboxScope": {
"anyOf": [
{
"enum": [
"me",
"all"
],
"type": "string",
"description": "Whose mailboxes to search: me searches the acting user; all searches every mailbox you are permitted to read, including shared mail. Assistant and My Agent default to me; Standard Agent Skills default to all and should not select me because the execution identity may differ from the intended person. This selects mailbox ownership, not sender or recipient. On subsequent pages use pageToken alone."
},
{
"type": "null"
}
],
"description": "Whose mailboxes to search: me searches the acting user; all searches every mailbox you are permitted to read, including shared mail. Assistant and My Agent default to me; Standard Agent Skills default to all and should not select me because the execution identity may differ from the intended person. This selects mailbox ownership, not sender or recipient. On subsequent pages use pageToken alone."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Find email threads by topic",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description68/100
Read the messages you can access in one email thread, as headers only or with full bodies.
Describe the returned information so the agent knows whether it will answer the request.
Inputs11/100
1 of 7 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
anyOf › 0 › cursor
Not provided
Missing description. Explain what this value means and how to supply it.
anyOf › 1 › email_id
Not provided
Missing description. Explain what this value means and how to supply it.
anyOf › 1 › order
Not provided
Missing description. Explain what this value means and how to supply it.
anyOf › 1 › page_size
Not provided
Missing description. Explain what this value means and how to supply it.
anyOf › 1 › view
metadata returns message headers and participants without bodies; full (default) includes permitted content. Up to 100 messages per metadata page, 20 for full.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
anyOf › 1 › provider
Not provided
Missing description. Explain what this value means and how to supply it.
anyOf › 1 › thread_id
Not provided
Missing description. Explain what this value means and how to supply it.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description69/100
List synced Google and Outlook calendar events in a time range.
Describe the returned information so the agent knows whether it will answer the request.
Inputs84/100
Resolve the mismatch between this description and its schema constraints.
calendarUsers
Whose calendars to search: ["me"] for the acting user, a unique teammate name or verified teammate email address for their calendar, or ["all"] alone for all permitted events in this organization. Assistant and My Agent default to ["me"]; Standard Agent Skills default to ["all"] and should not use ["me"], which resolves to the run execution identity rather than necessarily the intended calendar owner. Multiple selectors select the union. These are calendar sources, not attendee text filters; use fullText in search_calendar_events for meetings with someone. Ambiguous names fail instead of broadening scope. Permissions always apply. On subsequent pages use pageToken alone.
Clear enough to supply this argument.
endTime
Exclusive upper bound on event start time. Use an ISO 8601 timestamp. A date-only value means local midnight at the start of that date; to include the entire final day, use midnight of the following day. Do not add a bound unless requested.
Clear enough to supply this argument.
eventType
Event types to include. When omitted, regular, out-of-office, focus-time, and Gmail-created events are included.
Resolve the mismatch between this description and its schema constraints.
orderBy
Result order. startTime is ascending, startTimeDesc is descending, and lastModified is ascending. Default: deterministic newest start time first.
Clear enough to supply this argument.
pageSize
Maximum events per page. Default: 100; maximum: 250.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
pageToken
Optional. Opaque next-page token copied exactly from the previous response. Use null or omit it on the first page; never invent a token. When continuing, pass pageToken instead of rebuilding the search.
Clear enough to supply this argument.
startTime
Lower boundary of the requested window: events must end after it, so ongoing and overlapping meetings are included. Events without an end must start at or after it. Use an ISO 8601 timestamp; date-only means local midnight. Do not add a bound unless requested.
Clear enough to supply this argument.
timeZone
IANA timezone used only to resolve timestamps that omit an offset. Defaults to the user timezone.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "list_calendar_events",
"title": "List calendar events",
"description": "List synced Google and Outlook calendar events in a time range.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {
"endTime": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Exclusive upper bound on event start time. Use an ISO 8601 timestamp. A date-only value means local midnight at the start of that date; to include the entire final day, use midnight of the following day. Do not add a bound unless requested."
},
"orderBy": {
"enum": [
"default",
"startTime",
"startTimeDesc",
"lastModified"
],
"type": "string",
"description": "Result order. startTime is ascending, startTimeDesc is descending, and lastModified is ascending. Default: deterministic newest start time first."
},
"pageSize": {
"type": "integer",
"maximum": 250,
"minimum": 1,
"description": "Maximum events per page. Default: 100; maximum: 250."
},
"timeZone": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "IANA timezone used only to resolve timestamps that omit an offset. Defaults to the user timezone."
},
"eventType": {
"type": "array",
"items": {
"enum": [
"EVENT_TYPE_UNSPECIFIED",
"DEFAULT",
"OUT_OF_OFFICE",
"FOCUS_TIME",
"WORKING_LOCATION",
"BIRTHDAY",
"FROM_GMAIL"
],
"type": "string"
},
"maxItems": 7,
"description": "Event types to include. When omitted, regular, out-of-office, focus-time, and Gmail-created events are included."
},
"pageToken": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
],
"description": "Optional. Opaque next-page token copied exactly from the previous response. Use null or omit it on the first page; never invent a token. When continuing, pass pageToken instead of rebuilding the search."
},
"startTime": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Lower boundary of the requested window: events must end after it, so ongoing and overlapping meetings are included. Events without an end must start at or after it. Use an ISO 8601 timestamp; date-only means local midnight. Do not add a bound unless requested."
},
"calendarUsers": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"maxLength": 320,
"minLength": 1
},
"maxItems": 50,
"minItems": 1
},
{
"type": "null"
}
],
"description": "Whose calendars to search: [\"me\"] for the acting user, a unique teammate name or verified teammate email address for their calendar, or [\"all\"] alone for all permitted events in this organization. Assistant and My Agent default to [\"me\"]; Standard Agent Skills default to [\"all\"] and should not use [\"me\"], which resolves to the run execution identity rather than necessarily the intended calendar owner. Multiple selectors select the union. These are calendar sources, not attendee text filters; use fullText in search_calendar_events for meetings with someone. Ambiguous names fail instead of broadening scope. Permissions always apply. On subsequent pages use pageToken alone."
}
},
"additionalProperties": false
},
"annotations": {
"title": "List calendar events",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description69/100
Search synced Google and Outlook calendar events by title, description, location or attendee.
Describe the returned information so the agent knows whether it will answer the request.
Inputs86/100
Resolve the mismatch between this description and its schema constraints.
calendarUsers
Whose calendars to search: ["me"] for the acting user, a unique teammate name or verified teammate email address for their calendar, or ["all"] alone for all permitted events in this organization. Assistant and My Agent default to ["me"]; Standard Agent Skills default to ["all"] and should not use ["me"], which resolves to the run execution identity rather than necessarily the intended calendar owner. Multiple selectors select the union. These are calendar sources, not attendee text filters; use fullText in search_calendar_events for meetings with someone. Ambiguous names fail instead of broadening scope. Permissions always apply. On subsequent pages use pageToken alone.
Clear enough to supply this argument.
endTime
Exclusive upper bound on event start time. Use an ISO 8601 timestamp. A date-only value means local midnight at the start of that date; to include the entire final day, use midnight of the following day. Do not add a bound unless requested.
Clear enough to supply this argument.
eventType
Event types to include. When omitted, regular, out-of-office, focus-time, and Gmail-created events are included.
Resolve the mismatch between this description and its schema constraints.
orderBy
Result order. startTime is ascending, startTimeDesc is descending, and lastModified is ascending. Default: deterministic newest start time first.
Clear enough to supply this argument.
pageSize
Maximum events per page. Default: 100; maximum: 250.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
pageToken
Optional. Opaque next-page token copied exactly from the previous response. Use null or omit it on the first page; never invent a token. When continuing, pass pageToken instead of rebuilding the search.
Clear enough to supply this argument.
startTime
Lower boundary of the requested window: events must end after it, so ongoing and overlapping meetings are included. Events without an end must start at or after it. Use an ISO 8601 timestamp; date-only means local midnight. Do not add a bound unless requested.
Clear enough to supply this argument.
timeZone
IANA timezone used only to resolve timestamps that omit an offset. Defaults to the user timezone.
Clear enough to supply this argument.
fullText
Required on the first page. Case-insensitive literal search over title, description, location, and attendee names or addresses. All terms must match; quote a multi-word phrase to keep it together. Preserve the user’s literal names and topic words.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "search_calendar_events",
"title": "Search calendar events",
"description": "Search synced Google and Outlook calendar events by title, description, location or attendee.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {
"endTime": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Exclusive upper bound on event start time. Use an ISO 8601 timestamp. A date-only value means local midnight at the start of that date; to include the entire final day, use midnight of the following day. Do not add a bound unless requested."
},
"orderBy": {
"enum": [
"default",
"startTime",
"startTimeDesc",
"lastModified"
],
"type": "string",
"description": "Result order. startTime is ascending, startTimeDesc is descending, and lastModified is ascending. Default: deterministic newest start time first."
},
"fullText": {
"type": "string",
"maxLength": 1000,
"minLength": 1,
"description": "Required on the first page. Case-insensitive literal search over title, description, location, and attendee names or addresses. All terms must match; quote a multi-word phrase to keep it together. Preserve the user’s literal names and topic words."
},
"pageSize": {
"type": "integer",
"maximum": 250,
"minimum": 1,
"description": "Maximum events per page. Default: 100; maximum: 250."
},
"timeZone": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "IANA timezone used only to resolve timestamps that omit an offset. Defaults to the user timezone."
},
"eventType": {
"type": "array",
"items": {
"enum": [
"EVENT_TYPE_UNSPECIFIED",
"DEFAULT",
"OUT_OF_OFFICE",
"FOCUS_TIME",
"WORKING_LOCATION",
"BIRTHDAY",
"FROM_GMAIL"
],
"type": "string"
},
"maxItems": 7,
"description": "Event types to include. When omitted, regular, out-of-office, focus-time, and Gmail-created events are included."
},
"pageToken": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
],
"description": "Optional. Opaque next-page token copied exactly from the previous response. Use null or omit it on the first page; never invent a token. When continuing, pass pageToken instead of rebuilding the search."
},
"startTime": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Lower boundary of the requested window: events must end after it, so ongoing and overlapping meetings are included. Events without an end must start at or after it. Use an ISO 8601 timestamp; date-only means local midnight. Do not add a bound unless requested."
},
"calendarUsers": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"maxLength": 320,
"minLength": 1
},
"maxItems": 50,
"minItems": 1
},
{
"type": "null"
}
],
"description": "Whose calendars to search: [\"me\"] for the acting user, a unique teammate name or verified teammate email address for their calendar, or [\"all\"] alone for all permitted events in this organization. Assistant and My Agent default to [\"me\"]; Standard Agent Skills default to [\"all\"] and should not use [\"me\"], which resolves to the run execution identity rather than necessarily the intended calendar owner. Multiple selectors select the union. These are calendar sources, not attendee text filters; use fullText in search_calendar_events for meetings with someone. Ambiguous names fail instead of broadening scope. Permissions always apply. On subsequent pages use pageToken alone."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Search calendar events",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}
}
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_calendar_event",
"title": "Get calendar event",
"description": "Read one calendar event you can access, including attendees, description, location, join details and recordings.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {
"event_id": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0
},
{
"type": "null"
}
],
"description": "eventId from list_calendar_events or search_calendar_events. Pass null when using contactId or companyId."
},
"position": {
"anyOf": [
{
"enum": [
"last",
"next"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Required with contactId or companyId: last means Last Meeting; next means Next Meeting. Pass null with event_id."
},
"companyId": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0
},
{
"type": "null"
}
],
"description": "Company ID for its Last or Next Meeting. Pass null when using event_id or contactId."
},
"contactId": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0
},
{
"type": "null"
}
],
"description": "Contact ID for its Last or Next Meeting. Pass null when using event_id or companyId."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Get calendar event",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
Read the latest Item-native phone call linked to a Contact or Company, including its timestamp, title, and description. Pass exactly one positive contactId or companyId; omit the unused ID or pass null. Access follows workspace membership and Last Phone Call field visibility.
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
contactId
Contact ID whose exact Last Phone Call is requested. Pass null when using companyId.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
companyId
Company ID whose exact Last Phone Call is requested. Pass null when using contactId.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description89/100
Schedule the Item recording bot to join one specific calendar meeting.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs96/100
Input documentation gives an agent enough context to populate the arguments.
calendar_event_id
The contact_calendar_events.id for the meeting to record.
Clear enough to supply this argument.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "send_item_recording_to_calendar_event",
"title": "Send Item recorder to meeting",
"description": "Schedule the Item recording bot to join one specific calendar meeting.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"calendar_event_id",
"_item_request_id"
],
"properties": {
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
},
"calendar_event_id": {
"type": "integer",
"description": "The contact_calendar_events.id for the meeting to record.",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
},
"annotations": {
"title": "Send Item recorder to meeting",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description89/100
Cancel a scheduled or joining Item recording bot for a calendar event. A bot that has already joined cannot be removed.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs38/100
1 of 2 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
calendar_event_id
Not provided
Missing description. Explain what this value means and how to supply it.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "cancel_item_recording_for_calendar_event",
"title": "Cancel Item recorder",
"description": "Cancel a scheduled or joining Item recording bot for a calendar event. A bot that has already joined cannot be removed.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"calendar_event_id",
"_item_request_id"
],
"properties": {
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
},
"calendar_event_id": {
"type": "integer",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
},
"annotations": {
"title": "Cancel Item recorder",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description62/100
Read one email you can access, or the latest email with a contact or company.
Describe the concrete operation and its scope instead of restating the tool name.
Inputs50/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
emailId
Email ID from a known message. Pass null when using contactId or companyId.
Clear enough to supply this argument.
contactId
Contact ID for that Contact’s exact latest email. Pass null when using emailId or companyId.
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
companyId
Company ID for that Company’s exact latest email. Pass null when using emailId or contactId.
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
direction
Required with contactId or companyId: received means Last Email Received (from them); sent means Last Email Sent (to them); latest returns the newer of the two (with them). Pass null with emailId.
Resolve the mismatch between this description and its schema constraints.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_email",
"title": "Read email",
"description": "Read one email you can access, or the latest email with a contact or company.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {
"emailId": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0
},
{
"type": "null"
}
],
"description": "Email ID from a known message. Pass null when using contactId or companyId."
},
"companyId": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0
},
{
"type": "null"
}
],
"description": "Company ID for that Company’s exact latest email. Pass null when using emailId or contactId."
},
"contactId": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0
},
{
"type": "null"
}
],
"description": "Contact ID for that Contact’s exact latest email. Pass null when using emailId or companyId."
},
"direction": {
"anyOf": [
{
"enum": [
"received",
"sent",
"latest"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Required with contactId or companyId: received means Last Email Received (from them); sent means Last Email Sent (to them); latest returns the newer of the two (with them). Pass null with emailId."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Read email",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description77/100
Read recent workspace activity from Item, such as record updates, emails, calendar syncs, connector events and Skill actions, newest first.
Describe the returned information so the agent knows whether it will answer the request.
Inputs89/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
eventTypes
Filter to these event types. Supported values: "record.created", "record.updated" (object CRUD — combine with `entityType` to scope to deals/contacts/companies/custom objects), "note.created", "email.sent", "email.received", "linkedin.message.sent", "linkedin.message.received", "meeting.scheduled", "meeting.completed", "meeting.cancelled", "activity.logged.phone_call", "activity.logged.text_message", "activity.logged.site_visit", "activity.logged.meeting", "intercom.conversation.created", "intercom.message.sent", "intercom.message.received", "intercom.ticket.created", "skill.tool_executed", and dynamic connector types like "connector.stripe.charge.succeeded" (form: "connector.<slug>.<event_id>").
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
entityType
Filter to events about this entity type.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
entityId
Filter to events about this specific entity id (as a string).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
actorId
Filter to events produced by this actor (user id, skill run id, or connector id). NOTE: per-source coverage varies. Received emails, calendar events, and connector events have no user-actor column in their source tables, so `actorId` is ignored for those sources and their rows will still be included if they match other filters. For skill tool-execution events (`skill.tool_executed`), `actorId` is interpreted as a `skill_run_id` (not a user id) — passing a user id here returns zero skill events. Use `eventTypes` to narrow to a specific activity kind when actor attribution matters.
Clear enough to supply this argument.
since
ISO-8601 timestamp; only return events occurring at or after this time.
Clear enough to supply this argument.
until
ISO-8601 timestamp; only return events occurring before this time.
Clear enough to supply this argument.
limit
Maximum number of events to return. Applied as a per-source budget during the fetch, then to the merged result after sorting.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "query_org_timeline_live",
"title": "Read workspace activity",
"description": "Read recent workspace activity from Item, such as record updates, emails, calendar syncs, connector events and Skill actions, newest first.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {
"limit": {
"type": "integer",
"default": 50,
"maximum": 500,
"minimum": 1,
"description": "Maximum number of events to return. Applied as a per-source budget during the fetch, then to the merged result after sorting."
},
"since": {
"type": "string",
"format": "date-time",
"description": "ISO-8601 timestamp; only return events occurring at or after this time."
},
"until": {
"type": "string",
"format": "date-time",
"description": "ISO-8601 timestamp; only return events occurring before this time."
},
"actorId": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]+$",
"minLength": 1,
"description": "Filter to events produced by this actor (user id, skill run id, or connector id). NOTE: per-source coverage varies. Received emails, calendar events, and connector events have no user-actor column in their source tables, so `actorId` is ignored for those sources and their rows will still be included if they match other filters. For skill tool-execution events (`skill.tool_executed`), `actorId` is interpreted as a `skill_run_id` (not a user id) — passing a user id here returns zero skill events. Use `eventTypes` to narrow to a specific activity kind when actor attribution matters."
},
"entityId": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]+$",
"minLength": 1,
"description": "Filter to events about this specific entity id (as a string)."
},
"entityType": {
"enum": [
"contact",
"company",
"deal",
"custom_object",
"skill",
"form",
"list"
],
"type": "string",
"description": "Filter to events about this entity type."
},
"eventTypes": {
"type": "array",
"items": {
"type": "string"
},
"description": "Filter to these event types. Supported values: \"record.created\", \"record.updated\" (object CRUD — combine with `entityType` to scope to deals/contacts/companies/custom objects), \"note.created\", \"email.sent\", \"email.received\", \"linkedin.message.sent\", \"linkedin.message.received\", \"meeting.scheduled\", \"meeting.completed\", \"meeting.cancelled\", \"activity.logged.phone_call\", \"activity.logged.text_message\", \"activity.logged.site_visit\", \"activity.logged.meeting\", \"intercom.conversation.created\", \"intercom.message.sent\", \"intercom.message.received\", \"intercom.ticket.created\", \"skill.tool_executed\", and dynamic connector types like \"connector.stripe.charge.succeeded\" (form: \"connector.<slug>.<event_id>\")."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Read workspace activity",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description82/100
Create a task in Item, assigned to a teammate or to the Item AI. A task runs immediately by default, at a future datetime when scheduled_for is set, or in response to an event (received email, calendar event, record change, webhook, or form submission) when a trigger is set. scheduled_for and trigger are mutually exclusive; a multi-step workflow with dependent steps belongs in a single task with one planned_steps entry per action.
The description explains the capability, when to use it, and what to expect.
Inputs87/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
prompt
The full instruction for what the task should accomplish (e.g., "Send John a follow-up email about our meeting")
Clear enough to supply this argument.
scheduled_for
ISO 8601 datetime string in UTC (ending with Z) for when the task should execute. If not provided, the task executes immediately. For relative times like "in 30 minutes", add the duration directly to the current UTC time. For absolute times like "Tuesday 9am", convert from the user's timezone to UTC using the offset in the system prompt. Mutually exclusive with trigger.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
trigger › type
Type of trigger that will activate this task
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
is_recurring
Whether this reactive task should keep acting on every matching event. Set to true for recurring patterns ("whenever", "every time", "each week", "anytime", etc.). Set to false (default) for one-time reactive tasks ("when X happens", "as soon as X happens", etc.). Only relevant for reactive tasks (i.e. when `trigger` is provided). Set this to match what the user actually asked for — a task woken by an event that does not match its guard dismisses that event and stays armed, so a one-time task is no longer consumed by the first non-matching event.
Clear enough to supply this argument.
assignee_type
Who does the action? "ai" (default) if AI should DO something (send email, research, draft, notify, remind, etc.). "user" if only the human needs to do something, as part of their to-do list (with no automatic notification).
Clear enough to supply this argument.
contact_id
ID of the contact this task is associated with
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
contact_company_id
ID of the company this task is associated with
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
custom_object_id
ID of the custom object (e.g., deal) this task is associated with
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
notes
Persistent context for the task. For AI tasks, these notes are included in execution context.
Clear enough to supply this argument.
explicit_approval_settings
Per-action approval preferences. Keys are action names (e.g., "reply_to_email", "send_slack_message"), values are booleans (true = require human review before executing, false = auto-execute). Only include actions the user explicitly confirmed preferences for.
Clear enough to supply this argument.
planned_steps
User-POV, imperative-voice plan describing what the AI should do — written as if the user is commanding the AI (e.g., ["Send a follow-up email to the contact", "Draft a reply using the brand tone"]). Contrast with `prompt`, which is AI-POV. One discrete step per array element, no numbering prefixes. Populate for AI tasks (typically 2–5 steps); OMIT for human tasks (assignee_type="user").
true if the task CANNOT complete without this tool — if its integration is not connected, task creation will be BLOCKED with an error naming the missing integration. false if the tool is helpful but has fallbacks/alternatives — missing integration yields a non-blocking WARNING and the tool is excluded from the persisted list, but creation still proceeds.
Clear enough to supply this argument.
assignee_user_id
Assign the task to a specific human teammate by their user_id (UUID). If omitted, the task is assigned to the calling user (default). To assign to a teammate by name (e.g., "Andres"), FIRST call internal_search to resolve the teammate name to a user_id UUID, then pass that UUID here. This field is valid for BOTH assignee_type="user" (sets the human assignee doing the work) AND assignee_type="ai" (sets the human owner/supervisor of the AI task). Org membership is enforced server-side; cross-org user IDs are rejected.
Clear enough to supply this argument.
_item_request_id
Optional UUID for safe retries: reusing it returns the original result instead of repeating the action.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "create_task",
"title": "Create task",
"description": "Create a task in Item, assigned to a teammate or to the Item AI. A task runs immediately by default, at a future datetime when scheduled_for is set, or in response to an event (received email, calendar event, record change, webhook, or form submission) when a trigger is set. scheduled_for and trigger are mutually exclusive; a multi-step workflow with dependent steps belongs in a single task with one planned_steps entry per action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"prompt"
],
"properties": {
"notes": {
"type": [
"string",
"null"
],
"description": "Persistent context for the task. For AI tasks, these notes are included in execution context."
},
"prompt": {
"type": "string",
"description": "The full instruction for what the task should accomplish (e.g., \"Send John a follow-up email about our meeting\")"
},
"trigger": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"enum": [
"new_email",
"time_based",
"new_calendar_event",
"form_submission",
"webhook",
"record_saved",
"connector_event",
"calendar_event_starting"
],
"type": "string",
"description": "Type of trigger that will activate this task"
}
},
"description": "Trigger condition that will activate this task. Use for reactive tasks (e.g., \"when John emails me\", \"when deal is created\"). Mutually exclusive with scheduled_for.",
"additionalProperties": false
},
"contact_id": {
"type": "number",
"description": "ID of the contact this task is associated with"
},
"is_recurring": {
"type": "boolean",
"default": false,
"description": "Whether this reactive task should keep acting on every matching event. Set to true for recurring patterns (\"whenever\", \"every time\", \"each week\", \"anytime\", etc.). Set to false (default) for one-time reactive tasks (\"when X happens\", \"as soon as X happens\", etc.). Only relevant for reactive tasks (i.e. when `trigger` is provided). Set this to match what the user actually asked for — a task woken by an event that does not match its guard dismisses that event and stays armed, so a one-time task is no longer consumed by the first non-matching event."
},
"assignee_type": {
"enum": [
"ai",
"user"
],
"type": "string",
"default": "ai",
"description": "Who does the action? \"ai\" (default) if AI should DO something (send email, research, draft, notify, remind, etc.). \"user\" if only the human needs to do something, as part of their to-do list (with no automatic notification)."
},
"planned_steps": {
"anyOf": [
{
"anyOf": [
{
"not": {}
},
{
"type": "array",
"items": {
"type": "string"
}
}
]
},
{
"type": "null"
}
],
"description": "User-POV, imperative-voice plan describing what the AI should do — written as if the user is commanding the AI (e.g., [\"Send a follow-up email to the contact\", \"Draft a reply using the brand tone\"]). Contrast with `prompt`, which is AI-POV. One discrete step per array element, no numbering prefixes. Populate for AI tasks (typically 2–5 steps); OMIT for human tasks (assignee_type=\"user\")."
},
"planned_tools": {
"anyOf": [
{
"anyOf": [
{
"not": {}
},
{
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"required"
],
"properties": {
"name": {
"type": "string",
"description": "The tool identifier (e.g., \"send_email\", \"web_search\"), chosen from the assistant's currently available tools."
},
"required": {
"type": "boolean",
"description": "true if the task CANNOT complete without this tool — if its integration is not connected, task creation will be BLOCKED with an error naming the missing integration. false if the tool is helpful but has fallbacks/alternatives — missing integration yields a non-blocking WARNING and the tool is excluded from the persisted list, but creation still proceeds."
}
},
"additionalProperties": false
}
}
]
},
{
"type": "null"
}
],
"description": "Array of { name, required } objects identifying the tools the task is expected to use. `required: true` means the task fundamentally cannot complete without that tool (missing integration blocks creation). `required: false` means the tool is helpful but has alternatives (missing integration produces a warning). Populate for AI tasks; OMIT for human tasks (assignee_type=\"user\")."
},
"scheduled_for": {
"type": "string",
"description": "ISO 8601 datetime string in UTC (ending with Z) for when the task should execute. If not provided, the task executes immediately. For relative times like \"in 30 minutes\", add the duration directly to the current UTC time. For absolute times like \"Tuesday 9am\", convert from the user's timezone to UTC using the offset in the system prompt. Mutually exclusive with trigger."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Optional UUID for safe retries: reusing it returns the original result instead of repeating the action."
},
"assignee_user_id": {
"type": "string",
"format": "uuid",
"description": "Assign the task to a specific human teammate by their user_id (UUID). If omitted, the task is assigned to the calling user (default). To assign to a teammate by name (e.g., \"Andres\"), FIRST call internal_search to resolve the teammate name to a user_id UUID, then pass that UUID here. This field is valid for BOTH assignee_type=\"user\" (sets the human assignee doing the work) AND assignee_type=\"ai\" (sets the human owner/supervisor of the AI task). Org membership is enforced server-side; cross-org user IDs are rejected."
},
"custom_object_id": {
"type": "number",
"description": "ID of the custom object (e.g., deal) this task is associated with"
},
"contact_company_id": {
"type": "number",
"description": "ID of the company this task is associated with"
},
"explicit_approval_settings": {
"type": "object",
"description": "Per-action approval preferences. Keys are action names (e.g., \"reply_to_email\", \"send_slack_message\"), values are booleans (true = require human review before executing, false = auto-execute). Only include actions the user explicitly confirmed preferences for.",
"additionalProperties": {
"type": "boolean"
}
}
},
"additionalProperties": false
},
"annotations": {
"title": "Create task",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
Find the user's existing tasks by status, scheduled/created/completed dates, assignee, associated objects (contact, company, custom object), and an optional free-text `query` string. Internal lookup tool — the result is consumed by the model only.
This tool DOES NOT render a card. Do NOT summarize the result back to the user as a list, table, or bulleted enumeration — the search is a programmatic lookup, not a user-facing display.
When to use:
- Use `search_tasks` whenever you need to look up a task to act on — e.g. resolving a `task_id` for `update_task`, `delete_task`, or to re-open a terminal human task.
- Use `list_tasks` (not this tool) when the user explicitly wants to see their tasks ("show me my tasks", "what's on my plate?"). `list_tasks` renders a rich task-list card; `search_tasks` does not.
Input shape is identical to `list_tasks`. The same filters apply:
- `query`: free-text search across the task title and planned steps. Whitespace-separated terms are AND-ed together; each term must appear in either the title or the planned steps. Use when the user names a task by content (e.g. "the task about Rosa", "the enrichment task"), and pass only the CONTENT words — never record-type words like "follow-up", "task", "reminder" or "to-do", which exclude every matching task whose title happens not to contain them. Pass null when the user identifies the task by who it involves rather than by content.
- `status`: one of the user-facing labels (`Pending`, `Scheduled`, `In-progress`, `Awaiting Trigger`, `Input Needed`, `Pending Approval`, `Completed`, `Failed`, `Canceled`), or `null` to search ALL statuses. Pass null whenever the user hasn't named a state. Same for `assignee_type`.
- Date ranges (`scheduled_after` / `scheduled_before`, `created_after` / `created_before`, `completed_after` / `completed_before`), assignee filters (`assignee_type`, `assignee_user_id`, `created_by_user_id`), and association filters (`contact_id`, `contact_company_id`, `custom_object_id`) all behave the same way as in `list_tasks`. `scheduled_after`/`scheduled_before` EXCLUDE undated tasks — omit them unless the user asked about a time window. `contact_company_id` matches both tasks linked directly to the company and tasks linked to one of its contacts.
- `query` may be combined with metadata filters to narrow results (e.g. `query: "Rosa"` together with `created_after` / `created_before` covering yesterday).
Examples:
- "Push the prep call task to Friday" → first call `search_tasks { query: "prep call" }` to resolve the task id, then `update_task { task_id, scheduled_for: '...' }`.
- "Cancel the follow-up I asked you to do for Rosa" → `search_tasks { query: "Rosa" }` — "follow-up" is a record type, not content, so it does NOT belong in `query` — then `update_task { task_id, status: 'cancelled' }`.
- "Reassign the Acme outreach task to Bob" → `search_tasks { query: "Acme outreach" }` (also resolve Bob's user_id via `internal_search`), then `update_task { task_id, assignee_user_id }`.
The description explains the capability, when to use it, and what to expect.
Inputs92/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
status
Pass null to search ALL statuses — do that for open-ended questions like "do I have any tasks with Acme?", where guessing a label silently hides matches. Only pass a label when the user names a state. Filter by user-facing status label (the values shown in the UI). "Pending" = scheduled human task. "Scheduled" = scheduled AI task or AI task paused mid-execution. "In-progress" = currently running. "Awaiting Trigger" = waiting for a trigger event to fire. "Input Needed" = paused waiting for the user to provide input. "Pending Approval" = paused waiting for the user to approve an action. "Completed" = succeeded. "Failed" = errored or exited without completing. "Canceled" = explicitly canceled.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
scheduled_after
ISO 8601 datetime - only return tasks scheduled after this time. WARNING: excludes undated tasks (no scheduled date), which are common. Omit unless the user asked about a specific time window.
Clear enough to supply this argument.
scheduled_before
ISO 8601 datetime - only return tasks scheduled before this time. WARNING: excludes undated tasks (no scheduled date), which are common. Omit unless the user asked about a specific time window.
Clear enough to supply this argument.
assignee_type
Filter by assignee type. Pass null to search both AI and human tasks — do that unless the user asked for one kind specifically.
Clear enough to supply this argument.
contact_id
Filter by associated contact
Explain the meaning of this value, not just its name.
contact_company_id
Filter by associated company. Matches tasks linked directly to the company AND tasks linked to a contact who works there.
Clear enough to supply this argument.
custom_object_id
Filter by associated custom object
Explain the meaning of this value, not just its name.
limit
Maximum number of tasks to return (default: 20)
Clear enough to supply this argument.
query
Free-text search across the task title and planned steps. Use when the user names a task by content or phrase (e.g. "the task about Rosa", "enriching profiles"). Whitespace-separated terms are AND-ed together; each term must appear in either the title or the planned steps. Pass null for pure metadata queries (e.g. "my running tasks"). NEVER put generic record-type words here — "follow-up", "task", "reminder", "to-do", "meeting", "action item" describe the KIND of record, not its content, and will exclude every matching task whose title happens not to contain that word. When the user asks "any follow-ups/tasks with <person or company>?", resolve the person or company and filter by contact_id / contact_company_id with query: null.
Clear enough to supply this argument.
assignee_user_id
Filter by the user the task is assigned to (UUID of the user profile).
Clear enough to supply this argument.
created_by_user_id
Filter by the user who created the task (UUID of the user profile).
Clear enough to supply this argument.
created_after
ISO 8601 datetime — only return tasks created at or after this time.
Clear enough to supply this argument.
created_before
ISO 8601 datetime — only return tasks created at or before this time.
Clear enough to supply this argument.
completed_after
ISO 8601 datetime — only return tasks completed at or after this time.
Clear enough to supply this argument.
completed_before
ISO 8601 datetime — only return tasks completed at or before this time.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "search_tasks",
"title": "Search tasks",
"description": "Find the user's existing tasks by status, scheduled/created/completed dates, assignee, associated objects (contact, company, custom object), and an optional free-text `query` string. Internal lookup tool — the result is consumed by the model only.\n\nThis tool DOES NOT render a card. Do NOT summarize the result back to the user as a list, table, or bulleted enumeration — the search is a programmatic lookup, not a user-facing display.\n\nWhen to use:\n- Use `search_tasks` whenever you need to look up a task to act on — e.g. resolving a `task_id` for `update_task`, `delete_task`, or to re-open a terminal human task.\n- Use `list_tasks` (not this tool) when the user explicitly wants to see their tasks (\"show me my tasks\", \"what's on my plate?\"). `list_tasks` renders a rich task-list card; `search_tasks` does not.\n\nInput shape is identical to `list_tasks`. The same filters apply:\n- `query`: free-text search across the task title and planned steps. Whitespace-separated terms are AND-ed together; each term must appear in either the title or the planned steps. Use when the user names a task by content (e.g. \"the task about Rosa\", \"the enrichment task\"), and pass only the CONTENT words — never record-type words like \"follow-up\", \"task\", \"reminder\" or \"to-do\", which exclude every matching task whose title happens not to contain them. Pass null when the user identifies the task by who it involves rather than by content.\n- `status`: one of the user-facing labels (`Pending`, `Scheduled`, `In-progress`, `Awaiting Trigger`, `Input Needed`, `Pending Approval`, `Completed`, `Failed`, `Canceled`), or `null` to search ALL statuses. Pass null whenever the user hasn't named a state. Same for `assignee_type`.\n- Date ranges (`scheduled_after` / `scheduled_before`, `created_after` / `created_before`, `completed_after` / `completed_before`), assignee filters (`assignee_type`, `assignee_user_id`, `created_by_user_id`), and association filters (`contact_id`, `contact_company_id`, `custom_object_id`) all behave the same way as in `list_tasks`. `scheduled_after`/`scheduled_before` EXCLUDE undated tasks — omit them unless the user asked about a time window. `contact_company_id` matches both tasks linked directly to the company and tasks linked to one of its contacts.\n- `query` may be combined with metadata filters to narrow results (e.g. `query: \"Rosa\"` together with `created_after` / `created_before` covering yesterday).\n\nExamples:\n- \"Push the prep call task to Friday\" → first call `search_tasks { query: \"prep call\" }` to resolve the task id, then `update_task { task_id, scheduled_for: '...' }`.\n- \"Cancel the follow-up I asked you to do for Rosa\" → `search_tasks { query: \"Rosa\" }` — \"follow-up\" is a record type, not content, so it does NOT belong in `query` — then `update_task { task_id, status: 'cancelled' }`.\n- \"Reassign the Acme outreach task to Bob\" → `search_tasks { query: \"Acme outreach\" }` (also resolve Bob's user_id via `internal_search`), then `update_task { task_id, assignee_user_id }`.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {
"limit": {
"type": "number",
"default": 20,
"description": "Maximum number of tasks to return (default: 20)"
},
"query": {
"type": [
"string",
"null"
],
"description": "Free-text search across the task title and planned steps. Use when the user names a task by content or phrase (e.g. \"the task about Rosa\", \"enriching profiles\"). Whitespace-separated terms are AND-ed together; each term must appear in either the title or the planned steps. Pass null for pure metadata queries (e.g. \"my running tasks\"). NEVER put generic record-type words here — \"follow-up\", \"task\", \"reminder\", \"to-do\", \"meeting\", \"action item\" describe the KIND of record, not its content, and will exclude every matching task whose title happens not to contain that word. When the user asks \"any follow-ups/tasks with <person or company>?\", resolve the person or company and filter by contact_id / contact_company_id with query: null."
},
"status": {
"anyOf": [
{
"enum": [
"Pending",
"Scheduled",
"In-progress",
"Awaiting Trigger",
"Input Needed",
"Pending Approval",
"Completed",
"Failed",
"Canceled"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Pass null to search ALL statuses — do that for open-ended questions like \"do I have any tasks with Acme?\", where guessing a label silently hides matches. Only pass a label when the user names a state. Filter by user-facing status label (the values shown in the UI). \"Pending\" = scheduled human task. \"Scheduled\" = scheduled AI task or AI task paused mid-execution. \"In-progress\" = currently running. \"Awaiting Trigger\" = waiting for a trigger event to fire. \"Input Needed\" = paused waiting for the user to provide input. \"Pending Approval\" = paused waiting for the user to approve an action. \"Completed\" = succeeded. \"Failed\" = errored or exited without completing. \"Canceled\" = explicitly canceled."
},
"contact_id": {
"type": "number",
"description": "Filter by associated contact"
},
"assignee_type": {
"anyOf": [
{
"enum": [
"ai",
"user"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Filter by assignee type. Pass null to search both AI and human tasks — do that unless the user asked for one kind specifically."
},
"created_after": {
"type": "string",
"description": "ISO 8601 datetime — only return tasks created at or after this time."
},
"created_before": {
"type": "string",
"description": "ISO 8601 datetime — only return tasks created at or before this time."
},
"completed_after": {
"type": "string",
"description": "ISO 8601 datetime — only return tasks completed at or after this time."
},
"scheduled_after": {
"type": "string",
"description": "ISO 8601 datetime - only return tasks scheduled after this time. WARNING: excludes undated tasks (no scheduled date), which are common. Omit unless the user asked about a specific time window."
},
"assignee_user_id": {
"type": "string",
"description": "Filter by the user the task is assigned to (UUID of the user profile)."
},
"completed_before": {
"type": "string",
"description": "ISO 8601 datetime — only return tasks completed at or before this time."
},
"custom_object_id": {
"type": "number",
"description": "Filter by associated custom object"
},
"scheduled_before": {
"type": "string",
"description": "ISO 8601 datetime - only return tasks scheduled before this time. WARNING: excludes undated tasks (no scheduled date), which are common. Omit unless the user asked about a specific time window."
},
"contact_company_id": {
"type": "number",
"description": "Filter by associated company. Matches tasks linked directly to the company AND tasks linked to a contact who works there."
},
"created_by_user_id": {
"type": "string",
"description": "Filter by the user who created the task (UUID of the user profile)."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Search tasks",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description77/100
Update an existing Item task. Supports marking a task succeeded or cancelled, adding completion notes, resuming a blocked or errored AI task with new context (resume: true), changing the linked contact, company, or custom object, editing the plan (planned_steps) of a non-terminal AI task, renaming the task, and rescheduling via scheduled_for. Task IDs come from search_tasks.
Explain mutations, irreversible effects, or prerequisites that matter before calling this tool.
Inputs88/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
task_id
UUID of the task to update
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
clear_fields
The ONLY way to clear or unlink a field. List the fields to clear, e.g. ["notes"] to erase the Notes or ["contact_id"] to unlink the contact. Pass null or [] when not clearing anything. Passing null in a field itself does NOT clear it; null means "leave this field unchanged".
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
status
Update task status: "succeeded" to mark human tasks as complete, "cancelled" to cancel any task, "scheduled" to re-open a terminal human task (succeeded or cancelled) so the user can act on it again. You can cancel AI tasks, but otherwise cannot update the status of AI tasks — as their status is automatically managed by the system. Re-opening (status="scheduled") is only supported on human tasks; AI task lifecycles are managed automatically.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
assignee_user_id
Reassign the task to a concrete teammate. Pass their user_id (UUID). Pass null to leave the owner unchanged — do that unless the user explicitly asked to reassign, because reassignment must be its own call and cannot be combined with any other change. User→user only — switching between AI and human assignees is not supported.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
scheduled_for
ISO 8601 datetime string to reschedule the task (e.g., "2026-05-08T15:00:00Z"). Pass null to leave the schedule unchanged; to clear the date, put "scheduled_for" in clear_fields.
Clear enough to supply this argument.
resume_context
New context for the AI to continue from when `resume` is true (e.g., "Legal approved the contract, here are the details: ..."). Ignored unless `resume` is true — to record what happened on a task, use `notes`.
Clear enough to supply this argument.
notes › anyOf › 0 › text
The Notes content. With mode "append", pass ONLY the new text — the existing Notes are preserved for you, so do not restate them.
Clear enough to supply this argument.
notes › anyOf › 0 › mode
"append" adds this text to the end of the existing Notes — use this when recording what happened on a task, which is the common case. "replace" DISCARDS the existing Notes entirely; only use it when the user explicitly asks to overwrite or rewrite them, or when your text already restates everything worth keeping.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
resume
Set to true to resume a blocked AI task with `resume_context` as new context, triggering re-execution. Only valid on AI tasks in the following statuses: awaiting_user_input, error, exited.
Clear enough to supply this argument.
contact_id
Linked contact id. Pass `null` to leave the existing link unchanged. Pass a record id to set or replace the link. To UNLINK, put "contact_id" in clear_fields — passing null does NOT unlink.
Clear enough to supply this argument.
contact_company_id
Linked company id. Pass `null` to leave the existing link unchanged. Pass a record id to set or replace the link. To UNLINK, put "contact_company_id" in clear_fields — passing null does NOT unlink.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
custom_object_id
Linked custom-object id (e.g., a deal). Pass `null` to leave the existing link unchanged. Pass a record id to set or replace the link. To UNLINK, put "custom_object_id" in clear_fields — passing null does NOT unlink.
Clear enough to supply this argument.
planned_steps
User-POV, imperative-voice plan — one discrete step per array element, written as if the user is commanding the AI (e.g., ["Research the company", "Draft a tailored intro email", "Send it"]). No numbering or bullet prefixes. Use this to commit a plan you have already settled on with the user — for example, after the user confirmed the new plan during a needs_review conversation, or when the user asks to edit a task plan in chat. Only valid on non-terminal AI tasks. Pass null to leave the existing plan untouched — do that unless the user is explicitly changing the plan.
Clear enough to supply this argument.
title
New title for the task (the short user-visible headline). ONLY set this when the user explicitly asks to rename the task, or when committing a needs_review conversation where the new linked object meaningfully changes the headline. Pass null in every other case — inventing a title here silently overwrites the real one. Cannot be empty.
Clear enough to supply this argument.
_item_request_id
Optional UUID for safe retries: reusing it returns the original result instead of repeating the action.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "update_task",
"title": "Update task",
"description": "Update an existing Item task. Supports marking a task succeeded or cancelled, adding completion notes, resuming a blocked or errored AI task with new context (resume: true), changing the linked contact, company, or custom object, editing the plan (planned_steps) of a non-terminal AI task, renaming the task, and rescheduling via scheduled_for. Task IDs come from search_tasks.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"task_id"
],
"properties": {
"notes": {
"anyOf": [
{
"type": "object",
"required": [
"text",
"mode"
],
"properties": {
"mode": {
"enum": [
"append",
"replace"
],
"type": "string",
"description": "\"append\" adds this text to the end of the existing Notes — use this when recording what happened on a task, which is the common case. \"replace\" DISCARDS the existing Notes entirely; only use it when the user explicitly asks to overwrite or rewrite them, or when your text already restates everything worth keeping."
},
"text": {
"type": "string",
"description": "The Notes content. With mode \"append\", pass ONLY the new text — the existing Notes are preserved for you, so do not restate them."
}
},
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Persistent freeform Notes for the task, and the place to record its outcome or history (e.g., \"Went great, John loved the idea\"). Included as context in future AI runs. Pass null to leave the Notes unchanged; to erase them, put \"notes\" in clear_fields."
},
"title": {
"type": [
"string",
"null"
],
"description": "New title for the task (the short user-visible headline). ONLY set this when the user explicitly asks to rename the task, or when committing a needs_review conversation where the new linked object meaningfully changes the headline. Pass null in every other case — inventing a title here silently overwrites the real one. Cannot be empty."
},
"resume": {
"type": "boolean",
"default": false,
"description": "Set to true to resume a blocked AI task with `resume_context` as new context, triggering re-execution. Only valid on AI tasks in the following statuses: awaiting_user_input, error, exited."
},
"status": {
"anyOf": [
{
"enum": [
"succeeded",
"cancelled",
"scheduled"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Update task status: \"succeeded\" to mark human tasks as complete, \"cancelled\" to cancel any task, \"scheduled\" to re-open a terminal human task (succeeded or cancelled) so the user can act on it again. You can cancel AI tasks, but otherwise cannot update the status of AI tasks — as their status is automatically managed by the system. Re-opening (status=\"scheduled\") is only supported on human tasks; AI task lifecycles are managed automatically."
},
"task_id": {
"type": "string",
"description": "UUID of the task to update"
},
"contact_id": {
"type": [
"number",
"null"
],
"description": "Linked contact id. Pass `null` to leave the existing link unchanged. Pass a record id to set or replace the link. To UNLINK, put \"contact_id\" in clear_fields — passing null does NOT unlink."
},
"clear_fields": {
"anyOf": [
{
"type": "array",
"items": {
"enum": [
"scheduled_for",
"notes",
"contact_id",
"contact_company_id",
"custom_object_id"
],
"type": "string"
}
},
{
"type": "null"
}
],
"description": "The ONLY way to clear or unlink a field. List the fields to clear, e.g. [\"notes\"] to erase the Notes or [\"contact_id\"] to unlink the contact. Pass null or [] when not clearing anything. Passing null in a field itself does NOT clear it; null means \"leave this field unchanged\"."
},
"planned_steps": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string"
}
},
{
"type": "null"
}
],
"description": "User-POV, imperative-voice plan — one discrete step per array element, written as if the user is commanding the AI (e.g., [\"Research the company\", \"Draft a tailored intro email\", \"Send it\"]). No numbering or bullet prefixes. Use this to commit a plan you have already settled on with the user — for example, after the user confirmed the new plan during a needs_review conversation, or when the user asks to edit a task plan in chat. Only valid on non-terminal AI tasks. Pass null to leave the existing plan untouched — do that unless the user is explicitly changing the plan."
},
"scheduled_for": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"description": "ISO 8601 datetime string to reschedule the task (e.g., \"2026-05-08T15:00:00Z\"). Pass null to leave the schedule unchanged; to clear the date, put \"scheduled_for\" in clear_fields."
},
"resume_context": {
"type": "string",
"description": "New context for the AI to continue from when `resume` is true (e.g., \"Legal approved the contract, here are the details: ...\"). Ignored unless `resume` is true — to record what happened on a task, use `notes`."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Optional UUID for safe retries: reusing it returns the original result instead of repeating the action."
},
"assignee_user_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"description": "Reassign the task to a concrete teammate. Pass their user_id (UUID). Pass null to leave the owner unchanged — do that unless the user explicitly asked to reassign, because reassignment must be its own call and cannot be combined with any other change. User→user only — switching between AI and human assignees is not supported."
},
"custom_object_id": {
"type": [
"number",
"null"
],
"description": "Linked custom-object id (e.g., a deal). Pass `null` to leave the existing link unchanged. Pass a record id to set or replace the link. To UNLINK, put \"custom_object_id\" in clear_fields — passing null does NOT unlink."
},
"contact_company_id": {
"type": [
"number",
"null"
],
"description": "Linked company id. Pass `null` to leave the existing link unchanged. Pass a record id to set or replace the link. To UNLINK, put \"contact_company_id\" in clear_fields — passing null does NOT unlink."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Update task",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description88/100
Delete a task. Always asks for the user's confirmation before deletion. This action cannot be undone — there is no UI to restore deleted tasks via the assistant.
The description explains the capability, when to use it, and what to expect.
Inputs92/100
Input documentation gives an agent enough context to populate the arguments.
task_id
UUID of the task to delete
Clear enough to supply this argument.
_skip_approval
Task runs only: set true to auto-execute without approval when this action is routine and low-risk.
Clear enough to supply this argument.
_item_request_id
Optional UUID for safe retries: reusing it returns the original result instead of repeating the action.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "delete_task",
"title": "Delete task",
"description": "Delete a task. Always asks for the user's confirmation before deletion. This action cannot be undone — there is no UI to restore deleted tasks via the assistant.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"task_id"
],
"properties": {
"task_id": {
"type": "string",
"description": "UUID of the task to delete"
},
"_skip_approval": {
"type": "boolean",
"description": "Task runs only: set true to auto-execute without approval when this action is routine and low-risk."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Optional UUID for safe retries: reusing it returns the original result instead of repeating the action."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Delete task",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description83/100
Send Item contacts to Klaviyo as profiles.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Explain mutations, irreversible effects, or prerequisites that matter before calling this tool.
Inputs95/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
filterField
Optional field name to filter contacts by. Either a built-in scalar column on contacts (source, industry, role, name, email, phone, linkedin_url) or a key inside the contact custom_fields JSONB. When set, must be paired with filterValue.
Clear enough to supply this argument.
filterValue
Value to match for the chosen filterField (string equality). Example: filterField="source", filterValue="amazon" exports only contacts whose source equals "amazon". When omitted, every un-exported contact in the org is in scope.
Clear enough to supply this argument.
klaviyoListId
Optional Klaviyo list ID to add the imported profiles to (passed in the relationships.lists field of the bulk-import payload). Leave empty to import profiles without adding them to a list.
Clear enough to supply this argument.
limit
Maximum number of contacts to export in this job. Defaults to 100 for safety. Klaviyo accepts up to 10,000 profiles per bulk-import job.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "klaviyo_export_contacts",
"title": "Export contacts to Klaviyo",
"description": "Send Item contacts to Klaviyo as profiles.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"_item_request_id"
],
"properties": {
"limit": {
"type": "number",
"default": 100,
"maximum": 10000,
"minimum": 1,
"description": "Maximum number of contacts to export in this job. Defaults to 100 for safety. Klaviyo accepts up to 10,000 profiles per bulk-import job."
},
"filterField": {
"type": "string",
"description": "Optional field name to filter contacts by. Either a built-in scalar column on contacts (source, industry, role, name, email, phone, linkedin_url) or a key inside the contact custom_fields JSONB. When set, must be paired with filterValue."
},
"filterValue": {
"type": "string",
"description": "Value to match for the chosen filterField (string equality). Example: filterField=\"source\", filterValue=\"amazon\" exports only contacts whose source equals \"amazon\". When omitted, every un-exported contact in the org is in scope."
},
"klaviyoListId": {
"type": "string",
"description": "Optional Klaviyo list ID to add the imported profiles to (passed in the relationships.lists field of the bulk-import payload). Leave empty to import profiles without adding them to a list."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Export contacts to Klaviyo",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description65/100
Search Linear documents by title and content.
Describe the concrete operation and its scope instead of restating the tool name.
Inputs67/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
query
Text search query for documents
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
project_id
Filter by project ID. When combined with a text query, results are narrowed to this project after the full-text search, so fewer results than the limit may come back.
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
limit
Number of results to return (1-50)
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "linear_search_documents",
"title": "Search Linear documents",
"description": "Search Linear documents by title and content.",
"inputSchema": {
"type": "object",
"required": [],
"properties": {
"limit": {
"type": "number",
"default": 10,
"maximum": 50,
"minimum": 1,
"description": "Number of results to return (1-50)"
},
"query": {
"type": "string",
"description": "Text search query for documents"
},
"project_id": {
"type": "string",
"description": "Filter by project ID. When combined with a text query, results are narrowed to this project after the full-text search, so fewer results than the limit may come back."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Search Linear documents",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}
}
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "linear_get_sla_status",
"title": "Get Linear SLA status",
"description": "Read which of a team’s Linear issues have breached or are at risk of breaching their SLA.",
"inputSchema": {
"type": "object",
"required": [],
"properties": {
"issue_id": {
"type": "string",
"description": "Get SLA status for a specific issue"
},
"team_key": {
"type": "string",
"description": "Get SLA status for all issues in a team"
}
},
"additionalProperties": false
},
"annotations": {
"title": "Get Linear SLA status",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description90/100
Create an issue in Linear with team, project, labels, priority and assignee.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Describe the returned information so the agent knows whether it will answer the request.
Inputs86/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
title
Issue title
Clear enough to supply this argument.
description
Issue description (markdown supported)
Clear enough to supply this argument.
team_key
Team key (e.g., ENG). If not provided, the first team in the workspace will be used.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "linear_create_issue",
"title": "Create Linear issue",
"description": "Create an issue in Linear with team, project, labels, priority and assignee.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"required": [
"title",
"_item_request_id"
],
"properties": {
"title": {
"type": "string",
"description": "Issue title"
},
"priority": {
"type": "number",
"maximum": 4,
"minimum": 0,
"description": "Priority (0=No priority, 1=Urgent, 2=High, 3=Medium, 4=Low)"
},
"team_key": {
"type": "string",
"description": "Team key (e.g., ENG). If not provided, the first team in the workspace will be used."
},
"state_name": {
"type": "string",
"description": "Workflow state name (e.g., Backlog, Todo, In Progress). Defaults to the team default state."
},
"description": {
"type": "string",
"description": "Issue description (markdown supported)"
},
"label_names": {
"type": "array",
"description": "Label names to apply"
},
"project_name": {
"type": "string",
"description": "Project name to add the issue to"
},
"assignee_email": {
"type": "string",
"description": "Assignee email address"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Create Linear issue",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description90/100
Change a Linear issue’s status, priority, assignee or labels.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs72/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
issue_id
The issue ID or identifier (e.g., ENG-123)
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
status
New status name (e.g., In Progress, Done)
Clear enough to supply this argument.
priority
New priority (0=No priority, 1=Urgent, 2=High, 3=Medium, 4=Low)
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
assignee_email
New assignee email
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
label_names
Label names to set
Explain the meaning of this value, not just its name.
title
New issue title
Clear enough to supply this argument.
description
New issue description
Explain the meaning of this value, not just its name.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "linear_update_issue",
"title": "Update Linear issue",
"description": "Change a Linear issue’s status, priority, assignee or labels.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"required": [
"issue_id",
"_item_request_id"
],
"properties": {
"title": {
"type": "string",
"description": "New issue title"
},
"status": {
"type": "string",
"description": "New status name (e.g., In Progress, Done)"
},
"issue_id": {
"type": "string",
"description": "The issue ID or identifier (e.g., ENG-123)"
},
"priority": {
"type": "number",
"maximum": 4,
"minimum": 0,
"description": "New priority (0=No priority, 1=Urgent, 2=High, 3=Medium, 4=Low)"
},
"description": {
"type": "string",
"description": "New issue description"
},
"label_names": {
"type": "array",
"description": "Label names to set"
},
"assignee_email": {
"type": "string",
"description": "New assignee email"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Update Linear issue",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description90/100
Post a comment on a Linear issue.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Describe the returned information so the agent knows whether it will answer the request.
Inputs75/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
issue_id
The issue ID or identifier
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
body
Comment body (markdown supported)
Clear enough to supply this argument.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
{
"title": "Comment on Linear issue",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "linear_create_comment",
"title": "Comment on Linear issue",
"description": "Post a comment on a Linear issue.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"required": [
"issue_id",
"body",
"_item_request_id"
],
"properties": {
"body": {
"type": "string",
"description": "Comment body (markdown supported)"
},
"issue_id": {
"type": "string",
"description": "The issue ID or identifier"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Comment on Linear issue",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description87/100
Create a Linear customer request linked to an issue and customer.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Describe the returned information so the agent knows whether it will answer the request.
Inputs75/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
issue_id
The issue ID to link the request to
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
customer_id
The Linear Customer ID
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
body
Description of the customer request
Clear enough to supply this argument.
priority
Priority of the request (0=None, 1=Urgent, 2=High, 3=Medium, 4=Low)
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "linear_create_customer_request",
"title": "Create Linear customer request",
"description": "Create a Linear customer request linked to an issue and customer.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"required": [
"issue_id",
"customer_id",
"_item_request_id"
],
"properties": {
"body": {
"type": "string",
"description": "Description of the customer request"
},
"issue_id": {
"type": "string",
"description": "The issue ID to link the request to"
},
"priority": {
"type": "number",
"maximum": 4,
"minimum": 0,
"description": "Priority of the request (0=None, 1=Urgent, 2=High, 3=Medium, 4=Low)"
},
"customer_id": {
"type": "string",
"description": "The Linear Customer ID"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Create Linear customer request",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description91/100
Create a Linear customer or update its domains, external IDs, revenue, tier or size.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Describe the returned information so the agent knows whether it will answer the request.
Inputs68/100
Explain the meaning of this value, not just its name.
name
Customer name
Clear enough to supply this argument.
domains
Customer domains (e.g., ["acme.com"])
Explain the meaning of this value, not just its name.
external_ids
External IDs for mapping
Explain the meaning of this value, not just its name.
revenue
Customer revenue (ARR)
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
tier
Customer tier (e.g., enterprise, growth, starter)
Explain the meaning of this value, not just its name.
size
Company size (number of employees)
Clear enough to supply this argument.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
{
"title": "Create or update Linear customer",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
Output schema0/100
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "linear_create_or_update_customer",
"title": "Create or update Linear customer",
"description": "Create a Linear customer or update its domains, external IDs, revenue, tier or size.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"required": [
"name",
"_item_request_id"
],
"properties": {
"name": {
"type": "string",
"description": "Customer name"
},
"size": {
"type": "number",
"description": "Company size (number of employees)"
},
"tier": {
"type": "string",
"description": "Customer tier (e.g., enterprise, growth, starter)"
},
"domains": {
"type": "array",
"description": "Customer domains (e.g., [\"acme.com\"])"
},
"revenue": {
"type": "number",
"description": "Customer revenue (ARR)"
},
"external_ids": {
"type": "array",
"description": "External IDs for mapping"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Create or update Linear customer",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description89/100
Post a status update on a Linear project.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs63/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
project_id
The project ID
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
body
Update body (markdown supported)
Explain the meaning of this value, not just its name.
health
Project health status (onTrack, atRisk, offTrack)
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "linear_create_project_update",
"title": "Post Linear project update",
"description": "Post a status update on a Linear project.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"required": [
"project_id",
"body",
"_item_request_id"
],
"properties": {
"body": {
"type": "string",
"description": "Update body (markdown supported)"
},
"health": {
"enum": [
"onTrack",
"atRisk",
"offTrack"
],
"type": "string",
"description": "Project health status (onTrack, atRisk, offTrack)"
},
"project_id": {
"type": "string",
"description": "The project ID"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Post Linear project update",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description90/100
Create a contact in Loops.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Describe the returned information so the agent knows whether it will answer the request.
Inputs84/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
email
Contact email address (required)
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
firstName
Contact first name
Clear enough to supply this argument.
lastName
Contact last name
Clear enough to supply this argument.
source
Source identifier (defaults to 'API')
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
subscribed
Whether the contact is subscribed to emails (default true)
Clear enough to supply this argument.
userGroup
Segmentation group for campaigns
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
mailingLists
Object mapping mailing list IDs to boolean subscription status, e.g. {"list_id": true}
Clear enough to supply this argument.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "loops_create_contact",
"title": "Create Loops contact",
"description": "Create a contact in Loops.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"email",
"_item_request_id"
],
"properties": {
"email": {
"type": "string",
"description": "Contact email address (required)"
},
"source": {
"type": "string",
"description": "Source identifier (defaults to 'API')"
},
"lastName": {
"type": "string",
"description": "Contact last name"
},
"firstName": {
"type": "string",
"description": "Contact first name"
},
"userGroup": {
"type": "string",
"description": "Segmentation group for campaigns"
},
"subscribed": {
"type": "boolean",
"description": "Whether the contact is subscribed to emails (default true)"
},
"mailingLists": {
"type": "object",
"description": "Object mapping mailing list IDs to boolean subscription status, e.g. {\"list_id\": true}",
"additionalProperties": {}
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Create Loops contact",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description92/100
Update an existing contact in Loops.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs84/100
Explain what happens when this optional value is omitted.
email
Email address of the contact to update (required identifier)
Clear enough to supply this argument.
firstName
Updated first name
Clear enough to supply this argument.
lastName
Updated last name
Clear enough to supply this argument.
subscribed
Updated subscription status
Explain what happens when this optional value is omitted.
userGroup
Updated segmentation group
Explain the meaning of this value, not just its name.
mailingLists
Object mapping mailing list IDs to boolean subscription status
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
customProperties
Custom contact properties to set as key-value pairs. Values can be string, number, boolean, or date. Send null to clear a property.
Clear enough to supply this argument.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "loops_update_contact",
"title": "Update Loops contact",
"description": "Update an existing contact in Loops.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"email",
"_item_request_id"
],
"properties": {
"email": {
"type": "string",
"description": "Email address of the contact to update (required identifier)"
},
"lastName": {
"type": "string",
"description": "Updated last name"
},
"firstName": {
"type": "string",
"description": "Updated first name"
},
"userGroup": {
"type": "string",
"description": "Updated segmentation group"
},
"subscribed": {
"type": "boolean",
"description": "Updated subscription status"
},
"mailingLists": {
"type": "object",
"description": "Object mapping mailing list IDs to boolean subscription status",
"additionalProperties": {}
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
},
"customProperties": {
"type": "object",
"description": "Custom contact properties to set as key-value pairs. Values can be string, number, boolean, or date. Send null to clear a property.",
"additionalProperties": {}
}
},
"additionalProperties": false
},
"annotations": {
"title": "Update Loops contact",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description88/100
Send an email to one recipient using a Loops transactional template.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Describe the returned information so the agent knows whether it will answer the request.
Inputs83/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
transactionalId
ID of the transactional email template to send
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
email
Recipient email address
Clear enough to supply this argument.
dataVariables
Key-value pairs for template variable substitution
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
addToAudience
Whether to add the recipient as a contact if they don't exist (default false)
Clear enough to supply this argument.
templateName
Human-readable template name (for display only, not sent to Loops API). Always include this when you know the template name.
Clear enough to supply this argument.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "loops_send_transactional_email",
"title": "Send Loops transactional email",
"description": "Send an email to one recipient using a Loops transactional template.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"transactionalId",
"email",
"_item_request_id"
],
"properties": {
"email": {
"type": "string",
"description": "Recipient email address"
},
"templateName": {
"type": "string",
"description": "Human-readable template name (for display only, not sent to Loops API). Always include this when you know the template name."
},
"addToAudience": {
"type": "boolean",
"description": "Whether to add the recipient as a contact if they don't exist (default false)"
},
"dataVariables": {
"type": "object",
"description": "Key-value pairs for template variable substitution",
"additionalProperties": {}
},
"transactionalId": {
"type": "string",
"description": "ID of the transactional email template to send"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Send Loops transactional email",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description87/100
Send an event to Loops, which can start a Loops email sequence.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Describe the returned information so the agent knows whether it will answer the request.
Inputs88/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
email
Email address of the contact to send the event for
Clear enough to supply this argument.
eventName
Name of the event (must match a Loop trigger)
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
eventProperties
Optional key-value properties to pass with the event
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "loops_send_event",
"title": "Send Loops event",
"description": "Send an event to Loops, which can start a Loops email sequence.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"email",
"eventName",
"_item_request_id"
],
"properties": {
"email": {
"type": "string",
"description": "Email address of the contact to send the event for"
},
"eventName": {
"type": "string",
"description": "Name of the event (must match a Loop trigger)"
},
"eventProperties": {
"type": "object",
"description": "Optional key-value properties to pass with the event",
"additionalProperties": {}
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Send Loops event",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description88/100
Add a contact to a Loops mailing list.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Describe the returned information so the agent knows whether it will answer the request.
Inputs75/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
email
Email address of the contact to add to the mailing list
Clear enough to supply this argument.
mailingListId
ID of the mailing list to add the contact to
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "loops_add_to_mailing_list",
"title": "Add to Loops mailing list",
"description": "Add a contact to a Loops mailing list.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"email",
"mailingListId",
"_item_request_id"
],
"properties": {
"email": {
"type": "string",
"description": "Email address of the contact to add to the mailing list"
},
"mailingListId": {
"type": "string",
"description": "ID of the mailing list to add the contact to"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Add to Loops mailing list",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
Permanently delete a contact from Loops.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs83/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
email
Email address of the contact to delete from Loops (required)
Clear enough to supply this argument.
userId
Loops user ID of the contact (optional, can be used instead of or alongside email)
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "loops_delete_contact",
"title": "Delete Loops contact",
"description": "Permanently delete a contact from Loops.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"email",
"_item_request_id"
],
"properties": {
"email": {
"type": "string",
"description": "Email address of the contact to delete from Loops (required)"
},
"userId": {
"type": "string",
"description": "Loops user ID of the contact (optional, can be used instead of or alongside email)"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Delete Loops contact",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description83/100
Register or refresh Item’s webhook on every Mailchimp audience so audience activity syncs to Item.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Explain mutations, irreversible effects, or prerequisites that matter before calling this tool.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "mailchimp_sync_webhooks",
"title": "Set up Mailchimp webhooks",
"description": "Register or refresh Item’s webhook on every Mailchimp audience so audience activity syncs to Item.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"_item_request_id"
],
"properties": {
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Set up Mailchimp webhooks",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "mailchimp_list_audience_members",
"title": "List Mailchimp audience members",
"description": "List the members of a Mailchimp audience.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"audienceId"
],
"properties": {
"count": {
"type": "number",
"description": "How many members to return (default 100, max 1000)"
},
"offset": {
"type": "number",
"description": "Number of members to skip, for paging through a large audience (default 0)"
},
"status": {
"type": "string",
"description": "Optional subscription-status filter: one of 'subscribed', 'unsubscribed', 'cleaned', 'pending', or 'transactional'. Omit to return all statuses."
},
"audienceId": {
"type": "string",
"description": "ID of the Mailchimp audience (list) to list members from"
}
},
"additionalProperties": false
},
"annotations": {
"title": "List Mailchimp audience members",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description91/100
Add a contact to a Mailchimp audience.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs91/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
audienceId
ID of the Mailchimp audience (list) to add the contact to
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
email
Contact email address (required)
Clear enough to supply this argument.
firstName
Contact first name
Clear enough to supply this argument.
lastName
Contact last name
Clear enough to supply this argument.
status
Subscription status: 'subscribed', 'pending' (double opt-in), 'unsubscribed', or 'cleaned'. Defaults to 'subscribed'.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
mergeFields
Additional Mailchimp merge fields keyed by their tag (e.g. {"PHONE": "..."}). FNAME/LNAME are set from firstName/lastName. Call list_audience_merge_fields first to get the audience's field tags and map the item contact's fields onto them.
Clear enough to supply this argument.
tags
Optional list of tag names to apply to the contact
Clear enough to supply this argument.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "mailchimp_create_contact",
"title": "Add Mailchimp contact",
"description": "Add a contact to a Mailchimp audience.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"audienceId",
"email",
"_item_request_id"
],
"properties": {
"tags": {
"type": "array",
"description": "Optional list of tag names to apply to the contact"
},
"email": {
"type": "string",
"description": "Contact email address (required)"
},
"status": {
"type": "string",
"description": "Subscription status: 'subscribed', 'pending' (double opt-in), 'unsubscribed', or 'cleaned'. Defaults to 'subscribed'."
},
"lastName": {
"type": "string",
"description": "Contact last name"
},
"firstName": {
"type": "string",
"description": "Contact first name"
},
"audienceId": {
"type": "string",
"description": "ID of the Mailchimp audience (list) to add the contact to"
},
"mergeFields": {
"type": "object",
"description": "Additional Mailchimp merge fields keyed by their tag (e.g. {\"PHONE\": \"...\"}). FNAME/LNAME are set from firstName/lastName. Call list_audience_merge_fields first to get the audience's field tags and map the item contact's fields onto them.",
"additionalProperties": {}
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Add Mailchimp contact",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description90/100
Update a contact in a Mailchimp audience.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs89/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
audienceId
ID of the Mailchimp audience (list) the contact belongs to
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
email
Email address of the contact to update (required identifier)
Clear enough to supply this argument.
firstName
Updated first name
Clear enough to supply this argument.
lastName
Updated last name
Clear enough to supply this argument.
status
Updated subscription status: 'subscribed', 'unsubscribed', 'pending', or 'cleaned'
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
mergeFields
Merge fields to update, keyed by their tag. Call list_audience_merge_fields first to get the audience's field tags and map the item contact's fields onto them.
Clear enough to supply this argument.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "mailchimp_update_contact",
"title": "Update Mailchimp contact",
"description": "Update a contact in a Mailchimp audience.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"audienceId",
"email",
"_item_request_id"
],
"properties": {
"email": {
"type": "string",
"description": "Email address of the contact to update (required identifier)"
},
"status": {
"type": "string",
"description": "Updated subscription status: 'subscribed', 'unsubscribed', 'pending', or 'cleaned'"
},
"lastName": {
"type": "string",
"description": "Updated last name"
},
"firstName": {
"type": "string",
"description": "Updated first name"
},
"audienceId": {
"type": "string",
"description": "ID of the Mailchimp audience (list) the contact belongs to"
},
"mergeFields": {
"type": "object",
"description": "Merge fields to update, keyed by their tag. Call list_audience_merge_fields first to get the audience's field tags and map the item contact's fields onto them.",
"additionalProperties": {}
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Update Mailchimp contact",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
Align the title with the capability actually described by this tool.
Description88/100
Add or remove tags on a Mailchimp contact.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs85/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
audienceId
ID of the Mailchimp audience (list) the contact belongs to
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
email
Email address of the contact
Clear enough to supply this argument.
addTags
List of tag names to add (activate) on the contact
Clear enough to supply this argument.
removeTags
List of tag names to remove (deactivate) from the contact
Clear enough to supply this argument.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "mailchimp_add_tags",
"title": "Update Mailchimp tags",
"description": "Add or remove tags on a Mailchimp contact.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"audienceId",
"email",
"_item_request_id"
],
"properties": {
"email": {
"type": "string",
"description": "Email address of the contact"
},
"addTags": {
"type": "array",
"description": "List of tag names to add (activate) on the contact"
},
"audienceId": {
"type": "string",
"description": "ID of the Mailchimp audience (list) the contact belongs to"
},
"removeTags": {
"type": "array",
"description": "List of tag names to remove (deactivate) from the contact"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Update Mailchimp tags",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description90/100
Start a Mailchimp automation flow for a contact, which can send emails.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Explain mutations, irreversible effects, or prerequisites that matter before calling this tool.
Inputs92/100
Input documentation gives an agent enough context to populate the arguments.
email
Email address of the contact to add to the automation flow
Clear enough to supply this argument.
journeyId
ID of the Mailchimp automation flow / Customer Journey (from its API trigger settings)
Clear enough to supply this argument.
stepId
ID of the automation-flow step to trigger (from its API trigger settings)
Clear enough to supply this argument.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "mailchimp_trigger_journey",
"title": "Trigger Mailchimp automation",
"description": "Start a Mailchimp automation flow for a contact, which can send emails.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"email",
"journeyId",
"stepId",
"_item_request_id"
],
"properties": {
"email": {
"type": "string",
"description": "Email address of the contact to add to the automation flow"
},
"stepId": {
"type": "number",
"description": "ID of the automation-flow step to trigger (from its API trigger settings)"
},
"journeyId": {
"type": "number",
"description": "ID of the Mailchimp automation flow / Customer Journey (from its API trigger settings)"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Trigger Mailchimp automation",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description87/100
Archive a contact in a Mailchimp audience.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Describe the returned information so the agent knows whether it will answer the request.
Inputs83/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
audienceId
ID of the Mailchimp audience (list) to archive the contact from
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
email
Email address of the contact to archive
Clear enough to supply this argument.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "mailchimp_archive_contact",
"title": "Archive Mailchimp contact",
"description": "Archive a contact in a Mailchimp audience.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"audienceId",
"email",
"_item_request_id"
],
"properties": {
"email": {
"type": "string",
"description": "Email address of the contact to archive"
},
"audienceId": {
"type": "string",
"description": "ID of the Mailchimp audience (list) to archive the contact from"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Archive Mailchimp contact",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description84/100
Create or update a read-only Item field whose values come from a saved Metabase query. Writes Item configuration only. Workspace admins only.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Explain mutations, irreversible effects, or prerequisites that matter before calling this tool.
Inputs8/100
2 of 19 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
fieldId
Not provided
Missing description. Explain what this value means and how to supply it.
config › name
Not provided
Missing description. Explain what this value means and how to supply it.
config › configVersion
Required for edits: use the config_version loaded from Item metabase_field_settings; never guess.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
config › fieldType
Not provided
Missing description. Explain what this value means and how to supply it.
config › targetObjectTypeId
Not provided
Missing description. Explain what this value means and how to supply it.
config › recipe › anyOf › 0 › kind
Not provided
Missing description. Explain what this value means and how to supply it.
config › recipe › anyOf › 0 › id
Not provided
Missing description. Explain what this value means and how to supply it.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description71/100
Read a Slack conversation’s topic, purpose and membership status.
Describe the returned information so the agent knows whether it will answer the request.
Inputs63/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
channel
Conversation ID
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
actor
Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_get_conversation_info",
"title": "Get Slack conversation",
"description": "Read a Slack conversation’s topic, purpose and membership status.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"channel"
],
"properties": {
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it."
},
"channel": {
"type": "string",
"description": "Conversation ID"
}
},
"additionalProperties": false
},
"annotations": {
"title": "Get Slack conversation",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description85/100
Join a public Slack channel as the selected Slack account.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Describe the returned information so the agent knows whether it will answer the request.
Inputs83/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
channel
Public channel ID
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
actor
Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it.
Clear enough to supply this argument.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_join_conversation",
"title": "Join Slack channel",
"description": "Join a public Slack channel as the selected Slack account.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"channel",
"_item_request_id"
],
"properties": {
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it."
},
"channel": {
"type": "string",
"description": "Public channel ID"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Join Slack channel",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description89/100
Leave a Slack channel as the selected Slack account.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Describe the returned information so the agent knows whether it will answer the request.
Inputs71/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
channel
Channel ID
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
actor
Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_leave_conversation",
"title": "Leave Slack channel",
"description": "Leave a Slack channel as the selected Slack account.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"channel",
"_item_request_id"
],
"properties": {
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it."
},
"channel": {
"type": "string",
"description": "Channel ID"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Leave Slack channel",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description83/100
Open or resume a direct or group message with Slack users as the selected Slack account.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Describe the returned information so the agent knows whether it will answer the request.
Inputs83/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
users
One to eight Slack user IDs
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
actor
Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_open_conversation",
"title": "Open Slack DM",
"description": "Open or resume a direct or group message with Slack users as the selected Slack account.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"users",
"_item_request_id"
],
"properties": {
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it."
},
"users": {
"type": "array",
"description": "One to eight Slack user IDs"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Open Slack DM",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description71/100
Read a Slack user’s profile by ID.
Describe the returned information so the agent knows whether it will answer the request.
Inputs63/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
user
Slack user ID
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
actor
Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_get_user_profile",
"title": "Get Slack user profile",
"description": "Read a Slack user’s profile by ID.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"user"
],
"properties": {
"user": {
"type": "string",
"description": "Slack user ID"
},
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Get Slack user profile",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description72/100
List the Slack workspace’s user groups and their handles.
Describe the returned information so the agent knows whether it will answer the request.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
actor
Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_list_user_groups",
"title": "List Slack user groups",
"description": "List the Slack workspace’s user groups and their handles.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it."
}
},
"additionalProperties": false
},
"annotations": {
"title": "List Slack user groups",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description61/100
Identify the Slack workspace connected to this Item workspace.
Describe the returned information so the agent knows whether it will answer the request.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
actor
Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_list_workspaces",
"title": "List Slack workspaces",
"description": "Identify the Slack workspace connected to this Item workspace.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it."
}
},
"additionalProperties": false
},
"annotations": {
"title": "List Slack workspaces",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description70/100
Search the Slack workspace’s custom emoji by name.
Describe the returned information so the agent knows whether it will answer the request.
Inputs88/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
query
Emoji name substring
Clear enough to supply this argument.
actor
Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_search_emojis",
"title": "Search Slack emoji",
"description": "Search the Slack workspace’s custom emoji by name.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"query"
],
"properties": {
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it."
},
"query": {
"type": "string",
"description": "Emoji name substring"
}
},
"additionalProperties": false
},
"annotations": {
"title": "Search Slack emoji",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description64/100
Read the reactions on a Slack message.
Describe the returned information so the agent knows whether it will answer the request.
Inputs58/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
channel
Channel ID
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
timestamp
Message timestamp
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
actor
Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_get_reactions",
"title": "Get Slack reactions",
"description": "Read the reactions on a Slack message.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"channel",
"timestamp"
],
"properties": {
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it."
},
"channel": {
"type": "string",
"description": "Channel ID"
},
"timestamp": {
"type": "string",
"description": "Message timestamp"
}
},
"additionalProperties": false
},
"annotations": {
"title": "Get Slack reactions",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description88/100
Add an emoji reaction to a Slack message as the selected Slack account.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
channel
Channel ID
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
timestamp
Message timestamp
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
name
Emoji name without colons
Clear enough to supply this argument.
actor
Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_add_reaction",
"title": "Add Slack reaction",
"description": "Add an emoji reaction to a Slack message as the selected Slack account.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"channel",
"timestamp",
"name",
"_item_request_id"
],
"properties": {
"name": {
"type": "string",
"description": "Emoji name without colons"
},
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it."
},
"channel": {
"type": "string",
"description": "Channel ID"
},
"timestamp": {
"type": "string",
"description": "Message timestamp"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Add Slack reaction",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description87/100
Edit a message sent by the selected Slack account.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Describe the returned information so the agent knows whether it will answer the request.
Inputs75/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
channel
Channel ID
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
ts
Message timestamp
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
text
Replacement message text
Clear enough to supply this argument.
actor
Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_edit_message",
"title": "Edit Slack message",
"description": "Edit a message sent by the selected Slack account.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"channel",
"ts",
"text",
"_item_request_id"
],
"properties": {
"ts": {
"type": "string",
"description": "Message timestamp"
},
"text": {
"type": "string",
"description": "Replacement message text"
},
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it."
},
"channel": {
"type": "string",
"description": "Channel ID"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Edit Slack message",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description90/100
Permanently delete a message sent by the selected Slack account.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs63/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
channel
Channel ID
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
ts
Message timestamp
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
actor
Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_delete_message",
"title": "Delete Slack message",
"description": "Permanently delete a message sent by the selected Slack account.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"channel",
"ts",
"_item_request_id"
],
"properties": {
"ts": {
"type": "string",
"description": "Message timestamp"
},
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it."
},
"channel": {
"type": "string",
"description": "Channel ID"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Delete Slack message",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description89/100
Schedule a Slack message from the selected Slack account for a future time.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Describe the returned information so the agent knows whether it will answer the request.
Inputs70/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
channel
Channel or user ID
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
text
Message text
Explain the meaning of this value, not just its name.
post_at
Unix timestamp in seconds for a future send time
Clear enough to supply this argument.
actor
Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_schedule_message",
"title": "Schedule Slack message",
"description": "Schedule a Slack message from the selected Slack account for a future time.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"channel",
"text",
"post_at",
"_item_request_id"
],
"properties": {
"text": {
"type": "string",
"description": "Message text"
},
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it."
},
"channel": {
"type": "string",
"description": "Channel or user ID"
},
"post_at": {
"type": "number",
"description": "Unix timestamp in seconds for a future send time"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Schedule Slack message",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description70/100
Get the permanent link to a Slack message.
Describe the returned information so the agent knows whether it will answer the request.
Inputs58/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
channel
Channel ID
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
message_ts
Message timestamp
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
actor
Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_get_message_permalink",
"title": "Get Slack message link",
"description": "Get the permanent link to a Slack message.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"channel",
"message_ts"
],
"properties": {
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it."
},
"channel": {
"type": "string",
"description": "Channel ID"
},
"message_ts": {
"type": "string",
"description": "Message timestamp"
}
},
"additionalProperties": false
},
"annotations": {
"title": "Get Slack message link",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description70/100
Read a Slack file’s metadata and links.
Describe the returned information so the agent knows whether it will answer the request.
Inputs63/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
file
Slack file ID
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
actor
Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_get_file_info",
"title": "Get Slack file details",
"description": "Read a Slack file’s metadata and links.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"file"
],
"properties": {
"file": {
"type": "string",
"description": "Slack file ID"
},
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Get Slack file details",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description67/100
List Slack files visible to the selected Slack account.
Describe the returned information so the agent knows whether it will answer the request.
Inputs69/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
channel
Limit to a channel ID
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
count
Maximum files to return
Explain what happens when this optional value is omitted.
page
Page number
Explain the meaning of this value, not just its name.
actor
Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_list_files",
"title": "List Slack files",
"description": "List Slack files visible to the selected Slack account.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {
"page": {
"type": "number",
"description": "Page number"
},
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it."
},
"count": {
"type": "number",
"description": "Maximum files to return"
},
"channel": {
"type": "string",
"description": "Limit to a channel ID"
}
},
"additionalProperties": false
},
"annotations": {
"title": "List Slack files",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description70/100
List Slack canvases visible to the selected Slack account.
Describe the returned information so the agent knows whether it will answer the request.
Inputs63/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
channel
Limit to a channel ID
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
count
Maximum canvases to return
Explain what happens when this optional value is omitted.
page
Page number
Explain the meaning of this value, not just its name.
actor
Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_list_canvases",
"title": "List Slack canvases",
"description": "List Slack canvases visible to the selected Slack account.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {
"page": {
"type": "number",
"description": "Page number"
},
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it."
},
"count": {
"type": "number",
"description": "Maximum canvases to return"
},
"channel": {
"type": "string",
"description": "Limit to a channel ID"
}
},
"additionalProperties": false
},
"annotations": {
"title": "List Slack canvases",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description68/100
Read the text content of a Slack file.
Describe the returned information so the agent knows whether it will answer the request.
Inputs63/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
file
Slack file or Canvas ID
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
actor
Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_read_file",
"title": "Read Slack file",
"description": "Read the text content of a Slack file.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"file"
],
"properties": {
"file": {
"type": "string",
"description": "Slack file or Canvas ID"
},
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Read Slack file",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description69/100
Read the text of a Slack canvas.
Describe the returned information so the agent knows whether it will answer the request.
Inputs63/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
file
Slack Canvas file ID
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
actor
Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_read_canvas",
"title": "Read Slack canvas",
"description": "Read the text of a Slack canvas.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"file"
],
"properties": {
"file": {
"type": "string",
"description": "Slack Canvas file ID"
},
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Read Slack canvas",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description86/100
Upload a text file or code snippet to a Slack channel as the selected Slack account.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Describe the returned information so the agent knows whether it will answer the request.
Inputs88/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
channel_id
Destination channel ID
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
filename
File name with extension
Clear enough to supply this argument.
content
UTF-8 file content, at most 100 KB
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
title
Optional file title
Clear enough to supply this argument.
initial_comment
Optional message sent with the file
Clear enough to supply this argument.
actor
Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it.
Clear enough to supply this argument.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_upload_text_file",
"title": "Upload Slack text file",
"description": "Upload a text file or code snippet to a Slack channel as the selected Slack account.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"channel_id",
"filename",
"content",
"_item_request_id"
],
"properties": {
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it."
},
"title": {
"type": "string",
"description": "Optional file title"
},
"content": {
"type": "string",
"description": "UTF-8 file content, at most 100 KB"
},
"filename": {
"type": "string",
"description": "File name with extension"
},
"channel_id": {
"type": "string",
"description": "Destination channel ID"
},
"initial_comment": {
"type": "string",
"description": "Optional message sent with the file"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Upload Slack text file",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description91/100
Set a Slack channel’s topic.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs69/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
channel
Channel ID
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
topic
New topic
Explain the meaning of this value, not just its name.
actor
Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_set_channel_topic",
"title": "Set Slack channel topic",
"description": "Set a Slack channel’s topic.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"channel",
"topic",
"_item_request_id"
],
"properties": {
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it."
},
"topic": {
"type": "string",
"description": "New topic"
},
"channel": {
"type": "string",
"description": "Channel ID"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Set Slack channel topic",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description90/100
Set a Slack channel’s purpose.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
channel
Channel ID
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
purpose
New purpose
Explain the meaning of this value, not just its name.
actor
Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it.
Clear enough to supply this argument.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_set_channel_purpose",
"title": "Set Slack channel purpose",
"description": "Set a Slack channel’s purpose.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"channel",
"purpose",
"_item_request_id"
],
"properties": {
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it."
},
"channel": {
"type": "string",
"description": "Channel ID"
},
"purpose": {
"type": "string",
"description": "New purpose"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Set Slack channel purpose",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description86/100
Archive a Slack channel.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Describe the returned information so the agent knows whether it will answer the request.
Inputs75/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
channel
Channel ID
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
actor
Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it.
Clear enough to supply this argument.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_archive_channel",
"title": "Archive Slack channel",
"description": "Archive a Slack channel.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"channel",
"_item_request_id"
],
"properties": {
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it."
},
"channel": {
"type": "string",
"description": "Channel ID"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Archive Slack channel",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description88/100
Restore an archived Slack channel.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Explain mutations, irreversible effects, or prerequisites that matter before calling this tool.
Inputs75/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
channel
Channel ID
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
actor
Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_unarchive_channel",
"title": "Unarchive Slack channel",
"description": "Restore an archived Slack channel.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"channel",
"_item_request_id"
],
"properties": {
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it."
},
"channel": {
"type": "string",
"description": "Channel ID"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Unarchive Slack channel",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description69/100
List the pinned items in a Slack channel.
Describe the returned information so the agent knows whether it will answer the request.
Inputs63/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
channel
Channel ID
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
actor
Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_list_pins",
"title": "List Slack pins",
"description": "List the pinned items in a Slack channel.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"channel"
],
"properties": {
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it."
},
"channel": {
"type": "string",
"description": "Channel ID"
}
},
"additionalProperties": false
},
"annotations": {
"title": "List Slack pins",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description85/100
Pin a message to its Slack channel.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Describe the returned information so the agent knows whether it will answer the request.
Inputs69/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
channel
Channel ID
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
timestamp
Message timestamp
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
actor
Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_pin_message",
"title": "Pin Slack message",
"description": "Pin a message to its Slack channel.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"channel",
"timestamp",
"_item_request_id"
],
"properties": {
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it."
},
"channel": {
"type": "string",
"description": "Channel ID"
},
"timestamp": {
"type": "string",
"description": "Message timestamp"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Pin Slack message",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description93/100
Remove a pinned message from its Slack channel.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Describe the returned information so the agent knows whether it will answer the request.
Inputs63/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
channel
Channel ID
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
timestamp
Message timestamp
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
actor
Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_unpin_message",
"title": "Unpin Slack message",
"description": "Remove a pinned message from its Slack channel.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"channel",
"timestamp",
"_item_request_id"
],
"properties": {
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it."
},
"channel": {
"type": "string",
"description": "Channel ID"
},
"timestamp": {
"type": "string",
"description": "Message timestamp"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Unpin Slack message",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description85/100
Create a Slack canvas from Markdown.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Describe the returned information so the agent knows whether it will answer the request.
Inputs65/100
Explain the meaning of this value, not just its name.
title
Canvas title
Explain the meaning of this value, not just its name.
markdown
Canvas Markdown
Explain the meaning of this value, not just its name.
channel_id
Optional channel to add the canvas to
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
actor
Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_create_canvas",
"title": "Create Slack canvas",
"description": "Create a Slack canvas from Markdown.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"title",
"markdown",
"_item_request_id"
],
"properties": {
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it."
},
"title": {
"type": "string",
"description": "Canvas title"
},
"markdown": {
"type": "string",
"description": "Canvas Markdown"
},
"channel_id": {
"type": "string",
"description": "Optional channel to add the canvas to"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Create Slack canvas",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description87/100
Replace one section of a Slack canvas with Markdown.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs65/100
Explain the meaning of this value, not just its name.
canvas_id
Canvas ID
Explain the meaning of this value, not just its name.
section_id
Section ID from Slack
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
markdown
Replacement Markdown
Explain the meaning of this value, not just its name.
actor
Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_edit_canvas",
"title": "Edit Slack canvas",
"description": "Replace one section of a Slack canvas with Markdown.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"canvas_id",
"section_id",
"markdown",
"_item_request_id"
],
"properties": {
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it."
},
"markdown": {
"type": "string",
"description": "Replacement Markdown"
},
"canvas_id": {
"type": "string",
"description": "Canvas ID"
},
"section_id": {
"type": "string",
"description": "Section ID from Slack"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Edit Slack canvas",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description71/100
Find the section IDs in a Slack canvas that contain given text.
Describe the returned information so the agent knows whether it will answer the request.
Inputs67/100
Explain the meaning of this value, not just its name.
canvas_id
Canvas ID
Explain the meaning of this value, not just its name.
contains_text
Text to find
Explain the meaning of this value, not just its name.
actor
Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_find_canvas_sections",
"title": "Find Slack canvas sections",
"description": "Find the section IDs in a Slack canvas that contain given text.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"canvas_id",
"contains_text"
],
"properties": {
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it."
},
"canvas_id": {
"type": "string",
"description": "Canvas ID"
},
"contains_text": {
"type": "string",
"description": "Text to find"
}
},
"additionalProperties": false
},
"annotations": {
"title": "Find Slack canvas sections",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description86/100
Create a Slack list with default columns.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Describe the returned information so the agent knows whether it will answer the request.
Inputs69/100
Explain the meaning of this value, not just its name.
name
List name
Explain the meaning of this value, not just its name.
todo_mode
Include task tracking columns
Explain what happens when this optional value is omitted.
actor
Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_create_list",
"title": "Create Slack list",
"description": "Create a Slack list with default columns.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name",
"_item_request_id"
],
"properties": {
"name": {
"type": "string",
"description": "List name"
},
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it."
},
"todo_mode": {
"type": "boolean",
"description": "Include task tracking columns"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Create Slack list",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description91/100
Rename a Slack list or change its task tracking mode.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs70/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
id
Slack List ID
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
name
New name
Explain the meaning of this value, not just its name.
todo_mode
Show task tracking columns
Explain what happens when this optional value is omitted.
actor
Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_update_list",
"title": "Update Slack list",
"description": "Rename a Slack list or change its task tracking mode.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id",
"_item_request_id"
],
"properties": {
"id": {
"type": "string",
"description": "Slack List ID"
},
"name": {
"type": "string",
"description": "New name"
},
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it."
},
"todo_mode": {
"type": "boolean",
"description": "Show task tracking columns"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Update Slack list",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description52/100
Read the records and columns of a Slack list.
Describe the concrete operation and its scope instead of restating the tool name.
Inputs69/100
Explain the meaning of this value, not just its name.
list_id
Slack List ID
Explain the meaning of this value, not just its name.
limit
Maximum records
Explain what happens when this optional value is omitted.
cursor
Pagination cursor
Explain the meaning of this value, not just its name.
actor
Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_read_list",
"title": "Read Slack list",
"description": "Read the records and columns of a Slack list.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"list_id"
],
"properties": {
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it."
},
"limit": {
"type": "number",
"description": "Maximum records"
},
"cursor": {
"type": "string",
"description": "Pagination cursor"
},
"list_id": {
"type": "string",
"description": "Slack List ID"
}
},
"additionalProperties": false
},
"annotations": {
"title": "Read Slack list",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description86/100
Add a record to a Slack list.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Describe the returned information so the agent knows whether it will answer the request.
Inputs63/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
list_id
Slack List ID
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
initial_fields
Slack List field objects keyed by column_id
Explain the meaning of this value, not just its name.
actor
Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_add_list_record",
"title": "Add Slack list record",
"description": "Add a record to a Slack list.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"list_id",
"initial_fields",
"_item_request_id"
],
"properties": {
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it."
},
"list_id": {
"type": "string",
"description": "Slack List ID"
},
"initial_fields": {
"type": "array",
"description": "Slack List field objects keyed by column_id"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Add Slack list record",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description83/100
Update cells in a Slack list.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Describe the returned information so the agent knows whether it will answer the request.
Inputs63/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
list_id
Slack List ID
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
cells
Cell objects with row_id and column_id
Explain the meaning of this value, not just its name.
actor
Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_update_list_record",
"title": "Update Slack list record",
"description": "Update cells in a Slack list.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"list_id",
"cells",
"_item_request_id"
],
"properties": {
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it."
},
"cells": {
"type": "array",
"description": "Cell objects with row_id and column_id"
},
"list_id": {
"type": "string",
"description": "Slack List ID"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Update Slack list record",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description90/100
Post a message to a Slack channel or conversation now, or schedule it, as the selected Slack account.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs93/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
actor
Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it.
Clear enough to supply this argument.
channelName
Where to send the message (single recipient). Accepts a channel ID (C…/G…), a channel name (e.g. `#general`), OR a Slack user ID (U…/W…) to DM that user directly. To DM a person, first resolve their Slack user ID via `slack_list_members` — never pass a plain `@username` or email.
Clear enough to supply this argument.
channelNames
Where to send the message (multiple recipients). Each entry is a channel ID (C…/G…), a channel name (e.g. `#general`), OR a Slack user ID (U…/W…) to DM that user directly. A single call can fan out to any mix of channels and DMs. To DM a person, first resolve their Slack user ID via `slack_list_members` — never pass a plain `@username` or email.
Clear enough to supply this argument.
message
The FINAL message text that will be sent verbatim to Slack. There is no downstream composer — whatever you pass here is delivered as-is. In auto mode (`messageMode: "auto"` on the action config), YOU must compose the final message from the action's `instructions` field and pass the composed text here. Do NOT pass instructions, prompts, second-person directives addressed to an AI, tone/avoid headers, or meta-commentary like "You are an AI agent...".
Clear enough to supply this argument.
threadTimestamp
The timestamp of the thread to reply to if you want to reply within an existing thread
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
sendAt
Omit or pass null to send immediately (an empty string also means immediately). Only provide an ISO date and time when the user explicitly requests scheduled delivery, at least 10 seconds in the future. Do not invent a send time for an immediate notification.
Clear enough to supply this argument.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_send_message",
"title": "Send Slack message",
"description": "Post a message to a Slack channel or conversation now, or schedule it, as the selected Slack account.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"message",
"_item_request_id"
],
"properties": {
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it."
},
"sendAt": {
"anyOf": [
{
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "string",
"const": ""
}
]
},
{
"type": "null"
}
],
"description": "Omit or pass null to send immediately (an empty string also means immediately). Only provide an ISO date and time when the user explicitly requests scheduled delivery, at least 10 seconds in the future. Do not invent a send time for an immediate notification."
},
"message": {
"type": "string",
"description": "The FINAL message text that will be sent verbatim to Slack. There is no downstream composer — whatever you pass here is delivered as-is. In auto mode (`messageMode: \"auto\"` on the action config), YOU must compose the final message from the action's `instructions` field and pass the composed text here. Do NOT pass instructions, prompts, second-person directives addressed to an AI, tone/avoid headers, or meta-commentary like \"You are an AI agent...\"."
},
"channelName": {
"type": "string",
"description": "Where to send the message (single recipient). Accepts a channel ID (C…/G…), a channel name (e.g. `#general`), OR a Slack user ID (U…/W…) to DM that user directly. To DM a person, first resolve their Slack user ID via `slack_list_members` — never pass a plain `@username` or email."
},
"channelNames": {
"type": "array",
"items": {
"type": "string"
},
"description": "Where to send the message (multiple recipients). Each entry is a channel ID (C…/G…), a channel name (e.g. `#general`), OR a Slack user ID (U…/W…) to DM that user directly. A single call can fan out to any mix of channels and DMs. To DM a person, first resolve their Slack user ID via `slack_list_members` — never pass a plain `@username` or email."
},
"threadTimestamp": {
"type": "string",
"description": "The timestamp of the thread to reply to if you want to reply within an existing thread"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Send Slack message",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description72/100
List recent messages in a Slack channel, or the replies in one thread.
Describe the returned information so the agent knows whether it will answer the request.
Inputs81/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
channelName
Channel name to list messages from
Clear enough to supply this argument.
limit
Max messages to return
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
threadTimestamp
Thread timestamp to list replies
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
actor
Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_list_messages",
"title": "List Slack messages",
"description": "List recent messages in a Slack channel, or the replies in one thread.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"channelName"
],
"properties": {
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it."
},
"limit": {
"type": "number",
"default": 100,
"maximum": 1000,
"description": "Max messages to return"
},
"channelName": {
"type": "string",
"description": "Channel name to list messages from"
},
"threadTimestamp": {
"type": "string",
"description": "Thread timestamp to list replies"
}
},
"additionalProperties": false
},
"annotations": {
"title": "List Slack messages",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description61/100
List or filter conversations in the connected Slack workspace.
Describe the concrete operation and its scope instead of restating the tool name.
Inputs95/100
Input documentation gives an agent enough context to populate the arguments.
query
Case-insensitive substring match on channel name. Prefer a targeted query over fetching every channel.
Clear enough to supply this argument.
types
Conversation types: public_channel, private_channel, mpim, im
Clear enough to supply this argument.
limit
Max conversations to return
Clear enough to supply this argument.
onlyMemberOf
Only return conversations the bot is a member of
Clear enough to supply this argument.
actor
Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_list_conversations",
"title": "List Slack conversations",
"description": "List or filter conversations in the connected Slack workspace.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it."
},
"limit": {
"type": "number",
"default": 100,
"description": "Max conversations to return"
},
"query": {
"type": "string",
"description": "Case-insensitive substring match on channel name. Prefer a targeted query over fetching every channel."
},
"types": {
"type": "array",
"description": "Conversation types: public_channel, private_channel, mpim, im"
},
"onlyMemberOf": {
"type": "boolean",
"default": true,
"description": "Only return conversations the bot is a member of"
}
},
"additionalProperties": false
},
"annotations": {
"title": "List Slack conversations",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description83/100
Create a Slack channel.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Describe the returned information so the agent knows whether it will answer the request.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
name
Channel name: lowercase, no spaces, at most 80 characters.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
actor
Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_create_channel",
"title": "Create Slack channel",
"description": "Create a Slack channel.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"_item_request_id"
],
"properties": {
"name": {
"type": "string",
"description": "Channel name: lowercase, no spaces, at most 80 characters."
},
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Create Slack channel",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description87/100
Rename a Slack channel.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Describe the returned information so the agent knows whether it will answer the request.
Inputs81/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
channelName
Current channel name or ID — the channel being renamed
Clear enough to supply this argument.
name
New channel name: lowercase, no spaces, at most 80 characters.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
actor
Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_rename_channel",
"title": "Rename Slack channel",
"description": "Rename a Slack channel.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"channelName",
"_item_request_id"
],
"properties": {
"name": {
"type": "string",
"description": "New channel name: lowercase, no spaces, at most 80 characters."
},
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it."
},
"channelName": {
"type": "string",
"description": "Current channel name or ID — the channel being renamed"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Rename Slack channel",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description66/100
List or search people in the connected Slack workspace.
Describe the returned information so the agent knows whether it will answer the request.
Inputs83/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
query
Name, display name, or email to match
Clear enough to supply this argument.
limit
Max members to return
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
actor
Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_list_members",
"title": "List Slack members",
"description": "List or search people in the connected Slack workspace.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it."
},
"limit": {
"type": "number",
"default": 200,
"maximum": 1000,
"description": "Max members to return"
},
"query": {
"type": "string",
"description": "Name, display name, or email to match"
}
},
"additionalProperties": false
},
"annotations": {
"title": "List Slack members",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description76/100
List the members of a Slack channel, including external Slack Connect users.
Describe the returned information so the agent knows whether it will answer the request.
Inputs88/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
channelName
Channel name or ID — accepts `#channel-name`, `channel-name`, or a raw channel ID (`C...`/`G...`)
Clear enough to supply this argument.
limit
Maximum number of members to return
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
includeBots
Include bot users in the results (default false)
Clear enough to supply this argument.
actor
Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_list_channel_members",
"title": "List Slack channel members",
"description": "List the members of a Slack channel, including external Slack Connect users.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"channelName"
],
"properties": {
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it."
},
"limit": {
"type": "number",
"default": 200,
"maximum": 1000,
"description": "Maximum number of members to return"
},
"channelName": {
"type": "string",
"description": "Channel name or ID — accepts `#channel-name`, `channel-name`, or a raw channel ID (`C...`/`G...`)"
},
"includeBots": {
"type": "boolean",
"default": false,
"description": "Include bot users in the results (default false)"
}
},
"additionalProperties": false
},
"annotations": {
"title": "List Slack channel members",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description84/100
Invite workspace members to a Slack channel.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Describe the returned information so the agent knows whether it will answer the request.
Inputs81/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
channelName
Channel name or ID (C…) to invite users to.
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
userIds
Slack user IDs, each starting with U or W.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
actor
Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it.
Clear enough to supply this argument.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_invite_to_channel",
"title": "Invite to Slack channel",
"description": "Invite workspace members to a Slack channel.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"channelName",
"_item_request_id"
],
"properties": {
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it."
},
"userIds": {
"type": "array",
"description": "Slack user IDs, each starting with U or W."
},
"channelName": {
"type": "string",
"description": "Channel name or ID (C…) to invite users to."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Invite to Slack channel",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description89/100
Invite people outside your workspace to a shared Slack channel through Slack Connect.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Describe the returned information so the agent knows whether it will answer the request.
Inputs90/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
channelName
Channel name or ID (C…) to invite external users to.
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
emails
Array of valid email addresses for the external invitees. Pull from contact records, trigger payloads, or explicit user input. Omit this field entirely if you have no valid emails — never pass placeholder strings or guessed addresses.
Clear enough to supply this argument.
externalLimited
If true, invited users join as single-channel guests (limited access). Default false (full multi-channel guest access).
Clear enough to supply this argument.
actor
Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it.
Clear enough to supply this argument.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_invite_external",
"title": "Invite external Slack users",
"description": "Invite people outside your workspace to a shared Slack channel through Slack Connect.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"channelName",
"_item_request_id"
],
"properties": {
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it."
},
"emails": {
"type": "array",
"description": "Array of valid email addresses for the external invitees. Pull from contact records, trigger payloads, or explicit user input. Omit this field entirely if you have no valid emails — never pass placeholder strings or guessed addresses."
},
"channelName": {
"type": "string",
"description": "Channel name or ID (C…) to invite external users to."
},
"externalLimited": {
"type": "boolean",
"default": false,
"description": "If true, invited users join as single-channel guests (limited access). Default false (full multi-channel guest access)."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Invite external Slack users",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description67/100
Search Slack messages with your personal Slack account, including your private channels and DMs.
The description explains the capability, when to use it, and what to expect.
Inputs96/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
query
Keyword or phrase to search for in message text
Clear enough to supply this argument.
channelName
Filter results to a specific channel name
Clear enough to supply this argument.
userName
Filter results by message author name
Clear enough to supply this argument.
cursor
Pass next_cursor from the previous page. Omit on the first call.
Clear enough to supply this argument.
limit
Maximum matches to return for this page
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
actor
Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_search_messages",
"title": "Search Slack messages",
"description": "Search Slack messages with your personal Slack account, including your private channels and DMs.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"query"
],
"properties": {
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Slack account to use. Pass null to use the default. Defaults to your personal account in My Agent when connected, otherwise the workspace bot. Shared Agents use the bot for actions and other reads; message search uses an organization user grant for public channels only. Select bot to act as the app. Editing or deleting a message requires the account that authored it."
},
"limit": {
"type": "number",
"default": 20,
"maximum": 100,
"description": "Maximum matches to return for this page"
},
"query": {
"type": "string",
"description": "Keyword or phrase to search for in message text"
},
"cursor": {
"type": "string",
"maxLength": 4096,
"description": "Pass next_cursor from the previous page. Omit on the first call."
},
"userName": {
"type": "string",
"description": "Filter results by message author name"
},
"channelName": {
"type": "string",
"description": "Filter results to a specific channel name"
}
},
"additionalProperties": false
},
"annotations": {
"title": "Search Slack messages",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
Search or list Stripe customers, for example by email. Returns up to 100 customers per page; when has_more is true, pass next_starting_after as starting_after to read the next page. Nothing is saved.
Describe the returned information so the agent knows whether it will answer the request.
Inputs88/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
email
Filter customers by email address
Clear enough to supply this argument.
created_gte
Unix timestamp — return only customers created at or after this time
Clear enough to supply this argument.
created_lte
Unix timestamp — return only customers created at or before this time
Clear enough to supply this argument.
limit
Number of results to return (1-100)
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
starting_after
Cursor for forward pagination
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
ending_before
Cursor for backward pagination
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "stripe_list_customers",
"title": "List Stripe customers",
"description": "Search or list Stripe customers, for example by email. Returns up to 100 customers per page; when has_more is true, pass next_starting_after as starting_after to read the next page. Nothing is saved.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {
"email": {
"type": "string",
"description": "Filter customers by email address"
},
"limit": {
"type": "number",
"default": 10,
"maximum": 100,
"minimum": 1,
"description": "Number of results to return (1-100)"
},
"created_gte": {
"type": "number",
"description": "Unix timestamp — return only customers created at or after this time"
},
"created_lte": {
"type": "number",
"description": "Unix timestamp — return only customers created at or before this time"
},
"ending_before": {
"type": "string",
"description": "Cursor for backward pagination"
},
"starting_after": {
"type": "string",
"description": "Cursor for forward pagination"
}
},
"additionalProperties": false
},
"annotations": {
"title": "List Stripe customers",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
List Stripe subscriptions, optionally for one customer or status. Returns up to 100 subscriptions per page; when has_more is true, pass next_starting_after as starting_after to read the next page. Nothing is saved.
Describe the returned information so the agent knows whether it will answer the request.
Inputs61/100
6 of 7 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
customer
Filter by customer ID
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
status
Not provided
Missing description. Explain what this value means and how to supply it.
created_gte
Unix timestamp — return only subscriptions created at or after this time
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
created_lte
Unix timestamp — return only subscriptions created at or before this time
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
limit
Number of results to return (1-100)
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
starting_after
Cursor for forward pagination
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
ending_before
Cursor for backward pagination
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description90/100
Create a customer record in Stripe. No charge, subscription or payment is created.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Describe the returned information so the agent knows whether it will answer the request.
Inputs79/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
email
The customer email address
Clear enough to supply this argument.
name
The customer full name
Clear enough to supply this argument.
phone
The customer phone number
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
description
An arbitrary string attached to the customer
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
metadata
Set of key-value pairs attached to the customer
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "stripe_create_customer",
"title": "Create Stripe customer",
"description": "Create a customer record in Stripe. No charge, subscription or payment is created.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"email",
"_item_request_id"
],
"properties": {
"name": {
"type": "string",
"description": "The customer full name"
},
"email": {
"type": "string",
"description": "The customer email address"
},
"phone": {
"type": "string",
"description": "The customer phone number"
},
"metadata": {
"type": "object",
"description": "Set of key-value pairs attached to the customer",
"additionalProperties": {}
},
"description": {
"type": "string",
"description": "An arbitrary string attached to the customer"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Create Stripe customer",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description91/100
Send or schedule a Markdown email from one of your connected mailboxes to a contact or to explicit addresses, optionally with file attachments from your Item MCP workspace.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs75/100
16 of 19 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
contactId
The ID of the contact to send the email to. Either contactId or toEmailAddresses must be provided.
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
toEmailAddresses
Array of email addresses to send the email to. Use this to send to multiple recipients or when you have email addresses but no contact ID. Either contactId or toEmailAddresses must be provided.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
subject
The FINAL subject line that will be sent verbatim to the recipient. There is no downstream composer. In auto mode (`subjectMode: "auto"` on the action config), YOU must compose the subject from the action's `instructions` field and pass the composed text here. Do NOT pass instructions, prompts, or meta-commentary like "You are an AI agent...".
Clear enough to supply this argument.
body
The FINAL email body that will be sent verbatim to the recipient. Markdown syntax is supported. There is no downstream composer — whatever you pass here is delivered as-is. In auto mode (`bodyMode: "auto"` on the action config), YOU must compose the final body from the action's `instructions` field and pass the composed text here. Do NOT pass instructions, prompts, second-person directives addressed to an AI, tone/avoid headers, or meta-commentary like "You are an AI agent...".
Clear enough to supply this argument.
sendAt
Optional RFC 3339 date and time to send the email, for example 2024-01-15T09:00:00-08:00. Omit to send immediately.
Clear enough to supply this argument.
ccEmailAddresses
Array of email addresses to CC on the email. Use when the user explicitly asks to CC someone.
Clear enough to supply this argument.
bccEmailAddresses
Array of email addresses to BCC on the email. Use when the user explicitly asks to BCC someone.
Clear enough to supply this argument.
sendFromUserId
SKILL ONLY: User ID to send email from.
Explain the meaning of this value, not just its name.
sendImmediately
Used only by Skill runs. Direct calls send immediately unless sendAt is set.
Clear enough to supply this argument.
fromEmailAddress
The email address to send from. Use an address from sender_email_addresses in get_workspace_context that allows this action (can_send for new emails, can_reply for replies). The email provider is determined from the address.
Clear enough to supply this argument.
fromEmailConnectorId
Which connected mailbox to send from. Pass null unless the user explicitly named a mailbox — null lets the server resolve the correct provider, and naming the wrong one suppresses that inference.
Clear enough to supply this argument.
includeSignature
Defaults to true: the sender's configured email signature is appended automatically after the body. Never write a signature or sign-off block into body yourself. Pass false only when the user explicitly asks to send without their signature.
Clear enough to supply this argument.
attachments › items › anyOf › 0 › sandboxPath
Path to the file in the agent sandbox, e.g. "data/report.pdf" or "uploads/contract.docx". The file must exist in the sandbox.
Clear enough to supply this argument.
attachments › items › anyOf › 0 › filename
Display filename for the recipient. Defaults to the basename of sandboxPath.
Clear enough to supply this argument.
attachments › items › anyOf › 1 › storagePath
System-managed Storage path for a user-uploaded file.
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
attachments › items › anyOf › 1 › filename
Not provided
Missing description. Explain what this value means and how to supply it.
attachments › items › anyOf › 1 › contentType
Not provided
Missing description. Explain what this value means and how to supply it.
attachments › items › anyOf › 1 › size
Not provided
Missing description. Explain what this value means and how to supply it.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "send_email",
"title": "Send email",
"description": "Send or schedule a Markdown email from one of your connected mailboxes to a contact or to explicit addresses, optionally with file attachments from your Item MCP workspace.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"subject",
"body",
"fromEmailAddress",
"_item_request_id"
],
"properties": {
"body": {
"type": "string",
"description": "The FINAL email body that will be sent verbatim to the recipient. Markdown syntax is supported. There is no downstream composer — whatever you pass here is delivered as-is. In auto mode (`bodyMode: \"auto\"` on the action config), YOU must compose the final body from the action's `instructions` field and pass the composed text here. Do NOT pass instructions, prompts, second-person directives addressed to an AI, tone/avoid headers, or meta-commentary like \"You are an AI agent...\"."
},
"sendAt": {
"type": "string",
"description": "Optional RFC 3339 date and time to send the email, for example 2024-01-15T09:00:00-08:00. Omit to send immediately."
},
"subject": {
"type": "string",
"description": "The FINAL subject line that will be sent verbatim to the recipient. There is no downstream composer. In auto mode (`subjectMode: \"auto\"` on the action config), YOU must compose the subject from the action's `instructions` field and pass the composed text here. Do NOT pass instructions, prompts, or meta-commentary like \"You are an AI agent...\"."
},
"contactId": {
"type": "number",
"description": "The ID of the contact to send the email to. Either contactId or toEmailAddresses must be provided."
},
"attachments": {
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"required": [
"sandboxPath"
],
"properties": {
"filename": {
"type": "string",
"description": "Display filename for the recipient. Defaults to the basename of sandboxPath."
},
"sandboxPath": {
"type": "string",
"description": "Path to the file in the agent sandbox, e.g. \"data/report.pdf\" or \"uploads/contract.docx\". The file must exist in the sandbox."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"storagePath",
"filename",
"contentType",
"size"
],
"properties": {
"size": {
"type": "integer",
"minimum": 0
},
"filename": {
"type": "string"
},
"contentType": {
"type": "string"
},
"storagePath": {
"type": "string",
"description": "System-managed Storage path for a user-uploaded file."
}
},
"additionalProperties": false
}
]
},
"maxItems": 10,
"description": "Files to attach to the email. Agents use sandboxPath references; the approval UI may add system-managed storagePath references. Allowed types: pdf, docx, ppt, pptx, xls, xlsx, txt, md, markdown, csv, png, jpg, jpeg. Max 3 MB per file, 10 MB total."
},
"sendFromUserId": {
"type": "string",
"description": "SKILL ONLY: User ID to send email from."
},
"sendImmediately": {
"type": "boolean",
"description": "Used only by Skill runs. Direct calls send immediately unless sendAt is set."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
},
"ccEmailAddresses": {
"type": "array",
"items": {
"type": "string",
"format": "email"
},
"description": "Array of email addresses to CC on the email. Use when the user explicitly asks to CC someone."
},
"fromEmailAddress": {
"type": "string",
"format": "email",
"description": "The email address to send from. Use an address from sender_email_addresses in get_workspace_context that allows this action (can_send for new emails, can_reply for replies). The email provider is determined from the address."
},
"includeSignature": {
"type": "boolean",
"description": "Defaults to true: the sender's configured email signature is appended automatically after the body. Never write a signature or sign-off block into body yourself. Pass false only when the user explicitly asks to send without their signature."
},
"toEmailAddresses": {
"type": "array",
"items": {
"type": "string",
"format": "email"
},
"description": "Array of email addresses to send the email to. Use this to send to multiple recipients or when you have email addresses but no contact ID. Either contactId or toEmailAddresses must be provided."
},
"bccEmailAddresses": {
"type": "array",
"items": {
"type": "string",
"format": "email"
},
"description": "Array of email addresses to BCC on the email. Use when the user explicitly asks to BCC someone."
},
"fromEmailConnectorId": {
"anyOf": [
{
"enum": [
"google",
"microsoft",
"agentmail"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Which connected mailbox to send from. Pass null unless the user explicitly named a mailbox — null lets the server resolve the correct provider, and naming the wrong one suppresses that inference."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Send email",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description91/100
Send or schedule a reply to an existing email thread from one of your connected mailboxes.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs76/100
15 of 18 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
contactId
The ID of the contact to send the email to. If this is not known, you must search the internal database for the contact with a valid email address.
Clear enough to supply this argument.
toEmailAddresses
Array of email addresses to send the reply to. This is required for approval display and must contain at least one visible recipient, even when contactId or replyToContactEmailId is present.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
body
The FINAL reply email body that will be sent verbatim to the recipient. Markdown syntax is supported. There is no downstream composer — whatever you pass here is delivered as-is. In auto mode (`bodyMode: "auto"` on the action config), YOU must compose the final body from the action's `instructions` field and pass the composed text here. Do NOT pass instructions, prompts, second-person directives addressed to an AI, tone/avoid headers, or meta-commentary like "You are an AI agent...".
Clear enough to supply this argument.
replyToContactEmailId
The ID of the specific email (contact_emails table) to reply to. This is required for replies to maintain proper threading and addressing.
Clear enough to supply this argument.
sendAt
The date and time to send the reply. If the user has not explicitly provided a send time, leave this blank to send immediately. Format: RFC 3339 (e.g., 2024-01-15T09:00:00-08:00).
Clear enough to supply this argument.
ccEmailAddresses
Array of email addresses to CC on the reply. Use when the user explicitly asks to CC someone.
Clear enough to supply this argument.
bccEmailAddresses
Array of email addresses to BCC on the reply. Use when the user explicitly asks to BCC someone.
Clear enough to supply this argument.
sendFromUserId
SKILL ONLY: User ID to send email from.
Explain the meaning of this value, not just its name.
fromEmailAddress
The email address to send from. Use an address from sender_email_addresses in get_workspace_context that allows this action (can_send for new emails, can_reply for replies). The email provider is determined from the address.
Clear enough to supply this argument.
fromEmailConnectorId
Which connected mailbox to send from. Pass null unless the user explicitly named a mailbox — null lets the server resolve the correct provider, and naming the wrong one suppresses that inference.
Clear enough to supply this argument.
includeSignature
Defaults to true: the sender's configured email signature is appended automatically after the body. Never write a signature or sign-off block into body yourself. Pass false only when the user explicitly asks to send without their signature.
Clear enough to supply this argument.
attachments › items › anyOf › 0 › sandboxPath
Path to the file in the agent sandbox, e.g. "data/report.pdf" or "uploads/contract.docx". The file must exist in the sandbox.
Clear enough to supply this argument.
attachments › items › anyOf › 0 › filename
Display filename for the recipient. Defaults to the basename of sandboxPath.
Clear enough to supply this argument.
attachments › items › anyOf › 1 › storagePath
System-managed Storage path for a user-uploaded file.
Explain the meaning of this value, not just its name.
attachments › items › anyOf › 1 › filename
Not provided
Missing description. Explain what this value means and how to supply it.
attachments › items › anyOf › 1 › contentType
Not provided
Missing description. Explain what this value means and how to supply it.
attachments › items › anyOf › 1 › size
Not provided
Missing description. Explain what this value means and how to supply it.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "reply_to_email",
"title": "Reply to email",
"description": "Send or schedule a reply to an existing email thread from one of your connected mailboxes.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"toEmailAddresses",
"body",
"replyToContactEmailId",
"fromEmailAddress",
"_item_request_id"
],
"properties": {
"body": {
"type": "string",
"description": "The FINAL reply email body that will be sent verbatim to the recipient. Markdown syntax is supported. There is no downstream composer — whatever you pass here is delivered as-is. In auto mode (`bodyMode: \"auto\"` on the action config), YOU must compose the final body from the action's `instructions` field and pass the composed text here. Do NOT pass instructions, prompts, second-person directives addressed to an AI, tone/avoid headers, or meta-commentary like \"You are an AI agent...\"."
},
"sendAt": {
"type": "string",
"description": "The date and time to send the reply. If the user has not explicitly provided a send time, leave this blank to send immediately. Format: RFC 3339 (e.g., 2024-01-15T09:00:00-08:00)."
},
"contactId": {
"type": "number",
"description": "The ID of the contact to send the email to. If this is not known, you must search the internal database for the contact with a valid email address."
},
"attachments": {
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"required": [
"sandboxPath"
],
"properties": {
"filename": {
"type": "string",
"description": "Display filename for the recipient. Defaults to the basename of sandboxPath."
},
"sandboxPath": {
"type": "string",
"description": "Path to the file in the agent sandbox, e.g. \"data/report.pdf\" or \"uploads/contract.docx\". The file must exist in the sandbox."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"storagePath",
"filename",
"contentType",
"size"
],
"properties": {
"size": {
"type": "integer",
"minimum": 0
},
"filename": {
"type": "string"
},
"contentType": {
"type": "string"
},
"storagePath": {
"type": "string",
"description": "System-managed Storage path for a user-uploaded file."
}
},
"additionalProperties": false
}
]
},
"maxItems": 10,
"description": "Files to attach to the email. Agents use sandboxPath references; the approval UI may add system-managed storagePath references. Allowed types: pdf, docx, ppt, pptx, xls, xlsx, txt, md, markdown, csv, png, jpg, jpeg. Max 3 MB per file, 10 MB total."
},
"sendFromUserId": {
"type": "string",
"description": "SKILL ONLY: User ID to send email from."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
},
"ccEmailAddresses": {
"type": "array",
"items": {
"type": "string",
"format": "email"
},
"description": "Array of email addresses to CC on the reply. Use when the user explicitly asks to CC someone."
},
"fromEmailAddress": {
"type": "string",
"format": "email",
"description": "The email address to send from. Use an address from sender_email_addresses in get_workspace_context that allows this action (can_send for new emails, can_reply for replies). The email provider is determined from the address."
},
"includeSignature": {
"type": "boolean",
"description": "Defaults to true: the sender's configured email signature is appended automatically after the body. Never write a signature or sign-off block into body yourself. Pass false only when the user explicitly asks to send without their signature."
},
"toEmailAddresses": {
"type": "array",
"items": {
"type": "string",
"format": "email"
},
"minItems": 1,
"description": "Array of email addresses to send the reply to. This is required for approval display and must contain at least one visible recipient, even when contactId or replyToContactEmailId is present."
},
"bccEmailAddresses": {
"type": "array",
"items": {
"type": "string",
"format": "email"
},
"description": "Array of email addresses to BCC on the reply. Use when the user explicitly asks to BCC someone."
},
"fromEmailConnectorId": {
"anyOf": [
{
"enum": [
"google",
"microsoft",
"agentmail"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Which connected mailbox to send from. Pass null unless the user explicitly named a mailbox — null lets the server resolve the correct provider, and naming the wrong one suppresses that inference."
},
"replyToContactEmailId": {
"type": "number",
"description": "The ID of the specific email (contact_emails table) to reply to. This is required for replies to maintain proper threading and addressing."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Reply to email",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description89/100
Create a Skill, an automated workflow that can run actions such as sending email when its triggers fire. New Skills start paused. Read get_item_guide topic skill-authoring first for the trigger and action types and configuration available to you, instead of guessing them from memory. Skill instructions only orchestrate steps, timing and stop conditions; writing guidance such as tone and message content belongs in each action’s configuration. CRM fields a Skill relies on need to exist before it is created.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs88/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
title
Name of the skill
Clear enough to supply this argument.
instructions
Skill instructions: the steps, timing, conditions and stop rules the Skill follows. Reference actions with the exact [[action:N]] tokens returned when they are added; writing guidance such as tone and message content belongs in each action’s configuration.
Clear enough to supply this argument.
worker
Agent placement: null for My Agent (the default), or the ID of an accessible standard Agent.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "create_skill",
"title": "Create Skill",
"description": "Create a Skill, an automated workflow that can run actions such as sending email when its triggers fire. New Skills start paused. Read get_item_guide topic skill-authoring first for the trigger and action types and configuration available to you, instead of guessing them from memory. Skill instructions only orchestrate steps, timing and stop conditions; writing guidance such as tone and message content belongs in each action’s configuration. CRM fields a Skill relies on need to exist before it is created.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"title",
"_item_request_id"
],
"properties": {
"title": {
"type": "string",
"description": "Name of the skill"
},
"worker": {
"anyOf": [
{
"enum": [
"outbound",
"inbound",
"account_manager",
"system_manager"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Agent placement: null for My Agent (the default), or the ID of an accessible standard Agent."
},
"instructions": {
"type": "string",
"description": "Skill instructions: the steps, timing, conditions and stop rules the Skill follows. Reference actions with the exact [[action:N]] tokens returned when they are added; writing guidance such as tone and message content belongs in each action’s configuration."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Create Skill",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description88/100
Change a Skill’s title, instructions, memory, status or placement. Instructions orchestrate steps, timing, conditions and stop rules, and reference each action with the exact [[action:N]] token returned when the action was added. Writing guidance belongs in the action configuration, not the instructions. Read get_item_guide topic skill-writing-instructions first for the authoring rules.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Explain mutations, irreversible effects, or prerequisites that matter before calling this tool.
Inputs91/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
skillId
ID of the skill to update
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
clear_fields
The ONLY way to erase a field. List fields to clear, e.g. ["memory"]. Pass null or [] otherwise — passing null in a field itself leaves it unchanged.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
title
New title for the skill. Pass null to leave the title unchanged — do that unless the user explicitly asked to rename it.
Clear enough to supply this argument.
instructions
New Skill instructions, or null to leave them unchanged. Instructions only orchestrate steps, timing, conditions and stop rules. Reference each action with the exact [[action:N]] token (instructionReference) returned when it was added, not a placeholder ID. Writing guidance such as tone and message content belongs in the action configuration.
Clear enough to supply this argument.
memory
Persistent context that carries across skill runs. Pass null to leave it unchanged.
Clear enough to supply this argument.
status
Set to "live" to activate the skill, "paused" to disable. Pass null to leave the status unchanged — do that unless the user explicitly asked to activate or pause it, because guessing here silently turns skills on or off.
Clear enough to supply this argument.
worker
Pass null to leave the agent placement unchanged — do that unless the user explicitly asked to move the skill, because moving it changes who can run it and with what connector access. The shared agent that will hold this skill. Moving a private My Agent skill to a shared agent makes it available to teammates with access to that agent and runs it with that agent’s connector access. A private My Agent skill can be moved to an accessible shared agent. A shared skill cannot be moved back to My Agent in-place; suggest copying it instead. If the destination agent does not have access to every required tool used by the skill, update_skill returns the affected tools and does not move the skill. Help the user update the skill first, then retry the move.
Clear enough to supply this argument.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "update_skill",
"title": "Update Skill",
"description": "Change a Skill’s title, instructions, memory, status or placement. Instructions orchestrate steps, timing, conditions and stop rules, and reference each action with the exact [[action:N]] token returned when the action was added. Writing guidance belongs in the action configuration, not the instructions. Read get_item_guide topic skill-writing-instructions first for the authoring rules.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"skillId",
"_item_request_id"
],
"properties": {
"title": {
"type": [
"string",
"null"
],
"description": "New title for the skill. Pass null to leave the title unchanged — do that unless the user explicitly asked to rename it."
},
"memory": {
"type": [
"string",
"null"
],
"description": "Persistent context that carries across skill runs. Pass null to leave it unchanged."
},
"status": {
"anyOf": [
{
"enum": [
"live",
"paused"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Set to \"live\" to activate the skill, \"paused\" to disable. Pass null to leave the status unchanged — do that unless the user explicitly asked to activate or pause it, because guessing here silently turns skills on or off."
},
"worker": {
"anyOf": [
{
"enum": [
"outbound",
"inbound",
"account_manager",
"system_manager"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Pass null to leave the agent placement unchanged — do that unless the user explicitly asked to move the skill, because moving it changes who can run it and with what connector access. The shared agent that will hold this skill. Moving a private My Agent skill to a shared agent makes it available to teammates with access to that agent and runs it with that agent’s connector access. A private My Agent skill can be moved to an accessible shared agent. A shared skill cannot be moved back to My Agent in-place; suggest copying it instead. If the destination agent does not have access to every required tool used by the skill, update_skill returns the affected tools and does not move the skill. Help the user update the skill first, then retry the move."
},
"skillId": {
"type": "string",
"description": "ID of the skill to update"
},
"clear_fields": {
"anyOf": [
{
"type": "array",
"items": {
"enum": [
"memory",
"instructions"
],
"type": "string"
}
},
{
"type": "null"
}
],
"description": "The ONLY way to erase a field. List fields to clear, e.g. [\"memory\"]. Pass null or [] otherwise — passing null in a field itself leaves it unchanged."
},
"instructions": {
"type": [
"string",
"null"
],
"description": "New Skill instructions, or null to leave them unchanged. Instructions only orchestrate steps, timing, conditions and stop rules. Reference each action with the exact [[action:N]] token (instructionReference) returned when it was added, not a placeholder ID. Writing guidance such as tone and message content belongs in the action configuration."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Update Skill",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description94/100
Read one Skill’s instructions, triggers, actions and placement, including the trigger and action IDs other Skill tools take. To change the Skill, read get_item_guide topic skill-authoring first instead of inferring trigger or action configuration from memory.
The description explains the capability, when to use it, and what to expect.
Inputs50/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
skillId
ID of the skill to retrieve
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description75/100
List the Skills you can access, including their placement and status. To create or change a Skill, read get_item_guide topic skill-authoring first for the trigger and action configuration available to you.
Describe the returned information so the agent knows whether it will answer the request.
Inputs88/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
status
Filter by skill status. Pass null to list skills in every status — do that unless the user asked for one specifically.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
limit
Maximum number of skills to return (default: 20)
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "list_skills",
"title": "List Skills",
"description": "List the Skills you can access, including their placement and status. To create or change a Skill, read get_item_guide topic skill-authoring first for the trigger and action configuration available to you.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {
"limit": {
"type": "number",
"description": "Maximum number of skills to return (default: 20)"
},
"status": {
"anyOf": [
{
"enum": [
"live",
"paused"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Filter by skill status. Pass null to list skills in every status — do that unless the user asked for one specifically."
}
},
"additionalProperties": false
},
"annotations": {
"title": "List Skills",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description89/100
Add a trigger, such as a schedule or event, that starts a Skill automatically. Read get_item_guide topic skill-triggers first for the exact configuration instead of guessing it from memory. Form triggers take a real formId from list_forms. Connector event triggers take a connector_id and event_id from the connector events listed in get_item_guide topic skill-authoring. Time-based triggers take schedule_type and schedule_config, for example {"schedule_type":"weekly","schedule_config":{"days_of_week":[1],"time":"09:00"}} for Mondays (0 is Sunday).
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Explain mutations, irreversible effects, or prerequisites that matter before calling this tool.
Inputs81/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
skillId
ID of the skill to add trigger to
Clear enough to supply this argument.
triggerType
Trigger type. people_search starts the workflow from search criteria for new people; connector_event starts it from a connected app event and needs connector_id and event_id in config; form_submission needs a formId from list_forms. get_item_guide topic skill-authoring lists the trigger types and connector events available to you.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
config
Trigger configuration for the chosen type; get_item_guide topic skill-triggers has each schema. time_based: {"schedule_type":"daily","schedule_config":{"time":"09:00"}}, weekly {"days_of_week":[1,3],"time":"09:00"} (0 is Sunday), monthly {"days_of_month":[1,15],"time":"09:00"} or once {"datetime":"2026-05-25T09:00:00-07:00"}. form_submission: {formId, isConfigured: true} with the formId from list_forms, which cannot be guessed. connector_event: {connector_id, event_id, isConfigured: true} using a connector event listed in get_item_guide topic skill-authoring. people_search: {nlquery, frequency ("1 day" or "7 days"), profilesQty, isConfigured: true}, where nlquery holds only criteria for who to find, not outreach or workflow steps. record_saved update triggers need the fieldDefinitionId of a CRM field that already exists.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "add_trigger",
"title": "Add Skill trigger",
"description": "Add a trigger, such as a schedule or event, that starts a Skill automatically. Read get_item_guide topic skill-triggers first for the exact configuration instead of guessing it from memory. Form triggers take a real formId from list_forms. Connector event triggers take a connector_id and event_id from the connector events listed in get_item_guide topic skill-authoring. Time-based triggers take schedule_type and schedule_config, for example {\"schedule_type\":\"weekly\",\"schedule_config\":{\"days_of_week\":[1],\"time\":\"09:00\"}} for Mondays (0 is Sunday).\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"skillId",
"triggerType",
"_item_request_id"
],
"properties": {
"config": {
"type": "object",
"description": "Trigger configuration for the chosen type; get_item_guide topic skill-triggers has each schema. time_based: {\"schedule_type\":\"daily\",\"schedule_config\":{\"time\":\"09:00\"}}, weekly {\"days_of_week\":[1,3],\"time\":\"09:00\"} (0 is Sunday), monthly {\"days_of_month\":[1,15],\"time\":\"09:00\"} or once {\"datetime\":\"2026-05-25T09:00:00-07:00\"}. form_submission: {formId, isConfigured: true} with the formId from list_forms, which cannot be guessed. connector_event: {connector_id, event_id, isConfigured: true} using a connector event listed in get_item_guide topic skill-authoring. people_search: {nlquery, frequency (\"1 day\" or \"7 days\"), profilesQty, isConfigured: true}, where nlquery holds only criteria for who to find, not outreach or workflow steps. record_saved update triggers need the fieldDefinitionId of a CRM field that already exists.",
"additionalProperties": {}
},
"skillId": {
"type": "string",
"description": "ID of the skill to add trigger to"
},
"triggerType": {
"enum": [
"manual",
"new_email",
"new_calendar_event",
"new_meeting_recording",
"new_google_calendar_event",
"new_outlook_calendar_event",
"calendar_event_starting",
"time_based",
"webhook",
"csv_upload",
"form_submission",
"people_search",
"record_saved",
"connector_event"
],
"type": "string",
"description": "Trigger type. people_search starts the workflow from search criteria for new people; connector_event starts it from a connected app event and needs connector_id and event_id in config; form_submission needs a formId from list_forms. get_item_guide topic skill-authoring lists the trigger types and connector events available to you."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Add Skill trigger",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description92/100
Change a Skill trigger’s configuration. Sent fields are merged into the saved configuration; for time-based triggers, send schedule_type and the complete schedule_config together. Read get_item_guide topic skill-triggers first for the configuration schema instead of guessing it from memory.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs81/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
skillId
ID of the skill
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
triggerId
Trigger ID, from get_skill.
Clear enough to supply this argument.
config
Trigger configuration fields to change; they are shallow-merged into the saved configuration. For time_based triggers, send schedule_type and the complete schedule_config together. connector_event config keeps {connector_id, event_id, isConfigured: true}. people_search nlquery holds only criteria for who to find. record_saved update triggers need the fieldDefinitionId of a CRM field that already exists. get_item_guide topic skill-triggers has each schema.
Clear enough to supply this argument.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "update_trigger",
"title": "Update Skill trigger",
"description": "Change a Skill trigger’s configuration. Sent fields are merged into the saved configuration; for time-based triggers, send schedule_type and the complete schedule_config together. Read get_item_guide topic skill-triggers first for the configuration schema instead of guessing it from memory.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"skillId",
"triggerId",
"config",
"_item_request_id"
],
"properties": {
"config": {
"type": "object",
"description": "Trigger configuration fields to change; they are shallow-merged into the saved configuration. For time_based triggers, send schedule_type and the complete schedule_config together. connector_event config keeps {connector_id, event_id, isConfigured: true}. people_search nlquery holds only criteria for who to find. record_saved update triggers need the fieldDefinitionId of a CRM field that already exists. get_item_guide topic skill-triggers has each schema.",
"additionalProperties": {}
},
"skillId": {
"type": "string",
"description": "ID of the skill"
},
"triggerId": {
"type": "number",
"description": "Trigger ID, from get_skill."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Update Skill trigger",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description90/100
Remove a trigger from a Skill. Trigger IDs come from get_skill. To configure a replacement trigger, read get_item_guide topic skill-triggers first.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs83/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
skillId
ID of the skill
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
triggerId
Trigger ID, from get_skill.
Clear enough to supply this argument.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "remove_trigger",
"title": "Remove Skill trigger",
"description": "Remove a trigger from a Skill. Trigger IDs come from get_skill. To configure a replacement trigger, read get_item_guide topic skill-triggers first.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"skillId",
"triggerId",
"_item_request_id"
],
"properties": {
"skillId": {
"type": "string",
"description": "ID of the skill"
},
"triggerId": {
"type": "number",
"description": "Trigger ID, from get_skill."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Remove Skill trigger",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Add an action, such as sending email, that a Skill can perform when it runs. Read get_item_guide topic skill-actions first (skill-connectors for connector actions) for each action type’s configuration instead of guessing it from memory. Writing guidance such as tone, voice and what to say goes in the action configuration, not the Skill instructions. The result includes an instructionReference such as [[action:123]]; the Skill instructions reference the action with that exact token. Contact and company enrichment are built into Skill runs and are not added as actions.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs81/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
skillId
ID of the skill
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
actionType
Action type. Connector action types (Linear, Loops, Mailchimp, Slack, Stripe) need that integration. Contact and company enrichment run inside every Skill, so enrich_contact and enrich_company are not added as actions. get_item_guide topic skill-authoring lists the action types available to you; topics skill-actions and skill-connectors have each configuration.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
configuration
Action configuration; this is where writing guidance (tone, voice, what to say and avoid) goes, not the Skill instructions. Email (send_email, reply_to_email): {bodyMode: "auto"|"prompt"|"manual", subjectMode: "auto"|"prompt"|"manual", instructions, subject, body, senderId (an email address), isConfigured: true}. LinkedIn: {action (the action type), messageMode: "auto"|"prompt"|"manual", instructions, body, subject (InMail), senderId, isConfigured: true}; invitation notes are at most 300 characters. Auto mode needs instructions describing the message purpose and audience; the configured sender’s learned voice applies at run time, so do not copy the creator’s style. Most connector actions take {isConfigured: true}; instructions-only connector actions take {instructions, isConfigured: true}. Approval is set separately with set_approval_settings. get_item_guide topics skill-actions and skill-connectors have each schema.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "add_action",
"title": "Add Skill action",
"description": "Add an action, such as sending email, that a Skill can perform when it runs. Read get_item_guide topic skill-actions first (skill-connectors for connector actions) for each action type’s configuration instead of guessing it from memory. Writing guidance such as tone, voice and what to say goes in the action configuration, not the Skill instructions. The result includes an instructionReference such as [[action:123]]; the Skill instructions reference the action with that exact token. Contact and company enrichment are built into Skill runs and are not added as actions.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"skillId",
"actionType",
"configuration",
"_item_request_id"
],
"properties": {
"skillId": {
"type": "string",
"description": "ID of the skill"
},
"actionType": {
"enum": [
"send_email",
"reply_to_email",
"send_linkedin_message",
"send_linkedin_invitation",
"send_linkedin_inmail",
"view_linkedin_profile",
"search_linkedin_profiles",
"approve_linkedin_connection_request",
"reject_linkedin_connection_request",
"add_to_list",
"create_note",
"create_activity",
"message_me",
"send_email_notification",
"send_notification",
"send_slack_message",
"web_search",
"web_scrape",
"create_calendar_event",
"update_calendar_event",
"delete_calendar_event",
"create_task",
"linear_create_issue",
"linear_update_issue",
"linear_create_comment",
"linear_create_customer_request",
"linear_create_or_update_customer",
"linear_create_project_update",
"loops_update_contact",
"loops_send_transactional_email",
"loops_send_event",
"loops_add_to_mailing_list",
"loops_delete_contact",
"create_stripe_customer",
"create_stripe_subscription",
"stripe_cancel_subscription",
"apply_stripe_subscription_discount",
"create_stripe_refund",
"slack_create_channel",
"slack_rename_channel",
"slack_invite_to_channel",
"slack_invite_external",
"mailchimp_create_contact",
"mailchimp_update_contact",
"mailchimp_add_tags",
"mailchimp_trigger_journey",
"mailchimp_archive_contact"
],
"type": "string",
"description": "Action type. Connector action types (Linear, Loops, Mailchimp, Slack, Stripe) need that integration. Contact and company enrichment run inside every Skill, so enrich_contact and enrich_company are not added as actions. get_item_guide topic skill-authoring lists the action types available to you; topics skill-actions and skill-connectors have each configuration."
},
"configuration": {
"type": "object",
"description": "Action configuration; this is where writing guidance (tone, voice, what to say and avoid) goes, not the Skill instructions. Email (send_email, reply_to_email): {bodyMode: \"auto\"|\"prompt\"|\"manual\", subjectMode: \"auto\"|\"prompt\"|\"manual\", instructions, subject, body, senderId (an email address), isConfigured: true}. LinkedIn: {action (the action type), messageMode: \"auto\"|\"prompt\"|\"manual\", instructions, body, subject (InMail), senderId, isConfigured: true}; invitation notes are at most 300 characters. Auto mode needs instructions describing the message purpose and audience; the configured sender’s learned voice applies at run time, so do not copy the creator’s style. Most connector actions take {isConfigured: true}; instructions-only connector actions take {instructions, isConfigured: true}. Approval is set separately with set_approval_settings. get_item_guide topics skill-actions and skill-connectors have each schema.",
"additionalProperties": {}
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Add Skill action",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description91/100
Change a Skill action’s configuration. Only the fields sent change; the rest are kept. Writing guidance for email and LinkedIn actions belongs here, not in the Skill instructions. Read get_item_guide topic skill-actions first (skill-connectors for connector actions) for the configuration keys instead of guessing them from memory.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs92/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
actionId
Action ID, from get_skill.
Clear enough to supply this argument.
configuration
Action configuration fields to change; other fields are kept. Writing guidance for email and LinkedIn actions goes in instructions here, not in the Skill instructions. get_item_guide topics skill-actions and skill-connectors list each action’s configuration keys.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "update_action",
"title": "Update Skill action",
"description": "Change a Skill action’s configuration. Only the fields sent change; the rest are kept. Writing guidance for email and LinkedIn actions belongs here, not in the Skill instructions. Read get_item_guide topic skill-actions first (skill-connectors for connector actions) for the configuration keys instead of guessing them from memory.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"actionId",
"configuration",
"_item_request_id"
],
"properties": {
"actionId": {
"type": "number",
"description": "Action ID, from get_skill."
},
"configuration": {
"type": "object",
"description": "Action configuration fields to change; other fields are kept. Writing guidance for email and LinkedIn actions goes in instructions here, not in the Skill instructions. get_item_guide topics skill-actions and skill-connectors list each action’s configuration keys.",
"additionalProperties": {}
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Update Skill action",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description93/100
Remove an action from a Skill. Action IDs come from get_skill. The Skill instructions are not changed, so update them to stop referencing the removed [[action:N]] token; get_item_guide topic skill-authoring explains how instructions reference actions.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
skillId
ID of the skill
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
actionId
Action ID, from get_skill.
Clear enough to supply this argument.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "remove_action",
"title": "Remove Skill action",
"description": "Remove an action from a Skill. Action IDs come from get_skill. The Skill instructions are not changed, so update them to stop referencing the removed [[action:N]] token; get_item_guide topic skill-authoring explains how instructions reference actions.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"skillId",
"actionId",
"_item_request_id"
],
"properties": {
"skillId": {
"type": "string",
"description": "ID of the skill"
},
"actionId": {
"type": "number",
"description": "Action ID, from get_skill."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Remove Skill action",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description88/100
Choose whether a Skill’s action type, such as sending email, requires approval before Item runs it. Drafting an email for review means requiring approval here; wording in the Skill instructions or sendImmediately does not replace this setting. Read get_item_guide topic skill-actions first for how Skill actions are configured.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
skillId
ID of the skill
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
actionType
Action type to configure approval for
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
requireApproval
Whether this action should require user approval
Clear enough to supply this argument.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "set_approval_settings",
"title": "Set approval settings",
"description": "Choose whether a Skill’s action type, such as sending email, requires approval before Item runs it. Drafting an email for review means requiring approval here; wording in the Skill instructions or sendImmediately does not replace this setting. Read get_item_guide topic skill-actions first for how Skill actions are configured.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"skillId",
"actionType",
"requireApproval",
"_item_request_id"
],
"properties": {
"skillId": {
"type": "string",
"description": "ID of the skill"
},
"actionType": {
"enum": [
"send_email",
"reply_to_email",
"send_linkedin_message",
"send_linkedin_invitation",
"send_linkedin_inmail"
],
"type": "string",
"description": "Action type to configure approval for"
},
"requireApproval": {
"type": "boolean",
"description": "Whether this action should require user approval"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Set approval settings",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description90/100
Upload a file from your Item MCP workspace and return a download link that expires after one hour.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Describe the returned information so the agent knows whether it will answer the request.
Inputs95/100
Input documentation gives an agent enough context to populate the arguments.
path
Path to the file in the sandbox (e.g., "data/export.csv")
Clear enough to supply this argument.
filename
Optional user-friendly filename for the download (e.g., "Q4 Contacts.csv"). Defaults to the original filename.
Clear enough to supply this argument.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "export_file",
"title": "Create file download link",
"description": "Upload a file from your Item MCP workspace and return a download link that expires after one hour.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"path",
"_item_request_id"
],
"properties": {
"path": {
"type": "string",
"description": "Path to the file in the sandbox (e.g., \"data/export.csv\")"
},
"filename": {
"type": "string",
"description": "Optional user-friendly filename for the download (e.g., \"Q4 Contacts.csv\"). Defaults to the original filename."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Create file download link",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description84/100
Export a chart’s data as a CSV download link that expires after one hour.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Describe the returned information so the agent knows whether it will answer the request.
Inputs67/100
2 of 3 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
chart_id
Not provided
Missing description. Explain what this value means and how to supply it.
format
csv: the rows the chart shows. png: an image of the chart with its title, subtitle and the date it was saved.
Clear enough to supply this argument.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "export_chart",
"title": "Export chart",
"description": "Export a chart’s data as a CSV download link that expires after one hour.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"chart_id",
"format",
"_item_request_id"
],
"properties": {
"format": {
"enum": [
"png",
"csv"
],
"type": "string",
"description": "csv: the rows the chart shows. png: an image of the chart with its title, subtitle and the date it was saved."
},
"chart_id": {
"type": "string",
"format": "uuid"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Export chart",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description90/100
Build one of your recommended dashboard templates as a new dashboard, or into an empty dashboard you can edit, using your current data access. Repeating the same template and target returns the dashboard already built.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Describe the returned information so the agent knows whether it will answer the request.
Inputs25/100
1 of 3 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
template_id
Not provided
Missing description. Explain what this value means and how to supply it.
dashboard_id
Not provided
Missing description. Explain what this value means and how to supply it.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "build_dashboard_from_template",
"title": "Build dashboard from template",
"description": "Build one of your recommended dashboard templates as a new dashboard, or into an empty dashboard you can edit, using your current data access. Repeating the same template and target returns the dashboard already built.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"template_id",
"_item_request_id"
],
"properties": {
"template_id": {
"type": "string",
"format": "uuid"
},
"dashboard_id": {
"type": "string",
"format": "uuid"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Build dashboard from template",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description88/100
Create a private dashboard, optionally with existing charts you created.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Describe the returned information so the agent knows whether it will answer the request.
Inputs50/100
2 of 4 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
name
Not provided
Missing description. Explain what this value means and how to supply it.
description
Not provided
Missing description. Explain what this value means and how to supply it.
chart_ids
Charts to place on the new dashboard, in order. Only charts the user created in the assistant.
Clear enough to supply this argument.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "create_dashboard",
"title": "Create dashboard",
"description": "Create a private dashboard, optionally with existing charts you created.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name",
"_item_request_id"
],
"properties": {
"name": {
"type": "string",
"maxLength": 120,
"minLength": 1
},
"chart_ids": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
},
"maxItems": 30,
"description": "Charts to place on the new dashboard, in order. Only charts the user created in the assistant."
},
"description": {
"type": "string",
"maxLength": 500
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Create dashboard",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description93/100
Add a chart you created to one of your dashboards. Adding a chart that is already there has no effect.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs75/100
3 of 4 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
chart_id
Not provided
Missing description. Explain what this value means and how to supply it.
dashboard_id
Target dashboard id, when known (from an earlier tool result).
Clear enough to supply this argument.
dashboard_name
The dashboard's name as the user said it, when there is no id. Matched against the user's dashboards.
Clear enough to supply this argument.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "add_chart_to_dashboard",
"title": "Add chart to dashboard",
"description": "Add a chart you created to one of your dashboards. Adding a chart that is already there has no effect.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"chart_id",
"_item_request_id"
],
"properties": {
"chart_id": {
"type": "string",
"format": "uuid"
},
"dashboard_id": {
"type": "string",
"format": "uuid",
"description": "Target dashboard id, when known (from an earlier tool result)."
},
"dashboard_name": {
"type": "string",
"maxLength": 120,
"minLength": 1,
"description": "The dashboard's name as the user said it, when there is no id. Matched against the user's dashboards."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Add chart to dashboard",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description93/100
Add, remove, move or resize charts on a dashboard, rename it, change its description or tile display, undo, or restore a saved version. All operations in one call apply together.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Explain mutations, irreversible effects, or prerequisites that matter before calling this tool.
Inputs29/100
8 of 21 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
dashboard_id
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › op
add_chart (chart_id, optional position), remove_chart (chart_id), move_chart (chart_id, position), resize_chart (chart_id, size {w,h,optional fullPage}; four stored columns per logical column), beautify (group existing charts by topic and kind, return numbers to the top, keep a trend full page; queries unchanged), rename (name), set_description (description), edit_tile (chart_id, view and/or view_unset, optional chart/table presentation), reset_tile (chart_id: back to the chart's own display), undo (alone), redo (alone, draft only), restore_version (version, alone).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
operations › items › chart_id
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › presentation
edit_tile: show the chart or its data table without changing the underlying chart type.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
operations › items › position
0-based place among the tiles: 0 = top.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
operations › items › size › w
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › size › h
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › size › fullPage
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › name
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › description
Empty string clears it.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
operations › items › view › title
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › view › subtitle
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › view › type
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › view › sort › field
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › view › sort › direction
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › view › stack
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › view › normalize
Not provided
Missing description. Explain what this value means and how to supply it.
operations › items › view_unset
edit_tile: display fields to drop back to the chart's own.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
operations › items › version
restore_version: a saved dashboard version number.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
change_summary
Short user-facing summary, e.g. "Removed churn, pipeline first".
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description88/100
Draft a new formula field, or a change to an existing one, and check it against every record. Nothing is saved to the object; the draft is stored for a later create or update call.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs97/100
Input documentation gives an agent enough context to populate the arguments.
objectSlug
Slug of the destination object, such as contacts or deals.
Clear enough to supply this argument.
displayName
Name of the computed field. When updating, the new name, or the current name to keep it.
Clear enough to supply this argument.
description
Short description shown in Object Settings. Empty string for none, or to keep the current description when updating.
Clear enough to supply this argument.
displayDecimalPlaces
Display-only precision for Number, Currency, and Percentage results. "default" uses 2 for new fields and keeps the current precision when updating; Currency allows only 0 or 2. Use a number only when the user asked for one.
Clear enough to supply this argument.
fieldToUpdate
Current name of the existing computed field to change, or an empty string when creating a new field.
Clear enough to supply this argument.
mode
generate: turn a description into a formula with the formula generator. validate: check a formula the user wrote, or a revision of the previous draft.
Clear enough to supply this argument.
calculation
generate: the calculation in the user's words. validate: the exact formula, using {Field Name} references. When updating only the name, description, or precision, validate the field's current formula.
Clear enough to supply this argument.
outputType
Result type. "auto" lets generation choose, or infers it from a validated formula. Set a type only when the user asked for one.
Clear enough to supply this argument.
previewRecordId
Item record ID on the destination object to preview in addition to the full check, or 0 for none. Use only an ID the user or a lookup provided.
Clear enough to supply this argument.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "draft_computed_field",
"title": "Draft computed field",
"description": "Draft a new formula field, or a change to an existing one, and check it against every record. Nothing is saved to the object; the draft is stored for a later create or update call.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"objectSlug",
"displayName",
"description",
"displayDecimalPlaces",
"fieldToUpdate",
"mode",
"calculation",
"outputType",
"previewRecordId",
"_item_request_id"
],
"properties": {
"mode": {
"enum": [
"generate",
"validate"
],
"type": "string",
"description": "generate: turn a description into a formula with the formula generator. validate: check a formula the user wrote, or a revision of the previous draft."
},
"objectSlug": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Slug of the destination object, such as contacts or deals."
},
"outputType": {
"enum": [
"number",
"currency",
"percentage",
"text",
"boolean",
"date",
"auto"
],
"type": "string",
"description": "Result type. \"auto\" lets generation choose, or infers it from a validated formula. Set a type only when the user asked for one."
},
"calculation": {
"type": "string",
"maxLength": 4000,
"minLength": 1,
"description": "generate: the calculation in the user's words. validate: the exact formula, using {Field Name} references. When updating only the name, description, or precision, validate the field's current formula."
},
"description": {
"type": "string",
"maxLength": 200,
"description": "Short description shown in Object Settings. Empty string for none, or to keep the current description when updating."
},
"displayName": {
"type": "string",
"maxLength": 50,
"minLength": 1,
"description": "Name of the computed field. When updating, the new name, or the current name to keep it."
},
"fieldToUpdate": {
"type": "string",
"maxLength": 100,
"description": "Current name of the existing computed field to change, or an empty string when creating a new field."
},
"previewRecordId": {
"type": "integer",
"minimum": 0,
"description": "Item record ID on the destination object to preview in addition to the full check, or 0 for none. Use only an ID the user or a lookup provided."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
},
"displayDecimalPlaces": {
"enum": [
"default",
"0",
"1",
"2",
"3",
"4",
"5",
"6"
],
"type": "string",
"description": "Display-only precision for Number, Currency, and Percentage results. \"default\" uses 2 for new fields and keeps the current precision when updating; Currency allows only 0 or 2. Use a number only when the user asked for one."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Draft computed field",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description89/100
Save a new formula field from a ready draft. Values are calculated in the background.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs96/100
Input documentation gives an agent enough context to populate the arguments.
objectSlug
Slug of the destination object, such as contacts or deals.
Clear enough to supply this argument.
displayName
Name of the computed field. When updating, the new name, or the current name to keep it.
Clear enough to supply this argument.
description
Short description shown in Object Settings. Empty string for none, or to keep the current description when updating.
Clear enough to supply this argument.
displayDecimalPlaces
Display-only precision for Number, Currency, and Percentage results. "default" uses 2 for new fields and keeps the current precision when updating; Currency allows only 0 or 2. Use a number only when the user asked for one.
Clear enough to supply this argument.
expression
The exact expression returned by the latest ready draft_computed_field result.
Clear enough to supply this argument.
outputType
The exact outputType returned by the latest ready draft_computed_field result.
Clear enough to supply this argument.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
_item_draft_request_id
The _item_request_id of your successful draft_computed_field call. Item reads its durable result, verifies the same actor/tenant and preserves the original audited-draft checks.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "create_computed_field",
"title": "Create computed field",
"description": "Save a new formula field from a ready draft. Values are calculated in the background.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"objectSlug",
"displayName",
"description",
"displayDecimalPlaces",
"expression",
"outputType",
"_item_request_id",
"_item_draft_request_id"
],
"properties": {
"expression": {
"type": "string",
"maxLength": 4000,
"minLength": 1,
"description": "The exact expression returned by the latest ready draft_computed_field result."
},
"objectSlug": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Slug of the destination object, such as contacts or deals."
},
"outputType": {
"enum": [
"number",
"currency",
"percentage",
"text",
"boolean",
"date"
],
"type": "string",
"description": "The exact outputType returned by the latest ready draft_computed_field result."
},
"description": {
"type": "string",
"maxLength": 200,
"description": "Short description shown in Object Settings. Empty string for none, or to keep the current description when updating."
},
"displayName": {
"type": "string",
"maxLength": 50,
"minLength": 1,
"description": "Name of the computed field. When updating, the new name, or the current name to keep it."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
},
"displayDecimalPlaces": {
"enum": [
"default",
"0",
"1",
"2",
"3",
"4",
"5",
"6"
],
"type": "string",
"description": "Display-only precision for Number, Currency, and Percentage results. \"default\" uses 2 for new fields and keeps the current precision when updating; Currency allows only 0 or 2. Use a number only when the user asked for one."
},
"_item_draft_request_id": {
"type": "string",
"format": "uuid",
"description": "The _item_request_id of your successful draft_computed_field call. Item reads its durable result, verifies the same actor/tenant and preserves the original audited-draft checks."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Create computed field",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description93/100
Save changes to an existing formula field from a ready draft. Values recalculate in the background.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs97/100
Input documentation gives an agent enough context to populate the arguments.
objectSlug
Slug of the destination object, such as contacts or deals.
Clear enough to supply this argument.
displayName
Name of the computed field. When updating, the new name, or the current name to keep it.
Clear enough to supply this argument.
description
Short description shown in Object Settings. Empty string for none, or to keep the current description when updating.
Clear enough to supply this argument.
displayDecimalPlaces
Display-only precision for Number, Currency, and Percentage results. "default" uses 2 for new fields and keeps the current precision when updating; Currency allows only 0 or 2. Use a number only when the user asked for one.
Clear enough to supply this argument.
expression
The exact expression returned by the latest ready draft_computed_field result.
Clear enough to supply this argument.
outputType
The exact outputType returned by the latest ready draft_computed_field result.
Clear enough to supply this argument.
fieldToUpdate
Current name of the computed field being changed, exactly as passed to draft_computed_field.
Clear enough to supply this argument.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
_item_draft_request_id
The _item_request_id of your successful draft_computed_field call. Item reads its durable result, verifies the same actor/tenant and preserves the original audited-draft checks.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "update_computed_field",
"title": "Update computed field",
"description": "Save changes to an existing formula field from a ready draft. Values recalculate in the background.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"objectSlug",
"displayName",
"description",
"displayDecimalPlaces",
"expression",
"outputType",
"fieldToUpdate",
"_item_request_id",
"_item_draft_request_id"
],
"properties": {
"expression": {
"type": "string",
"maxLength": 4000,
"minLength": 1,
"description": "The exact expression returned by the latest ready draft_computed_field result."
},
"objectSlug": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Slug of the destination object, such as contacts or deals."
},
"outputType": {
"enum": [
"number",
"currency",
"percentage",
"text",
"boolean",
"date"
],
"type": "string",
"description": "The exact outputType returned by the latest ready draft_computed_field result."
},
"description": {
"type": "string",
"maxLength": 200,
"description": "Short description shown in Object Settings. Empty string for none, or to keep the current description when updating."
},
"displayName": {
"type": "string",
"maxLength": 50,
"minLength": 1,
"description": "Name of the computed field. When updating, the new name, or the current name to keep it."
},
"fieldToUpdate": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Current name of the computed field being changed, exactly as passed to draft_computed_field."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
},
"displayDecimalPlaces": {
"enum": [
"default",
"0",
"1",
"2",
"3",
"4",
"5",
"6"
],
"type": "string",
"description": "Display-only precision for Number, Currency, and Percentage results. \"default\" uses 2 for new fields and keeps the current precision when updating; Currency allows only 0 or 2. Use a number only when the user asked for one."
},
"_item_draft_request_id": {
"type": "string",
"format": "uuid",
"description": "The _item_request_id of your successful draft_computed_field call. Item reads its durable result, verifies the same actor/tenant and preserves the original audited-draft checks."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Update computed field",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description94/100
Delete a formula field and its values from an object and every view.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs96/100
Input documentation gives an agent enough context to populate the arguments.
objectSlug
Slug of the destination object, such as contacts or deals.
Clear enough to supply this argument.
fieldName
Current name of the computed field to delete.
Clear enough to supply this argument.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "delete_computed_field",
"title": "Delete computed field",
"description": "Delete a formula field and its values from an object and every view.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"objectSlug",
"fieldName",
"_item_request_id"
],
"properties": {
"fieldName": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Current name of the computed field to delete."
},
"objectSlug": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Slug of the destination object, such as contacts or deals."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Delete computed field",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description89/100
Make a field Visible, Hidden or Admin Only. Relationship, Name, Created At and Updated At fields cannot be made Hidden or Admin Only.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs94/100
Input documentation gives an agent enough context to populate the arguments.
objectSlug
Slug of the destination object, such as contacts or deals.
Clear enough to supply this argument.
fieldName
Name of the field whose visibility changes.
Clear enough to supply this argument.
visibility
visible: shown to everyone. hidden: hidden from views by default but readable. admin: Admin Only, readable only by workspace administrators and their agents.
Clear enough to supply this argument.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "set_field_visibility",
"title": "Set field visibility",
"description": "Make a field Visible, Hidden or Admin Only. Relationship, Name, Created At and Updated At fields cannot be made Hidden or Admin Only.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"objectSlug",
"fieldName",
"visibility",
"_item_request_id"
],
"properties": {
"fieldName": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Name of the field whose visibility changes."
},
"objectSlug": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Slug of the destination object, such as contacts or deals."
},
"visibility": {
"enum": [
"visible",
"hidden",
"admin"
],
"type": "string",
"description": "visible: shown to everyone. hidden: hidden from views by default but readable. admin: Admin Only, readable only by workspace administrators and their agents."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Set field visibility",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description92/100
Read text from a file that an earlier call saved in your Item MCP workspace, such as a meeting transcript or a large list export. Returns up to 100,000 characters per call and the offset to continue from.
The description explains the capability, when to use it, and what to expect.
Inputs83/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
path
Path returned by an earlier call, under data/, such as data/meeting-recordings/12-transcript.txt.
Clear enough to supply this argument.
offset
Character offset to start reading from.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
limit
Maximum number of characters to return, up to 100,000.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "read_workspace_file",
"title": "Read workspace file",
"description": "Read text from a file that an earlier call saved in your Item MCP workspace, such as a meeting transcript or a large list export. Returns up to 100,000 characters per call and the offset to continue from.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"path"
],
"properties": {
"path": {
"type": "string",
"pattern": "^data\\/(?:[A-Za-z0-9_-]+\\/)*[A-Za-z0-9_-][A-Za-z0-9_.-]*\\.(?:txt|tsv|csv|json|md)$",
"maxLength": 512,
"description": "Path returned by an earlier call, under data/, such as data/meeting-recordings/12-transcript.txt."
},
"limit": {
"type": "integer",
"default": 100000,
"maximum": 100000,
"minimum": 1,
"description": "Maximum number of characters to return, up to 100,000."
},
"offset": {
"type": "integer",
"default": 0,
"minimum": 0,
"description": "Character offset to start reading from."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Read workspace file",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description90/100
Set or clear the description of a static Item list. The name, members, object type and sharing are unchanged.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs83/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
listId
List ID, as a string of digits.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
description
New description, or null to clear it.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "update_list_description",
"title": "Update list description",
"description": "Set or clear the description of a static Item list. The name, members, object type and sharing are unchanged.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"listId",
"description",
"_item_request_id"
],
"properties": {
"listId": {
"type": "string",
"pattern": "^[1-9][0-9]*$",
"description": "List ID, as a string of digits."
},
"description": {
"anyOf": [
{
"type": "string",
"maxLength": 2000
},
{
"type": "null"
}
],
"description": "New description, or null to clear it."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Update list description",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description91/100
Add up to 1,000 records of the list’s object type to a static Item list in one atomic call. Record IDs are strings. If any record is unavailable, nothing is added; records already on the list are skipped.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Describe the returned information so the agent knows whether it will answer the request.
Inputs83/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
listId
List ID, as a string of digits.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
object
Object type slug of the list, such as contacts, companies or a custom object slug.
Clear enough to supply this argument.
objectIds
Record IDs as strings of digits, between 1 and 1,000.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "add_list_members",
"title": "Add list members",
"description": "Add up to 1,000 records of the list’s object type to a static Item list in one atomic call. Record IDs are strings. If any record is unavailable, nothing is added; records already on the list are skipped.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"listId",
"object",
"objectIds",
"_item_request_id"
],
"properties": {
"listId": {
"type": "string",
"pattern": "^[1-9][0-9]*$",
"description": "List ID, as a string of digits."
},
"object": {
"type": "string",
"minLength": 1,
"description": "Object type slug of the list, such as contacts, companies or a custom object slug."
},
"objectIds": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[1-9][0-9]*$"
},
"maxItems": 1000,
"minItems": 1,
"description": "Record IDs as strings of digits, between 1 and 1,000."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Add list members",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description89/100
Remove up to 1,000 records from a static Item list in one atomic call. The records themselves are not deleted. If any record is unavailable, nothing is removed.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
Describe the returned information so the agent knows whether it will answer the request.
Inputs88/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
listId
List ID, as a string of digits.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
object
Object type slug of the list, such as contacts, companies or a custom object slug.
Clear enough to supply this argument.
objectIds
Record IDs as strings of digits, between 1 and 1,000.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "remove_list_members",
"title": "Remove list members",
"description": "Remove up to 1,000 records from a static Item list in one atomic call. The records themselves are not deleted. If any record is unavailable, nothing is removed.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"listId",
"object",
"objectIds",
"_item_request_id"
],
"properties": {
"listId": {
"type": "string",
"pattern": "^[1-9][0-9]*$",
"description": "List ID, as a string of digits."
},
"object": {
"type": "string",
"minLength": 1,
"description": "Object type slug of the list, such as contacts, companies or a custom object slug."
},
"objectIds": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[1-9][0-9]*$"
},
"maxItems": 1000,
"minItems": 1,
"description": "Record IDs as strings of digits, between 1 and 1,000."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Remove list members",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
Permanently delete a static Item list definition and its memberships. The member records are not deleted. Only call this after the user explicitly confirms the deletion, and pass confirmed: true.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs75/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
listId
List ID, as a string of digits.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
confirmed
Must be true, and only after the user explicitly confirms the deletion.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "delete_list",
"title": "Delete list",
"description": "Permanently delete a static Item list definition and its memberships. The member records are not deleted. Only call this after the user explicitly confirms the deletion, and pass confirmed: true.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"listId",
"confirmed",
"_item_request_id"
],
"properties": {
"listId": {
"type": "string",
"pattern": "^[1-9][0-9]*$",
"description": "List ID, as a string of digits."
},
"confirmed": {
"type": "boolean",
"const": true,
"description": "Must be true, and only after the user explicitly confirms the deletion."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Delete list",
"readOnlyHint": false,
"openWorldHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description77/100
Read your Item profile, organization and website, timezone and current time, teammates with their user IDs and emails, the sender email addresses you can use, connected integrations, connector access, the connector events that can trigger Skills, and your custom instructions.
The description explains the capability, when to use it, and what to expect.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
No input fields.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_workspace_context",
"title": "Get workspace context",
"description": "Read your Item profile, organization and website, timezone and current time, teammates with their user IDs and emails, the sender email addresses you can use, connected integrations, connector access, the connector events that can trigger Skills, and your custom instructions.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {},
"additionalProperties": false
},
"annotations": {
"title": "Get workspace context",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Save the full transcript of one meeting recording as a new text file in your Item MCP workspace and return its path. Each export creates a new file; existing files are not changed.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs88/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
meeting_recording_id
meeting_recording_id from a calendar event’s recording, or from a meeting recording search. Not the calendar event ID.
Clear enough to supply this argument.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "export_meeting_transcript",
"title": "Export meeting transcript",
"description": "Save the full transcript of one meeting recording as a new text file in your Item MCP workspace and return its path. Each export creates a new file; existing files are not changed.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"meeting_recording_id",
"_item_request_id"
],
"properties": {
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
},
"meeting_recording_id": {
"type": "integer",
"description": "meeting_recording_id from a calendar event’s recording, or from a meeting recording search. Not the calendar event ID.",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
},
"annotations": {
"title": "Export meeting transcript",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Fetch up to 1,000 Stripe customers matching the filters and save them as new TSV files in your Item MCP workspace. Returns the file paths and row count; existing files are not changed.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs83/100
Explain the meaning of this value, not just its name.
email
Filter customers by email address
Clear enough to supply this argument.
created_gte
Unix timestamp — return only customers created at or after this time
Clear enough to supply this argument.
created_lte
Unix timestamp — return only customers created at or before this time
Clear enough to supply this argument.
starting_after
Cursor for forward pagination
Explain the meaning of this value, not just its name.
max_records
Maximum number of customers to export (1-1000)
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "stripe_export_customers",
"title": "Export Stripe customers",
"description": "Fetch up to 1,000 Stripe customers matching the filters and save them as new TSV files in your Item MCP workspace. Returns the file paths and row count; existing files are not changed.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"_item_request_id"
],
"properties": {
"email": {
"type": "string",
"description": "Filter customers by email address"
},
"created_gte": {
"type": "number",
"description": "Unix timestamp — return only customers created at or after this time"
},
"created_lte": {
"type": "number",
"description": "Unix timestamp — return only customers created at or before this time"
},
"max_records": {
"type": "number",
"default": 500,
"maximum": 1000,
"minimum": 1,
"description": "Maximum number of customers to export (1-1000)"
},
"starting_after": {
"type": "string",
"description": "Cursor for forward pagination"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Export Stripe customers",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Fetch up to 1,000 Stripe subscriptions matching the filters and save them as new TSV files in your Item MCP workspace. Returns the file paths and row count; existing files are not changed.
Runs as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.
The description explains the capability, when to use it, and what to expect.
Inputs68/100
6 of 7 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
customer
Filter by customer ID
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
status
Not provided
Missing description. Explain what this value means and how to supply it.
created_gte
Unix timestamp — return only subscriptions created at or after this time
Clear enough to supply this argument.
created_lte
Unix timestamp — return only subscriptions created at or before this time
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
starting_after
Cursor for forward pagination
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
max_records
Maximum number of subscriptions to export (1-1000)
Clear enough to supply this argument.
_item_request_id
A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "stripe_export_subscriptions",
"title": "Export Stripe subscriptions",
"description": "Fetch up to 1,000 Stripe subscriptions matching the filters and save them as new TSV files in your Item MCP workspace. Returns the file paths and row count; existing files are not changed.\n\nRuns as the signed-in Item user and takes effect when called; Item does not add a separate confirmation step. _item_request_id is a UUID that makes retries safe: reusing it returns the original result instead of repeating the action.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"_item_request_id"
],
"properties": {
"status": {
"enum": [
"active",
"past_due",
"unpaid",
"canceled",
"incomplete",
"incomplete_expired",
"trialing",
"all"
],
"type": "string"
},
"customer": {
"type": "string",
"description": "Filter by customer ID"
},
"created_gte": {
"type": "number",
"description": "Unix timestamp — return only subscriptions created at or after this time"
},
"created_lte": {
"type": "number",
"description": "Unix timestamp — return only subscriptions created at or before this time"
},
"max_records": {
"type": "number",
"default": 500,
"maximum": 1000,
"minimum": 1,
"description": "Maximum number of subscriptions to export (1-1000)"
},
"starting_after": {
"type": "string",
"description": "Cursor for forward pagination"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "A fresh UUID for this action, reused unchanged on retries. Reusing it with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Export Stripe subscriptions",
"readOnlyHint": false,
"openWorldHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description93/100
Read an Item guide by topic: building Skills (instructions, triggers, actions, connectors and examples), where things are in the Item app, and the safe-HTML email kit. The skill-authoring topic also lists the trigger types, action types, connector events and integrations available to you now. Without a topic it lists the topics. Long topics are returned in pages; nothing is changed.
The description explains the capability, when to use it, and what to expect.
Inputs63/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
topic
Guide topic. Omit to list the topics.
skill-authoring: Start here for Skills: how instructions, actions and triggers fit together, plus the trigger types, action types, connector events and integrations available to you now.
skill-writing-instructions: How to write Skill instructions and action writing guidance, with patterns and examples.
skill-triggers: Configuration for every Skill trigger type, such as time_based, new_email, form_submission, people_search, record_saved and connector_event.
skill-actions: Configuration for built-in Skill actions: email, LinkedIn, CRM, calendar, tasks, notifications and web research.
skill-connectors: Connector events and actions for Skills: Linear, Loops, Mailchimp, Stripe, Monk, LinkedIn and Slack.
skill-built-in-tools: Tools every Skill can use while it runs without adding them as actions, such as search, CRM updates and waiting.
skill-examples: Complete Skills based on production workflows, with their triggers, actions and instructions.
product-guide: Where things are in the Item app: page and settings paths, and step-by-step how-tos for common workflows.
email-authoring: The safe-HTML email kit: validation rules, the Item email design, review checklist and reusable HTML components.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
offset
Character offset to continue a long topic from, taken from next_offset.
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_item_guide",
"title": "Get Item guide",
"description": "Read an Item guide by topic: building Skills (instructions, triggers, actions, connectors and examples), where things are in the Item app, and the safe-HTML email kit. The skill-authoring topic also lists the trigger types, action types, connector events and integrations available to you now. Without a topic it lists the topics. Long topics are returned in pages; nothing is changed.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {
"topic": {
"enum": [
"skill-authoring",
"skill-writing-instructions",
"skill-triggers",
"skill-actions",
"skill-connectors",
"skill-built-in-tools",
"skill-examples",
"product-guide",
"email-authoring"
],
"type": "string",
"description": "Guide topic. Omit to list the topics.\nskill-authoring: Start here for Skills: how instructions, actions and triggers fit together, plus the trigger types, action types, connector events and integrations available to you now.\nskill-writing-instructions: How to write Skill instructions and action writing guidance, with patterns and examples.\nskill-triggers: Configuration for every Skill trigger type, such as time_based, new_email, form_submission, people_search, record_saved and connector_event.\nskill-actions: Configuration for built-in Skill actions: email, LinkedIn, CRM, calendar, tasks, notifications and web research.\nskill-connectors: Connector events and actions for Skills: Linear, Loops, Mailchimp, Stripe, Monk, LinkedIn and Slack.\nskill-built-in-tools: Tools every Skill can use while it runs without adding them as actions, such as search, CRM updates and waiting.\nskill-examples: Complete Skills based on production workflows, with their triggers, actions and instructions.\nproduct-guide: Where things are in the Item app: page and settings paths, and step-by-step how-tos for common workflows.\nemail-authoring: The safe-HTML email kit: validation rules, the Item email design, review checklist and reusable HTML components."
},
"offset": {
"type": "integer",
"minimum": 0,
"description": "Character offset to continue a long topic from, taken from next_offset."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Get Item guide",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description88/100
Ask the Item assistant a natural-language question in read-only mode. Prefer this tool for complex requests that require analysis, multi-step reasoning, synthesis across object types, emails, meetings, meeting recordings, timelines, or a large number of CRM objects. Use the direct structured tools only for simple deterministic lookups or explicit internal Item mutations. Thread continuity is important: if a previous ask_item_assistant response returned thread_id, always pass the most recent thread_id on every follow-up so the Item assistant can continue the same conversation. Omit thread_id only when intentionally starting a brand-new Item assistant thread.
The description explains the capability, when to use it, and what to expect.
Inputs88/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
message
User message for the Item assistant.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
thread_id
Existing Item assistant thread ID to continue. If any previous ask_item_assistant call in this MCP conversation returned a thread_id, always pass the most recent thread_id on follow-up calls. Omit only when intentionally starting a brand-new Item assistant thread.
Clear enough to supply this argument.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "ask_item_assistant",
"title": "Ask Item assistant",
"description": "Ask the Item assistant a natural-language question in read-only mode. Prefer this tool for complex requests that require analysis, multi-step reasoning, synthesis across object types, emails, meetings, meeting recordings, timelines, or a large number of CRM objects. Use the direct structured tools only for simple deterministic lookups or explicit internal Item mutations. Thread continuity is important: if a previous ask_item_assistant response returned thread_id, always pass the most recent thread_id on every follow-up so the Item assistant can continue the same conversation. Omit thread_id only when intentionally starting a brand-new Item assistant thread.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"message"
],
"properties": {
"message": {
"type": "string",
"minLength": 1,
"description": "User message for the Item assistant."
},
"thread_id": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
"description": "Existing Item assistant thread ID to continue. If any previous ask_item_assistant call in this MCP conversation returned a thread_id, always pass the most recent thread_id on follow-up calls. Omit only when intentionally starting a brand-new Item assistant thread."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Ask Item assistant",
"readOnlyHint": true,
"openWorldHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description91/100
Fetch one item CRM object by object_slug and object_id. Returns the same object shape as search_objects. Contacts and companies also include system_fields: readable System Field metadata (timestamps, counts, generalized labels) such as last email, last/next meeting, and last phone call. Answer value-only questions from it; it never contains content.
The description explains the capability, when to use it, and what to expect.
Inputs57/100
Explain the meaning of this value, not just its name.
object_slug
Object type slug.
Explain the meaning of this value, not just its name.
object_id
Object ID.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description77/100
List active system and custom object types available to this item organization. Call this tool before searching for objects to get the list of available object types.
Describe the returned information so the agent knows whether it will answer the request.
Inputs100/100
This tool declares no inputs, so argument descriptions are not needed.
No input fields.
Annotations75/100
Declare idempotentHint based on the tool’s actual behavior.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "list_object_types",
"title": "List object types",
"description": "List active system and custom object types available to this item organization. Call this tool before searching for objects to get the list of available object types.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {},
"additionalProperties": false
},
"annotations": {
"title": "List object types",
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}
}
ask_item_assistantsearch_objectsget_objectlist_object_typesget_object_schemacreate_objectupdate_objectdelete_objectlist_viewsexecute_viewlist_listsget_list+10 more
item-brain setup, tools, quality score, publishing readiness, and alternatives.
How do I add item-brain to Claude, ChatGPT, or Cursor?
Add item-brain to Claude, ChatGPT, or Cursor by connecting its remote MCP URL in each client's MCP settings. In Claude, add a custom connector. In ChatGPT, add an MCP app. In Cursor, add an MCP server under Settings. The MCP URL is https://mcp.item.app/mcp. This server requires OAuth, so complete the login prompt after you connect.
Is item-brain MCP ready for ChatGPT and Claude?
As of October 26, 2026, item-brain scores 96/100 on Manufact's MCP publishing checklist. The scan meets ChatGPT publishing checks and meets Claude publishing checks. Passing these checks does not guarantee marketplace approval.
How clear is item-brain's MCP tool documentation?
As of October 26, 2026, item-brain scores 75/100 in Manufact's review of tool titles, descriptions, input and output schemas, and behavior annotations. The review covers 218 of 218 discovered tools. The quality score measures documentation clarity; runtime behavior and marketplace readiness require separate checks.
What tools does the item-brain MCP server provide?
item-brain lists 22 MCP tools, including ask_item_assistant, search_objects, get_object, list_object_types, get_object_schema, create_object, update_object, delete_object, list_views, execute_view, list_lists, and get_list.
What are the best alternatives to item-brain?
As of October 26, 2026, alternatives to item-brain in productivity on the Manufact MCP leaderboard include Turkish Airlines, Notion MCP, FidelicAI: Hire AI Agents, Linear, and Checkatrade.
Does item-brain MCP require authentication?
item-brain requires authentication. Connect it in Claude, ChatGPT, or Cursor and complete the OAuth login prompt.
How can item-brain improve its MCP documentation?
get_item_recording_status_for_calendar_event is the lowest-scoring reviewed tool at 48/100. 0 of 1 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values. Open its review for feedback and a copyable fix prompt, then rerun the documentation review after updating your tool metadata.
Who develops item-brain?
item-brain is developed by item. It is listed as partner on the Claude connector directory.
Not your MCP?
Review any public or OAuth MCP server for protocol compatibility, tool documentation, and ChatGPT and Claude publishing readiness. No account required.