LeaderboardBack to leaderboard — loading return destination
Opening report…
Loading report overview
M
MCP server
server.example.com/mcp
Tools and resources for your MCP client, with a public quality report and detailed checks.
Protocol
MCP 2025-11-25
Server version
1.0.0
Website
server.example.com
Supports
Tools · Resources
Overall score
90 /100
How is this score calculated?
Server metadata
Loading server metadata
Reviewed90/100
Discoverability
Loading discoverability
Reviewed90/100
Protocol
Loading protocol
Reviewed90/100
Tools
Loading tools
Reviewed90/100
MCP Apps
Loading mcp apps
Reviewed90/100
Tool documentation quality
Loading tool documentation quality
Reviewed90/100
LeaderboardBack to leaderboard — loading return destination
I
item
mcp.item.app/mcp
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 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
4/6 passed4 of 6 passed67/100
Client listings and public setup information.
mcp.json or server-card.json
Either mcp.json or an MCP Server Card declaring this endpoint passes.
The MCP Server Card declares this server's exact endpoint.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
Check an HTML email for markup, security, email-client compatibility and layout problems, and render it at mobile (390px) and desktop (734px) widths. Returns pass/fail with the problems found per check, the preview images, an optional reference image, and the HTML SHA-256. Nothing is sent or saved.
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.
subject
Subject line of the email being checked.
Clear enough to supply this argument.
referenceImageFilePath
Optional workspace path of a PNG or JPEG design reference (up to 4 MB). It is returned next to both rendered previews for visual comparison only; it is not compared automatically.
Clear enough to supply this argument.
html
Complete HTML document to check, exactly as it will be sent. Supply either this or htmlFilePath, not both.
Clear enough to supply this argument.
htmlFilePath
Workspace path of an .html file under data/ to check, for example data/welcome.html (readable with read_workspace_file). Supply either this or html, not both.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "validate_html_email",
"title": "Check HTML email",
"description": "Check an HTML email for markup, security, email-client compatibility and layout problems, and render it at mobile (390px) and desktop (734px) widths. Returns pass/fail with the problems found per check, the preview images, an optional reference image, and the HTML SHA-256. Nothing is sent or saved.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"subject"
],
"properties": {
"html": {
"type": "string",
"maxLength": 90000,
"minLength": 1,
"description": "Complete HTML document to check, exactly as it will be sent. Supply either this or htmlFilePath, not both."
},
"subject": {
"type": "string",
"pattern": "^[^\\r\\n]+$",
"maxLength": 150,
"minLength": 1,
"description": "Subject line of the email being checked."
},
"htmlFilePath": {
"type": "string",
"pattern": "^data\\/[a-zA-Z0-9_-]+\\.html$",
"description": "Workspace path of an .html file under data/ to check, for example data/welcome.html (readable with read_workspace_file). Supply either this or html, not both."
},
"referenceImageFilePath": {
"type": "string",
"pattern": "^(?:data|uploads|docs)\\/(?:[a-zA-Z0-9_-]+\\/)*[a-zA-Z0-9_-]+\\.(?:png|jpe?g)$",
"description": "Optional workspace path of a PNG or JPEG design reference (up to 4 MB). It is returned next to both rendered previews for visual comparison only; it is not compared automatically."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Check HTML email",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
List the custom activity types defined in this item workspace. Returns activityTypes with each type's ID and name, sorted by name (up to 500; deleted types excluded). Built-in types phone_call, text_message, site_visit and meeting are not listed but can be used when logging activities.
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 output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "list_activity_types",
"title": "List activity types",
"description": "List the custom activity types defined in this item workspace. Returns activityTypes with each type's ID and name, sorted by name (up to 500; deleted types excluded). Built-in types phone_call, text_message, site_visit and meeting are not listed but can be used when logging activities.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {},
"additionalProperties": false
},
"annotations": {
"title": "List activity types",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Add a custom activity type to this workspace for future activities; it does not log an activity. Workspace admins only. Names are unique regardless of case and cannot reuse a built-in name such as Meeting or Phone call; reusing a deleted type's name restores that type. Returns the type's ID and name.
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.
name
Display name of the new activity type, as it should appear in activity choices.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
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; it does not log an activity. Workspace admins only. Names are unique regardless of case and cannot reuse a built-in name such as Meeting or Phone call; reusing a deleted type's name restores that type. Returns the type's ID and name.\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,
"description": "Display name of the new activity type, as it should appear in activity choices."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Create activity type",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description100/100
Remove a custom activity type from future activity choices. Existing activities keep their labels; built-in types cannot be deleted. Workspace admins only. Returns the removed type's ID and name.
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.
activityTypeId
ID of the custom activity type, from list_activity_types.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
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. Returns the removed type's ID and name.\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",
"description": "ID of the custom activity type, from list_activity_types."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Delete activity type",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Find forms in this workspace whose title contains the query (case-insensitive); without a query, list all forms. Returns up to 100 forms, newest first, each with ID, title, description, published status (isActive), owner ID and edit link path, plus hasMore when more forms matched.
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.
query
Text matched anywhere in the form title, ignoring case. Omit to list the newest forms.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "search_forms",
"title": "Search forms",
"description": "Find forms in this workspace whose title contains the query (case-insensitive); without a query, list all forms. Returns up to 100 forms, newest first, each with ID, title, description, published status (isActive), owner ID and edit link path, plus hasMore when more forms matched.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {
"query": {
"type": "string",
"maxLength": 200,
"description": "Text matched anywhere in the form title, ignoring case. Omit to list the newest forms."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Search forms",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
Read one form's settings and its ordered live questions, including field IDs, types, labels, required state and choice IDs. Returns the full form record (title, status, owner, email collection, redirect, appearance and layout), its fields in display order, and the form's public, embed, edit and settings link paths.
The description explains the capability, when to use it, and what to expect.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_form",
"title": "Get form",
"description": "Read one form's settings and its ordered live questions, including field IDs, types, labels, required state and choice IDs. Returns the full form record (title, status, owner, email collection, redirect, appearance and layout), its fields in display order, and the form's public, embed, edit and settings link paths.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"formId"
],
"properties": {
"formId": {
"type": "string",
"format": "uuid",
"description": "Form ID from search_forms or create_form"
}
},
"additionalProperties": false
},
"annotations": {
"title": "Get form",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
List the website origins allowed to embed this workspace's forms. The list is workspace-wide and applies to every form; the form ID is only checked to exist. Returns origins with each origin's numeric ID and URL, oldest first.
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
Any form ID in this workspace, from search_forms or list_forms. It is only checked to exist; embed domains apply to every form.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "list_form_embed_origins",
"title": "List form embed domains",
"description": "List the website origins allowed to embed this workspace's forms. The list is workspace-wide and applies to every form; the form ID is only checked to exist. Returns origins with each origin's numeric ID and URL, oldest first.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"formId"
],
"properties": {
"formId": {
"type": "string",
"format": "uuid",
"description": "Any form ID in this workspace, from search_forms or list_forms. It is only checked to exist; embed domains apply to every form."
}
},
"additionalProperties": false
},
"annotations": {
"title": "List form embed domains",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
Allow one website origin to embed every form in this workspace. The input is reduced to its scheme and host, with https:// added when missing; if that origin is already allowed, nothing changes. Returns the allowed origin's numeric ID and URL.
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
Any form ID in this workspace, from search_forms or list_forms. It is only checked to exist; embed domains apply to every form.
Clear enough to supply this argument.
origin
Website origin to allow, such as https://www.example.com. A bare domain gets https://, and any path or query is dropped.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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. The input is reduced to its scheme and host, with https:// added when missing; if that origin is already allowed, nothing changes. Returns the allowed origin's numeric ID and URL.\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": "Any form ID in this workspace, from search_forms or list_forms. It is only checked to exist; embed domains apply to every form."
},
"origin": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "Website origin to allow, such as https://www.example.com. A bare domain gets https://, and any path or query is dropped."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Allow form embed domain",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Stop one website origin from embedding this workspace's forms; the change applies to every form. Returns the removed origin's ID.
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
Any form ID in this workspace, from search_forms or list_forms. It is only checked to exist; embed domains apply to every form.
Clear enough to supply this argument.
originId
Numeric ID of the allowed origin, from list_form_embed_origins (origins[].id).
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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; the change applies to every form. Returns the removed origin's ID.\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": "Any form ID in this workspace, from search_forms or list_forms. It is only checked to exist; embed domains apply to every form."
},
"originId": {
"type": "integer",
"description": "Numeric ID of the allowed origin, from list_form_embed_origins (origins[].id).",
"exclusiveMinimum": 0
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Remove form embed domain",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description94/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.
Inputs94/100
Explain what happens when this optional value is omitted.
title
Form title shown to respondents.
Clear enough to supply this argument.
description
Optional text shown under the title on the form.
Explain what happens when this optional value is omitted.
ownerId
User ID of the teammate who owns the form, from get_workspace_context (org_users). Omit to make yourself the owner.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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,
"description": "Form title shown to respondents."
},
"ownerId": {
"type": "string",
"format": "uuid",
"description": "User ID of the teammate who owns the form, from get_workspace_context (org_users). Omit to make yourself the owner."
},
"description": {
"type": "string",
"maxLength": 5000,
"description": "Optional text shown under the title on the form."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Create form",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
Change only the requested settings of a form: title, description, owner, email collection, contact enrichment after submission, completion redirect or logo removal. Omitted settings stay unchanged, and each setting can appear once. Turning email collection off also turns off enrichment and archives the required email question; turning it on restores it. Adding a logo is not supported. Returns the updated form record.
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.
Inputs95/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
formId
Form ID from search_forms or create_form
Clear enough to supply this argument.
changes › items › anyOf › 0 › setting
Changes the form title.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
changes › items › anyOf › 0 › value
New form title shown to respondents.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
changes › items › anyOf › 1 › setting
Changes the text shown under the form title.
Clear enough to supply this argument.
changes › items › anyOf › 1 › value
New description text, or null to remove the description.
Clear enough to supply this argument.
changes › items › anyOf › 2 › setting
Transfers ownership of the form to another teammate.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
changes › items › anyOf › 2 › value
User ID of the new owner, a workspace member from get_workspace_context (org_users).
Clear enough to supply this argument.
changes › items › anyOf › 3 › setting
Turns collection of respondents' email addresses on or off.
Clear enough to supply this argument.
changes › items › anyOf › 3 › value
true restores the required email question; false archives it and also turns off contact enrichment.
Clear enough to supply this argument.
changes › items › anyOf › 4 › setting
Turns contact enrichment after each submission on or off.
Clear enough to supply this argument.
changes › items › anyOf › 4 › value
true enriches the submitting contact after each submission; requires email collection to be on.
Clear enough to supply this argument.
changes › items › anyOf › 5 › setting
Sets the page respondents are sent to after submitting.
Clear enough to supply this argument.
changes › items › anyOf › 5 › value
Full http(s) URL, or null to disable the redirect
Clear enough to supply this argument.
changes › items › anyOf › 6 › setting
Removes the form's uploaded logo.
Clear enough to supply this argument.
changes › items › anyOf › 6 › value
Set to true to remove the logo; adding a logo is not supported here.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "update_form",
"title": "Update form settings",
"description": "Change only the requested settings of a form: title, description, owner, email collection, contact enrichment after submission, completion redirect or logo removal. Omitted settings stay unchanged, and each setting can appear once. Turning email collection off also turns off enrichment and archives the required email question; turning it on restores it. Adding a logo is not supported. Returns the updated form record.\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",
"changes",
"_item_request_id"
],
"properties": {
"formId": {
"type": "string",
"format": "uuid",
"description": "Form ID from search_forms or create_form"
},
"changes": {
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"required": [
"setting",
"value"
],
"properties": {
"value": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "New form title shown to respondents."
},
"setting": {
"type": "string",
"const": "title",
"description": "Changes the form title."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"setting",
"value"
],
"properties": {
"value": {
"anyOf": [
{
"type": "string",
"maxLength": 5000
},
{
"type": "null"
}
],
"description": "New description text, or null to remove the description."
},
"setting": {
"type": "string",
"const": "description",
"description": "Changes the text shown under the form title."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"setting",
"value"
],
"properties": {
"value": {
"type": "string",
"format": "uuid",
"description": "User ID of the new owner, a workspace member from get_workspace_context (org_users)."
},
"setting": {
"type": "string",
"const": "ownerId",
"description": "Transfers ownership of the form to another teammate."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"setting",
"value"
],
"properties": {
"value": {
"type": "boolean",
"description": "true restores the required email question; false archives it and also turns off contact enrichment."
},
"setting": {
"type": "string",
"const": "emailCollection",
"description": "Turns collection of respondents' email addresses on or off."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"setting",
"value"
],
"properties": {
"value": {
"type": "boolean",
"description": "true enriches the submitting contact after each submission; requires email collection to be on."
},
"setting": {
"type": "string",
"const": "enrichContact",
"description": "Turns contact enrichment after each submission on or off."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"setting",
"value"
],
"properties": {
"value": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"type": "null"
}
],
"description": "Full http(s) URL, or null to disable the redirect"
},
"setting": {
"type": "string",
"const": "customRedirect",
"description": "Sets the page respondents are sent to after submitting."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"setting",
"value"
],
"properties": {
"value": {
"type": "boolean",
"const": true,
"description": "Set to true to remove the logo; adding a logo is not supported here."
},
"setting": {
"type": "string",
"const": "removeLogo",
"description": "Removes the form's uploaded logo."
}
},
"additionalProperties": false
}
]
},
"maxItems": 7,
"minItems": 1,
"description": "Include only settings the user explicitly asked to change."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Update form settings",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Change a form's appearance: background, text, border, icon and button colors, title and body typefaces, and container padding, or reset all of them to item defaults. Text color needs at least 4.5:1 contrast against the background (white by default). Fails if the form changed while saving. Returns the updated form record.
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
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
formId
Form ID from search_forms or create_form
Clear enough to supply this argument.
changes › items › anyOf › 0 › setting
Changes the form's background color.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
changes › items › anyOf › 0 › value
Background color, or null to restore the item default (white).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
changes › items › anyOf › 1 › setting
Changes the color of the form's text.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
changes › items › anyOf › 1 › value
Text color, or null to restore the item default. Needs at least 4.5:1 contrast against the background.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
changes › items › anyOf › 2 › setting
Changes the border and focus color of input controls.
Clear enough to supply this argument.
changes › items › anyOf › 2 › value
Color of input borders and focus rings, or null to restore the item default.
Clear enough to supply this argument.
changes › items › anyOf › 3 › setting
Changes the color of icons inside input controls.
Clear enough to supply this argument.
changes › items › anyOf › 3 › value
Color of control icons, or null to restore the item default.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
changes › items › anyOf › 4 › setting
Changes the submit button color; its label color is picked automatically for contrast.
Clear enough to supply this argument.
changes › items › anyOf › 4 › value
Color of the submit button, or null to restore the item default.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
changes › items › anyOf › 5 › setting
Changes the typeface of questions and body text.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
changes › items › anyOf › 5 › value
Typeface for questions and body text; georgia and nanum_myeongjo are serif, manrope and arial sans-serif. Null restores the item default.
Clear enough to supply this argument.
changes › items › anyOf › 6 › setting
Changes the typeface of the form title.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
changes › items › anyOf › 6 › value
Typeface for the form title; georgia and nanum_myeongjo are serif, manrope and arial sans-serif. Null restores the item default.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
changes › items › anyOf › 7 › setting
Changes the padding inside the form container.
Clear enough to supply this argument.
changes › items › anyOf › 7 › value
Inner padding of the form container in pixels, or null for the item default.
Clear enough to supply this argument.
changes › items › anyOf › 8 › setting
Clears every appearance override; it has to be the only change in the call.
Clear enough to supply this argument.
changes › items › anyOf › 8 › value
Set to true to reset all appearance settings to item defaults.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "update_form_appearance",
"title": "Update form appearance",
"description": "Change a form's appearance: background, text, border, icon and button colors, title and body typefaces, and container padding, or reset all of them to item defaults. Text color needs at least 4.5:1 contrast against the background (white by default). Fails if the form changed while saving. Returns the updated form record.\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",
"changes",
"_item_request_id"
],
"properties": {
"formId": {
"type": "string",
"format": "uuid",
"description": "Form ID from search_forms or create_form"
},
"changes": {
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"required": [
"setting",
"value"
],
"properties": {
"value": {
"anyOf": [
{
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
{
"type": "null"
}
],
"description": "Background color, or null to restore the item default (white)."
},
"setting": {
"type": "string",
"const": "backgroundColor",
"description": "Changes the form's background color."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"setting",
"value"
],
"properties": {
"value": {
"anyOf": [
{
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
{
"type": "null"
}
],
"description": "Text color, or null to restore the item default. Needs at least 4.5:1 contrast against the background."
},
"setting": {
"type": "string",
"const": "textColor",
"description": "Changes the color of the form's text."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"setting",
"value"
],
"properties": {
"value": {
"anyOf": [
{
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
{
"type": "null"
}
],
"description": "Color of input borders and focus rings, or null to restore the item default."
},
"setting": {
"type": "string",
"const": "borderColor",
"description": "Changes the border and focus color of input controls."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"setting",
"value"
],
"properties": {
"value": {
"anyOf": [
{
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
{
"type": "null"
}
],
"description": "Color of control icons, or null to restore the item default."
},
"setting": {
"type": "string",
"const": "iconColor",
"description": "Changes the color of icons inside input controls."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"setting",
"value"
],
"properties": {
"value": {
"anyOf": [
{
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
{
"type": "null"
}
],
"description": "Color of the submit button, or null to restore the item default."
},
"setting": {
"type": "string",
"const": "buttonColor",
"description": "Changes the submit button color; its label color is picked automatically for contrast."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"setting",
"value"
],
"properties": {
"value": {
"anyOf": [
{
"enum": [
"manrope",
"arial",
"georgia",
"nanum_myeongjo"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Typeface for questions and body text; georgia and nanum_myeongjo are serif, manrope and arial sans-serif. Null restores the item default."
},
"setting": {
"type": "string",
"const": "bodyFont",
"description": "Changes the typeface of questions and body text."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"setting",
"value"
],
"properties": {
"value": {
"anyOf": [
{
"enum": [
"manrope",
"arial",
"georgia",
"nanum_myeongjo"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Typeface for the form title; georgia and nanum_myeongjo are serif, manrope and arial sans-serif. Null restores the item default."
},
"setting": {
"type": "string",
"const": "headingFont",
"description": "Changes the typeface of the form title."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"setting",
"value"
],
"properties": {
"value": {
"anyOf": [
{
"type": "integer",
"maximum": 32,
"minimum": 0
},
{
"type": "null"
}
],
"description": "Inner padding of the form container in pixels, or null for the item default."
},
"setting": {
"type": "string",
"const": "containerPadding",
"description": "Changes the padding inside the form container."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"setting",
"value"
],
"properties": {
"value": {
"type": "boolean",
"const": true,
"description": "Set to true to reset all appearance settings to item defaults."
},
"setting": {
"type": "string",
"const": "useItemDefaults",
"description": "Clears every appearance override; it has to be the only change in the call."
}
},
"additionalProperties": false
}
]
},
"maxItems": 8,
"minItems": 1,
"description": "Include only requested appearance settings. Use a single useItemDefaults change to clear every override."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Update form appearance",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Show or hide a form's title and description above its questions on embedded pages. This per-form setting does not change the allowed embed domains. Returns the updated form record.
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.
formId
Form ID from search_forms or create_form
Clear enough to supply this argument.
showTitleAndDescription
true shows the form's title and description above the questions on embedded pages; false hides them.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
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 above its questions on embedded pages. This per-form setting does not change the allowed embed domains. Returns the updated form record.\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": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
},
"showTitleAndDescription": {
"type": "boolean",
"description": "true shows the form's title and description above the questions on embedded pages; false hides them."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Set form embed display",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Publish a form so anyone with its link can submit it, or pause it to stop new submissions. Returns the updated form record and its public link path.
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.
isActive
true publishes the form so anyone with its link can submit; false pauses new submissions.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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. Returns the updated form record and its public link path.\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",
"description": "true publishes the form so anyone with its link can submit; false pauses new submissions."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Publish or pause form",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Delete a form from this workspace. Its existing submissions remain stored. Returns the deleted form's ID.
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.
formId
Form ID from search_forms or create_form
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
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 from this workspace. Its existing submissions remain stored. Returns the deleted form's ID.\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": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Delete form",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
Add a question to the end of a form. Only single-select and multi-select questions take choices; a select question created without choices gets one placeholder choice, Option 1. New questions are optional with their description hidden unless set. Returns the created field record, including its ID.
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
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
label
Question text shown to respondents.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
placeholder
Hint text shown inside the empty input, or null for none.
Clear enough to supply this argument.
description
Help text for the question, or null for none. Shown only when showDescription is true.
Clear enough to supply this argument.
showDescription
Whether respondents see the description. Omitted means hidden.
Clear enough to supply this argument.
isRequired
Whether an answer is required to submit. Omitted means optional.
Clear enough to supply this argument.
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
Choice text shown to respondents.
Clear enough to supply this argument.
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
Answer type: short_answer is one line of text (use for names), long_answer is multi-line text, single_select allows one choice, multi_select several; the others validate an email, number, web address, date, time, currency amount or phone number.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "create_form_field",
"title": "Add form question",
"description": "Add a question to the end of a form. Only single-select and multi-select questions take choices; a select question created without choices gets one placeholder choice, Option 1. New questions are optional with their description hidden unless set. Returns the created field record, including its ID.\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": [
"label",
"formId",
"fieldType",
"_item_request_id"
],
"properties": {
"label": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "Question text shown to respondents."
},
"formId": {
"type": "string",
"format": "uuid",
"description": "Form ID from search_forms or create_form"
},
"display": {
"anyOf": [
{
"enum": [
"radio",
"dropdown"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "For single_select only: radio buttons or a dropdown when explicitly requested; otherwise set null"
},
"options": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"required": [
"label"
],
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "Existing option ID from get_form; omit for a new option"
},
"label": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "Choice text shown to respondents."
},
"selected": {
"type": "boolean",
"description": "Whether this choice is selected by default"
}
},
"additionalProperties": false
},
"maxItems": 100,
"minItems": 1
},
{
"type": "null"
}
],
"description": "Choice list for single_select or multi_select. For every other field type, set options to null; never add placeholder choices. Replacing a choice list removes omitted choices."
},
"fieldType": {
"enum": [
"email",
"number",
"url",
"date",
"time",
"currency",
"single_select",
"multi_select",
"phone",
"long_answer",
"short_answer"
],
"type": "string",
"description": "Answer type: short_answer is one line of text (use for names), long_answer is multi-line text, single_select allows one choice, multi_select several; the others validate an email, number, web address, date, time, currency amount or phone number."
},
"isRequired": {
"type": "boolean",
"description": "Whether an answer is required to submit. Omitted means optional."
},
"description": {
"anyOf": [
{
"type": "string",
"maxLength": 5000
},
{
"type": "null"
}
],
"description": "Help text for the question, or null for none. Shown only when showDescription is true."
},
"placeholder": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
],
"description": "Hint text shown inside the empty input, or null for none."
},
"showDescription": {
"type": "boolean",
"description": "Whether respondents see the description. Omitted means hidden."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Add form question",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Change only the requested settings of a form question: label, placeholder, description, description visibility, required state, choices or single-select display. Omitted settings stay unchanged. The required email question cannot be made optional. Replacing choices removes any left out; include existing choice IDs to keep them. Returns the updated field record.
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
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
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
Changes the question text.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
changes › items › anyOf › 0 › value
New question text shown to respondents.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
changes › items › anyOf › 1 › setting
Changes the hint shown inside the empty input.
Clear enough to supply this argument.
changes › items › anyOf › 1 › value
New placeholder text, or null to remove it.
Clear enough to supply this argument.
changes › items › anyOf › 2 › setting
Changes the question's help text.
Clear enough to supply this argument.
changes › items › anyOf › 2 › value
New help text, or null to remove it. Shown only when showDescription is true.
Clear enough to supply this argument.
changes › items › anyOf › 3 › setting
Shows or hides the question's help text.
Clear enough to supply this argument.
changes › items › anyOf › 3 › value
true shows the description to respondents; false hides it.
Clear enough to supply this argument.
changes › items › anyOf › 4 › setting
Makes the question required or optional.
Clear enough to supply this argument.
changes › items › anyOf › 4 › value
true requires an answer; false makes it optional. The email question cannot be made optional.
Clear enough to supply this argument.
changes › items › anyOf › 5 › setting
Changes how a single-select question shows its choices; other types reject it.
Clear enough to supply this argument.
changes › items › anyOf › 5 › value
radio lists every choice as a button; dropdown shows a menu.
Clear enough to supply this argument.
changes › items › anyOf › 6 › setting
Replaces the choices of a single-select or multi-select question.
Clear enough to supply this argument.
changes › items › anyOf › 6 › value › items › id
Existing option ID from get_form; omit for a new option
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
Remove a question from a form. The required email question cannot be removed while email collection is on. Returns the removed field's ID and the form ID.
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.
fieldId
Field ID from get_form or create_form_field
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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. Returns the removed field's ID and the form ID.\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": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Delete form question",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Copy a form question and its settings, including choices, to the end of the same form. The required email question cannot be duplicated. Returns the new field record, including its ID.
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.
fieldId
Field ID from get_form or create_form_field
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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, including choices, to the end of the same form. The required email question cannot be duplicated. Returns the new field record, including its ID.\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": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Duplicate form question",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Set the complete display order of a form's questions by listing every live question ID exactly once. The email question stays first. Returns the form ID and the field IDs in their new 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.
Inputs92/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
formId
Form ID from search_forms or create_form
Clear enough to supply this argument.
fieldIds
Every live field ID on the form exactly once, in the new order, from get_form (fields[].id). The email question's ID goes first.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 by listing every live question ID exactly once. The email question stays first. Returns the form ID and the field IDs in their new 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": [
"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,
"description": "Every live field ID on the form exactly once, in the new order, from get_form (fields[].id). The email question's ID goes first."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Reorder form questions",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description94/100
Look up a person in external data providers, optionally starting from an existing contact’s email, LinkedIn URL and name, and return candidate profiles found: emails, phone, LinkedIn URL, name, title, company, location, headline, employment and education history, skills and social handles. Nothing is saved to item; a separate create or update saves it. Uses enrichment credits on each 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.
Inputs99/100
Input documentation gives an agent enough context to populate the arguments.
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
item contact ID, from search_objects or get_object. Its stored email, LinkedIn URL and name seed the lookup; the contact's company is not read, so pass company separately if known.
Clear enough to supply this argument.
email
Email address of the person; overrides or supplements the contact's stored email.
Clear enough to supply this argument.
linkedin_url
LinkedIn profile URL of the person (https://www.linkedin.com/in/…); the strongest identifier for matching.
Clear enough to supply this argument.
name
Person's full name, used for matching and LinkedIn discovery.
Clear enough to supply this argument.
company
Current employer name, used to disambiguate people with similar names.
Clear enough to supply this argument.
context
Free-text hints such as role, location or how you know them; combined with item's email and meeting history for the contact and passed to providers to pick the right person.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 candidate profiles found: emails, phone, LinkedIn URL, name, title, company, location, headline, employment and education history, skills and social handles. Nothing is saved to item; a separate create or update saves it. Uses enrichment credits on each 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": [
"_item_request_id"
],
"properties": {
"name": {
"type": "string",
"description": "Person's full name, used for matching and LinkedIn discovery."
},
"email": {
"type": "string",
"description": "Email address of the person; overrides or supplements the contact's stored email."
},
"company": {
"type": "string",
"description": "Current employer name, used to disambiguate people with similar names."
},
"context": {
"type": "string",
"description": "Free-text hints such as role, location or how you know them; combined with item's email and meeting history for the contact and passed to providers to pick the right person."
},
"contact_id": {
"type": "number",
"description": "item contact ID, from search_objects or get_object. Its stored email, LinkedIn URL and name seed the lookup; the contact's company is not read, so pass company separately if known."
},
"linkedin_url": {
"type": "string",
"description": "LinkedIn profile URL of the person (https://www.linkedin.com/in/…); the strongest identifier for matching."
},
"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": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Enrich contact",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
Look up a company in external data providers, optionally starting from an existing company’s name and website, and return up to 3 matching companies with domain, website, industry, size, founding year, location, description, LinkedIn URL, logo and contact email/phone. Nothing is saved to item; a separate create or update saves it. Uses enrichment credits on each 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.
company_id
item company ID, from search_objects or get_object. Its stored name and website seed the lookup (its stored domain is not read).
Clear enough to supply this argument.
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
Free-text hints such as industry, location or product, passed to providers to pick the right company among similar names.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 up to 3 matching companies with domain, website, industry, size, founding year, location, description, LinkedIn URL, logo and contact email/phone. Nothing is saved to item; a separate create or update saves it. Uses enrichment credits on each 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": [
"_item_request_id"
],
"properties": {
"name": {
"type": "string",
"description": "Company name"
},
"domain": {
"type": "string",
"description": "Company domain (e.g., acme.com)"
},
"context": {
"type": "string",
"description": "Free-text hints such as industry, location or product, passed to providers to pick the right company among similar names."
},
"website": {
"type": "string",
"description": "Company website URL (e.g., https://acme.com)"
},
"company_id": {
"type": "number",
"description": "item company ID, from search_objects or get_object. Its stored name and website seed the lookup (its stored domain is not read)."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Enrich company",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
Return a contact's or company's interaction history in item, such as emails, meetings, LinkedIn messages and logged activities, plus scheduled emails and LinkedIn actions. For a contact, item first refreshes Gmail, Google Calendar, Outlook, Outlook Calendar and Intercom history from connected providers (stored LinkedIn history is not refreshed) and reports failed providers. Companies are not refreshed. Results may be incomplete; an empty result does not prove there was no interaction. Files saved on the record are copied into the workspace at sandboxPath and url is empty for those files. External links keep url.
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.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
contactId
Contact ID from search_objects. Set this or companyId; if both are set, the contact is used.
Clear enough to supply this argument.
companyId
Company ID from search_objects. Used only when contactId is not set; company reviews do not refresh providers.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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": "Return a contact's or company's interaction history in item, such as emails, meetings, LinkedIn messages and logged activities, plus scheduled emails and LinkedIn actions. For a contact, item first refreshes Gmail, Google Calendar, Outlook, Outlook Calendar and Intercom history from connected providers (stored LinkedIn history is not refreshed) and reports failed providers. Companies are not refreshed. Results may be incomplete; an empty result does not prove there was no interaction. Files saved on the record are copied into the workspace at sandboxPath and url is empty for those files. External links keep url.\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": "Company ID from search_objects. Used only when contactId is not set; company reviews do not refresh providers."
},
"contactId": {
"type": "number",
"description": "Contact ID from search_objects. Set this or companyId; if both are set, the contact is used."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Review interactions",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
Read one Skill run's trace by run ID, or the latest run linked to a contact (as trigger contact, a contact the run created, or an email or LinkedIn action it scheduled), optionally within one Skill and a time window. Returns run status, plan, completion summary, error, exit reason, timing, Skill, contact and company, the ordered steps (scheduled email and LinkedIn steps include message content, long bodies truncated) and a link that opens the run in item. A missing or inaccessible run returns not_found.
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.
runId
Run ID, from search_runs_history, query_skill_timeline or list_pending_approvals. Set to null for a contact lookup; do not combine with contactId.
Clear enough to supply this argument.
contactId
Contact ID, from search_objects, to read that contact's latest run: the run it triggered, a run that created it, or one that scheduled an email or LinkedIn action for it. Null for a run ID lookup.
Clear enough to supply this argument.
skillId
Skill ID, from list_skills, to limit a contact lookup to one Skill. Null searches every Skill; ignored for a run ID lookup.
Clear enough to supply this argument.
window › anyOf › 0 › startDate
Earliest run creation time for a contact lookup, ISO 8601 (include a UTC offset for local times). Null leaves it open.
Clear enough to supply this argument.
window › anyOf › 0 › endDate
Latest run creation time for a contact lookup, ISO 8601. A date-only value covers that whole day in UTC. Null leaves it open.
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 one Skill run's trace by run ID, or the latest run linked to a contact (as trigger contact, a contact the run created, or an email or LinkedIn action it scheduled), optionally within one Skill and a time window. Returns run status, plan, completion summary, error, exit reason, timing, Skill, contact and company, the ordered steps (scheduled email and LinkedIn steps include message content, long bodies truncated) and a link that opens the run in item. A missing or inaccessible run returns not_found.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {
"runId": {
"type": [
"string",
"null"
],
"description": "Run ID, from search_runs_history, query_skill_timeline or list_pending_approvals. Set to null for a contact lookup; do not combine with contactId."
},
"window": {
"anyOf": [
{
"type": "object",
"properties": {
"endDate": {
"type": [
"string",
"null"
],
"description": "Latest run creation time for a contact lookup, ISO 8601. A date-only value covers that whole day in UTC. Null leaves it open."
},
"startDate": {
"type": [
"string",
"null"
],
"description": "Earliest run creation time for a contact lookup, ISO 8601 (include a UTC offset for local times). Null leaves it open."
}
},
"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, from list_skills, to limit a contact lookup to one Skill. Null searches every Skill; ignored for a run ID lookup."
},
"contactId": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0
},
{
"type": "null"
}
],
"description": "Contact ID, from search_objects, to read that contact's latest run: the run it triggered, a run that created it, or one that scheduled an email or LinkedIn action for it. Null for a run ID lookup."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Get Skill run trace",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Summarize one Skill's runs over a time window (default: last 14 days). Returns exact status counts and error rate for the whole window, plus exit-reason distribution, recent completion summaries, notable exits, error clusters marked new or recurring, and shifts against a 90-day baseline, each with run IDs and links. Detail lists are sampled from the 100 most recent runs; detailsTruncated says when the window has more.
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.
skillId
Skill ID, from list_skills.
Clear enough to supply this argument.
window › startDate
Earliest run start time, ISO 8601 date or timestamp (include a UTC offset for local times).
Clear enough to supply this argument.
window › endDate
Latest run start time, ISO 8601. A date-only value covers that whole day in UTC.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "query_skill_timeline",
"title": "Get Skill run summary",
"description": "Summarize one Skill's runs over a time window (default: last 14 days). Returns exact status counts and error rate for the whole window, plus exit-reason distribution, recent completion summaries, notable exits, error clusters marked new or recurring, and shifts against a 90-day baseline, each with run IDs and links. Detail lists are sampled from the 100 most recent runs; detailsTruncated says when the window has more.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"skillId"
],
"properties": {
"window": {
"type": "object",
"properties": {
"endDate": {
"type": "string",
"description": "Latest run start time, ISO 8601. A date-only value covers that whole day in UTC."
},
"startDate": {
"type": "string",
"description": "Earliest run start time, ISO 8601 date or timestamp (include a UTC offset for local times)."
}
},
"description": "Run start-time range. Omit for the last 14 days; with only one bound set, the other side stays open.",
"additionalProperties": false
},
"skillId": {
"type": "string",
"minLength": 1,
"description": "Skill ID, from list_skills."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Get Skill run summary",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Search Skill run errors, completion summaries and exit reasons by text, across the workspace or one Skill, optionally filtered by status and start-time window. Returns matching runs newest first (not ranked by relevance) with run and Skill IDs, Skill name, trigger contact name, a snippet, terminal status, how old the run is and a link to open it. At most 25 matches are returned.
The description explains the capability, when to use it, and what to expect.
Inputs93/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
query
Words to find. Matched as English full-text search: words are stemmed and all must appear; phrases, operators and punctuation are not interpreted.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
skillId
Skill ID, from list_skills, to search one Skill. Omit to search every Skill you can access.
Clear enough to supply this argument.
window › startDate
Earliest run start time, ISO 8601 date or timestamp (include a UTC offset for local times). Omit for no lower bound.
Clear enough to supply this argument.
window › endDate
Latest run start time, ISO 8601. A date-only value covers that whole day in UTC. Omit for no upper bound.
Clear enough to supply this argument.
limit
Maximum matches, newest first; 10 when omitted.
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`).
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "search_runs_history",
"title": "Search Skill runs",
"description": "Search Skill run errors, completion summaries and exit reasons by text, across the workspace or one Skill, optionally filtered by status and start-time window. Returns matching runs newest first (not ranked by relevance) with run and Skill IDs, Skill name, trigger contact name, a snippet, terminal status, how old the run is and a link to open it. At most 25 matches are returned.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Maximum matches, newest first; 10 when omitted."
},
"query": {
"type": "string",
"minLength": 1,
"description": "Words to find. Matched as English full-text search: words are stemmed and all must appear; phrases, operators and punctuation are not interpreted."
},
"status": {
"enum": [
"any",
"error",
"exited",
"cancelled",
"finished"
],
"type": "string",
"description": "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`)."
},
"window": {
"type": "object",
"properties": {
"endDate": {
"type": "string",
"description": "Latest run start time, ISO 8601. A date-only value covers that whole day in UTC. Omit for no upper bound."
},
"startDate": {
"type": "string",
"description": "Earliest run start time, ISO 8601 date or timestamp (include a UTC offset for local times). Omit for no lower bound."
}
},
"description": "Optional time window. Translate NL phrases like \"last week\" into ISO8601 before calling.",
"additionalProperties": false
},
"skillId": {
"type": "string",
"description": "Skill ID, from list_skills, to search one Skill. Omit to search every Skill you can access."
},
"excludeRunIds": {
"type": "array",
"items": {
"type": "string"
},
"description": "Run ids to exclude from results. Useful when auto-drilling from `query_skill_timeline` clusters to find additional historical examples."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Search Skill runs",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Count Skill runs grouped by Skill, status, trigger contact or day over a time window (default: last 14 days), optionally for one Skill or status. Returns groups with key, label, run count and latest run time, sorted by count, plus the total runs matching the filters and the window applied. At most 50 groups are returned.
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.
groupBy
How to group runs: skill (labelled with the Skill title), status (raw run status such as succeeded or running), contact (the run's first trigger contact, or Unknown contact) or day (UTC calendar day the run started).
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
Only count runs with this outcome; finished means succeeded. Omit or pass any for every status.
Clear enough to supply this argument.
skillId
Skill ID, from list_skills, to count one Skill's runs, for example per day or per contact.
Clear enough to supply this argument.
limit
Maximum groups, largest counts first; 20 when omitted.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
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, trigger contact or day over a time window (default: last 14 days), optionally for one Skill or status. Returns groups with key, label, run count and latest run time, sorted by count, plus the total runs matching the filters and the window applied. At most 50 groups are returned.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"groupBy"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Maximum groups, largest counts first; 20 when omitted."
},
"status": {
"enum": [
"any",
"error",
"exited",
"cancelled",
"finished"
],
"type": "string",
"description": "Only count runs with this outcome; finished means succeeded. Omit or pass any for every status."
},
"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": "Run start-time range. Omit for the last 14 days; with only one bound set, the other side stays open.",
"additionalProperties": false
},
"groupBy": {
"enum": [
"skill",
"status",
"contact",
"day"
],
"type": "string",
"description": "How to group runs: skill (labelled with the Skill title), status (raw run status such as succeeded or running), contact (the run's first trigger contact, or Unknown contact) or day (UTC calendar day the run started)."
},
"skillId": {
"type": "string",
"description": "Skill ID, from list_skills, to count one Skill's runs, for example per day or per contact."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Count Skill runs",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/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. At least one record has to be linked. Use a built-in type (phone_call, text_message, site_visit, meeting) or the exact name of a custom type. Returns the new activity ID.
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
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
title
Title shown for the activity on the timelines of the linked records.
Clear enough to supply this argument.
description
Notes or body of the activity. Omit for none.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
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
Call length in milliseconds, e.g. 90000 for 1.5 minutes.
Clear enough to supply this argument.
direction
Whether the call or message came in to your team (INBOUND) or went out from it (OUTBOUND).
Clear enough to supply this argument.
outcome
Free-text result of the call, such as Left voicemail.
Clear enough to supply this argument.
status
Call status as free text; item's form uses QUEUED, RINGING, IN_PROGRESS, COMPLETED, BUSY, NO_ANSWER, FAILED or CANCELED.
Clear enough to supply this argument.
from_number
Phone number the call came from, stored as given (no format check).
Clear enough to supply this argument.
to_number
Phone number the call went to, stored as given (no format check).
Clear enough to supply this argument.
channel
Medium of the message: SMS, LinkedIn message, WhatsApp or postal mail.
Clear enough to supply this argument.
ownerUserId
User ID of the teammate who owns the activity, from get_workspace_context (org_users). Omit or null for no owner.
Clear enough to supply this argument.
customObjectIds
IDs of deals or other custom object records to link, from search_objects.
Clear enough to supply this argument.
companyId
Legacy single company ID; prefer companyIds
Clear enough to supply this argument.
companyIds
IDs of companies to link, from search_objects.
Clear enough to supply this argument.
contactIds
IDs of contacts to link, from search_objects. Linking a contact does not link its company.
Clear enough to supply this argument.
date
Activity date in ISO 8601 format
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "create_activity",
"title": "Log activity",
"description": "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. At least one record has to be linked. Use a built-in type (phone_call, text_message, site_visit, meeting) or the exact name of a custom type. Returns the new activity ID.\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",
"activityType",
"date",
"_item_request_id"
],
"properties": {
"date": {
"type": "string",
"format": "date-time",
"description": "Activity date in ISO 8601 format"
},
"title": {
"type": "string",
"maxLength": 500,
"minLength": 1,
"description": "Title shown for the activity on the timelines of the linked records."
},
"companyId": {
"type": "integer",
"description": "Legacy single company ID; prefer companyIds",
"exclusiveMinimum": 0
},
"companyIds": {
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0
},
"maxItems": 100,
"description": "IDs of companies to link, from search_objects."
},
"contactIds": {
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0
},
"maxItems": 100,
"description": "IDs of contacts to link, from search_objects. Linking a contact does not link its company."
},
"properties": {
"type": "object",
"properties": {
"status": {
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
],
"description": "Call status as free text; item's form uses QUEUED, RINGING, IN_PROGRESS, COMPLETED, BUSY, NO_ANSWER, FAILED or CANCELED."
},
"channel": {
"anyOf": [
{
"enum": [
"SMS",
"LINKEDIN_MESSAGE",
"WHATS_APP",
"POSTAL_MAIL"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Medium of the message: SMS, LinkedIn message, WhatsApp or postal mail."
},
"outcome": {
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
],
"description": "Free-text result of the call, such as Left voicemail."
},
"direction": {
"anyOf": [
{
"enum": [
"INBOUND",
"OUTBOUND"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Whether the call or message came in to your team (INBOUND) or went out from it (OUTBOUND)."
},
"to_number": {
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
],
"description": "Phone number the call went to, stored as given (no format check)."
},
"duration_ms": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0
},
{
"type": "null"
}
],
"description": "Call length in milliseconds, e.g. 90000 for 1.5 minutes."
},
"from_number": {
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
],
"description": "Phone number the call came from, stored as given (no format check)."
}
},
"description": "Optional call or message details. item's activity form shows duration, direction, outcome, status and numbers for phone_call, and channel for text messages.",
"additionalProperties": false
},
"description": {
"type": "string",
"maxLength": 100000,
"description": "Notes or body of the activity. Omit for none."
},
"ownerUserId": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"description": "User ID of the teammate who owns the activity, from get_workspace_context (org_users). Omit or null for no owner."
},
"activityType": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Built-in key (phone_call, text_message, site_visit, meeting) or exact custom type name from list_activity_types"
},
"customObjectIds": {
"type": "array",
"items": {
"type": "integer",
"exclusiveMinimum": 0
},
"maxItems": 100,
"description": "IDs of deals or other custom object records to link, from search_objects."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Log activity",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
Create one record of an object type (contact, company, deal or custom object) from a display name and field values. Returns success, id, slug and the saved record. Contacts and companies are find-or-create: an existing match (contacts by email, LinkedIn or name plus company; companies by website domain, LinkedIn or name) is returned and updated with the supplied fields instead of duplicated. Other object types get a new record on each call. To avoid duplicate contacts and companies, search for an existing record before creating, and search again with enriched identifiers such as domain, website, email or LinkedIn URL. Required fields must be supplied; read-only fields are rejected. 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.
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.
objectSlug
Object type slug from list_object_types, such as contacts, companies or deals.
Clear enough to supply this argument.
name
Display name of the record. For contacts and companies it also helps match an existing record.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
fields › items › name
The field_name from get_object_schema, not the display name. Unknown and read-only fields (creator, creation source, stage lifecycle) are rejected; contacts and companies also accept linkedin_url.
Clear enough to supply this argument.
fields › items › value
Value in the field's type: string for text, email, phone and URL; number for number and currency; number or "43.5%" for percentage; true/false for boolean; ISO 8601 date string; option value for select and status; array of option values for multi_select; teammate user ID(s) for user; existing record ID(s) for relationship; address string for location.
Clear enough to supply this argument.
restrictedFieldNames
Names of restricted fields requested by the task that were intentionally omitted. Never include their values.
Clear enough to supply this argument.
profileImageUrl
Public image URL used as a contact's profile picture, such as a LinkedIn photo. Ignored for companies, whose logo is fetched automatically, and for other object types.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. When omitted the call runs once and a repeat is a new action.
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 one record of an object type (contact, company, deal or custom object) from a display name and field values. Returns success, id, slug and the saved record. Contacts and companies are find-or-create: an existing match (contacts by email, LinkedIn or name plus company; companies by website domain, LinkedIn or name) is returned and updated with the supplied fields instead of duplicated. Other object types get a new record on each call. To avoid duplicate contacts and companies, search for an existing record before creating, and search again with enriched identifiers such as domain, website, email or LinkedIn URL. Required fields must be supplied; read-only fields are rejected. 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.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"objectSlug",
"name",
"fields"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"description": "Display name of the record. For contacts and companies it also helps match an existing record."
},
"fields": {
"type": "array",
"items": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"description": "The field_name from get_object_schema, not the display name. Unknown and read-only fields (creator, creation source, stage lifecycle) are rejected; contacts and companies also accept linkedin_url."
},
"value": {
"description": "Value in the field's type: string for text, email, phone and URL; number for number and currency; number or \"43.5%\" for percentage; true/false for boolean; ISO 8601 date string; option value for select and status; array of option values for multi_select; teammate user ID(s) for user; existing record ID(s) for relationship; address string for location."
}
},
"additionalProperties": false
},
"description": "Field values to set, as name/value pairs. Include every field marked is_required in get_object_schema."
},
"objectSlug": {
"type": "string",
"minLength": 1,
"description": "Object type slug from list_object_types, such as contacts, companies or deals."
},
"profileImageUrl": {
"type": [
"string",
"null"
],
"description": "Public image URL used as a contact's profile picture, such as a LinkedIn photo. Ignored for companies, whose logo is fetched automatically, and for other object types."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. When omitted the call runs once and a repeat is a new 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,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Change field values on one existing record identified by objectSlug and id. Returns the updated record and affectedObjectSlugs. Only the listed fields change; null clears a field, and a relationship field's value replaces its whole set of linked records. Changes are recorded in the record's field history and stage changes appear on its timeline. Read-only fields (creator, creation source, stage lifecycle) are rejected. If the task requested a restricted field, omit its value and list only its field name in restrictedFieldNames; permitted fields will still be updated.
The description explains the capability, when to use it, and what to expect.
Inputs90/100
Input documentation gives an agent enough context to populate the arguments.
objectSlug
Object type slug from list_object_types, such as contacts, companies or deals.
Clear enough to supply this argument.
id
ID of the record to update, from search_objects or get_object results.
Clear enough to supply this argument.
fields › items › name
The field_name from get_object_schema, not the display name; use name to rename the record. Read-only fields are rejected.
Clear enough to supply this argument.
fields › items › value
New value in the field's type (string, number, true/false, ISO 8601 date, option value or array of option values, user ID(s), or record ID(s) for relationships). null clears the field; relationship IDs replace all current links.
Clear enough to supply this argument.
restrictedFieldNames
Names of restricted fields requested by the task that were intentionally omitted. Never include their values.
Clear enough to supply this argument.
profileImageUrl
New profile picture URL for a contact. Omit to keep the current image. Ignored for companies, whose logo is fetched automatically, and for other object types.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. When omitted the call runs once and a repeat is a new action.
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": "Change field values on one existing record identified by objectSlug and id. Returns the updated record and affectedObjectSlugs. Only the listed fields change; null clears a field, and a relationship field's value replaces its whole set of linked records. Changes are recorded in the record's field history and stage changes appear on its timeline. Read-only fields (creator, creation source, stage lifecycle) are rejected. 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 record to update, from search_objects or get_object results."
},
"fields": {
"type": "array",
"items": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"description": "The field_name from get_object_schema, not the display name; use name to rename the record. Read-only fields are rejected."
},
"value": {
"anyOf": [
{
"anyOf": [
{
"not": {}
},
{}
]
},
{
"type": "null"
}
],
"description": "New value in the field's type (string, number, true/false, ISO 8601 date, option value or array of option values, user ID(s), or record ID(s) for relationships). null clears the field; relationship IDs replace all current links."
}
},
"additionalProperties": false
},
"description": "Only the fields to change, as name/value pairs; omitted fields keep their current values."
},
"objectSlug": {
"type": "string",
"minLength": 1,
"description": "Object type slug from list_object_types, such as contacts, companies or deals."
},
"profileImageUrl": {
"anyOf": [
{
"anyOf": [
{
"not": {}
},
{
"type": "string",
"description": "New profile picture URL for a contact. Omit to keep the current image. Ignored for companies, whose logo is fetched automatically, and for other object types."
}
],
"description": "New profile picture URL for a contact. Omit to keep the current image. Ignored for companies, whose logo is fetched automatically, and for other object types."
},
{
"type": "null"
}
],
"description": "New profile picture URL for a contact. Omit to keep the current image. Ignored for companies, whose logo is fetched automatically, and for other object types."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. When omitted the call runs once and a repeat is a new 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,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Delete one record identified by objectSlug and id. The record is soft-deleted: it stops appearing in searches, lists and views, its relationship links are removed, and deleting a company also unlinks its contacts. It cannot be restored through these tools. Returns success with slug and id; deleting an already deleted or unknown record returns an object-not-found error.
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.
objectSlug
Object type slug of the record, from list_object_types, such as contacts, companies or deals.
Clear enough to supply this argument.
id
ID of the record to delete, from search_objects or get_object results.
Clear enough to supply this argument.
_skip_approval
Accepted for compatibility with earlier clients and ignored; omitting it changes nothing.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. When omitted the call runs once and a repeat is a new action.
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 one record identified by objectSlug and id. The record is soft-deleted: it stops appearing in searches, lists and views, its relationship links are removed, and deleting a company also unlinks its contacts. It cannot be restored through these tools. Returns success with slug and id; deleting an already deleted or unknown record returns an object-not-found error.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"objectSlug",
"id"
],
"properties": {
"id": {
"type": "number",
"description": "ID of the record to delete, from search_objects or get_object results."
},
"objectSlug": {
"type": "string",
"minLength": 1,
"description": "Object type slug of the record, from list_object_types, such as contacts, companies or deals."
},
"_skip_approval": {
"type": "boolean",
"description": "Accepted for compatibility with earlier clients and ignored; omitting it changes nothing."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. When omitted the call runs once and a repeat is a new action."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Delete CRM object",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Change one field of your own workspace's organization profile (identity, product, market, ideal customer profile or brand voice), not a CRM company record. Organization admins only. Text fields take a string; tags fields take the complete list, which replaces the current tags; an empty value clears the field. Returns a confirmation message, or for an unknown key, validFields listing each valid key and type.
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.
fieldKey
Key of the profile field to change, such as description. An unknown key fails and returns validFields with every key, label and type.
Clear enough to supply this argument.
value
New value: a string for text fields, or the complete list of strings for tags fields (it replaces the current tags). 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
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 one field of your own workspace's organization profile (identity, product, market, ideal customer profile or brand voice), not a CRM company record. Organization admins only. Text fields take a string; tags fields take the complete list, which replaces the current tags; an empty value clears the field. Returns a confirmation message, or for an unknown key, validFields listing each valid key and type.\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, or the complete list of strings for tags fields (it replaces the current tags). An empty string or empty array clears the field."
},
"fieldKey": {
"type": "string",
"description": "Key of the profile field to change, such as description. An unknown key fails and returns validFields with every key, label and type."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Update organization context",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description91/100
Read a saved view's full settings, or the available view settings for an object type. Returns the object type, the view's settings (filters with condition IDs, sorting, columns, layout, sharing and URL), the saved views you can see, available_fields with field paths, types, filter operators, options and sort/group/total capabilities, and available_icons.
The description explains the capability, when to use it, and what to expect.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
view_id
Saved view UUID from list_views or inspect_view saved_views, or "system-all" for the virtual All view (object_slug is then required). Omit to read only the object type's available settings.
Clear enough to supply this argument.
object_slug
Object type slug from list_object_types. Required when view_id is omitted or "system-all"; ignored when a saved view_id is given.
Clear enough to supply this argument.
field_query
Case-insensitive text matched against field paths and labels to narrow available_fields in large schemas.
Clear enough to supply this argument.
field_limit
Caps the number of available_fields returned; fields_truncated is true when more fields matched.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "inspect_view",
"title": "Inspect saved view",
"description": "Read a saved view's full settings, or the available view settings for an object type. Returns the object type, the view's settings (filters with condition IDs, sorting, columns, layout, sharing and URL), the saved views you can see, available_fields with field paths, types, filter operators, options and sort/group/total capabilities, and available_icons.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {
"view_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "string",
"const": "system-all"
}
],
"description": "Saved view UUID from list_views or inspect_view saved_views, or \"system-all\" for the virtual All view (object_slug is then required). Omit to read only the object type's available settings."
},
"field_limit": {
"type": "integer",
"default": 100,
"maximum": 250,
"minimum": 100,
"description": "Caps the number of available_fields returned; fields_truncated is true when more fields matched."
},
"field_query": {
"type": "string",
"maxLength": 120,
"description": "Case-insensitive text matched against field paths and labels to narrow available_fields in large schemas."
},
"object_slug": {
"type": "string",
"maxLength": 120,
"minLength": 1,
"description": "Object type slug from list_object_types. Required when view_id is omitted or \"system-all\"; ignored when a saved view_id is given."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Inspect saved view",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Create a saved view owned by you for an object type, with columns, filters, sorting, table or Kanban layout, grouping, icon and team sharing. Each call creates a new view. Returns the view with its id, settings and URL. Omitted columns use a new view's default columns, omitted sorting sorts newest first, and an omitted icon is chosen at random.
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.
Inputs87/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
object_slug
Object type slug from list_object_types.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
name
Display name of the view; names need not be unique.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
columns
Visible columns in order, as field paths from inspect_view available_fields. Omit to use the default columns of a new view.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
filters › logical_operator
Combinator for the groups: a record has to match every group.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
filters › groups › items › logical_operator
Combinator for the group: a record has to match every condition in it.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
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.
Comparison to apply. Valid operators depend on the field and are listed in inspect_view available_fields[].filter_operators; empty and not_empty take no value, relative_* operators take a relative-date value.
Clear enough to supply this argument.
filters › groups › items › conditions › items › value › anyOf › 5 › amount
Number of days.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
filters › groups › items › conditions › items › value › anyOf › 5 › relative
Direction; must match the operator: last for relative_last, next for relative_next, before for relative_before.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
filters › groups › items › conditions › items › value › anyOf › 5 › unit
Unit that amount is measured in.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
filters › groups › items › conditions › items › value › anyOf › 6 › amount
Money amount to compare against.
Clear enough to supply this argument.
filters › groups › items › conditions › items › value › anyOf › 6 › currency
ISO 4217 code of the currency the amount is in, such as USD; valid only on currency fields.
Clear enough to supply this argument.
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
asc sorts ascending (A to Z, smallest or oldest first); desc sorts descending.
Clear enough to supply this argument.
view_type
table shows rows; kanban shows cards in columns grouped by group_by.
Clear enough to supply this argument.
group_by
Kanban only: field path to group cards by, from inspect_view fields with can_group. Omit to use the first available status field.
Clear enough to supply this argument.
sum_by
Kanban only: number, currency or percentage field path (can_total) totaled on each stage; it must also be a visible column.
Clear enough to supply this argument.
stage_order
Kanban only: option values of the group field in the order its stages appear.
Clear enough to supply this argument.
icon
Exact icon name from inspect_view available_icons. Omit for a random icon.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
is_shared
true makes the view visible to teammates, who can also edit its settings; false keeps it private to you.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "create_view",
"title": "Create saved view",
"description": "Create a saved view owned by you for an object type, with columns, filters, sorting, table or Kanban layout, grouping, icon and team sharing. Each call creates a new view. Returns the view with its id, settings and URL. Omitted columns use a new view's default columns, omitted sorting sorts newest first, and an omitted icon is chosen at random.\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": {
"icon": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Exact icon name from inspect_view available_icons. Omit for a random icon."
},
"name": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "Display name of the view; names need not be unique."
},
"sum_by": {
"anyOf": [
{
"type": "string",
"maxLength": 512,
"minLength": 1,
"description": "Exact field path from inspect_view, including relationship prefixes when present."
},
{
"type": "null"
}
],
"description": "Kanban only: number, currency or percentage field path (can_total) totaled on each stage; it must also be a visible column."
},
"columns": {
"type": "array",
"items": {
"type": "string",
"maxLength": 512,
"minLength": 1,
"description": "Exact field path from inspect_view, including relationship prefixes when present."
},
"maxItems": 100,
"description": "Visible columns in order, as field paths from inspect_view available_fields. Omit to use the default columns of a new view."
},
"filters": {
"type": "object",
"required": [
"groups"
],
"properties": {
"groups": {
"type": "array",
"items": {
"type": "object",
"required": [
"conditions"
],
"properties": {
"conditions": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"operator"
],
"properties": {
"field": {
"type": "string",
"maxLength": 512,
"minLength": 1,
"description": "Exact field path from inspect_view, including relationship prefixes when present."
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"maxItems": 100,
"minItems": 1
},
{
"type": "object",
"required": [
"amount",
"relative",
"unit"
],
"properties": {
"unit": {
"type": "string",
"const": "days",
"description": "Unit that amount is measured in."
},
"amount": {
"type": "integer",
"minimum": 0,
"description": "Number of days."
},
"relative": {
"enum": [
"last",
"next",
"before"
],
"type": "string",
"description": "Direction; must match the operator: last for relative_last, next for relative_next, before for relative_before."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"amount",
"currency"
],
"properties": {
"amount": {
"type": "number",
"description": "Money amount to compare against."
},
"currency": {
"type": "string",
"maxLength": 3,
"minLength": 3,
"description": "ISO 4217 code of the currency the amount is in, such as USD; valid only on currency fields."
}
},
"additionalProperties": false
}
],
"description": "Comparison value: text or number for text and number fields, true/false for booleans, an array of option values (user IDs for user fields) with contains/does_not_contain on select, status and user fields, a relative-date object for relative_* operators, or an amount/currency object for currency fields. Ignored for empty/not_empty."
},
"operator": {
"enum": [
"equals",
"not_equals",
"contains",
"not_contains",
"does_not_contain",
"starts_with",
"ends_with",
"greater_than",
"less_than",
"greater_than_or_equals",
"less_than_or_equals",
"empty",
"not_empty",
"relative_last",
"relative_next",
"relative_before",
"is",
"is_not"
],
"type": "string",
"description": "Comparison to apply. Valid operators depend on the field and are listed in inspect_view available_fields[].filter_operators; empty and not_empty take no value, relative_* operators take a relative-date value."
}
},
"additionalProperties": false
},
"maxItems": 100,
"minItems": 1,
"description": "Conditions that records must all match."
},
"logical_operator": {
"type": "string",
"const": "and",
"default": "and",
"description": "Combinator for the group: a record has to match every condition in it."
}
},
"additionalProperties": false
},
"maxItems": 1,
"description": "Zero or one condition group; an empty array means no filters."
},
"logical_operator": {
"type": "string",
"const": "and",
"default": "and",
"description": "Combinator for the groups: a record has to match every group."
}
},
"description": "Filter state of one AND group of conditions. Omit for no filters.",
"additionalProperties": false
},
"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",
"description": "asc sorts ascending (A to Z, smallest or oldest first); desc sorts descending."
}
},
"additionalProperties": false
},
"maxItems": 1,
"description": "Sort to apply. Omit to sort by ID, newest first."
},
"group_by": {
"anyOf": [
{
"type": "string",
"maxLength": 512,
"minLength": 1,
"description": "Exact field path from inspect_view, including relationship prefixes when present."
},
{
"type": "null"
}
],
"description": "Kanban only: field path to group cards by, from inspect_view fields with can_group. Omit to use the first available status field."
},
"is_shared": {
"type": "boolean",
"default": false,
"description": "true makes the view visible to teammates, who can also edit its settings; false keeps it private to you."
},
"view_type": {
"enum": [
"table",
"kanban"
],
"type": "string",
"default": "table",
"description": "table shows rows; kanban shows cards in columns grouped by group_by."
},
"object_slug": {
"type": "string",
"maxLength": 120,
"minLength": 1,
"description": "Object type slug from list_object_types."
},
"stage_order": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"maxLength": 500,
"minLength": 1
},
"maxItems": 100
},
{
"type": "null"
}
],
"description": "Kanban only: option values of the group field in the order its stages appear."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Create saved view",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Replace, add, remove or clear the filters of a saved view you own or that is shared with the team. Other settings are preserved, and changes to a shared view apply for every teammate. Returns the updated view with its settings. The virtual All view cannot be 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.
view_id
Saved view UUID from list_views or inspect_view. "system-all", the virtual All view, is accepted by the schema but has no saved settings, so passing it returns an error.
Clear enough to supply this argument.
operation
replace writes the complete filter state (with new condition IDs), add appends conditions to the existing group, remove deletes the conditions in condition_ids, and clear removes all filters.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
filters › logical_operator
Combinator for the groups: a record has to match every group.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
filters › groups › items › logical_operator
Combinator for the group: a record has to match every condition in it.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
filters › groups › items › conditions › items › field
Exact field path from inspect_view, including relationship prefixes when present.
Comparison to apply. Valid operators depend on the field and are listed in inspect_view available_fields[].filter_operators; empty and not_empty take no value, relative_* operators take a relative-date value.
Clear enough to supply this argument.
filters › groups › items › conditions › items › value › anyOf › 5 › amount
Number of days.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
filters › groups › items › conditions › items › value › anyOf › 5 › relative
Direction; must match the operator: last for relative_last, next for relative_next, before for relative_before.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
filters › groups › items › conditions › items › value › anyOf › 5 › unit
Unit that amount is measured in.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
filters › groups › items › conditions › items › value › anyOf › 6 › amount
Money amount to compare against.
Clear enough to supply this argument.
filters › groups › items › conditions › items › value › anyOf › 6 › currency
ISO 4217 code of the currency the amount is in, such as USD; valid only on currency fields.
Clear enough to supply this argument.
condition_ids
IDs of the conditions to delete with operation remove, from inspect_view current_view.settings.filters. The call errors if none are on the view.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "update_view_filters",
"title": "Update view filters",
"description": "Replace, add, remove or clear the filters of a saved view you own or that is shared with the team. Other settings are preserved, and changes to a shared view apply for every teammate. Returns the updated view with its settings. The virtual All view cannot be 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": [
"operation",
"_item_request_id"
],
"properties": {
"filters": {
"type": "object",
"required": [
"groups"
],
"properties": {
"groups": {
"type": "array",
"items": {
"type": "object",
"required": [
"conditions"
],
"properties": {
"conditions": {
"type": "array",
"items": {
"type": "object",
"required": [
"field",
"operator"
],
"properties": {
"field": {
"type": "string",
"maxLength": 512,
"minLength": 1,
"description": "Exact field path from inspect_view, including relationship prefixes when present."
},
"value": {
"anyOf": [
{
"type": "string"
},
{
"type": "number"
},
{
"type": "boolean"
},
{
"type": "null"
},
{
"type": "array",
"items": {
"type": "string",
"minLength": 1
},
"maxItems": 100,
"minItems": 1
},
{
"type": "object",
"required": [
"amount",
"relative",
"unit"
],
"properties": {
"unit": {
"type": "string",
"const": "days",
"description": "Unit that amount is measured in."
},
"amount": {
"type": "integer",
"minimum": 0,
"description": "Number of days."
},
"relative": {
"enum": [
"last",
"next",
"before"
],
"type": "string",
"description": "Direction; must match the operator: last for relative_last, next for relative_next, before for relative_before."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [
"amount",
"currency"
],
"properties": {
"amount": {
"type": "number",
"description": "Money amount to compare against."
},
"currency": {
"type": "string",
"maxLength": 3,
"minLength": 3,
"description": "ISO 4217 code of the currency the amount is in, such as USD; valid only on currency fields."
}
},
"additionalProperties": false
}
],
"description": "Comparison value: text or number for text and number fields, true/false for booleans, an array of option values (user IDs for user fields) with contains/does_not_contain on select, status and user fields, a relative-date object for relative_* operators, or an amount/currency object for currency fields. Ignored for empty/not_empty."
},
"operator": {
"enum": [
"equals",
"not_equals",
"contains",
"not_contains",
"does_not_contain",
"starts_with",
"ends_with",
"greater_than",
"less_than",
"greater_than_or_equals",
"less_than_or_equals",
"empty",
"not_empty",
"relative_last",
"relative_next",
"relative_before",
"is",
"is_not"
],
"type": "string",
"description": "Comparison to apply. Valid operators depend on the field and are listed in inspect_view available_fields[].filter_operators; empty and not_empty take no value, relative_* operators take a relative-date value."
}
},
"additionalProperties": false
},
"maxItems": 100,
"minItems": 1,
"description": "Conditions that records must all match."
},
"logical_operator": {
"type": "string",
"const": "and",
"default": "and",
"description": "Combinator for the group: a record has to match every condition in it."
}
},
"additionalProperties": false
},
"maxItems": 1,
"description": "Zero or one condition group; an empty array means no filters."
},
"logical_operator": {
"type": "string",
"const": "and",
"default": "and",
"description": "Combinator for the groups: a record has to match every group."
}
},
"description": "Required for replace/add. Replace writes the complete filter state; add appends these conditions to the UI’s filter group.",
"additionalProperties": false
},
"view_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "string",
"const": "system-all"
}
],
"description": "Saved view UUID from list_views or inspect_view. \"system-all\", the virtual All view, is accepted by the schema but has no saved settings, so passing it returns an error."
},
"operation": {
"enum": [
"replace",
"add",
"remove",
"clear"
],
"type": "string",
"description": "replace writes the complete filter state (with new condition IDs), add appends conditions to the existing group, remove deletes the conditions in condition_ids, and clear removes all filters."
},
"condition_ids": {
"type": "array",
"items": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"maxItems": 100,
"description": "IDs of the conditions to delete with operation remove, from inspect_view current_view.settings.filters. The call errors if none are on the view."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Update view filters",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Replace, remove or clear the sort of a saved view you own or that is shared with the team. Other settings are preserved, and changes to a shared view apply for every teammate. Returns the updated view with its settings. The virtual All view cannot be 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
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
view_id
Saved view UUID from list_views or inspect_view. "system-all", the virtual All view, is accepted by the schema but has no saved settings, so passing it returns an error.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
operation
replace sets the sort given in sorting, remove drops the sort on the paths in fields, and clear removes sorting.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
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
asc sorts ascending (A to Z, smallest or oldest first); desc sorts descending.
Clear enough to supply this argument.
fields
The sorted field path to drop, for operation remove. A view holds at most one sort, so this is a single-item list; the call errors if the view is not sorted.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 you own or that is shared with the team. Other settings are preserved, and changes to a shared view apply for every teammate. Returns the updated view with its settings. The virtual All view cannot be 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": [
"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": "The sorted field path to drop, for operation remove. A view holds at most one sort, so this is a single-item list; the call errors if the view is not sorted."
},
"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",
"description": "asc sorts ascending (A to Z, smallest or oldest first); desc sorts descending."
}
},
"additionalProperties": false
},
"maxItems": 1,
"description": "The sort to set; required for replace."
},
"view_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "string",
"const": "system-all"
}
],
"description": "Saved view UUID from list_views or inspect_view. \"system-all\", the virtual All view, is accepted by the schema but has no saved settings, so passing it returns an error."
},
"operation": {
"enum": [
"replace",
"remove",
"clear"
],
"type": "string",
"description": "replace sets the sort given in sorting, remove drops the sort on the paths in fields, and clear removes sorting."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Update view sorting",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Add columns to a saved view you own or that is shared with the team. Existing columns keep their order and already-visible columns are skipped. Changes to a shared view apply for every teammate. Returns added_columns and the updated view. The virtual All view cannot be 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.
Inputs94/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
view_id
Saved view UUID from list_views or inspect_view. "system-all", the virtual All view, is accepted by the schema but has no saved settings, so passing it returns an error.
Clear enough to supply this argument.
columns
Field paths to show, from inspect_view available_fields. Already-visible paths are skipped; the call errors if all are visible.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
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
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 you own or that is shared with the team. Existing columns keep their order and already-visible columns are skipped. Changes to a shared view apply for every teammate. Returns added_columns and the updated view. The virtual All view cannot be 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": [
"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": "Field paths to show, from inspect_view available_fields. Already-visible paths are skipped; the call errors if all are visible."
},
"view_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "string",
"const": "system-all"
}
],
"description": "Saved view UUID from list_views or inspect_view. \"system-all\", the virtual All view, is accepted by the schema but has no saved settings, so passing it returns an error."
},
"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": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Add view columns",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Hide visible columns on a saved view you own or that is shared with the team. Other settings are preserved, and changes to a shared view apply for every teammate. Returns removed_columns and the updated view. The virtual All view cannot be 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.
Inputs92/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
view_id
Saved view UUID from list_views or inspect_view. "system-all", the virtual All view, is accepted by the schema but has no saved settings, so passing it returns an error.
Clear enough to supply this argument.
columns
Visible column paths to hide, from inspect_view current_view.settings.columns. The call errors if none are visible.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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": "Hide visible columns on a saved view you own or that is shared with the team. Other settings are preserved, and changes to a shared view apply for every teammate. Returns removed_columns and the updated view. The virtual All view cannot be 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": [
"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": "Visible column paths to hide, from inspect_view current_view.settings.columns. The call errors if none are visible."
},
"view_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "string",
"const": "system-all"
}
],
"description": "Saved view UUID from list_views or inspect_view. \"system-all\", the virtual All view, is accepted by the schema but has no saved settings, so passing it returns an error."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Remove view columns",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Set the complete order of a saved view's visible columns without adding or removing any. Applies to views you own or that are shared with the team; changes to a shared view apply for every teammate. Returns the updated view. The virtual All view cannot be 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.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
view_id
Saved view UUID from list_views or inspect_view. "system-all", the virtual All view, is accepted by the schema but has no saved settings, so passing it returns an error.
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
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 without adding or removing any. Applies to views you own or that are shared with the team; changes to a shared view apply for every teammate. Returns the updated view. The virtual All view cannot be 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": [
"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 from list_views or inspect_view. \"system-all\", the virtual All view, is accepted by the schema but has no saved settings, so passing it returns an error."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Reorder view columns",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Rename a saved view or change its icon, layout, Kanban grouping, totals, stage order or team sharing. Applies to views you own or that are shared with the team; only the owner can change sharing, and changes to a shared view apply for every teammate. Returns the updated view. The virtual All view cannot be 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.
Inputs98/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
view_id
Saved view UUID from list_views or inspect_view. "system-all", the virtual All view, is accepted by the schema but has no saved settings, so passing it returns an error.
Clear enough to supply this argument.
name
New display name for the view.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
icon
Exact icon name from inspect_view.available_icons.
Clear enough to supply this argument.
view_type
table or kanban. Switching to kanban without a group field uses the first available status field.
Clear enough to supply this argument.
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
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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. Applies to views you own or that are shared with the team; only the owner can change sharing, and changes to a shared view apply for every teammate. Returns the updated view. The virtual All view cannot be 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": {
"icon": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Exact icon name from inspect_view.available_icons."
},
"name": {
"type": "string",
"maxLength": 255,
"minLength": 1,
"description": "New display name for the view."
},
"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 from list_views or inspect_view. \"system-all\", the virtual All view, is accepted by the schema but has no saved settings, so passing it returns an error."
},
"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",
"description": "table or kanban. Switching to kanban without a group field uses the first available status field."
},
"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": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key 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,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Copy a saved view, including its filters, sorting, columns, layout, grouping and icon, as a new private view owned by you. Each call creates another copy. Returns the new view with its id, settings and URL.
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.
view_id
Saved view UUID to copy, from list_views or inspect_view. "system-all", the virtual All view, is accepted by the schema but has no saved settings to copy, so passing it returns an error.
Clear enough to supply this argument.
name
Name of the copy. Omit to use the original name followed by "copy".
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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, layout, grouping and icon, as a new private view owned by you. Each call creates another copy. Returns the new view with its id, settings and URL.\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,
"description": "Name of the copy. Omit to use the original name followed by \"copy\"."
},
"view_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "string",
"const": "system-all"
}
],
"description": "Saved view UUID to copy, from list_views or inspect_view. \"system-all\", the virtual All view, is accepted by the schema but has no saved settings to copy, so passing it returns an error."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Duplicate saved view",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Permanently delete a saved view you own. Views owned by teammates and the virtual All view cannot be deleted; records are not affected. Returns the deleted view's ID, name, icon and object type.
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
UUID of a saved view you own, from list_views or inspect_view (is_owner true). "system-all", the virtual All view, is accepted by the schema but cannot be deleted, so passing it returns an error.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
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. Views owned by teammates and the virtual All view cannot be deleted; records are not affected. Returns the deleted view's ID, name, icon and object type.\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": "UUID of a saved view you own, from list_views or inspect_view (is_owner true). \"system-all\", the virtual All view, is accepted by the schema but cannot be deleted, so passing it returns an error."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Delete saved view",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
List the saved views for one object type that you own or that are shared with the team, oldest first. Views are saved filters, columns and sorting. Returns views with view_id, name, icon, view_type, columns, has_filters and is_shared, plus total. The virtual All view is not included.
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.
object_slug
Object type slug from list_object_types, such as contacts, companies or deals.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "list_views",
"title": "List saved views",
"description": "List the saved views for one object type that you own or that are shared with the team, oldest first. Views are saved filters, columns and sorting. Returns views with view_id, name, icon, view_type, columns, has_filters and is_shared, plus total. The virtual All view is not included.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"object_slug"
],
"properties": {
"object_slug": {
"type": "string",
"description": "Object type slug from list_object_types, such as contacts, companies or deals."
}
},
"additionalProperties": false
},
"annotations": {
"title": "List saved views",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Add one existing contact, company or custom object record to a list of the same object type. A record already on the list is left as is. Returns the list and record names, objectSlug and affectedCount (0 when it was already a member). 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
Version of the list-change request format. Requests without it are rejected so that older saved requests cannot be replayed.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
listId
ID of the list, from list_lists.
Clear enough to supply this argument.
objectId
ID of the record to add, from search_objects or get_object. It must be of the list's object type.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
Clear enough to supply this argument.
Annotations100/100
All four behavior hints are declared.
{
"title": "Add record to list",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"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 existing contact, company or custom object record to a list of the same object type. A record already on the list is left as is. Returns the list and record names, objectSlug and affectedCount (0 when it was already a member). 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": "ID of the list, from list_lists.",
"exclusiveMinimum": 0
},
"objectId": {
"type": "integer",
"description": "ID of the record to add, from search_objects or get_object. It must be of the list's object type.",
"exclusiveMinimum": 0
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
},
"listActionVersion": {
"type": "number",
"const": 1,
"description": "Version of the list-change request format. Requests without it are rejected so that older saved requests cannot be replayed."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Add record to list",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
Browse the organization's lists, newest first, optionally filtered by name or object type. Returns every matching list with id, name, description, objectType slug, memberCount and createdAt, plus total.
The description explains the capability, when to use it, and what to expect.
Inputs89/100
Input documentation gives an agent enough context to populate the arguments.
search
Filter lists by name (case-insensitive partial match)
Clear enough to supply this argument.
objectType
Object type slug from list_object_types, such as contacts or companies, to show only lists of that type.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "list_lists",
"title": "List lists",
"description": "Browse the organization's lists, newest first, optionally filtered by name or object type. Returns every matching list with id, name, description, objectType slug, memberCount and createdAt, plus total.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {
"search": {
"type": "string",
"description": "Filter lists by name (case-insensitive partial match)"
},
"objectType": {
"type": "string",
"description": "Object type slug from list_object_types, such as contacts or companies, to show only lists of that type."
}
},
"additionalProperties": false
},
"annotations": {
"title": "List lists",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
Get one item list and its member records with all readable fields. Returns id, name, description, objectType, memberCount, total, returned and isComplete, with the members in results. When more than 20 members are returned, they are saved as a TSV file in your MCP workspace and its path is returned in sandbox_files instead. Supports limit and offset for paging large lists.
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.
listId
ID of the list, from list_lists.
Clear enough to supply this argument.
limit
Maximum members to return; default 1000. More than 20 returned members are saved to a workspace TSV file readable with read_workspace_file.
Clear enough to supply this argument.
offset
Members to skip for paging; default 0. Members have no guaranteed order, so pages can overlap.
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 one item list and its member records with all readable fields. Returns id, name, description, objectType, memberCount, total, returned and isComplete, with the members in results. When more than 20 members are returned, they are saved as a TSV file in your MCP workspace and its path is returned in sandbox_files instead. Supports limit and offset for paging large lists.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"listId"
],
"properties": {
"limit": {
"type": "number",
"description": "Maximum members to return; default 1000. More than 20 returned members are saved to a workspace TSV file readable with read_workspace_file."
},
"listId": {
"type": "number",
"description": "ID of the list, from list_lists."
},
"offset": {
"type": "number",
"description": "Members to skip for paging; default 0. Members have no guaranteed order, so pages can overlap."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Get list members",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Remove one record from a list. The record itself is not deleted, and a record not on the list is left as is. Returns the list and record names, objectSlug and affectedCount (0 when it was not a member). 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.
Inputs95/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
listActionVersion
Version of the list-change request format. Requests without it are rejected so that older saved requests cannot be replayed.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
listId
ID of the list, from list_lists.
Clear enough to supply this argument.
objectId
ID of the record to remove, from get_list or search_objects.
Clear enough to supply this argument.
objectTypeId
Numeric ID of the list's object type: 1 for contacts, 2 for companies, or the id from list_object_types. The call fails if it does not match the list.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
Clear enough to supply this argument.
Annotations100/100
All four behavior hints are declared.
{
"title": "Remove record from list",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": 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": "remove_from_list",
"title": "Remove record from list",
"description": "Remove one record from a list. The record itself is not deleted, and a record not on the list is left as is. Returns the list and record names, objectSlug and affectedCount (0 when it was not a member). 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": "ID of the list, from list_lists.",
"exclusiveMinimum": 0
},
"objectId": {
"type": "integer",
"description": "ID of the record to remove, from get_list or search_objects.",
"exclusiveMinimum": 0
},
"objectTypeId": {
"type": "integer",
"description": "Numeric ID of the list's object type: 1 for contacts, 2 for companies, or the id from list_object_types. The call fails if it does not match the list.",
"exclusiveMinimum": 0
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
},
"listActionVersion": {
"type": "number",
"const": 1,
"description": "Version of the list-change request format. Requests without it are rejected so that older saved requests cannot be replayed."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Remove record from list",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
Create an empty list for organizing item records of a single object type, from a name, the object type slug and an optional description. Each call creates a new list; duplicate names are allowed. Returns the new list's id, name and objectType.
Describe the returned information so the agent knows whether it will answer the request.
Inputs97/100
Input documentation gives an agent enough context to populate the arguments.
name
Display name for the new list.
Clear enough to supply this argument.
objectType
Object type slug from list_object_types (such as contacts or companies) for the records the list will hold.
Clear enough to supply this argument.
description
Optional free-text description of the list.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. When omitted the call runs once and a repeat is a new action.
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 an empty list for organizing item records of a single object type, from a name, the object type slug and an optional description. Each call creates a new list; duplicate names are allowed. Returns the new list's id, name and objectType.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name",
"objectType"
],
"properties": {
"name": {
"type": "string",
"description": "Display name for the new list."
},
"objectType": {
"type": "string",
"description": "Object type slug from list_object_types (such as contacts or companies) for the records the list will hold."
},
"description": {
"type": "string",
"description": "Optional free-text description of the list."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. When omitted the call runs once and a repeat is a new action."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Create list",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Change a list's name. Membership, object type and ID are unchanged. Returns the list's id, new name, previousName, objectType and objectTypeId.
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.
listId
ID of the list to rename, from list_lists.
Clear enough to supply this argument.
currentName
Current list name from list_lists, when known. Used only for display; it does not select the list.
Clear enough to supply this argument.
name
New list name; surrounding whitespace is trimmed.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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. Returns the list's id, new name, previousName, objectType and objectTypeId.\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": "New list name; surrounding whitespace is trimmed."
},
"listId": {
"type": "integer",
"description": "ID of the list to rename, from list_lists.",
"exclusiveMinimum": 0
},
"currentName": {
"type": "string",
"description": "Current list name from list_lists, when known. Used only for display; it does not select the list."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Rename list",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description91/100
Search the public web (via Exa) for a topic or question and return up to 5 results as Markdown, each with title, URL, published date and up to 3,000 characters of extracted page text.
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.
webSearchTopic
Natural-language topic or question to search for, such as a company, person, product or news event.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "web_search",
"title": "Search the web",
"description": "Search the public web (via Exa) for a topic or question and return up to 5 results as Markdown, each with title, URL, published date and up to 3,000 characters of extracted page text.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"webSearchTopic"
],
"properties": {
"webSearchTopic": {
"type": "string",
"description": "Natural-language topic or question to search for, such as a company, person, product or news event."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Search the web",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description93/100
Fetch a public web page by URL (via Exa, live-crawled when possible) and return its title, URL and up to 10,000 characters of extracted text as Markdown.
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.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "web_fetch",
"title": "Fetch web page",
"description": "Fetch a public web page by URL (via Exa, live-crawled when possible) and return its title, URL and up to 10,000 characters of extracted text as Markdown.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Full public URL to fetch, including https://."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Fetch web page",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
Create a note on one contact, company or custom object record in this item workspace. The body is Markdown. item picks an emoji from the title or content and adds the note to the record's timeline. Returns the new note's ID, title, content, owning record ID, creation time and emoji. Each call creates a separate note.
The description explains the capability, when to use it, and what to expect.
Inputs80/100
Resolve the mismatch between this description and its schema constraints.
content
Note body in Markdown (headings, lists, links). Null creates a note with no body.
Clear enough to supply this argument.
title
Short headline for the note. Null leaves it untitled.
Clear enough to supply this argument.
object_slug
Type of the owning record: contacts, companies, or a custom object slug from list_object_types.
Clear enough to supply this argument.
owned_by_object_id
ID of the record that owns the note, from search_objects, matching object_slug. Required in practice: the database rejects a note with no owner.
Resolve the mismatch between this description and its schema constraints.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. When omitted the call runs once and a repeat is a new action.
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 note on one contact, company or custom object record in this item workspace. The body is Markdown. item picks an emoji from the title or content and adds the note to the record's timeline. Returns the new note's ID, title, content, owning record ID, creation time and emoji. Each call creates a separate note.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"content",
"title",
"object_slug"
],
"properties": {
"title": {
"type": [
"string",
"null"
],
"description": "Short headline for the note. Null leaves it untitled."
},
"content": {
"type": [
"string",
"null"
],
"description": "Note body in Markdown (headings, lists, links). Null creates a note with no body."
},
"object_slug": {
"type": "string",
"description": "Type of the owning record: contacts, companies, or a custom object slug from list_object_types."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. When omitted the call runs once and a repeat is a new action."
},
"owned_by_object_id": {
"type": "number",
"description": "ID of the record that owns the note, from search_objects, matching object_slug. Required in practice: the database rejects a note with no owner."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Create note",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
Edit a note's title or content, change its emoji, or move it to another record. For title or content, send the exact value you read (expected) and the replacement (next); if the note changed since it was read, a conflict is returned and nothing is overwritten. Omitted fields stay unchanged. Each edit updates the last-edited time and the record's timeline. Returns the updated note.
The description explains the capability, when to use it, and what to expect.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
content › expected
The note body exactly as last read, including Markdown; null if it was empty. A mismatch with the stored body returns a conflict.
Clear enough to supply this argument.
content › next
New note body in Markdown; null clears it.
Clear enough to supply this argument.
title › expected
The title exactly as last read; null if it was untitled. A mismatch with the stored title returns a conflict.
Clear enough to supply this argument.
title › next
New title; null clears it.
Clear enough to supply this argument.
emoji
Emoji as lowercase hex Unicode code points joined by hyphens, e.g. 1f4ac or 1f5d2-fe0f. Null removes it; omit to keep it.
Clear enough to supply this argument.
object_slug
Type of the new owning record (contacts, companies or a custom slug from list_object_types). Send together with owned_by_object_id to move the note; omit to keep the owner.
Clear enough to supply this argument.
owned_by_object_id
ID of the new owning record, from search_objects. Used only when object_slug is also sent.
Clear enough to supply this argument.
id
ID of the note to edit, from search_notes or create_note.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. When omitted the call runs once and a repeat is a new action.
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 a note's title or content, change its emoji, or move it to another record. For title or content, send the exact value you read (expected) and the replacement (next); if the note changed since it was read, a conflict is returned and nothing is overwritten. Omitted fields stay unchanged. Each edit updates the last-edited time and the record's timeline. Returns the updated note.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "ID of the note to edit, from search_notes or create_note."
},
"emoji": {
"type": [
"string",
"null"
],
"description": "Emoji as lowercase hex Unicode code points joined by hyphens, e.g. 1f4ac or 1f5d2-fe0f. Null removes it; omit to keep it."
},
"title": {
"type": "object",
"required": [
"expected",
"next"
],
"properties": {
"next": {
"type": [
"string",
"null"
],
"description": "New title; null clears it."
},
"expected": {
"type": [
"string",
"null"
],
"description": "The title exactly as last read; null if it was untitled. A mismatch with the stored title returns a conflict."
}
},
"description": "Title change as {expected, next}. Omit to leave the title unchanged.",
"additionalProperties": false
},
"content": {
"type": "object",
"required": [
"expected",
"next"
],
"properties": {
"next": {
"type": [
"string",
"null"
],
"description": "New note body in Markdown; null clears it."
},
"expected": {
"type": [
"string",
"null"
],
"description": "The note body exactly as last read, including Markdown; null if it was empty. A mismatch with the stored body returns a conflict."
}
},
"description": "Content change as {expected, next}. Omit to leave the body unchanged.",
"additionalProperties": false
},
"object_slug": {
"type": "string",
"description": "Type of the new owning record (contacts, companies or a custom slug from list_object_types). Send together with owned_by_object_id to move the note; omit to keep the owner."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. When omitted the call runs once and a repeat is a new action."
},
"owned_by_object_id": {
"type": "number",
"description": "ID of the new owning record, from search_objects. Used only when object_slug is also sent."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Edit note",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Search notes in this item workspace and return full notes (ID, title, Markdown content, emoji, owning record, author, editor and timestamps). With only a query, matches the whole phrase or any of its words in title or content, exact matches first, up to 20 notes. With a record, creator or editor filter, the query is ignored and every matching note is returned; a company also includes notes on its contacts. Date filters use creation date in UTC. Nothing is changed.
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.
query
Words or a phrase to find in note titles and content; matches the whole phrase or any single word. Ignored when owned_by_object_id, created_by_user_id or last_edited_by_user_id is set.
Clear enough to supply this argument.
owned_by_object_id
Record whose notes to list, from search_objects. For a company, notes on its contacts are included.
Clear enough to supply this argument.
object_slug
Type of owned_by_object_id: contacts, companies or a custom object slug from list_object_types. Applies only with a record, creator or editor filter; without contacts or companies the ID is treated as a custom object.
Clear enough to supply this argument.
date
Single creation day, YYYY-MM-DD, as a UTC day. Takes precedence over from_date and to_date.
Clear enough to supply this argument.
created_by_user_id
User ID of the note's author, from the teammates in get_workspace_context.
Clear enough to supply this argument.
last_edited_by_user_id
User ID of the teammate who last edited the note, from the teammates in get_workspace_context.
Clear enough to supply this argument.
from_date
Earliest creation day, YYYY-MM-DD, from the start of that day in UTC.
Clear enough to supply this argument.
to_date
Latest creation day, YYYY-MM-DD, inclusive through the end of that day in UTC.
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 notes in this item workspace and return full notes (ID, title, Markdown content, emoji, owning record, author, editor and timestamps). With only a query, matches the whole phrase or any of its words in title or content, exact matches first, up to 20 notes. With a record, creator or editor filter, the query is ignored and every matching note is returned; a company also includes notes on its contacts. Date filters use creation date in UTC. Nothing is changed.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"query"
],
"properties": {
"date": {
"type": "string",
"description": "Single creation day, YYYY-MM-DD, as a UTC day. Takes precedence over from_date and to_date."
},
"query": {
"type": "string",
"description": "Words or a phrase to find in note titles and content; matches the whole phrase or any single word. Ignored when owned_by_object_id, created_by_user_id or last_edited_by_user_id is set."
},
"to_date": {
"type": "string",
"description": "Latest creation day, YYYY-MM-DD, inclusive through the end of that day in UTC."
},
"from_date": {
"type": "string",
"description": "Earliest creation day, YYYY-MM-DD, from the start of that day in UTC."
},
"object_slug": {
"type": "string",
"description": "Type of owned_by_object_id: contacts, companies or a custom object slug from list_object_types. Applies only with a record, creator or editor filter; without contacts or companies the ID is treated as a custom object."
},
"created_by_user_id": {
"type": "string",
"description": "User ID of the note's author, from the teammates in get_workspace_context."
},
"owned_by_object_id": {
"type": "number",
"description": "Record whose notes to list, from search_objects. For a company, notes on its contacts are included."
},
"last_edited_by_user_id": {
"type": "string",
"description": "User ID of the teammate who last edited the note, from the teammates in get_workspace_context."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Search notes",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Answer a natural-language question across meeting recordings, transcripts and notes from item and connected note takers such as Circleback, Fathom, Fireflies and Granola, falling back to calendar events when no recording matches. Returns the match count and formatted text with each meeting's name, date, duration, source, attendees, notes, matching transcript excerpts, action items and insights. A result for a real recording includes meeting_recording_id. Unmatched calendar events do not.
The description explains the capability, when to use it, and what to expect.
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.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "search_meeting_recordings",
"title": "Search meeting recordings",
"description": "Answer a natural-language question across meeting recordings, transcripts and notes from item and connected note takers such as Circleback, Fathom, Fireflies and Granola, falling back to calendar events when no recording matches. Returns the match count and formatted text with each meeting's name, date, duration, source, attendees, notes, matching transcript excerpts, action items and insights. A result for a real recording includes meeting_recording_id. Unmatched calendar events do not.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"description": "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."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Search meeting recordings",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/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 search_meeting_recordings, or from recording.recordings[].meeting_recording_id (or recording.meeting_recording_id) in a get_calendar_event result. 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 (UTF-16 code units) to return in this page; read further with transcript_offset set to next_offset.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
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 (UTF-16 code units) to return in this page; read further with transcript_offset set to next_offset."
},
"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 search_meeting_recordings, or from recording.recordings[].meeting_recording_id (or recording.meeting_recording_id) in a get_calendar_event result. Not the calendar event ID.",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
},
"annotations": {
"title": "Get meeting recording",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description94/100
Search your synced Gmail and Outlook threads with literal Gmail search syntax (from:, to:, subject:, dates, labels, has:attachment, phrases, OR, exclusions) for exact, exhaustive matching. Returns one page of threads, each with thread ID, anchor email ID, subject, snippet, latest message date, provider, participants and message count, plus a next-page token.
The description explains the capability, when to use it, and what to expect.
Inputs90/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
includeTrash
Also search spam and trash; excluded when omitted or false.
Clear enough to supply this argument.
mailboxScope
Whose mailboxes to search: me (default for direct calls) searches your own mail; all searches every mailbox you are permitted to read, including shared mail. This selects mailbox owner, not sender or recipient. Ignored on later pages, which reuse the token's scope.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
pageSize
Maximum threads per page; 20 when omitted. It can be changed when continuing with pageToken.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
pageToken
nextPageToken copied exactly from the previous response, valid for 24 hours. It restores the query, includeTrash and mailboxScope; omit on the first page.
Clear enough to supply this argument.
query
Gmail-style search syntax. Operators: from:, to:, cc:, bcc:, subject:, after:, before:, newer_than:, older_than:, label:, is:, in: and has:attachment; exact phrases in quotes, OR, parentheses, Gmail {} braces and - exclusions; adjacent terms are ANDed. from:me, to:me, cc:me and bcc:me mean you, and mail received by you covers To, CC and BCC. A domain operand such as from:vercel.com matches that participant domain and its subdomains; a bare company name only searches subject and body. Dates accept YYYY/MM/DD, YYYY-MM-DD or Unix seconds, and relative values such as 7d, 2m or 1y; after: includes and before: excludes midnight at the start of its date, in your timezone. Bare terms search subject and body. Omit to list mail in the selected mailboxScope except spam and trash.
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 Gmail and Outlook threads with literal Gmail search syntax (from:, to:, subject:, dates, labels, has:attachment, phrases, OR, exclusions) for exact, exhaustive matching. Returns one page of threads, each with thread ID, anchor email ID, subject, snippet, latest message date, provider, participants and message count, plus a next-page token.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {
"query": {
"type": "string",
"maxLength": 2000,
"description": "Gmail-style search syntax. Operators: from:, to:, cc:, bcc:, subject:, after:, before:, newer_than:, older_than:, label:, is:, in: and has:attachment; exact phrases in quotes, OR, parentheses, Gmail {} braces and - exclusions; adjacent terms are ANDed. from:me, to:me, cc:me and bcc:me mean you, and mail received by you covers To, CC and BCC. A domain operand such as from:vercel.com matches that participant domain and its subdomains; a bare company name only searches subject and body. Dates accept YYYY/MM/DD, YYYY-MM-DD or Unix seconds, and relative values such as 7d, 2m or 1y; after: includes and before: excludes midnight at the start of its date, in your timezone. Bare terms search subject and body. Omit to list mail in the selected mailboxScope except spam and trash."
},
"pageSize": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Maximum threads per page; 20 when omitted. It can be changed when continuing with pageToken."
},
"pageToken": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
],
"description": "nextPageToken copied exactly from the previous response, valid for 24 hours. It restores the query, includeTrash and mailboxScope; omit on the first page."
},
"includeTrash": {
"type": "boolean",
"description": "Also search spam and trash; excluded when omitted or 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 (default for direct calls) searches your own mail; all searches every mailbox you are permitted to read, including shared mail. This selects mailbox owner, not sender or recipient. Ignored on later pages, which reuse the token's scope."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Search email threads",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Rank your synced Gmail and Outlook threads by meaning, for topic or intent questions whose wording may differ from the emails. It ranks only the top 1,000 embedded candidates, so it is not exhaustive; exact people, addresses, domains, dates, labels and phrases are better matched by literal Gmail-syntax search. Returns ranked threads with thread ID, anchor email ID, subject, snippet, from, to, latest date and provider.
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.
mailboxScope
Whose mailboxes to rank: me (default for direct calls) is your own mail; all covers every mailbox you are permitted to read, including shared mail. Selects mailbox owner, not sender or recipient. Later pages reuse the token's scope.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
pageSize
Maximum ranked threads per page; 20 when omitted.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
pageToken
nextPageToken copied exactly from the previous response, valid for 24 hours; it restores the query and scope. Omit on the first page.
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.
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 meaning, for topic or intent questions whose wording may differ from the emails. It ranks only the top 1,000 embedded candidates, so it is not exhaustive; exact people, addresses, domains, dates, labels and phrases are better matched by literal Gmail-syntax search. Returns ranked threads with thread ID, anchor email ID, subject, snippet, from, to, latest date and provider.",
"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; 20 when omitted."
},
"pageToken": {
"anyOf": [
{
"type": "string",
"minLength": 1
},
{
"type": "null"
}
],
"description": "nextPageToken copied exactly from the previous response, valid for 24 hours; it restores the query and scope. Omit on the first page."
},
"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 rank: me (default for direct calls) is your own mail; all covers every mailbox you are permitted to read, including shared mail. Selects mailbox owner, not sender or recipient. Later pages reuse the token's scope."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Find email threads by topic",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description90/100
Read the messages you can access in one email thread, oldest first by default, as headers only or with full bodies. Returns the thread ID, provider and a page of messages with item email ID, subject, sender, recipients, dates, provider link, labels, attachment info and permitted body text, plus a cursor for the next page.
The description explains the capability, when to use it, and what to expect.
Inputs93/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
anyOf › 0 › cursor
next_cursor from a previous response, to read the next page; pass it alone.
Clear enough to supply this argument.
anyOf › 1 › email_id
item email ID of any message in the thread, such as anchorEmailId from search_email_threads or semantic_search_email_threads, or the ID from get_email. Pass exactly one of email_id or thread_id.
Clear enough to supply this argument.
anyOf › 1 › order
Message order: oldest reads from the start of the thread, newest from the latest message.
Clear enough to supply this argument.
anyOf › 1 › page_size
Messages per page; full view is limited to 20 per page, metadata view to 100.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
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.
Clear enough to supply this argument.
anyOf › 1 › provider
Restrict to the Gmail or Outlook copy of the thread when a thread ID could match both.
Clear enough to supply this argument.
anyOf › 1 › thread_id
threadId from search_email_threads or semantic_search_email_threads (synthetic single_<id> IDs are accepted). Pass exactly one of email_id or thread_id.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_email_thread",
"title": "Read email thread",
"description": "Read the messages you can access in one email thread, oldest first by default, as headers only or with full bodies. Returns the thread ID, provider and a page of messages with item email ID, subject, sender, recipients, dates, provider link, labels, attachment info and permitted body text, plus a cursor for the next page.",
"inputSchema": {
"type": "object",
"anyOf": [
{
"type": "object",
"required": [
"cursor"
],
"properties": {
"cursor": {
"type": "string",
"minLength": 1,
"description": "next_cursor from a previous response, to read the next page; pass it alone."
}
},
"additionalProperties": false
},
{
"type": "object",
"required": [],
"properties": {
"view": {
"enum": [
"full",
"metadata"
],
"type": "string",
"description": "metadata returns message headers and participants without bodies; full (default) includes permitted content. Up to 100 messages per metadata page, 20 for full."
},
"order": {
"enum": [
"oldest",
"newest"
],
"type": "string",
"default": "oldest",
"description": "Message order: oldest reads from the start of the thread, newest from the latest message."
},
"email_id": {
"type": "integer",
"description": "item email ID of any message in the thread, such as anchorEmailId from search_email_threads or semantic_search_email_threads, or the ID from get_email. Pass exactly one of email_id or thread_id.",
"exclusiveMinimum": 0
},
"provider": {
"enum": [
"gmail",
"outlook"
],
"type": "string",
"description": "Restrict to the Gmail or Outlook copy of the thread when a thread ID could match both."
},
"page_size": {
"type": "integer",
"default": 20,
"maximum": 100,
"minimum": 1,
"description": "Messages per page; full view is limited to 20 per page, metadata view to 100."
},
"thread_id": {
"type": "string",
"minLength": 1,
"description": "threadId from search_email_threads or semantic_search_email_threads (synthetic single_<id> IDs are accepted). Pass exactly one of email_id or thread_id."
}
},
"additionalProperties": false
}
],
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {}
},
"annotations": {
"title": "Read email thread",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description94/100
List synced Google and Outlook calendar events in a time range for you, named teammates or the whole organization (within permissions). Returns one page of events with item event ID, provider event ID, title, start and end, attendee names and emails, provider and item meeting link, plus coverage notes and a next-page token.
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.
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
Google event types to include: DEFAULT is regular events, FROM_GMAIL is events created from Gmail; EVENT_TYPE_UNSPECIFIED is treated as DEFAULT. Omit to include DEFAULT, OUT_OF_OFFICE, FOCUS_TIME and FROM_GMAIL (excludes WORKING_LOCATION and BIRTHDAY).
Clear enough to supply this argument.
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; 100 when omitted. It can be changed when continuing with pageToken.
Clear enough to supply this argument.
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.
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 for you, named teammates or the whole organization (within permissions). Returns one page of events with item event ID, provider event ID, title, start and end, attendee names and emails, provider and item meeting link, plus coverage notes and a next-page token.",
"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; 100 when omitted. It can be changed when continuing with pageToken."
},
"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": "Google event types to include: DEFAULT is regular events, FROM_GMAIL is events created from Gmail; EVENT_TYPE_UNSPECIFIED is treated as DEFAULT. Omit to include DEFAULT, OUT_OF_OFFICE, FOCUS_TIME and FROM_GMAIL (excludes WORKING_LOCATION and BIRTHDAY)."
},
"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,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description94/100
Search synced Google and Outlook calendar events by literal text in title, description, location or attendee names and addresses, for you, named teammates or the whole organization (within permissions). Returns one page of matching events with item event ID, provider event ID, title, start and end, attendees, provider and item meeting link, plus a next-page token.
The description explains the capability, when to use it, and what to expect.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
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
Google event types to include: DEFAULT is regular events, FROM_GMAIL is events created from Gmail; EVENT_TYPE_UNSPECIFIED is treated as DEFAULT. Omit to include DEFAULT, OUT_OF_OFFICE, FOCUS_TIME and FROM_GMAIL (excludes WORKING_LOCATION and BIRTHDAY).
Clear enough to supply this argument.
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; 100 when omitted. It can be changed when continuing with pageToken.
Clear enough to supply this argument.
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.
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 literal text in title, description, location or attendee names and addresses, for you, named teammates or the whole organization (within permissions). Returns one page of matching events with item event ID, provider event ID, title, start and end, attendees, provider and item meeting link, plus a next-page token.",
"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; 100 when omitted. It can be changed when continuing with pageToken."
},
"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": "Google event types to include: DEFAULT is regular events, FROM_GMAIL is events created from Gmail; EVENT_TYPE_UNSPECIFIED is treated as DEFAULT. Omit to include DEFAULT, OUT_OF_OFFICE, FOCUS_TIME and FROM_GMAIL (excludes WORKING_LOCATION and BIRTHDAY)."
},
"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,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
Read one calendar event you can access, by item event ID or as a contact's or company's last or next meeting. Returns the event (title, times, attendees with matched item profiles, description, location, join details, recurrence, provider link) and its recordings: availability status, meeting recording IDs with their source, and item recorder status.
The description explains the capability, when to use it, and what to expect.
Inputs95/100
Input documentation gives an agent enough context to populate the arguments.
event_id
eventId from list_calendar_events or search_calendar_events. Pass null when using contactId or companyId.
Clear enough to supply this argument.
contactId
item contact ID from search_objects or get_object, to read that contact's Last or Next Meeting (set position). Pass null when using event_id or companyId.
Clear enough to supply this argument.
companyId
item company ID from search_objects or get_object, to read that company's Last or Next Meeting (set position). Pass null when using event_id or contactId.
Clear enough to supply this argument.
position
Needed with contactId or companyId (the call fails without it): last means Last Meeting, next means Next Meeting. Pass null with event_id.
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, by item event ID or as a contact's or company's last or next meeting. Returns the event (title, times, attendees with matched item profiles, description, location, join details, recurrence, provider link) and its recordings: availability status, meeting recording IDs with their source, and item recorder status.",
"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": "Needed with contactId or companyId (the call fails without it): last means Last Meeting, next means Next Meeting. Pass null with event_id."
},
"companyId": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0
},
{
"type": "null"
}
],
"description": "item company ID from search_objects or get_object, to read that company's Last or Next Meeting (set position). Pass null when using event_id or contactId."
},
"contactId": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0
},
{
"type": "null"
}
],
"description": "item contact ID from search_objects or get_object, to read that contact's Last or Next Meeting (set position). Pass null when using event_id or companyId."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Get calendar event",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": 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 record ID from search_objects (contacts). Set this or companyId, not both; pass null when using companyId.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
companyId
Company record ID from search_objects (companies). Set this or contactId, not both; pass null when using contactId.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_last_phone_call",
"title": "Get last phone call",
"description": "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.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {
"companyId": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0
},
{
"type": "null"
}
],
"description": "Company record ID from search_objects (companies). Set this or contactId, not both; pass null when using contactId."
},
"contactId": {
"anyOf": [
{
"type": "integer",
"exclusiveMinimum": 0
},
{
"type": "null"
}
],
"description": "Contact record ID from search_objects (contacts). Set this or companyId, not both; pass null when using companyId."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Get last phone call",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Schedule the item recording bot to join one specific occurrence of a meeting synced from your calendar (not a recurring series), when it has a supported meeting link and is within 90 days. Returns the recorder session ID, or the existing session if one is already scheduled, or an error code explaining why it cannot be scheduled.
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.
calendar_event_id
item calendar event ID (eventId) from list_calendar_events, search_calendar_events or get_calendar_event; not the providerEventId.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 occurrence of a meeting synced from your calendar (not a recurring series), when it has a supported meeting link and is within 90 days. Returns the recorder session ID, or the existing session if one is already scheduled, or an error code explaining why it cannot be scheduled.\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": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
},
"calendar_event_id": {
"type": "integer",
"description": "item calendar event ID (eventId) from list_calendar_events, search_calendar_events or get_calendar_event; not the providerEventId.",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
},
"annotations": {
"title": "Send Item recorder to meeting",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
Check the item recording bot for one of your calendar events: returns its status (scheduled, joining, recording and other lifecycle states, not scheduled, or unavailable), the scheduling decision and reason, capture mode, session ID and a message explaining why scheduling failed if it did.
The description explains the capability, when to use it, and what to expect.
Inputs100/100
Input documentation gives an agent enough context to populate the arguments.
calendar_event_id
item calendar event ID (eventId) from list_calendar_events, search_calendar_events or get_calendar_event; not the providerEventId.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_item_recording_status_for_calendar_event",
"title": "Get Item recorder status",
"description": "Check the item recording bot for one of your calendar events: returns its status (scheduled, joining, recording and other lifecycle states, not scheduled, or unavailable), the scheduling decision and reason, capture mode, session ID and a message explaining why scheduling failed if it did.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"calendar_event_id"
],
"properties": {
"calendar_event_id": {
"type": "integer",
"description": "item calendar event ID (eventId) from list_calendar_events, search_calendar_events or get_calendar_event; not the providerEventId.",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
},
"annotations": {
"title": "Get Item recorder status",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Cancel the item recording bot for one of your calendar events while it is still scheduling or scheduled, so it will not join. Once the bot is joining, in the meeting or recording it cannot be removed. Returns a success flag, message and the canceled session ID; canceling again reports it is already canceled.
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.
calendar_event_id
item calendar event ID (eventId) from list_calendar_events, search_calendar_events or get_calendar_event; not the providerEventId.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
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 the item recording bot for one of your calendar events while it is still scheduling or scheduled, so it will not join. Once the bot is joining, in the meeting or recording it cannot be removed. Returns a success flag, message and the canceled session ID; canceling again reports it is already canceled.\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": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
},
"calendar_event_id": {
"type": "integer",
"description": "item calendar event ID (eventId) from list_calendar_events, search_calendar_events or get_calendar_event; not the providerEventId.",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
},
"annotations": {
"title": "Cancel Item recorder",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
Read recent workspace activity from item, newest first: record changes, notes, emails, meetings and calendar syncs, meeting recordings, logged activities, LinkedIn messages, Intercom, Stripe, Linear and Loops events, scheduled emails and Skill actions. Returns an array of events, each with event type, time, entity, actor, summary, status and metadata. Sources that fail to load are skipped silently, so results can be incomplete.
The description explains the capability, when to use it, and what to expect.
Inputs93/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
eventTypes
Event types to include; omit for every type. Values: record.created and record.updated (record changes; combine with entityType to scope them), 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 connector events named connector.<slug>.<event_id>, such as connector.stripe.charge.succeeded.
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
ID of the record to filter to, as a string, such as a contact or company ID from search_objects. Combine with entityType.
Clear enough to supply this argument.
actorId
Only events produced by this actor: a user ID for most item events, or a Skill run ID for skill.tool_executed events (a user ID matches none of those). Received emails, calendar events and connector events record no actor, so they are still included whenever they match the other filters.
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.
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, newest first: record changes, notes, emails, meetings and calendar syncs, meeting recordings, logged activities, LinkedIn messages, Intercom, Stripe, Linear and Loops events, scheduled emails and Skill actions. Returns an array of events, each with event type, time, entity, actor, summary, status and metadata. Sources that fail to load are skipped silently, so results can be incomplete.",
"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": "Only events produced by this actor: a user ID for most item events, or a Skill run ID for skill.tool_executed events (a user ID matches none of those). Received emails, calendar events and connector events record no actor, so they are still included whenever they match the other filters."
},
"entityId": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]+$",
"minLength": 1,
"description": "ID of the record to filter to, as a string, such as a contact or company ID from search_objects. Combine with entityType."
},
"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": "Event types to include; omit for every type. Values: record.created and record.updated (record changes; combine with entityType to scope them), 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 connector events named connector.<slug>.<event_id>, such as connector.stripe.charge.succeeded."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Read workspace activity",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
Create a task in item, assigned to you or a teammate, either for the item AI to carry out or as a to-do for a person. A task runs immediately by default, at a future time when scheduled_for is set, or when an event happens (email, calendar event, record change, connected-app event, webhook or form submission) when a trigger is set; scheduled_for and trigger are mutually exclusive. Dependent multi-step work belongs in one task with one planned_steps entry per action. item writes the title, checks planned tools against the assignee's connected integrations and notifies a teammate assignee. Returns the task with its ID, title, status, linked record names and any warning. Each call creates a new task.
The description explains the capability, when to use it, and what to expect.
Inputs95/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
When the task runs, as ISO 8601 UTC ending in Z. Convert local times using the timezone and current time from get_workspace_context; add relative durations to the current UTC time. Omit to run immediately. Mutually exclusive with trigger.
Clear enough to supply this argument.
trigger › type
new_email: an email arrives. new_calendar_event: a calendar event is created. calendar_event_starting: about 5 minutes before an event starts. record_saved: a record is created or a field changes. time_based: a recurring schedule. connector_event: an event in a connected app. webhook or form_submission: an incoming webhook or form entry.
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
Contact record to link, from search_objects (contacts).
Clear enough to supply this argument.
contact_company_id
Company record to link, from search_objects (companies).
Clear enough to supply this argument.
custom_object_id
Custom object record (e.g. a deal) to link, from search_objects.
Clear enough to supply this argument.
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 review settings keyed by tool name, e.g. {"send_email": true}. true pauses the run for review in item before that action; false lets it run. Include only actions the user gave a setting 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
Teammate's user ID from the teammates in get_workspace_context. For AI tasks this teammate owns the task and its run uses their permissions. Omit to assign the task to yourself.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. When omitted the call runs once and a repeat is a new action.
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 you or a teammate, either for the item AI to carry out or as a to-do for a person. A task runs immediately by default, at a future time when scheduled_for is set, or when an event happens (email, calendar event, record change, connected-app event, webhook or form submission) when a trigger is set; scheduled_for and trigger are mutually exclusive. Dependent multi-step work belongs in one task with one planned_steps entry per action. item writes the title, checks planned tools against the assignee's connected integrations and notifies a teammate assignee. Returns the task with its ID, title, status, linked record names and any warning. Each call creates a new task.",
"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": "new_email: an email arrives. new_calendar_event: a calendar event is created. calendar_event_starting: about 5 minutes before an event starts. record_saved: a record is created or a field changes. time_based: a recurring schedule. connector_event: an event in a connected app. webhook or form_submission: an incoming webhook or form entry."
}
},
"description": "Event that starts the task, for reactive AI tasks (e.g. \"when John emails me\"). item derives the matching details from prompt. Mutually exclusive with scheduled_for; omit for immediate or scheduled tasks.",
"additionalProperties": false
},
"contact_id": {
"type": "number",
"description": "Contact record to link, from search_objects (contacts)."
},
"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": "Name of a tool the task will use, e.g. send_email or web_search."
},
"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": "When the task runs, as ISO 8601 UTC ending in Z. Convert local times using the timezone and current time from get_workspace_context; add relative durations to the current UTC time. Omit to run immediately. Mutually exclusive with trigger."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. When omitted the call runs once and a repeat is a new action."
},
"assignee_user_id": {
"type": "string",
"format": "uuid",
"description": "Teammate's user ID from the teammates in get_workspace_context. For AI tasks this teammate owns the task and its run uses their permissions. Omit to assign the task to yourself."
},
"custom_object_id": {
"type": "number",
"description": "Custom object record (e.g. a deal) to link, from search_objects."
},
"contact_company_id": {
"type": "number",
"description": "Company record to link, from search_objects (companies)."
},
"explicit_approval_settings": {
"type": "object",
"description": "Per-action review settings keyed by tool name, e.g. {\"send_email\": true}. true pauses the run for review in item before that action; false lets it run. Include only actions the user gave a setting for.",
"additionalProperties": {
"type": "boolean"
}
}
},
"additionalProperties": false
},
"annotations": {
"title": "Create task",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
List actions in Skill and task runs that are waiting for approval in your Home queue or the team queue, newest first. Returns each approval's run, Skill or task IDs, title, action, the requested input and a Home link that opens it, plus read status, per-source coverage (only confirmedEmpty establishes an empty queue) and a cursor for the next page. Nothing is approved or changed.
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.
scope
my lists approvals on runs you own (your personal Home queue); team lists every pending approval you can see in the team Home queue.
Clear enough to supply this argument.
limit
Maximum approvals per page, newest first.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
cursor
pagination.nextCursor from the previous page, with the same scope. Omit or null for the first page; retry partial or unavailable reads without a cursor.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "list_pending_approvals",
"title": "List pending approvals",
"description": "List actions in Skill and task runs that are waiting for approval in your Home queue or the team queue, newest first. Returns each approval's run, Skill or task IDs, title, action, the requested input and a Home link that opens it, plus read status, per-source coverage (only confirmedEmpty establishes an empty queue) and a cursor for the next page. Nothing is approved or changed.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {
"limit": {
"type": "integer",
"default": 20,
"maximum": 100,
"minimum": 1,
"description": "Maximum approvals per page, newest first."
},
"scope": {
"enum": [
"my",
"team"
],
"type": "string",
"default": "my",
"description": "my lists approvals on runs you own (your personal Home queue); team lists every pending approval you can see in the team Home queue."
},
"cursor": {
"anyOf": [
{
"type": "string",
"maxLength": 2048
},
{
"type": "null"
}
],
"description": "pagination.nextCursor from the previous page, with the same scope. Omit or null for the first page; retry partial or unavailable reads without a cursor."
}
},
"additionalProperties": false
},
"annotations": {
"title": "List pending approvals",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Find tasks in your item workspace and return their IDs, titles, status, status_label, url, schedule, assignee, linked contact, company or custom object names and plan, newest created first (20 by default). The result also includes tasks_url, the tasks page. Use url and tasks_url as returned. Use it to resolve a task_id before updating or deleting a task. query holds content words only (a name, company or topic): every whitespace-separated term must appear in the title or planned steps, so record-type words such as follow-up, task, reminder or to-do hide tasks whose titles lack them. To find tasks about a person or company, pass a null query and filter by contact_id or contact_company_id. Pass null status and assignee_type unless the user names a state or kind; guessing a status hides matches. scheduled_after and scheduled_before exclude undated tasks, which are common; set them only for a requested time window. contact_company_id also matches tasks linked to the company's contacts. Filters combine, and query can be narrowed with date filters. Results include only tasks you can see; tasks shared as metadata only return limited fields. Nothing is changed.
The description explains the capability, when to use it, and what to expect.
Inputs97/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
status
Status label to filter by, as shown in item: Pending (a scheduled to-do for a person), Scheduled (an AI task waiting to run or paused mid-run), In-progress (running), Awaiting Trigger (waiting for its trigger event), Input Needed (paused for your input), Pending Approval (paused for your approval), Completed, Failed or Canceled. Null or omitted matches every status.
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
Contact record ID from search_objects (contacts).
Clear enough to supply this argument.
contact_company_id
Company record ID from search_objects (companies). Also matches tasks linked to a contact at that company.
Clear enough to supply this argument.
custom_object_id
Custom object record ID (e.g. a deal) from search_objects.
Clear enough to supply this argument.
limit
Maximum number of tasks returned, newest created first.
Clear enough to supply this argument.
query
Content words from the task's title or steps, e.g. a name or topic; all terms must match. Leave out record-type words like follow-up, task, reminder or to-do. Null for metadata-only searches.
Clear enough to supply this argument.
assignee_user_id
User ID of the assignee, from the teammates in get_workspace_context.
Clear enough to supply this argument.
created_by_user_id
User ID of the task's creator, from the teammates in get_workspace_context.
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.
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 tasks in your item workspace and return their IDs, titles, status, status_label, url, schedule, assignee, linked contact, company or custom object names and plan, newest created first (20 by default). The result also includes tasks_url, the tasks page. Use url and tasks_url as returned. Use it to resolve a task_id before updating or deleting a task. query holds content words only (a name, company or topic): every whitespace-separated term must appear in the title or planned steps, so record-type words such as follow-up, task, reminder or to-do hide tasks whose titles lack them. To find tasks about a person or company, pass a null query and filter by contact_id or contact_company_id. Pass null status and assignee_type unless the user names a state or kind; guessing a status hides matches. scheduled_after and scheduled_before exclude undated tasks, which are common; set them only for a requested time window. contact_company_id also matches tasks linked to the company's contacts. Filters combine, and query can be narrowed with date filters. Results include only tasks you can see; tasks shared as metadata only return limited fields. Nothing is changed.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {
"limit": {
"type": "number",
"default": 20,
"description": "Maximum number of tasks returned, newest created first."
},
"query": {
"type": [
"string",
"null"
],
"description": "Content words from the task's title or steps, e.g. a name or topic; all terms must match. Leave out record-type words like follow-up, task, reminder or to-do. Null for metadata-only searches."
},
"status": {
"anyOf": [
{
"enum": [
"Pending",
"Scheduled",
"In-progress",
"Awaiting Trigger",
"Input Needed",
"Pending Approval",
"Completed",
"Failed",
"Canceled"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Status label to filter by, as shown in item: Pending (a scheduled to-do for a person), Scheduled (an AI task waiting to run or paused mid-run), In-progress (running), Awaiting Trigger (waiting for its trigger event), Input Needed (paused for your input), Pending Approval (paused for your approval), Completed, Failed or Canceled. Null or omitted matches every status."
},
"contact_id": {
"type": "number",
"description": "Contact record ID from search_objects (contacts)."
},
"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": "User ID of the assignee, from the teammates in get_workspace_context."
},
"completed_before": {
"type": "string",
"description": "ISO 8601 datetime — only return tasks completed at or before this time."
},
"custom_object_id": {
"type": "number",
"description": "Custom object record ID (e.g. a deal) from search_objects."
},
"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": "Company record ID from search_objects (companies). Also matches tasks linked to a contact at that company."
},
"created_by_user_id": {
"type": "string",
"description": "User ID of the task's creator, from the teammates in get_workspace_context."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Search tasks",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description91/100
Update an item task. Task IDs come from search_tasks. Marking it succeeded or cancelled ends it and stops any AI run and trigger; scheduled re-opens a finished to-do. Notes can be appended to or replaced. scheduled_for reschedules it; clear_fields clears the date, Notes or a linked record. resume restarts a blocked or failed AI task in a new run with resume_context. You can also relink the contact, company or custom object, edit an unfinished AI task's plan, rename it, or reassign it to a teammate. Reassignment and resume go alone; link, plan and title changes cannot be combined with schedule, status or Notes. A link change that needs a new plan returns a draft plan and reasoning and saves nothing. Status changes can notify teammates. Returns the updated task and a message.
The description explains the capability, when to use it, and what to expect.
Inputs98/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
task_id
ID of the task to update, from search_tasks.
Clear enough to supply this argument.
clear_fields
Fields to clear: notes erases the Notes, scheduled_for removes the date, contact_id, contact_company_id or custom_object_id unlink that record. A listed field is cleared even if a value is also sent. Null or [] clears nothing.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
status
succeeded marks the task done; cancelled cancels it; both stop any AI run and trigger. scheduled re-opens a finished human task. AI tasks accept only succeeded or cancelled. Null leaves status unchanged.
Clear enough to supply this argument.
assignee_user_id
Teammate's user ID from the teammates in get_workspace_context, to reassign the task. Send it with no other change; human-to-human only. Null keeps the current assignee.
Clear enough to supply this argument.
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 text after the existing Notes, so repeating the call adds it again; it fails with a conflict if the Notes changed meanwhile. replace discards the existing Notes; use it only when overwriting is intended.
Clear enough to supply this argument.
resume
true restarts a blocked AI task in a new run with resume_context. Valid on AI tasks in Input Needed, Failed or Pending Approval states; cannot be combined with schedule, status or Notes changes.
Clear enough to supply this argument.
contact_id
Contact record ID from search_objects to link. Null keeps the current link; to unlink, list contact_id in clear_fields.
Clear enough to supply this argument.
contact_company_id
Company record ID from search_objects to link. Null keeps the current link; to unlink, list contact_company_id in clear_fields.
Clear enough to supply this argument.
custom_object_id
Custom object record ID (e.g. a deal) from search_objects to link. Null keeps the current link; to unlink, list custom_object_id in clear_fields.
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
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. When omitted the call runs once and a repeat is a new action.
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 item task. Task IDs come from search_tasks. Marking it succeeded or cancelled ends it and stops any AI run and trigger; scheduled re-opens a finished to-do. Notes can be appended to or replaced. scheduled_for reschedules it; clear_fields clears the date, Notes or a linked record. resume restarts a blocked or failed AI task in a new run with resume_context. You can also relink the contact, company or custom object, edit an unfinished AI task's plan, rename it, or reassign it to a teammate. Reassignment and resume go alone; link, plan and title changes cannot be combined with schedule, status or Notes. A link change that needs a new plan returns a draft plan and reasoning and saves nothing. Status changes can notify teammates. Returns the updated task and a message.",
"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 text after the existing Notes, so repeating the call adds it again; it fails with a conflict if the Notes changed meanwhile. replace discards the existing Notes; use it only when overwriting is intended."
},
"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": "true restarts a blocked AI task in a new run with resume_context. Valid on AI tasks in Input Needed, Failed or Pending Approval states; cannot be combined with schedule, status or Notes changes."
},
"status": {
"anyOf": [
{
"enum": [
"succeeded",
"cancelled",
"scheduled"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "succeeded marks the task done; cancelled cancels it; both stop any AI run and trigger. scheduled re-opens a finished human task. AI tasks accept only succeeded or cancelled. Null leaves status unchanged."
},
"task_id": {
"type": "string",
"description": "ID of the task to update, from search_tasks."
},
"contact_id": {
"type": [
"number",
"null"
],
"description": "Contact record ID from search_objects to link. Null keeps the current link; to unlink, list contact_id in clear_fields."
},
"clear_fields": {
"anyOf": [
{
"type": "array",
"items": {
"enum": [
"scheduled_for",
"notes",
"contact_id",
"contact_company_id",
"custom_object_id"
],
"type": "string"
}
},
{
"type": "null"
}
],
"description": "Fields to clear: notes erases the Notes, scheduled_for removes the date, contact_id, contact_company_id or custom_object_id unlink that record. A listed field is cleared even if a value is also sent. Null or [] clears nothing."
},
"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": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. When omitted the call runs once and a repeat is a new action."
},
"assignee_user_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"description": "Teammate's user ID from the teammates in get_workspace_context, to reassign the task. Send it with no other change; human-to-human only. Null keeps the current assignee."
},
"custom_object_id": {
"type": [
"number",
"null"
],
"description": "Custom object record ID (e.g. a deal) from search_objects to link. Null keeps the current link; to unlink, list custom_object_id in clear_fields."
},
"contact_company_id": {
"type": [
"number",
"null"
],
"description": "Company record ID from search_objects to link. Null keeps the current link; to unlink, list contact_company_id in clear_fields."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Update task",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Delete an item task. Task IDs come from search_tasks. The task is cancelled and removed from task lists, and any AI run and trigger for it are stopped. The deletion takes effect when the call runs and cannot be restored over this connection. Returns success, a confirmation message and the task_id.
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.
task_id
ID of the task to delete, from search_tasks.
Clear enough to supply this argument.
_skip_approval
Accepted for compatibility and discarded; it has no effect. Omit it.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. When omitted the call runs once and a repeat is a new action.
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 an item task. Task IDs come from search_tasks. The task is cancelled and removed from task lists, and any AI run and trigger for it are stopped. The deletion takes effect when the call runs and cannot be restored over this connection. Returns success, a confirmation message and the task_id.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"task_id"
],
"properties": {
"task_id": {
"type": "string",
"description": "ID of the task to delete, from search_tasks."
},
"_skip_approval": {
"type": "boolean",
"description": "Accepted for compatibility and discarded; it has no effect. Omit it."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. When omitted the call runs once and a repeat is a new action."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Delete task",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Send item contacts to Klaviyo through a bulk profile import job, which creates profiles or updates existing ones (overwriting email, external ID = item contact ID, name, phone, title and organization). Only non-deleted contacts with a valid email that were not exported before are sent, up to the limit (default 100), in no set order; sent contacts are marked exported in item and not re-sent. Optional field filter and Klaviyo list. Requires a connected Klaviyo account. Returns exported and skipped counts, list ID, filter and Klaviyo's job response.
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.
filterField
Contact field to filter by: a built-in column (source, industry, role, name, email, phone, linkedin_url), industries (matches one entry of the list), or a contact custom field name. Ignored unless filterValue is also set.
Clear enough to supply this argument.
filterValue
Exact value filterField must equal (for multi-value custom fields, a value the list contains). If either filter field is missing, every not-yet-exported contact is eligible.
Clear enough to supply this argument.
klaviyoListId
Klaviyo list ID (from Klaviyo) to add the imported profiles to; omit to import profiles without adding them to a list.
Clear enough to supply this argument.
limit
Maximum number of not-yet-exported contacts sent in this job; a later call sends the next batch.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 through a bulk profile import job, which creates profiles or updates existing ones (overwriting email, external ID = item contact ID, name, phone, title and organization). Only non-deleted contacts with a valid email that were not exported before are sent, up to the limit (default 100), in no set order; sent contacts are marked exported in item and not re-sent. Optional field filter and Klaviyo list. Requires a connected Klaviyo account. Returns exported and skipped counts, list ID, filter and Klaviyo's job response.\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 not-yet-exported contacts sent in this job; a later call sends the next batch."
},
"filterField": {
"type": "string",
"description": "Contact field to filter by: a built-in column (source, industry, role, name, email, phone, linkedin_url), industries (matches one entry of the list), or a contact custom field name. Ignored unless filterValue is also set."
},
"filterValue": {
"type": "string",
"description": "Exact value filterField must equal (for multi-value custom fields, a value the list contains). If either filter field is missing, every not-yet-exported contact is eligible."
},
"klaviyoListId": {
"type": "string",
"description": "Klaviyo list ID (from Klaviyo) to add the imported profiles to; omit to import profiles without adding them to a list."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Export contacts to Klaviyo",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
List the teams in the connected Linear workspace. Returns each team's id, key (such as ENG) and name; the key is what Linear issue, cycle and SLA operations take to select a team.
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 output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "linear_list_teams",
"title": "List Linear teams",
"description": "List the teams in the connected Linear workspace. Returns each team's id, key (such as ENG) and name; the key is what Linear issue, cycle and SLA operations take to select a team.",
"inputSchema": {
"type": "object",
"required": [],
"properties": {},
"additionalProperties": false
},
"annotations": {
"title": "List Linear teams",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Read one Linear issue by identifier (such as ENG-123) or UUID. Returns id, identifier, title, description, priority and its label, status name, assignee name and email, team key and name, project name and id, label IDs, URL, created and updated times, due date, estimate and SLA breach time.
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.
issue_id
Issue identifier such as ENG-123 (team key plus number, as returned by linear_search_issues) or the issue UUID.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "linear_get_issue",
"title": "Get Linear issue",
"description": "Read one Linear issue by identifier (such as ENG-123) or UUID. Returns id, identifier, title, description, priority and its label, status name, assignee name and email, team key and name, project name and id, label IDs, URL, created and updated times, due date, estimate and SLA breach time.",
"inputSchema": {
"type": "object",
"required": [
"issue_id"
],
"properties": {
"issue_id": {
"type": "string",
"description": "Issue identifier such as ENG-123 (team key plus number, as returned by linear_search_issues) or the issue UUID."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Get Linear issue",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
Search Linear issues by full text, or list issues when no text is given, filtered by team key, exact status name, priority, assignee email, exact label name and project name (case-insensitive partial match). Returns up to the limit with id, identifier, title, priority and its label, status, assignee name, team key, URL and creation time, plus a count.
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.
query
Full-text search terms; omit to list issues matching only the filters.
Clear enough to supply this argument.
team_key
Team key such as ENG, from linear_list_teams.
Clear enough to supply this argument.
status
Exact workflow state name, such as In Progress or Done.
Clear enough to supply this argument.
priority
Linear priority: 0 no priority, 1 urgent, 2 high, 3 normal (medium), 4 low.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
assignee_email
Email of the Linear user the issues are assigned to.
Clear enough to supply this argument.
label_name
Exact name of a label the issues carry.
Clear enough to supply this argument.
project_name
Project name or part of it, matched case-insensitively.
Clear enough to supply this argument.
limit
Maximum number of issues to return.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "linear_search_issues",
"title": "Search Linear issues",
"description": "Search Linear issues by full text, or list issues when no text is given, filtered by team key, exact status name, priority, assignee email, exact label name and project name (case-insensitive partial match). Returns up to the limit with id, identifier, title, priority and its label, status, assignee name, team key, URL and creation time, plus a count.",
"inputSchema": {
"type": "object",
"required": [],
"properties": {
"limit": {
"type": "number",
"default": 20,
"maximum": 50,
"minimum": 1,
"description": "Maximum number of issues to return."
},
"query": {
"type": "string",
"description": "Full-text search terms; omit to list issues matching only the filters."
},
"status": {
"type": "string",
"description": "Exact workflow state name, such as In Progress or Done."
},
"priority": {
"type": "number",
"maximum": 4,
"minimum": 0,
"description": "Linear priority: 0 no priority, 1 urgent, 2 high, 3 normal (medium), 4 low."
},
"team_key": {
"type": "string",
"description": "Team key such as ENG, from linear_list_teams."
},
"label_name": {
"type": "string",
"description": "Exact name of a label the issues carry."
},
"project_name": {
"type": "string",
"description": "Project name or part of it, matched case-insensitively."
},
"assignee_email": {
"type": "string",
"description": "Email of the Linear user the issues are assigned to."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Search Linear issues",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
Read one Linear project by ID, falling back to the first project whose name contains the value (case-insensitive). Returns name, description, state, health, progress, start and target dates, teams, whether it has issues, URL, and the latest project update (body, health, date).
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.
project_id
Project ID (or slug) from linear_search_projects; if that lookup fails the value is matched against project names, case-insensitively, and the first match is used.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "linear_get_project",
"title": "Get Linear project",
"description": "Read one Linear project by ID, falling back to the first project whose name contains the value (case-insensitive). Returns name, description, state, health, progress, start and target dates, teams, whether it has issues, URL, and the latest project update (body, health, date).",
"inputSchema": {
"type": "object",
"required": [
"project_id"
],
"properties": {
"project_id": {
"type": "string",
"description": "Project ID (or slug) from linear_search_projects; if that lookup fails the value is matched against project names, case-insensitively, and the first match is used."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Get Linear project",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Search Linear projects by name (case-insensitive partial match) and filter by project state. Returns up to the limit with id, name, state, health (onTrack, atRisk or offTrack), progress, start and target dates and URL, plus a count. Health is returned but is not a filter.
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.
query
Text matched against project names (case-insensitive partial match); omit to list projects.
Clear enough to supply this argument.
status
Project lifecycle state to filter by: planned (not started), started (in progress), paused, completed or canceled.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
limit
Maximum number of projects to return.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "linear_search_projects",
"title": "Search Linear projects",
"description": "Search Linear projects by name (case-insensitive partial match) and filter by project state. Returns up to the limit with id, name, state, health (onTrack, atRisk or offTrack), progress, start and target dates and URL, plus a count. Health is returned but is not a filter.",
"inputSchema": {
"type": "object",
"required": [],
"properties": {
"limit": {
"type": "number",
"default": 20,
"maximum": 50,
"minimum": 1,
"description": "Maximum number of projects to return."
},
"query": {
"type": "string",
"description": "Text matched against project names (case-insensitive partial match); omit to list projects."
},
"status": {
"enum": [
"planned",
"started",
"paused",
"completed",
"canceled"
],
"type": "string",
"description": "Project lifecycle state to filter by: planned (not started), started (in progress), paused, completed or canceled."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Search Linear projects",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description93/100
Read a Linear initiative by ID. Returns its name, description and status, and the projects in it with each project's id, name, state, health and progress.
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.
initiative_id
Linear initiative ID (UUID), from Linear or the user; no exposed tool lists initiatives.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "linear_get_initiative",
"title": "Get Linear initiative",
"description": "Read a Linear initiative by ID. Returns its name, description and status, and the projects in it with each project's id, name, state, health and progress.",
"inputSchema": {
"type": "object",
"required": [
"initiative_id"
],
"properties": {
"initiative_id": {
"type": "string",
"description": "Linear initiative ID (UUID), from Linear or the user; no exposed tool lists initiatives."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Get Linear initiative",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Read one Linear customer by customer ID, by name (case-insensitive partial match, first result) or by exact domain; name is used before domain. Returns id, name, domains, external IDs, annual revenue, size, Slack channel ID and the customer's requests (id, body, priority, creation time).
The description explains the capability, when to use it, and what to expect.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
customer_id
Linear customer ID, as returned by linear_create_or_update_customer or an earlier lookup; used before name and domain.
Clear enough to supply this argument.
domain
Exact customer domain, such as acme.com; used only when customer_id and name are absent.
Clear enough to supply this argument.
name
Customer name or part of it, matched case-insensitively; the first match is returned.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "linear_get_customer",
"title": "Get Linear customer",
"description": "Read one Linear customer by customer ID, by name (case-insensitive partial match, first result) or by exact domain; name is used before domain. Returns id, name, domains, external IDs, annual revenue, size, Slack channel ID and the customer's requests (id, body, priority, creation time).",
"inputSchema": {
"type": "object",
"required": [],
"properties": {
"name": {
"type": "string",
"description": "Customer name or part of it, matched case-insensitively; the first match is returned."
},
"domain": {
"type": "string",
"description": "Exact customer domain, such as acme.com; used only when customer_id and name are absent."
},
"customer_id": {
"type": "string",
"description": "Linear customer ID, as returned by linear_create_or_update_customer or an earlier lookup; used before name and domain."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Get Linear customer",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
List Linear customer requests for one customer or across the workspace, up to the limit. Each request includes body, priority, creation time and the linked issue (identifier and title; for a single customer also status and URL); workspace-wide results also include the customer name. Returns requests and a count.
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.
customer_id
Linear customer ID from linear_get_customer; omit to list requests across all customers.
Clear enough to supply this argument.
limit
Maximum number of requests to return.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "linear_list_customer_requests",
"title": "List Linear customer requests",
"description": "List Linear customer requests for one customer or across the workspace, up to the limit. Each request includes body, priority, creation time and the linked issue (identifier and title; for a single customer also status and URL); workspace-wide results also include the customer name. Returns requests and a count.",
"inputSchema": {
"type": "object",
"required": [],
"properties": {
"limit": {
"type": "number",
"default": 20,
"maximum": 50,
"minimum": 1,
"description": "Maximum number of requests to return."
},
"customer_id": {
"type": "string",
"description": "Linear customer ID from linear_get_customer; omit to list requests across all customers."
}
},
"additionalProperties": false
},
"annotations": {
"title": "List Linear customer requests",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Read the active cycle of a Linear team. Returns the cycle id, number, name, start and end times, Linear's progress value, and the number of issues and completed issues with a completion percentage (counted over at most the first 100 issues). Issues themselves are not listed. Fails when the team has no active cycle.
The description explains the capability, when to use it, and what to expect.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
team_key
Team key such as ENG, from linear_list_teams; that team's active cycle is returned.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "linear_get_cycle",
"title": "Get Linear cycle",
"description": "Read the active cycle of a Linear team. Returns the cycle id, number, name, start and end times, Linear's progress value, and the number of issues and completed issues with a completion percentage (counted over at most the first 100 issues). Issues themselves are not listed. Fails when the team has no active cycle.",
"inputSchema": {
"type": "object",
"required": [
"team_key"
],
"properties": {
"team_key": {
"type": "string",
"description": "Team key such as ENG, from linear_list_teams; that team's active cycle is returned."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Get Linear cycle",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Search Linear documents by full text over title and content, or list documents when no text is given, optionally limited to one project. Returns up to the limit with id, title, the first 500 characters of content, project name, URL and created and updated times, plus a count.
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.
query
Full-text search terms matched against document titles and content; omit to list documents.
Clear enough to supply this argument.
project_id
Project ID from linear_search_projects. With a query, results are narrowed to this project after the search, so fewer than the limit may come back.
Clear enough to supply this argument.
limit
Maximum number of documents to return.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
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 full text over title and content, or list documents when no text is given, optionally limited to one project. Returns up to the limit with id, title, the first 500 characters of content, project name, URL and created and updated times, plus a count.",
"inputSchema": {
"type": "object",
"required": [],
"properties": {
"limit": {
"type": "number",
"default": 10,
"maximum": 50,
"minimum": 1,
"description": "Maximum number of documents to return."
},
"query": {
"type": "string",
"description": "Full-text search terms matched against document titles and content; omit to list documents."
},
"project_id": {
"type": "string",
"description": "Project ID from linear_search_projects. With a query, results are narrowed to this project after the search, so fewer than the limit may come back."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Search Linear documents",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
Read Linear SLA status for one issue or for a team's issues (the first 50 Linear returns). Each issue is classed breached (deadline passed), at risk (deadline within 24 hours), on track or no SLA, with identifier, title and breach time; team results add counts per status. One of issue or team is required.
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.
issue_id
Issue identifier (such as ENG-123) or UUID to check one issue; used instead of team_key when both are given.
Clear enough to supply this argument.
team_key
Team key such as ENG, from linear_list_teams, to check that team's first 50 issues.
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 Linear SLA status for one issue or for a team's issues (the first 50 Linear returns). Each issue is classed breached (deadline passed), at risk (deadline within 24 hours), on track or no SLA, with identifier, title and breach time; team results add counts per status. One of issue or team is required.",
"inputSchema": {
"type": "object",
"required": [],
"properties": {
"issue_id": {
"type": "string",
"description": "Issue identifier (such as ENG-123) or UUID to check one issue; used instead of team_key when both are given."
},
"team_key": {
"type": "string",
"description": "Team key such as ENG, from linear_list_teams, to check that team's first 50 issues."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Get Linear SLA status",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Create an issue in Linear. The team is matched by key or name; without one, the workspace must have exactly one team. Status, assignee (by email), labels (team labels, case-insensitive) and project (exact name) are applied only when they match; unmatched values are skipped and the issue is still created. Returns the new issue's id, identifier, title and URL.
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.
title
Issue title
Clear enough to supply this argument.
description
Issue description in Markdown.
Clear enough to supply this argument.
team_key
Team key such as ENG (from linear_list_teams) or exact team name; required when the workspace has more than one team.
Clear enough to supply this argument.
priority
Linear priority: 0 no priority, 1 urgent, 2 high, 3 normal (medium), 4 low.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
state_name
Workflow state name such as Backlog or Todo, matched case-insensitively within the team; if omitted or unmatched, the team's default state is used.
Clear enough to supply this argument.
assignee_email
Email of the Linear user to assign; if no user matches, the issue is created unassigned.
Clear enough to supply this argument.
label_names
Names of the team's existing labels, matched case-insensitively; unmatched names are ignored.
Clear enough to supply this argument.
project_name
Exact project name, from linear_search_projects; if omitted or not matched exactly, the issue is created without a project.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
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. The team is matched by key or name; without one, the workspace must have exactly one team. Status, assignee (by email), labels (team labels, case-insensitive) and project (exact name) are applied only when they match; unmatched values are skipped and the issue is still created. Returns the new issue's id, identifier, title and URL.\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": "Linear priority: 0 no priority, 1 urgent, 2 high, 3 normal (medium), 4 low."
},
"team_key": {
"type": "string",
"description": "Team key such as ENG (from linear_list_teams) or exact team name; required when the workspace has more than one team."
},
"state_name": {
"type": "string",
"description": "Workflow state name such as Backlog or Todo, matched case-insensitively within the team; if omitted or unmatched, the team's default state is used."
},
"description": {
"type": "string",
"description": "Issue description in Markdown."
},
"label_names": {
"type": "array",
"description": "Names of the team's existing labels, matched case-insensitively; unmatched names are ignored."
},
"project_name": {
"type": "string",
"description": "Exact project name, from linear_search_projects; if omitted or not matched exactly, the issue is created without a project."
},
"assignee_email": {
"type": "string",
"description": "Email of the Linear user to assign; if no user matches, the issue is created unassigned."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Create Linear issue",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Update a Linear issue identified by identifier or UUID: title, description, priority, status (team workflow state name), assignee (by email) and labels. Given labels replace the issue's current labels. Unmatched status, assignee or label names are skipped silently, and empty values cannot clear a field. Returns the issue id, identifier and updated: 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.
Inputs97/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
issue_id
Issue identifier (such as ENG-123) or UUID.
Clear enough to supply this argument.
status
Workflow state name in the issue's team, such as In Progress or Done, matched case-insensitively; unmatched names are ignored.
Clear enough to supply this argument.
priority
Linear priority: 0 no priority, 1 urgent, 2 high, 3 normal (medium), 4 low.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
assignee_email
Email of the Linear user to assign; ignored if no user matches. Cannot unassign.
Clear enough to supply this argument.
label_names
Names of the team's labels, matched case-insensitively; matched labels replace all current labels and unmatched names are ignored.
Clear enough to supply this argument.
title
New issue title
Clear enough to supply this argument.
description
New description in Markdown; replaces the existing description.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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": "Update a Linear issue identified by identifier or UUID: title, description, priority, status (team workflow state name), assignee (by email) and labels. Given labels replace the issue's current labels. Unmatched status, assignee or label names are skipped silently, and empty values cannot clear a field. Returns the issue id, identifier and updated: 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",
"required": [
"issue_id",
"_item_request_id"
],
"properties": {
"title": {
"type": "string",
"description": "New issue title"
},
"status": {
"type": "string",
"description": "Workflow state name in the issue's team, such as In Progress or Done, matched case-insensitively; unmatched names are ignored."
},
"issue_id": {
"type": "string",
"description": "Issue identifier (such as ENG-123) or UUID."
},
"priority": {
"type": "number",
"maximum": 4,
"minimum": 0,
"description": "Linear priority: 0 no priority, 1 urgent, 2 high, 3 normal (medium), 4 low."
},
"description": {
"type": "string",
"description": "New description in Markdown; replaces the existing description."
},
"label_names": {
"type": "array",
"description": "Names of the team's labels, matched case-insensitively; matched labels replace all current labels and unmatched names are ignored."
},
"assignee_email": {
"type": "string",
"description": "Email of the Linear user to assign; ignored if no user matches. Cannot unassign."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Update Linear issue",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Post a comment on a Linear issue identified by identifier (such as ENG-123) or UUID. The comment is visible to everyone with access to the issue. Returns the new comment's id and URL.
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.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
issue_id
Issue identifier (such as ENG-123) or UUID, from linear_search_issues or linear_get_issue.
Clear enough to supply this argument.
body
Comment body (markdown supported)
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
Clear enough to supply this argument.
Annotations100/100
All four behavior hints are declared.
{
"title": "Comment on Linear issue",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": 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": "linear_create_comment",
"title": "Comment on Linear issue",
"description": "Post a comment on a Linear issue identified by identifier (such as ENG-123) or UUID. The comment is visible to everyone with access to the issue. Returns the new comment's id and URL.\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": "Issue identifier (such as ENG-123) or UUID, from linear_search_issues or linear_get_issue."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Comment on Linear issue",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Create a Linear customer request that links a customer to an issue, with optional Markdown text and an importance flag. Each call adds a new request. Returns the new request's id and created: 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.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
issue_id
Issue identifier (such as ENG-123) or UUID of the issue the request is about.
Clear enough to supply this argument.
customer_id
Linear customer ID, from linear_get_customer or linear_create_or_update_customer.
Clear enough to supply this argument.
body
Request text in Markdown, such as what the customer asked for.
Clear enough to supply this argument.
priority
Importance Linear stores on the request: 0 not important, 1 important. Linear's customer requests have only these two levels; the value is sent to Linear unchanged, so 2 to 4 are not meaningful even though the schema admits them.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 that links a customer to an issue, with optional Markdown text and an importance flag. Each call adds a new request. Returns the new request's id and created: 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",
"required": [
"issue_id",
"customer_id",
"_item_request_id"
],
"properties": {
"body": {
"type": "string",
"description": "Request text in Markdown, such as what the customer asked for."
},
"issue_id": {
"type": "string",
"description": "Issue identifier (such as ENG-123) or UUID of the issue the request is about."
},
"priority": {
"type": "number",
"maximum": 4,
"minimum": 0,
"description": "Importance Linear stores on the request: 0 not important, 1 important. Linear's customer requests have only these two levels; the value is sent to Linear unchanged, so 2 to 4 are not meaningful even though the schema admits them."
},
"customer_id": {
"type": "string",
"description": "Linear customer ID, from linear_get_customer or linear_create_or_update_customer."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Create Linear customer request",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Create a Linear customer, or update the customer whose name matches exactly. Sets domains, external IDs, annual revenue and size when given; omitted fields are left unchanged and given lists replace existing ones. Returns the customer id, name and whether it was created or updated.
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.
Inputs95/100
Input documentation gives an agent enough context to populate the arguments.
name
Customer name; an existing customer with exactly this name is updated, otherwise a new customer is created.
Clear enough to supply this argument.
domains
Company domains for the customer, such as acme.com; replaces the customer's domains when given.
Clear enough to supply this argument.
external_ids
IDs of this customer in other systems (such as a CRM or billing ID); replaces existing external IDs when given.
Clear enough to supply this argument.
revenue
Annual recurring revenue of the customer in whole currency units of your Linear workspace (for example 120000 for $120,000, not cents). item sends it unchanged with no currency; Linear stores it as an integer, so send a whole number.
Clear enough to supply this argument.
tier
Not supported: Linear's customer input takes a tier ID, not a tier name, so passing this is expected to make the request fail.
Clear enough to supply this argument.
size
Company size as a whole number of employees.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
Clear enough to supply this argument.
Annotations100/100
All four behavior hints are declared.
{
"title": "Create or update Linear customer",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": 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 the customer whose name matches exactly. Sets domains, external IDs, annual revenue and size when given; omitted fields are left unchanged and given lists replace existing ones. Returns the customer id, name and whether it was created or updated.\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; an existing customer with exactly this name is updated, otherwise a new customer is created."
},
"size": {
"type": "number",
"description": "Company size as a whole number of employees."
},
"tier": {
"type": "string",
"description": "Not supported: Linear's customer input takes a tier ID, not a tier name, so passing this is expected to make the request fail."
},
"domains": {
"type": "array",
"description": "Company domains for the customer, such as acme.com; replaces the customer's domains when given."
},
"revenue": {
"type": "number",
"description": "Annual recurring revenue of the customer in whole currency units of your Linear workspace (for example 120000 for $120,000, not cents). item sends it unchanged with no currency; Linear stores it as an integer, so send a whole number."
},
"external_ids": {
"type": "array",
"description": "IDs of this customer in other systems (such as a CRM or billing ID); replaces existing external IDs when given."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Create or update Linear customer",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Post a status update on a Linear project with a Markdown body and optional health. Each call adds a new update to the project's update feed. Returns the update's id and URL.
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.
project_id
Project ID (UUID) from linear_search_projects or linear_get_project; names are not accepted.
Clear enough to supply this argument.
body
Update body (markdown supported)
Clear enough to supply this argument.
health
Health reported with the update: onTrack (on schedule), atRisk (may slip) or offTrack (behind); omit to post without a health value.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 with a Markdown body and optional health. Each call adds a new update to the project's update feed. Returns the update's id and URL.\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": "Health reported with the update: onTrack (on schedule), atRisk (may slip) or offTrack (behind); omit to post without a health value."
},
"project_id": {
"type": "string",
"description": "Project ID (UUID) from linear_search_projects or linear_get_project; names are not accepted."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Post Linear project update",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Find a Loops contact by email address. Returns the contact as Loops stores it (standard fields such as name, subscription status, user group and userId, custom properties and mailing lists), with mailing list names added for subscribed lists. An empty result means no Loops contact has that email.
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.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "loops_find_contact",
"title": "Find Loops contact",
"description": "Find a Loops contact by email address. Returns the contact as Loops stores it (standard fields such as name, subscription status, user group and userId, custom properties and mailing lists), with mailing list names added for subscribed lists. An empty result means no Loops contact has that email.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"email"
],
"properties": {
"email": {
"type": "string",
"description": "Email address of the contact to find"
}
},
"additionalProperties": false
},
"annotations": {
"title": "Find Loops contact",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Create a contact in Loops (not in the item CRM) with optional name, source, subscription status, user group and mailing lists. On success item also finds or creates a matching item CRM contact by email, and every attempt is logged on the item contact timeline. Returns Loops' API response.
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.
Inputs95/100
Input documentation gives an agent enough context to populate the arguments.
email
Email address of the new Loops contact.
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.
source
Free-text label recorded in Loops for where the contact came from; when omitted it is not sent and Loops applies its default.
Clear enough to supply this argument.
subscribed
Whether the contact receives Loops campaign emails; when omitted it is not sent and Loops applies its default.
Clear enough to supply this argument.
userGroup
Free-text Loops user group used to segment contacts for campaigns.
Clear enough to supply this argument.
mailingLists
Map of Loops mailing list IDs (from loops_list_mailing_lists) to true to subscribe or false to leave unsubscribed.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 (not in the item CRM) with optional name, source, subscription status, user group and mailing lists. On success item also finds or creates a matching item CRM contact by email, and every attempt is logged on the item contact timeline. Returns Loops' API response.\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 new Loops contact."
},
"source": {
"type": "string",
"description": "Free-text label recorded in Loops for where the contact came from; when omitted it is not sent and Loops applies its default."
},
"lastName": {
"type": "string",
"description": "Contact last name"
},
"firstName": {
"type": "string",
"description": "Contact first name"
},
"userGroup": {
"type": "string",
"description": "Free-text Loops user group used to segment contacts for campaigns."
},
"subscribed": {
"type": "boolean",
"description": "Whether the contact receives Loops campaign emails; when omitted it is not sent and Loops applies its default."
},
"mailingLists": {
"type": "object",
"description": "Map of Loops mailing list IDs (from loops_list_mailing_lists) to true to subscribe or false to leave unsubscribed.",
"additionalProperties": {}
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Create Loops contact",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Update a Loops contact identified by email: first and last name, subscription status, user group, mailing list subscriptions and custom properties (sent as top-level fields; null clears one). Only provided fields are sent. Affects Loops only, not the item CRM; each call is logged on the item contact timeline. Returns Loops' API response.
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.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
email
Email of the Loops contact to update; identifies the contact and is not changed.
Clear enough to supply this argument.
firstName
New first name; omit to leave it unchanged.
Clear enough to supply this argument.
lastName
New last name; omit to leave it unchanged.
Clear enough to supply this argument.
subscribed
New subscription status; false unsubscribes the contact from Loops campaign emails. Omit to leave unchanged.
Clear enough to supply this argument.
userGroup
New free-text Loops user group; omit to leave unchanged.
Clear enough to supply this argument.
mailingLists
Map of Loops mailing list IDs (from loops_list_mailing_lists) to true (subscribe) or false (unsubscribe); lists not included are not sent.
Clear enough to supply this argument.
customProperties
Values keyed by existing property keys from loops_list_contact_properties; sent as top-level contact fields, and null clears a value.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 a Loops contact identified by email: first and last name, subscription status, user group, mailing list subscriptions and custom properties (sent as top-level fields; null clears one). Only provided fields are sent. Affects Loops only, not the item CRM; each call is logged on the item contact timeline. Returns Loops' API response.\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 of the Loops contact to update; identifies the contact and is not changed."
},
"lastName": {
"type": "string",
"description": "New last name; omit to leave it unchanged."
},
"firstName": {
"type": "string",
"description": "New first name; omit to leave it unchanged."
},
"userGroup": {
"type": "string",
"description": "New free-text Loops user group; omit to leave unchanged."
},
"subscribed": {
"type": "boolean",
"description": "New subscription status; false unsubscribes the contact from Loops campaign emails. Omit to leave unchanged."
},
"mailingLists": {
"type": "object",
"description": "Map of Loops mailing list IDs (from loops_list_mailing_lists) to true (subscribe) or false (unsubscribe); lists not included are not sent.",
"additionalProperties": {}
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
},
"customProperties": {
"type": "object",
"description": "Values keyed by existing property keys from loops_list_contact_properties; sent as top-level contact fields, and null clears a value.",
"additionalProperties": {}
}
},
"additionalProperties": false
},
"annotations": {
"title": "Update Loops contact",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Send one email to one recipient from a Loops transactional template, filling its data variables. The email goes out immediately and cannot be recalled; each call sends another. Optionally adds the recipient as a Loops contact. Each send is logged on the item contact timeline. Returns Loops' API response.
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
Explain what happens when this optional value is omitted.
transactionalId
Loops transactional template ID, from loops_list_transactional_templates.
Clear enough to supply this argument.
email
Recipient email address
Clear enough to supply this argument.
dataVariables
Values for the template's data variables keyed by variable name (listed by loops_list_transactional_templates); omitted means an empty object.
Clear enough to supply this argument.
addToAudience
true also creates a Loops contact for the recipient if none exists; when omitted item does not send it and Loops' default applies.
Clear enough to supply this argument.
templateName
Template name shown in item only; it is not sent to Loops.
Explain what happens when this optional value is omitted.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 one email to one recipient from a Loops transactional template, filling its data variables. The email goes out immediately and cannot be recalled; each call sends another. Optionally adds the recipient as a Loops contact. Each send is logged on the item contact timeline. Returns Loops' API response.\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": "Template name shown in item only; it is not sent to Loops."
},
"addToAudience": {
"type": "boolean",
"description": "true also creates a Loops contact for the recipient if none exists; when omitted item does not send it and Loops' default applies."
},
"dataVariables": {
"type": "object",
"description": "Values for the template's data variables keyed by variable name (listed by loops_list_transactional_templates); omitted means an empty object.",
"additionalProperties": {}
},
"transactionalId": {
"type": "string",
"description": "Loops transactional template ID, from loops_list_transactional_templates."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Send Loops transactional email",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Send a named event for a contact to Loops. Loops automations triggered by that exact, case-sensitive event name can start and send emails. Event names cannot be listed here. Optional event properties are passed along; each call sends a new event and is logged on the item contact timeline. Returns Loops' API response.
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.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
email
Email of the Loops contact the event is recorded for.
Clear enough to supply this argument.
eventName
Exact, case-sensitive name of an event configured in Loops as a loop trigger; there is no way to list event names, so it comes from the user.
Clear enough to supply this argument.
eventProperties
Event property values keyed by property name, passed to Loops with the event for use by the triggered loop.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 a named event for a contact to Loops. Loops automations triggered by that exact, case-sensitive event name can start and send emails. Event names cannot be listed here. Optional event properties are passed along; each call sends a new event and is logged on the item contact timeline. Returns Loops' API response.\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 of the Loops contact the event is recorded for."
},
"eventName": {
"type": "string",
"description": "Exact, case-sensitive name of an event configured in Loops as a loop trigger; there is no way to list event names, so it comes from the user."
},
"eventProperties": {
"type": "object",
"description": "Event property values keyed by property name, passed to Loops with the event for use by the triggered loop.",
"additionalProperties": {}
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Send Loops event",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": 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": "loops_list_mailing_lists",
"title": "List Loops mailing lists",
"description": "List the mailing lists in Loops. Returns each list as Loops provides it, including its id and name; the id is what mailing list subscriptions take.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {},
"additionalProperties": false
},
"annotations": {
"title": "List Loops mailing lists",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description94/100
List the transactional email templates in Loops. Returns Loops' template records, including each template's ID and its data variable names, which a transactional send needs.
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.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description93/100
List the contact properties defined in Loops, optionally only custom ones. Returns each property's key, label and type; the key is what custom contact properties are set with.
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.
list
Filter properties: use "custom" to only return custom properties. Omit for all properties.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Subscribe a Loops contact (by email) to one Loops mailing list by updating the contact with that list set to subscribed; only that list is sent. Each call is logged on the item contact timeline. Returns Loops' API response.
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.
email
Email of the Loops contact to subscribe.
Clear enough to supply this argument.
mailingListId
Loops mailing list ID, from loops_list_mailing_lists.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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": "Subscribe a Loops contact (by email) to one Loops mailing list by updating the contact with that list set to subscribed; only that list is sent. Each call is logged on the item contact timeline. Returns Loops' API response.\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 of the Loops contact to subscribe."
},
"mailingListId": {
"type": "string",
"description": "Loops mailing list ID, from loops_list_mailing_lists."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Add to Loops mailing list",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Permanently delete a contact from Loops by email (optionally with its Loops userId). This cannot be undone and does not delete the item CRM contact. Each attempt is logged on the item contact timeline. Returns Loops' API response.
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.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
email
Email of the Loops contact to delete.
Clear enough to supply this argument.
userId
Optional userId stored on the Loops contact (the external user ID shown by loops_find_contact), sent alongside email.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 by email (optionally with its Loops userId). This cannot be undone and does not delete the item CRM contact. Each attempt is logged on the item contact timeline. Returns Loops' API response.\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 of the Loops contact to delete."
},
"userId": {
"type": "string",
"description": "Optional userId stored on the Loops contact (the external user ID shown by loops_find_contact), sent alongside email."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Delete Loops contact",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
List Mailchimp audiences (up to 1,000). Returns each audience's id, name and member count, plus the total number of audiences; the id is the audience ID other Mailchimp contact operations take.
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 output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "mailchimp_list_audiences",
"title": "List Mailchimp audiences",
"description": "List Mailchimp audiences (up to 1,000). Returns each audience's id, name and member count, plus the total number of audiences; the id is the audience ID other Mailchimp contact operations take.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {},
"additionalProperties": false
},
"annotations": {
"title": "List Mailchimp audiences",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Find a Mailchimp contact by email, in one audience or by checking each audience in turn (first 1,000) and returning the first match. Returns the Mailchimp member record, including status, merge fields, tags, stats and audience id. A not-found error means no checked audience contains the email.
The description explains the capability, when to use it, and what to expect.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
audienceId
Mailchimp audience ID from mailchimp_list_audiences, to search only that audience; omit to check every audience.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "mailchimp_find_contact",
"title": "Find Mailchimp contact",
"description": "Find a Mailchimp contact by email, in one audience or by checking each audience in turn (first 1,000) and returning the first match. Returns the Mailchimp member record, including status, merge fields, tags, stats and audience id. A not-found error means no checked audience contains the email.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"email"
],
"properties": {
"email": {
"type": "string",
"description": "Email address of the contact to find"
},
"audienceId": {
"type": "string",
"description": "Mailchimp audience ID from mailchimp_list_audiences, to search only that audience; omit to check every audience."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Find Mailchimp contact",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Register item's inbound webhook on every Mailchimp audience (first 1,000) so subscribes, unsubscribes, profile and email changes, cleaned addresses and campaign sends appear on item contact and company timelines. Changes webhook settings in the Mailchimp account: audiences already set up are skipped, and stale or duplicate item webhooks are replaced and deleted. Returns counts of audiences found, registered, skipped and failed.
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.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
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 item's inbound webhook on every Mailchimp audience (first 1,000) so subscribes, unsubscribes, profile and email changes, cleaned addresses and campaign sends appear on item contact and company timelines. Changes webhook settings in the Mailchimp account: audiences already set up are skipped, and stale or duplicate item webhooks are replaced and deleted. Returns counts of audiences found, registered, skipped and failed.\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": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Set up Mailchimp webhooks",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description91/100
Read up to 50 recent activity-feed entries for a contact in one Mailchimp audience: opens, clicks, campaign sends and audience changes. Returns Mailchimp's activity feed for that member.
The description explains the capability, when to use it, and what to expect.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
audienceId
Mailchimp audience ID from mailchimp_list_audiences (or the audience of a mailchimp_find_contact result) that the contact belongs to.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description93/100
List the merge fields (custom fields) of one Mailchimp audience, up to 1,000. Returns each field's tag (the key used in merge fields, such as FNAME or PHONE), name, type and whether it is required.
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.
audienceId
Mailchimp audience ID, from mailchimp_list_audiences.
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_merge_fields",
"title": "List Mailchimp audience fields",
"description": "List the merge fields (custom fields) of one Mailchimp audience, up to 1,000. Returns each field's tag (the key used in merge fields, such as FNAME or PHONE), name, type and whether it is required.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"audienceId"
],
"properties": {
"audienceId": {
"type": "string",
"description": "Mailchimp audience ID, from mailchimp_list_audiences."
}
},
"additionalProperties": false
},
"annotations": {
"title": "List Mailchimp audience fields",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
List members of one Mailchimp audience a page at a time, optionally by subscription status. Returns each member's id, email, full name, status, merge fields and tags, plus the total number of matching members for paging.
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.
audienceId
Mailchimp audience ID, from mailchimp_list_audiences.
Clear enough to supply this argument.
status
Subscription status to filter by: subscribed (opted in), unsubscribed, cleaned (address bounced or invalid), pending (awaiting double opt-in confirmation) or transactional (has not opted in to marketing); omit for all.
Clear enough to supply this argument.
count
Members per page; values are clamped to 1-1000 and default to 100.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
offset
Number of members to skip for paging; compare with the returned total_items.
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 members of one Mailchimp audience a page at a time, optionally by subscription status. Returns each member's id, email, full name, status, merge fields and tags, plus the total number of matching members for paging.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"audienceId"
],
"properties": {
"count": {
"type": "number",
"description": "Members per page; values are clamped to 1-1000 and default to 100."
},
"offset": {
"type": "number",
"description": "Number of members to skip for paging; compare with the returned total_items."
},
"status": {
"type": "string",
"description": "Subscription status to filter by: subscribed (opted in), unsubscribed, cleaned (address bounced or invalid), pending (awaiting double opt-in confirmation) or transactional (has not opted in to marketing); omit for all."
},
"audienceId": {
"type": "string",
"description": "Mailchimp audience ID, from mailchimp_list_audiences."
}
},
"additionalProperties": false
},
"annotations": {
"title": "List Mailchimp audience members",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Add a contact to a Mailchimp audience, or update it when the email is already a member (upsert). Sets status (default subscribed, which also overwrites an existing member's status), first and last name, merge fields and tags. On success item also finds or creates a matching item CRM contact by email; each attempt is logged on the item contact timeline. Returns the Mailchimp member record.
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.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
audienceId
Mailchimp audience ID, from mailchimp_list_audiences.
Clear enough to supply this argument.
email
Email address of the contact; identifies the member within the audience.
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 set on the member, including an existing one: subscribed, pending (double opt-in, awaiting confirmation), unsubscribed or cleaned. Defaults to subscribed.
Clear enough to supply this argument.
mergeFields
Extra merge field values keyed by audience field tag (such as PHONE), from mailchimp_list_audience_merge_fields; firstName and lastName override FNAME and LNAME.
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
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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, or update it when the email is already a member (upsert). Sets status (default subscribed, which also overwrites an existing member's status), first and last name, merge fields and tags. On success item also finds or creates a matching item CRM contact by email; each attempt is logged on the item contact timeline. Returns the Mailchimp member record.\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": "Email address of the contact; identifies the member within the audience."
},
"status": {
"type": "string",
"description": "Subscription status set on the member, including an existing one: subscribed, pending (double opt-in, awaiting confirmation), unsubscribed or cleaned. Defaults to subscribed."
},
"lastName": {
"type": "string",
"description": "Contact last name"
},
"firstName": {
"type": "string",
"description": "Contact first name"
},
"audienceId": {
"type": "string",
"description": "Mailchimp audience ID, from mailchimp_list_audiences."
},
"mergeFields": {
"type": "object",
"description": "Extra merge field values keyed by audience field tag (such as PHONE), from mailchimp_list_audience_merge_fields; firstName and lastName override FNAME and LNAME.",
"additionalProperties": {}
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Add Mailchimp contact",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Update an existing member of a Mailchimp audience by email: subscription status, first and last name and merge fields. Only provided fields change. Affects Mailchimp only, not the item CRM; each attempt is logged on the item contact timeline. Returns the updated Mailchimp member record.
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.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
audienceId
Mailchimp audience ID from mailchimp_list_audiences that the contact belongs to.
Clear enough to supply this argument.
email
Email of the member to update; identifies the member and is not changed.
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
New subscription status: subscribed, unsubscribed, pending (double opt-in, awaiting confirmation) or cleaned; omit to keep the current status.
Clear enough to supply this argument.
mergeFields
Merge field values to change, keyed by audience field tag from mailchimp_list_audience_merge_fields; firstName and lastName override FNAME and LNAME.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 an existing member of a Mailchimp audience by email: subscription status, first and last name and merge fields. Only provided fields change. Affects Mailchimp only, not the item CRM; each attempt is logged on the item contact timeline. Returns the updated Mailchimp member record.\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 of the member to update; identifies the member and is not changed."
},
"status": {
"type": "string",
"description": "New subscription status: subscribed, unsubscribed, pending (double opt-in, awaiting confirmation) or cleaned; omit to keep the current status."
},
"lastName": {
"type": "string",
"description": "Updated last name"
},
"firstName": {
"type": "string",
"description": "Updated first name"
},
"audienceId": {
"type": "string",
"description": "Mailchimp audience ID from mailchimp_list_audiences that the contact belongs to."
},
"mergeFields": {
"type": "object",
"description": "Merge field values to change, keyed by audience field tag from mailchimp_list_audience_merge_fields; firstName and lastName override FNAME and LNAME.",
"additionalProperties": {}
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Update Mailchimp contact",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Add and/or remove tags on a contact in one Mailchimp audience; tags not listed stay as they are. Each attempt is logged on the item contact timeline. Returns success only, as Mailchimp sends no body.
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.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
audienceId
Mailchimp audience ID from mailchimp_list_audiences that the contact belongs to.
Clear enough to supply this argument.
email
Email address of the contact
Clear enough to supply this argument.
addTags
Tag names to make active on the contact; existing names are listed by mailchimp_list_audience_tags.
Clear enough to supply this argument.
removeTags
Tag names to remove from the contact.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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": "Add or remove Mailchimp tags",
"description": "Add and/or remove tags on a contact in one Mailchimp audience; tags not listed stay as they are. Each attempt is logged on the item contact timeline. Returns success only, as Mailchimp sends no body.\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": "Tag names to make active on the contact; existing names are listed by mailchimp_list_audience_tags."
},
"audienceId": {
"type": "string",
"description": "Mailchimp audience ID from mailchimp_list_audiences that the contact belongs to."
},
"removeTags": {
"type": "array",
"description": "Tag names to remove from the contact."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Add or remove Mailchimp tags",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Start a Mailchimp Customer Journey (automation flow) for a contact by email through the flow's API entry-point step. The flow can send emails to the contact that cannot be recalled. Works only for flows that start with an API entry point; flows cannot be listed or created here. Each attempt is logged on the item contact timeline. Returns success 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.
Inputs99/100
Input documentation gives an agent enough context to populate the arguments.
email
Email address of the contact to enter into the flow.
Clear enough to supply this argument.
journeyId
Customer Journey ID: the number after /journeys/ in the trigger URL Mailchimp shows on the flow's API entry-point step.
Clear enough to supply this argument.
stepId
Step ID: the number after /steps/ in that same trigger URL.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 Customer Journey (automation flow) for a contact by email through the flow's API entry-point step. The flow can send emails to the contact that cannot be recalled. Works only for flows that start with an API entry point; flows cannot be listed or created here. Each attempt is logged on the item contact timeline. Returns success 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": [
"email",
"journeyId",
"stepId",
"_item_request_id"
],
"properties": {
"email": {
"type": "string",
"description": "Email address of the contact to enter into the flow."
},
"stepId": {
"type": "number",
"description": "Step ID: the number after /steps/ in that same trigger URL."
},
"journeyId": {
"type": "number",
"description": "Customer Journey ID: the number after /journeys/ in the trigger URL Mailchimp shows on the flow's API entry-point step."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Trigger Mailchimp automation",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Archive a contact in one Mailchimp audience: the member is removed from the audience while Mailchimp keeps their history, and they can be added again later. Affects Mailchimp only, not the item CRM. Each attempt is logged on the item contact timeline. Returns success only, as Mailchimp sends no body.
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.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
audienceId
Mailchimp audience ID from mailchimp_list_audiences to archive the contact from.
Clear enough to supply this argument.
email
Email address of the contact to archive
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 one Mailchimp audience: the member is removed from the audience while Mailchimp keeps their history, and they can be added again later. Affects Mailchimp only, not the item CRM. Each attempt is logged on the item contact timeline. Returns success only, as Mailchimp sends no body.\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": "Mailchimp audience ID from mailchimp_list_audiences to archive the contact from."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Archive Mailchimp contact",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description93/100
Read one Slack conversation by ID as the selected Slack account. Returns Slack's conversation object: name, type flags (private, DM, group DM, archived), whether the account is a member, creator and creation time, and the current topic and purpose with who set them.
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.
channel
Conversation ID (C…, G… or D…), from slack_list_conversations. Names are not resolved here.
Clear enough to supply this argument.
actor
Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted.
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 one Slack conversation by ID as the selected Slack account. Returns Slack's conversation object: name, type flags (private, DM, group DM, archived), whether the account is a member, creator and creation time, and the current topic and purpose with who set them.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"channel"
],
"properties": {
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted."
},
"channel": {
"type": "string",
"description": "Conversation ID (C…, G… or D…), from slack_list_conversations. Names are not resolved here."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Get Slack conversation",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Join a public Slack channel by ID as the selected Slack account (your personal account or the workspace bot). Joining posts Slack's usual join notice. Returns success, the actor used (user or bot) and data with Slack's response: the joined channel (id, name and membership flags), with a warning of already_in_channel when the account was already a member and nothing 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.
Inputs99/100
Input documentation gives an agent enough context to populate the arguments.
channel
Public channel ID (C…), from slack_list_conversations with onlyMemberOf false. Private channels need an invite instead.
Clear enough to supply this argument.
actor
Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 by ID as the selected Slack account (your personal account or the workspace bot). Joining posts Slack's usual join notice. Returns success, the actor used (user or bot) and data with Slack's response: the joined channel (id, name and membership flags), with a warning of already_in_channel when the account was already a member and nothing 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": [
"channel",
"_item_request_id"
],
"properties": {
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted."
},
"channel": {
"type": "string",
"description": "Public channel ID (C…), from slack_list_conversations with onlyMemberOf false. Private channels need an invite instead."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Join Slack channel",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Leave a Slack channel by ID as the selected Slack account. Leaving a private channel removes the account's access until someone re-invites it. Returns success, the actor used and data with Slack's acknowledgement (ok); not_in_channel true means the account was not a member and nothing 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.
Inputs99/100
Input documentation gives an agent enough context to populate the arguments.
channel
Channel ID (C… or G…), from slack_list_conversations.
Clear enough to supply this argument.
actor
Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 by ID as the selected Slack account. Leaving a private channel removes the account's access until someone re-invites it. Returns success, the actor used and data with Slack's acknowledgement (ok); not_in_channel true means the account was not a member and nothing 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": [
"channel",
"_item_request_id"
],
"properties": {
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted."
},
"channel": {
"type": "string",
"description": "Channel ID (C… or G…), from slack_list_conversations."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Leave Slack channel",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Open, or reopen, a direct message or group DM between the selected Slack account and one to eight Slack users. No message is sent. Returns success, the actor used and data with the conversation in channel.id (D… for a DM) for posting or reading; the same users give the same conversation each time, and Slack marks already_open when it existed.
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.
users
Slack user IDs (U… or W…) from slack_list_members. One ID opens a DM; several open a group DM that includes the selected account.
Clear enough to supply this argument.
actor
Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 reopen, a direct message or group DM between the selected Slack account and one to eight Slack users. No message is sent. Returns success, the actor used and data with the conversation in channel.id (D… for a DM) for posting or reading; the same users give the same conversation each time, and Slack marks already_open when it existed.\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": "Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted."
},
"users": {
"type": "array",
"description": "Slack user IDs (U… or W…) from slack_list_members. One ID opens a DM; several open a group DM that includes the selected account."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Open Slack DM",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description92/100
Read one Slack user's profile by user ID as the selected Slack account. Returns Slack's user record: name, real and display name, title, email (when Slack shares it), phone, time zone, status, avatar URLs, and flags such as bot, admin and deactivated.
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.
user
Slack user ID (U… or W…), from slack_list_members or slack_list_channel_members.
Clear enough to supply this argument.
actor
Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted.
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 one Slack user's profile by user ID as the selected Slack account. Returns Slack's user record: name, real and display name, title, email (when Slack shares it), phone, time zone, status, avatar URLs, and flags such as bot, admin and deactivated.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"user"
],
"properties": {
"user": {
"type": "string",
"description": "Slack user ID (U… or W…), from slack_list_members or slack_list_channel_members."
},
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Get Slack user profile",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
List the Slack workspace's user groups as the selected Slack account. Returns each group's ID (S…), @handle, name, description and member count; mention a group in a message with <!subteam^ID>. Member lists are not included.
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.
actor
Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted.
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 as the selected Slack account. Returns each group's ID (S…), @handle, name, description and member count; mention a group in a message with <!subteam^ID>. Member lists are not included.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted."
}
},
"additionalProperties": false
},
"annotations": {
"title": "List Slack user groups",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description84/100
Identify the one Slack workspace connected to this item workspace and the Slack identity in use. Returns the workspace name, ID and URL, plus the user ID (and bot ID, when the bot is used) of the selected Slack account.
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.
actor
Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted.
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 one Slack workspace connected to this item workspace and the Slack identity in use. Returns the workspace name, ID and URL, plus the user ID (and bot ID, when the bot is used) of the selected Slack account.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted."
}
},
"additionalProperties": false
},
"annotations": {
"title": "List Slack workspaces",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
Search the Slack workspace's custom emoji by case-insensitive name substring. Returns up to 50 matches as name-to-image-URL pairs (aliases show as alias:<name>) and the match count. Built-in standard emoji are not included.
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.
query
Part of the emoji name, without colons; matching ignores case.
Clear enough to supply this argument.
actor
Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
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 case-insensitive name substring. Returns up to 50 matches as name-to-image-URL pairs (aliases show as alias:<name>) and the match count. Built-in standard emoji are not included.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"query"
],
"properties": {
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted."
},
"query": {
"type": "string",
"description": "Part of the emoji name, without colons; matching ignores case."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Search Slack emoji",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description92/100
Read the emoji reactions on one Slack message as the selected Slack account. Returns the message with each reaction's emoji name, total count and the user IDs who reacted (Slack may shorten long user lists).
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.
channel
ID of the channel or DM containing the message (C…, G… or D…), from slack_list_conversations.
Clear enough to supply this argument.
timestamp
The message's ts, for example 1712345678.123456, from slack_list_messages or slack_search_messages.
Clear enough to supply this argument.
actor
Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted.
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 emoji reactions on one Slack message as the selected Slack account. Returns the message with each reaction's emoji name, total count and the user IDs who reacted (Slack may shorten long user lists).",
"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": "Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted."
},
"channel": {
"type": "string",
"description": "ID of the channel or DM containing the message (C…, G… or D…), from slack_list_conversations."
},
"timestamp": {
"type": "string",
"description": "The message's ts, for example 1712345678.123456, from slack_list_messages or slack_search_messages."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Get Slack reactions",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Add an emoji reaction to a Slack message as the selected Slack account. Returns Slack's acknowledgement. If that account already reacted with the same emoji, Slack rejects the call and nothing changes.
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.
channel
ID of the channel or DM containing the message (C…, G… or D…), from slack_list_conversations.
Clear enough to supply this argument.
timestamp
The message's ts, for example 1712345678.123456, from slack_list_messages or slack_search_messages.
Clear enough to supply this argument.
name
Emoji name without colons, for example thumbsup or a custom emoji from slack_search_emojis.
Clear enough to supply this argument.
actor
Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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. Returns Slack's acknowledgement. If that account already reacted with the same emoji, Slack rejects the call and nothing changes.\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, for example thumbsup or a custom emoji from slack_search_emojis."
},
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted."
},
"channel": {
"type": "string",
"description": "ID of the channel or DM containing the message (C…, G… or D…), from slack_list_conversations."
},
"timestamp": {
"type": "string",
"description": "The message's ts, for example 1712345678.123456, from slack_list_messages or slack_search_messages."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Add Slack reaction",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Replace the text of an existing Slack message. Only works on messages posted by the selected Slack account (your personal account or the bot). The text is sent as-is in Slack mrkdwn, without Markdown conversion or item footers. Returns the channel, ts and updated message.
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.
channel
ID of the channel or DM containing the message (C…, G… or D…).
Clear enough to supply this argument.
ts
The message's ts, for example 1712345678.123456, from slack_list_messages or slack_search_messages.
Clear enough to supply this argument.
text
New full message text in Slack mrkdwn (*bold*, _italic_, <@U…> mentions); it replaces the old text.
Clear enough to supply this argument.
actor
Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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": "Replace the text of an existing Slack message. Only works on messages posted by the selected Slack account (your personal account or the bot). The text is sent as-is in Slack mrkdwn, without Markdown conversion or item footers. Returns the channel, ts and updated message.\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": "The message's ts, for example 1712345678.123456, from slack_list_messages or slack_search_messages."
},
"text": {
"type": "string",
"description": "New full message text in Slack mrkdwn (*bold*, _italic_, <@U…> mentions); it replaces the old text."
},
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted."
},
"channel": {
"type": "string",
"description": "ID of the channel or DM containing the message (C…, G… or D…)."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Edit Slack message",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Permanently delete a Slack message posted by the selected Slack account; this cannot be undone. Returns the channel and ts of the deleted message.
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.
channel
ID of the channel or DM containing the message (C…, G… or D…).
Clear enough to supply this argument.
ts
The message's ts, for example 1712345678.123456, from slack_list_messages or slack_search_messages.
Clear enough to supply this argument.
actor
Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 Slack message posted by the selected Slack account; this cannot be undone. Returns the channel and ts of the deleted message.\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": "The message's ts, for example 1712345678.123456, from slack_list_messages or slack_search_messages."
},
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted."
},
"channel": {
"type": "string",
"description": "ID of the channel or DM containing the message (C…, G… or D…)."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Delete Slack message",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Schedule a Slack message for a future time, between 10 seconds and 120 days ahead, from the selected Slack account. Markdown is converted to Slack formatting; personal-account sends get a 'Sent via item' footer, and bot sends on your behalf name you. Returns a confirmation that the message was scheduled, without Slack's scheduled message ID, so it cannot be cancelled here.
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
Remove repeated schema validation from descriptions; focus on meaning and usage context.
channel
Channel ID (C…/G…/D…) from slack_list_conversations, or a Slack user ID (U…/W…) from slack_list_members to DM that person.
Clear enough to supply this argument.
text
Message text in Markdown, converted to Slack mrkdwn; use <@U…> to mention users.
Clear enough to supply this argument.
post_at
Send time as Unix epoch seconds; must be at least 10 seconds and at most 120 days from now.
Clear enough to supply this argument.
actor
Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 for a future time, between 10 seconds and 120 days ahead, from the selected Slack account. Markdown is converted to Slack formatting; personal-account sends get a 'Sent via item' footer, and bot sends on your behalf name you. Returns a confirmation that the message was scheduled, without Slack's scheduled message ID, so it cannot be cancelled here.\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 in Markdown, converted to Slack mrkdwn; use <@U…> to mention users."
},
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted."
},
"channel": {
"type": "string",
"description": "Channel ID (C…/G…/D…) from slack_list_conversations, or a Slack user ID (U…/W…) from slack_list_members to DM that person."
},
"post_at": {
"type": "number",
"description": "Send time as Unix epoch seconds; must be at least 10 seconds and at most 120 days from now."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Schedule Slack message",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description86/100
Get the permanent URL of a Slack message. Returns the channel ID and the permalink, which opens the message for anyone with access to that conversation.
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.
channel
ID of the channel or DM containing the message (C…, G… or D…).
Clear enough to supply this argument.
message_ts
The message's ts, for example 1712345678.123456, from slack_list_messages or slack_search_messages.
Clear enough to supply this argument.
actor
Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted.
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 URL of a Slack message. Returns the channel ID and the permalink, which opens the message for anyone with access to that conversation.",
"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": "Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted."
},
"channel": {
"type": "string",
"description": "ID of the channel or DM containing the message (C…, G… or D…)."
},
"message_ts": {
"type": "string",
"description": "The message's ts, for example 1712345678.123456, from slack_list_messages or slack_search_messages."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Get Slack message link",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
Read a Slack file's metadata by file ID as the selected Slack account. Returns its name, title, type, size, uploader, creation time, where it is shared, the permalink and private download links (which need Slack sign-in). File content is not downloaded.
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.
file
Slack file ID (F…), from slack_list_files, slack_list_canvases or a message's attachments.
Clear enough to supply this argument.
actor
Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted.
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 by file ID as the selected Slack account. Returns its name, title, type, size, uploader, creation time, where it is shared, the permalink and private download links (which need Slack sign-in). File content is not downloaded.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"file"
],
"properties": {
"file": {
"type": "string",
"description": "Slack file ID (F…), from slack_list_files, slack_list_canvases or a message's attachments."
},
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Get Slack file details",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
List Slack files visible to the selected Slack account, newest first, optionally limited to one channel. Returns one page of file records (ID, name, title, type, size, uploader, creation time, sharing, links) and paging info with the total count and number of pages.
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.
channel
Only list files shared in this channel ID (C…, G… or D…), from slack_list_conversations. Omit for all visible files.
Clear enough to supply this argument.
count
Files per page. When omitted the code sends nothing and Slack's default page size (100) applies.
Clear enough to supply this argument.
page
Page number, starting at 1; omit for the first page. paging.pages in a result says how many pages exist.
Clear enough to supply this argument.
actor
Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted.
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, newest first, optionally limited to one channel. Returns one page of file records (ID, name, title, type, size, uploader, creation time, sharing, links) and paging info with the total count and number of pages.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {
"page": {
"type": "number",
"description": "Page number, starting at 1; omit for the first page. paging.pages in a result says how many pages exist."
},
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted."
},
"count": {
"type": "number",
"description": "Files per page. When omitted the code sends nothing and Slack's default page size (100) applies."
},
"channel": {
"type": "string",
"description": "Only list files shared in this channel ID (C…, G… or D…), from slack_list_conversations. Omit for all visible files."
}
},
"additionalProperties": false
},
"annotations": {
"title": "List Slack files",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
List Slack canvases visible to the selected Slack account, optionally limited to one channel. Returns one page of canvas file records (file ID, title, creator, creation time, sharing, links) and paging info with the total and page count.
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.
channel
Only list canvases shared in this channel ID (C…, G… or D…), from slack_list_conversations. Omit for all visible canvases.
Clear enough to supply this argument.
count
Canvases per page. When omitted the code sends nothing and Slack's default page size (100) applies.
Clear enough to supply this argument.
page
Page number, starting at 1; omit for the first page. paging.pages in a result says how many pages exist.
Clear enough to supply this argument.
actor
Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted.
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, optionally limited to one channel. Returns one page of canvas file records (file ID, title, creator, creation time, sharing, links) and paging info with the total and page count.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {
"page": {
"type": "number",
"description": "Page number, starting at 1; omit for the first page. paging.pages in a result says how many pages exist."
},
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted."
},
"count": {
"type": "number",
"description": "Canvases per page. When omitted the code sends nothing and Slack's default page size (100) applies."
},
"channel": {
"type": "string",
"description": "Only list canvases shared in this channel ID (C…, G… or D…), from slack_list_conversations. Omit for all visible canvases."
}
},
"additionalProperties": false
},
"annotations": {
"title": "List Slack canvases",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Read the text content of a Slack file or canvas by file ID as the selected Slack account. Returns success, the actor used and data with file (Slack's file metadata, private links removed) and content (the text, or null for non-text files such as images or PDFs); files over 1 MB fail. Canvases may come back as HTML.
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.
file
Slack file or canvas ID (F…), from slack_list_files, slack_list_canvases or a message's attachments.
Clear enough to supply this argument.
actor
Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted.
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 or canvas by file ID as the selected Slack account. Returns success, the actor used and data with file (Slack's file metadata, private links removed) and content (the text, or null for non-text files such as images or PDFs); files over 1 MB fail. Canvases may come back as HTML.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"file"
],
"properties": {
"file": {
"type": "string",
"description": "Slack file or canvas ID (F…), from slack_list_files, slack_list_canvases or a message's attachments."
},
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Read Slack file",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
Read the content of a Slack canvas by its file ID as the selected Slack account. Returns the canvas metadata (private links removed) and its content as text, which may be HTML; content is null when Slack offers no download. Canvases over 1 MB fail.
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.
file
Canvas file ID (F…), from slack_list_canvases.
Clear enough to supply this argument.
actor
Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted.
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 content of a Slack canvas by its file ID as the selected Slack account. Returns the canvas metadata (private links removed) and its content as text, which may be HTML; content is null when Slack offers no download. Canvases over 1 MB fail.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"file"
],
"properties": {
"file": {
"type": "string",
"description": "Canvas file ID (F…), from slack_list_canvases."
},
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Read Slack canvas",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Upload UTF-8 text as a new file or code snippet in a Slack channel as the selected Slack account, optionally with a message. Content is limited to 100 KB. Each call posts a new file. Returns Slack's upload result with the new file's ID, name and link.
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.
channel_id
Destination channel or DM ID (C…, G… or D…), from slack_list_conversations; names are not resolved.
Clear enough to supply this argument.
filename
File name including extension, for example notes.md or query.sql; Slack uses the extension for the file type.
Clear enough to supply this argument.
content
File body as plain UTF-8 text; larger than 100 KB (100,000 bytes) is rejected.
Clear enough to supply this argument.
title
Display title for the file in Slack. Omit to show the filename.
Clear enough to supply this argument.
initial_comment
Message posted with the file in the channel. Omit to post only the file.
Clear enough to supply this argument.
actor
Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 UTF-8 text as a new file or code snippet in a Slack channel as the selected Slack account, optionally with a message. Content is limited to 100 KB. Each call posts a new file. Returns Slack's upload result with the new file's ID, name and link.\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": "Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted."
},
"title": {
"type": "string",
"description": "Display title for the file in Slack. Omit to show the filename."
},
"content": {
"type": "string",
"description": "File body as plain UTF-8 text; larger than 100 KB (100,000 bytes) is rejected."
},
"filename": {
"type": "string",
"description": "File name including extension, for example notes.md or query.sql; Slack uses the extension for the file type."
},
"channel_id": {
"type": "string",
"description": "Destination channel or DM ID (C…, G… or D…), from slack_list_conversations; names are not resolved."
},
"initial_comment": {
"type": "string",
"description": "Message posted with the file in the channel. Omit to post only the file."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Upload Slack text file",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Set a Slack channel's topic (the short line under the channel name) as the selected Slack account, replacing the current topic. Slack posts a notice in the channel. Returns the updated channel details.
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.
channel
Channel ID (C… or G…), from slack_list_conversations.
Clear enough to supply this argument.
topic
Full new topic text; it replaces the existing topic. Slack mrkdwn links and mentions are allowed.
Clear enough to supply this argument.
actor
Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 (the short line under the channel name) as the selected Slack account, replacing the current topic. Slack posts a notice in the channel. Returns the updated channel details.\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": "Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted."
},
"topic": {
"type": "string",
"description": "Full new topic text; it replaces the existing topic. Slack mrkdwn links and mentions are allowed."
},
"channel": {
"type": "string",
"description": "Channel ID (C… or G…), from slack_list_conversations."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Set Slack channel topic",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Set a Slack channel's purpose (shown as its description) as the selected Slack account, replacing the current one. Slack posts a notice in the channel. Returns the updated channel details.
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.
channel
Channel ID (C… or G…), from slack_list_conversations.
Clear enough to supply this argument.
purpose
Full new purpose or description text; it replaces the existing one.
Clear enough to supply this argument.
actor
Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 (shown as its description) as the selected Slack account, replacing the current one. Slack posts a notice in the channel. Returns the updated channel details.\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": "Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted."
},
"channel": {
"type": "string",
"description": "Channel ID (C… or G…), from slack_list_conversations."
},
"purpose": {
"type": "string",
"description": "Full new purpose or description text; it replaces the existing one."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Set Slack channel purpose",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Archive a Slack channel by ID as the selected Slack account. The channel becomes read-only and leaves members' sidebars; its history stays searchable and it can be unarchived later. Slack rejects #general and channels already archived. Returns Slack's acknowledgement.
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.
channel
Channel ID (C… or G…), from slack_list_conversations.
Clear enough to supply this argument.
actor
Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 by ID as the selected Slack account. The channel becomes read-only and leaves members' sidebars; its history stays searchable and it can be unarchived later. Slack rejects #general and channels already archived. Returns Slack's acknowledgement.\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": "Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted."
},
"channel": {
"type": "string",
"description": "Channel ID (C… or G…), from slack_list_conversations."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Archive Slack channel",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Restore an archived Slack channel by ID as the selected Slack account, so members can read it in their sidebar and post again. The account needs Slack permission to manage the channel; a channel that is not archived is rejected and left unchanged. Returns success, the actor used and data with Slack's acknowledgement (ok).
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.
channel
ID (C… or G…) of the archived channel, from slack_list_conversations with onlyMemberOf false.
Clear enough to supply this argument.
actor
Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 by ID as the selected Slack account, so members can read it in their sidebar and post again. The account needs Slack permission to manage the channel; a channel that is not archived is rejected and left unchanged. Returns success, the actor used and data with Slack's acknowledgement (ok).\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": "Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted."
},
"channel": {
"type": "string",
"description": "ID (C… or G…) of the archived channel, from slack_list_conversations with onlyMemberOf false."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Unarchive Slack channel",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description89/100
List the items pinned in a Slack channel as the selected Slack account. Returns each pin's type, who pinned it and when, and the pinned message (ts, text, author, link) or file.
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.
channel
Channel or DM ID (C…, G… or D…), from slack_list_conversations.
Clear enough to supply this argument.
actor
Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted.
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 items pinned in a Slack channel as the selected Slack account. Returns each pin's type, who pinned it and when, and the pinned message (ts, text, author, link) or file.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"channel"
],
"properties": {
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted."
},
"channel": {
"type": "string",
"description": "Channel or DM ID (C…, G… or D…), from slack_list_conversations."
}
},
"additionalProperties": false
},
"annotations": {
"title": "List Slack pins",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Pin a message to its Slack channel as the selected Slack account. Slack posts a notice that the message was pinned. Returns success, the actor used and data with Slack's acknowledgement (ok); an already pinned message is rejected and left 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.
Inputs99/100
Input documentation gives an agent enough context to populate the arguments.
channel
ID of the channel or DM containing the message (C…, G… or D…).
Clear enough to supply this argument.
timestamp
The message's ts, for example 1712345678.123456, from slack_list_messages or slack_search_messages.
Clear enough to supply this argument.
actor
Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 as the selected Slack account. Slack posts a notice that the message was pinned. Returns success, the actor used and data with Slack's acknowledgement (ok); an already pinned message is rejected and left 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": [
"channel",
"timestamp",
"_item_request_id"
],
"properties": {
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted."
},
"channel": {
"type": "string",
"description": "ID of the channel or DM containing the message (C…, G… or D…)."
},
"timestamp": {
"type": "string",
"description": "The message's ts, for example 1712345678.123456, from slack_list_messages or slack_search_messages."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Pin Slack message",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Unpin a message from its Slack channel as the selected Slack account; the message itself stays. Returns Slack's acknowledgement; a message that is not pinned is rejected.
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.
channel
ID of the channel or DM containing the message (C…, G… or D…).
Clear enough to supply this argument.
timestamp
The pinned message's ts, for example 1712345678.123456, from slack_list_pins or slack_list_messages.
Clear enough to supply this argument.
actor
Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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": "Unpin a message from its Slack channel as the selected Slack account; the message itself stays. Returns Slack's acknowledgement; a message that is not pinned is rejected.\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": "Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted."
},
"channel": {
"type": "string",
"description": "ID of the channel or DM containing the message (C…, G… or D…)."
},
"timestamp": {
"type": "string",
"description": "The pinned message's ts, for example 1712345678.123456, from slack_list_pins or slack_list_messages."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Unpin Slack message",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Create a new Slack canvas with a title and Markdown content as the selected Slack account, optionally attached to a channel. Each call creates another canvas. Returns the new canvas ID, usable to read or edit it.
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.
title
Canvas title shown in Slack.
Clear enough to supply this argument.
markdown
Canvas body in standard Markdown (headings, lists, links, tables); Slack converts it to canvas content.
Clear enough to supply this argument.
channel_id
Channel ID (C… or G…) from slack_list_conversations to add the canvas to as a channel tab. Omit for a standalone canvas.
Clear enough to supply this argument.
actor
Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 new Slack canvas with a title and Markdown content as the selected Slack account, optionally attached to a channel. Each call creates another canvas. Returns the new canvas ID, usable to read or edit it.\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": "Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted."
},
"title": {
"type": "string",
"description": "Canvas title shown in Slack."
},
"markdown": {
"type": "string",
"description": "Canvas body in standard Markdown (headings, lists, links, tables); Slack converts it to canvas content."
},
"channel_id": {
"type": "string",
"description": "Channel ID (C… or G…) from slack_list_conversations to add the canvas to as a channel tab. Omit for a standalone canvas."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Create Slack canvas",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Replace one section of a Slack canvas with new Markdown as the selected Slack account; the section's previous content is discarded and the rest of the canvas is unchanged. Returns success, the actor used and data with Slack's acknowledgement (ok).
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.
canvas_id
Canvas ID (F…), from slack_list_canvases or slack_create_canvas.
Clear enough to supply this argument.
section_id
ID of the section to replace, from slack_find_canvas_sections.
Clear enough to supply this argument.
markdown
New Markdown content for that section; it fully replaces the section.
Clear enough to supply this argument.
actor
Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 new Markdown as the selected Slack account; the section's previous content is discarded and the rest of the canvas is unchanged. Returns success, the actor used and data with Slack's acknowledgement (ok).\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": "Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted."
},
"markdown": {
"type": "string",
"description": "New Markdown content for that section; it fully replaces the section."
},
"canvas_id": {
"type": "string",
"description": "Canvas ID (F…), from slack_list_canvases or slack_create_canvas."
},
"section_id": {
"type": "string",
"description": "ID of the section to replace, from slack_find_canvas_sections."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Edit Slack canvas",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description92/100
Find the sections of a Slack canvas whose text contains a given string, as the selected Slack account. Returns the matching section IDs, used to replace a specific section. Section text is not returned.
The description explains the capability, when to use it, and what to expect.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
canvas_id
Canvas ID (F…), from slack_list_canvases or slack_create_canvas.
Clear enough to supply this argument.
contains_text
Text that appears in the section to find.
Clear enough to supply this argument.
actor
Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted.
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 sections of a Slack canvas whose text contains a given string, as the selected Slack account. Returns the matching section IDs, used to replace a specific section. Section text is not returned.",
"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": "Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted."
},
"canvas_id": {
"type": "string",
"description": "Canvas ID (F…), from slack_list_canvases or slack_create_canvas."
},
"contains_text": {
"type": "string",
"description": "Text that appears in the section to find."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Find Slack canvas sections",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
Create a new Slack list with Slack's default columns as the selected Slack account. Each call creates another list. Returns success, the actor used and data with list_id, the new list's ID used to add, read and update records.
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.
name
Name of the new list.
Clear enough to supply this argument.
todo_mode
true adds task-tracking columns (assignee, due date, completed). When omitted nothing is sent and Slack's default applies.
Clear enough to supply this argument.
actor
Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 new Slack list with Slack's default columns as the selected Slack account. Each call creates another list. Returns success, the actor used and data with list_id, the new list's ID used to add, read and update records.\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": "Name of the new list."
},
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted."
},
"todo_mode": {
"type": "boolean",
"description": "true adds task-tracking columns (assignee, due date, completed). When omitted nothing is sent and Slack's default applies."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Create Slack list",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Rename a Slack list or turn its task-tracking columns on or off, as the selected Slack account. Fields left out stay as they are. Returns Slack's acknowledgement.
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.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
id
Slack list ID, from slack_create_list or a list link.
Clear enough to supply this argument.
name
New list name. Omit to keep the current name.
Clear enough to supply this argument.
todo_mode
true shows task-tracking columns, false hides them. When omitted nothing is sent and the current mode is kept.
Clear enough to supply this argument.
actor
Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 turn its task-tracking columns on or off, as the selected Slack account. Fields left out stay as they are. Returns Slack's acknowledgement.\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, from slack_create_list or a list link."
},
"name": {
"type": "string",
"description": "New list name. Omit to keep the current name."
},
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted."
},
"todo_mode": {
"type": "boolean",
"description": "true shows task-tracking columns, false hides them. When omitted nothing is sent and the current mode is kept."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Update Slack list",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description93/100
Read one page of records from a Slack list as the selected Slack account. Returns each record's ID and field values by column ID, the list's column definitions (IDs, names, types) for building updates, and a next cursor when more records remain.
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.
list_id
Slack list ID, from slack_create_list or a list link.
Clear enough to supply this argument.
limit
Records per page. When omitted nothing is sent and Slack's default page size applies.
Clear enough to supply this argument.
cursor
response_metadata.next_cursor from the previous page; omit for the first page.
Clear enough to supply this argument.
actor
Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted.
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 one page of records from a Slack list as the selected Slack account. Returns each record's ID and field values by column ID, the list's column definitions (IDs, names, types) for building updates, and a next cursor when more records remain.",
"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": "Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted."
},
"limit": {
"type": "number",
"description": "Records per page. When omitted nothing is sent and Slack's default page size applies."
},
"cursor": {
"type": "string",
"description": "response_metadata.next_cursor from the previous page; omit for the first page."
},
"list_id": {
"type": "string",
"description": "Slack list ID, from slack_create_list or a list link."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Read Slack list",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Add a new record (row) to a Slack list as the selected Slack account. Each call adds another row. Returns the created record, including its row ID for later updates.
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.
list_id
Slack list ID, from slack_create_list or a list link.
Clear enough to supply this argument.
initial_fields
Field objects, each with column_id (from slack_read_list) and a typed value such as rich_text blocks, for example {"column_id":"Col1","rich_text":[…]}.
Clear enough to supply this argument.
actor
Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 new record (row) to a Slack list as the selected Slack account. Each call adds another row. Returns the created record, including its row ID for later updates.\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": "Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted."
},
"list_id": {
"type": "string",
"description": "Slack list ID, from slack_create_list or a list link."
},
"initial_fields": {
"type": "array",
"description": "Field objects, each with column_id (from slack_read_list) and a typed value such as rich_text blocks, for example {\"column_id\":\"Col1\",\"rich_text\":[…]}."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Add Slack list record",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
Set cell values in existing Slack list records as the selected Slack account; each cell names its row and column, and the new value replaces the old one. Other cells are unchanged. Returns Slack's acknowledgement.
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.
list_id
Slack list ID, from slack_create_list or a list link.
Clear enough to supply this argument.
cells
Cell objects with row_id (record ID) and column_id from slack_read_list, plus a typed value such as rich_text, for example {"row_id":"Rec1","column_id":"Col1","rich_text":[…]}.
Clear enough to supply this argument.
actor
Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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": "Set cell values in existing Slack list records as the selected Slack account; each cell names its row and column, and the new value replaces the old one. Other cells are unchanged. Returns Slack's acknowledgement.\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": "Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted."
},
"cells": {
"type": "array",
"description": "Cell objects with row_id (record ID) and column_id from slack_read_list, plus a typed value such as rich_text, for example {\"row_id\":\"Rec1\",\"column_id\":\"Col1\",\"rich_text\":[…]}."
},
"list_id": {
"type": "string",
"description": "Slack list ID, from slack_create_list or a list link."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Update Slack list record",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Post a message now, or schedule it 10 seconds to 120 days ahead, to one or more Slack channels or people as the selected Slack account. Channels must include that account. Markdown is converted to Slack formatting; personal sends get a 'Sent via item' footer and bot sends on your behalf name you. All recipients are checked first; if any fail, none are sent. Returns success, a message describing the outcome, the actor used and data with the delivery result; when a recipient fails the check, success is false with the requested recipient, error_code and suggested_channels.
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
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
actor
Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted.
Clear enough to supply this argument.
channelName
Single recipient: channel ID (C…/G…) or name (#general) from slack_list_conversations, or a Slack user ID (U…/W…) from slack_list_members to DM that person. Emails and @usernames are not accepted.
Clear enough to supply this argument.
channelNames
Several recipients, each a channel ID, channel name or Slack user ID as for channelName; channels and DMs can be mixed and duplicates are sent once.
Clear enough to supply this argument.
message
Final message text, sent as written. Markdown is converted to Slack mrkdwn; mention people with <@U…> (IDs from slack_list_members), and use <!here> or <!channel> to notify a channel.
Clear enough to supply this argument.
threadTimestamp
ts of the parent message to reply in its thread, for example 1712345678.123456, from slack_list_messages or slack_search_messages. Omit to post to the channel.
Clear enough to supply this argument.
sendAt
ISO 8601 date-time with time zone for scheduled delivery, at least 10 seconds and at most 120 days ahead. Omit, null or empty string sends immediately.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 now, or schedule it 10 seconds to 120 days ahead, to one or more Slack channels or people as the selected Slack account. Channels must include that account. Markdown is converted to Slack formatting; personal sends get a 'Sent via item' footer and bot sends on your behalf name you. All recipients are checked first; if any fail, none are sent. Returns success, a message describing the outcome, the actor used and data with the delivery result; when a recipient fails the check, success is false with the requested recipient, error_code and suggested_channels.\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": "Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted."
},
"sendAt": {
"anyOf": [
{
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "string",
"const": ""
}
]
},
{
"type": "null"
}
],
"description": "ISO 8601 date-time with time zone for scheduled delivery, at least 10 seconds and at most 120 days ahead. Omit, null or empty string sends immediately."
},
"message": {
"type": "string",
"description": "Final message text, sent as written. Markdown is converted to Slack mrkdwn; mention people with <@U…> (IDs from slack_list_members), and use <!here> or <!channel> to notify a channel."
},
"channelName": {
"type": "string",
"description": "Single recipient: channel ID (C…/G…) or name (#general) from slack_list_conversations, or a Slack user ID (U…/W…) from slack_list_members to DM that person. Emails and @usernames are not accepted."
},
"channelNames": {
"type": "array",
"items": {
"type": "string"
},
"description": "Several recipients, each a channel ID, channel name or Slack user ID as for channelName; channels and DMs can be mixed and duplicates are sent once."
},
"threadTimestamp": {
"type": "string",
"description": "ts of the parent message to reply in its thread, for example 1712345678.123456, from slack_list_messages or slack_search_messages. Omit to post to the channel."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Send Slack message",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Post one rich message built from Slack Block Kit blocks (cards, carousels, custom layouts) to a Slack channel or one person, with a required plain-text fallback for notifications. Blocks are checked against Slack's limits first and nothing is sent if any check fails. Ordinary text messages use Send Slack message. When sending to the skill owner as Item, use actor bot and the Slack user ID from Find Slack user as the DM target, and fall back if the send fails. Returns delivery status, the recipient name and any limit problems found.
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
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
actor
Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted.
Clear enough to supply this argument.
channelName
One recipient: channel ID (C…/G…) or name (#general) from slack_list_conversations, or a Slack user ID (U…/W…) from slack_find_user or slack_list_members to DM that person.
Clear enough to supply this argument.
blocks
Block Kit blocks sent as written: at most 50; card title and subtitle up to 150 characters, body and subtext up to 200, at most 3 buttons; carousels hold 1 to 10 cards. Legacy attachments are not accepted.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
text
Plain-text summary shown in notifications and previews; required.
Clear enough to supply this argument.
threadTimestamp
ts of the parent message to reply in its thread, for example 1712345678.123456. Omit to post to the channel.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_send_block_kit_message",
"title": "Send Slack Block Kit message",
"description": "Post one rich message built from Slack Block Kit blocks (cards, carousels, custom layouts) to a Slack channel or one person, with a required plain-text fallback for notifications. Blocks are checked against Slack's limits first and nothing is sent if any check fails. Ordinary text messages use Send Slack message. When sending to the skill owner as Item, use actor bot and the Slack user ID from Find Slack user as the DM target, and fall back if the send fails. Returns delivery status, the recipient name and any limit problems found.\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",
"blocks",
"text",
"_item_request_id"
],
"properties": {
"text": {
"type": "string",
"description": "Plain-text summary shown in notifications and previews; required."
},
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted."
},
"blocks": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": {}
},
"description": "Block Kit blocks sent as written: at most 50; card title and subtitle up to 150 characters, body and subtext up to 200, at most 3 buttons; carousels hold 1 to 10 cards. Legacy attachments are not accepted."
},
"channelName": {
"type": "string",
"description": "One recipient: channel ID (C…/G…) or name (#general) from slack_list_conversations, or a Slack user ID (U…/W…) from slack_find_user or slack_list_members to DM that person."
},
"threadTimestamp": {
"type": "string",
"description": "ts of the parent message to reply in its thread, for example 1712345678.123456. Omit to post to the channel."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Send Slack Block Kit message",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Find one person's Slack user ID in the connected Slack workspace from an item user ID or an email. Saved Slack links are checked before Slack's email lookup, so it works when the Slack email differs; a successful email lookup is saved for next time. Returns whether the person was found, the Slack user ID, and a reason such as not_in_workspace, missing_scope or no_slack_integration. On a skill run, to check whether the owner is on Slack, pass their Item user ID from the run context.
The description explains the capability, when to use it, and what to expect.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
userId
Item user ID (UUID) of a member of this workspace, such as a record or Skill owner. On a skill run, use the owner's Item user ID from the run context. Send userId or email, not both.
Clear enough to supply this argument.
email
Person's email address. If it belongs to an item user here, their saved Slack link is tried first. Send userId or email, not both.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "slack_find_user",
"title": "Find Slack user",
"description": "Find one person's Slack user ID in the connected Slack workspace from an item user ID or an email. Saved Slack links are checked before Slack's email lookup, so it works when the Slack email differs; a successful email lookup is saved for next time. Returns whether the person was found, the Slack user ID, and a reason such as not_in_workspace, missing_scope or no_slack_integration. On a skill run, to check whether the owner is on Slack, pass their Item user ID from the run context.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {
"email": {
"type": "string",
"format": "email",
"description": "Person's email address. If it belongs to an item user here, their saved Slack link is tried first. Send userId or email, not both."
},
"userId": {
"type": "string",
"format": "uuid",
"description": "Item user ID (UUID) of a member of this workspace, such as a record or Skill owner. On a skill run, use the owner's Item user ID from the run context. Send userId or email, not both."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Find Slack user",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
List the most recent messages in a Slack channel (newest first), or the replies in one thread (oldest first). Returns each message's ts, author ID and text, has_more, and the time window covered. When has_more is true the result is partial: older channel messages can be reached through message search with in:#channel and date filters; missing thread replies cannot.
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.
channelName
Channel name (with or without #) or ID (C…, G… or D…) from slack_list_conversations; names resolve among public and private channels only, so use the ID for DMs.
Clear enough to supply this argument.
limit
Maximum messages to request. Slack may return fewer and set has_more, so check it.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
threadTimestamp
ts of a thread's parent message, for example 1712345678.123456, from an earlier call or slack_search_messages. Omit to list the channel's recent messages.
Clear enough to supply this argument.
actor
Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted.
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 the most recent messages in a Slack channel (newest first), or the replies in one thread (oldest first). Returns each message's ts, author ID and text, has_more, and the time window covered. When has_more is true the result is partial: older channel messages can be reached through message search with in:#channel and date filters; missing thread replies cannot.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"channelName"
],
"properties": {
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted."
},
"limit": {
"type": "number",
"default": 100,
"maximum": 1000,
"description": "Maximum messages to request. Slack may return fewer and set has_more, so check it."
},
"channelName": {
"type": "string",
"description": "Channel name (with or without #) or ID (C…, G… or D…) from slack_list_conversations; names resolve among public and private channels only, so use the ID for DMs."
},
"threadTimestamp": {
"type": "string",
"description": "ts of a thread's parent message, for example 1712345678.123456, from an earlier call or slack_search_messages. Omit to list the channel's recent messages."
}
},
"additionalProperties": false
},
"annotations": {
"title": "List Slack messages",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
List Slack channels, private channels, DMs and group DMs visible to the selected Slack account, optionally filtered by a case-insensitive name substring (an initial # is ignored). By default only conversations the account belongs to are listed. Returns success, the actor used and data.conversations, each with id, name, is_channel, is_group, is_im, is_mpim, is_private and is_member. Results may be up to about a minute old.
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.
query
Part of the channel name to match, ignoring case and a leading #. Omit to list everything allowed by the other filters.
Clear enough to supply this argument.
types
Conversation kinds to include: public channels, private channels, group DMs (mpim) and DMs (im). Omit for all four.
Clear enough to supply this argument.
limit
Maximum conversations returned, applied after the type, membership and query filters.
Clear enough to supply this argument.
onlyMemberOf
true lists only conversations the selected account is in (DMs and group DMs always count); false also includes public channels it has not joined.
Clear enough to supply this argument.
actor
Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted.
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 Slack channels, private channels, DMs and group DMs visible to the selected Slack account, optionally filtered by a case-insensitive name substring (an initial # is ignored). By default only conversations the account belongs to are listed. Returns success, the actor used and data.conversations, each with id, name, is_channel, is_group, is_im, is_mpim, is_private and is_member. Results may be up to about a minute old.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted."
},
"limit": {
"type": "number",
"default": 100,
"description": "Maximum conversations returned, applied after the type, membership and query filters."
},
"query": {
"type": "string",
"description": "Part of the channel name to match, ignoring case and a leading #. Omit to list everything allowed by the other filters."
},
"types": {
"type": "array",
"description": "Conversation kinds to include: public channels, private channels, group DMs (mpim) and DMs (im). Omit for all four."
},
"onlyMemberOf": {
"type": "boolean",
"default": true,
"description": "true lists only conversations the selected account is in (DMs and group DMs always count); false also includes public channels it has not joined."
}
},
"additionalProperties": false
},
"annotations": {
"title": "List Slack conversations",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Create a new public Slack channel as the selected Slack account, which becomes its creator and first member. Returns success, the actor used and data.channel, Slack's object for the new channel with its id and name; Slack rejects names already in use.
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.
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
Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
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 new public Slack channel as the selected Slack account, which becomes its creator and first member. Returns success, the actor used and data.channel, Slack's object for the new channel with its id and name; Slack rejects names already in use.\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": "Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Create Slack channel",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Rename an existing Slack channel, found by current name or ID, as the selected Slack account. Slack posts a rename notice and the old name becomes free. Returns the updated channel details.
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.
channelName
Current channel name (with or without #) or ID (C…/G…) from slack_list_conversations.
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
Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
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 an existing Slack channel, found by current name or ID, as the selected Slack account. Slack posts a rename notice and the old name becomes free. Returns the updated channel details.\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": "Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted."
},
"channelName": {
"type": "string",
"description": "Current channel name (with or without #) or ID (C…/G…) from slack_list_conversations."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Rename Slack channel",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
List or search people in the connected Slack workspace by name, display name or email (case-insensitive substring). Returns each member's Slack user ID, username, real name, display name and email. Bots, Slackbot and deactivated users are excluded; external Slack Connect users are not included.
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.
query
Text to match within username, real name, display name or email, ignoring case. Omit to list members.
Clear enough to supply this argument.
limit
Maximum members returned, applied after the query filter.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
actor
Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted.
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 by name, display name or email (case-insensitive substring). Returns each member's Slack user ID, username, real name, display name and email. Bots, Slackbot and deactivated users are excluded; external Slack Connect users are not included.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted."
},
"limit": {
"type": "number",
"default": 200,
"maximum": 1000,
"description": "Maximum members returned, applied after the query filter."
},
"query": {
"type": "string",
"description": "Text to match within username, real name, display name or email, ignoring case. Omit to list members."
}
},
"additionalProperties": false
},
"annotations": {
"title": "List Slack members",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
List the members of one Slack channel, including Slack Connect users from other workspaces and guests. Returns each member's user ID, username, real and display name, email when available, workspace ID and whether they are external. Deactivated users and bots are excluded unless bots are requested.
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.
channelName
Channel name (with or without #) or ID (C…/G…) from slack_list_conversations.
Clear enough to supply this argument.
limit
Maximum members returned, applied after removing bots and deactivated users.
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
Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted.
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 one Slack channel, including Slack Connect users from other workspaces and guests. Returns each member's user ID, username, real and display name, email when available, workspace ID and whether they are external. Deactivated users and bots are excluded unless bots are requested.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"channelName"
],
"properties": {
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted."
},
"limit": {
"type": "number",
"default": 200,
"maximum": 1000,
"description": "Maximum members returned, applied after removing bots and deactivated users."
},
"channelName": {
"type": "string",
"description": "Channel name (with or without #) or ID (C…/G…) from slack_list_conversations."
},
"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,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Add existing workspace members to a Slack channel by user ID, as the selected Slack account (which must be in the channel). Slack posts that they were added. Returns success, the actor used and data with Slack's channel object, or data.message noting that the users were already members.
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.
channelName
Channel name (with or without #) or ID (C…/G…) from slack_list_conversations.
Clear enough to supply this argument.
userIds
Slack user IDs (U… or W…) from slack_list_members; not names or emails. People outside the workspace need slack_invite_external.
Clear enough to supply this argument.
actor
Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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": "Add existing workspace members to a Slack channel by user ID, as the selected Slack account (which must be in the channel). Slack posts that they were added. Returns success, the actor used and data with Slack's channel object, or data.message noting that the users were already members.\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": "Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted."
},
"userIds": {
"type": "array",
"description": "Slack user IDs (U… or W…) from slack_list_members; not names or emails. People outside the workspace need slack_invite_external."
},
"channelName": {
"type": "string",
"description": "Channel name (with or without #) or ID (C…/G…) from slack_list_conversations."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Invite to Slack channel",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Send Slack Connect invitations by email so people outside the workspace can join a channel shared with their organization. Invitations are sent by the workspace bot; personal accounts are not supported. Each address gets its own invitation; invitees can be limited to single-channel guest access. Returns success, the actor used and data with invite_ids (invite_id is the first) and a message; when some addresses fail, success is false and error names the addresses that failed, so only those are retried.
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.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
channelName
Channel name (with or without #) or ID (C…/G…) from slack_list_conversations.
Clear enough to supply this argument.
emails
Email addresses of the external people to invite; duplicates are sent once. Use only real addresses, not placeholders.
Clear enough to supply this argument.
externalLimited
true limits invitees to this channel only; false gives them full Slack Connect access.
Clear enough to supply this argument.
actor
Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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": "Send Slack Connect invitations by email so people outside the workspace can join a channel shared with their organization. Invitations are sent by the workspace bot; personal accounts are not supported. Each address gets its own invitation; invitees can be limited to single-channel guest access. Returns success, the actor used and data with invite_ids (invite_id is the first) and a message; when some addresses fail, success is false and error names the addresses that failed, so only those are retried.\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": "Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted."
},
"emails": {
"type": "array",
"description": "Email addresses of the external people to invite; duplicates are sent once. Use only real addresses, not placeholders."
},
"channelName": {
"type": "string",
"description": "Channel name (with or without #) or ID (C…/G…) from slack_list_conversations."
},
"externalLimited": {
"type": "boolean",
"default": false,
"description": "true limits invitees to this channel only; false gives them full Slack Connect access."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Invite external Slack users",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
Search Slack messages with your personal Slack account, including your private channels and DMs; without a personal connection, or from Shared Agents, only public channels are searched through another member's grant. Supports Slack search operators (in:, from:, before:, after:). Returns one page, newest first, with author, channel, ts, link and up to 300 characters of text, plus a cursor for the next page when more remain.
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.
query
Search words or phrase; Slack search operators such as after:2026-04-01 or has:link are allowed.
Clear enough to supply this argument.
channelName
Limit to one channel by name (with or without #); added to the query as in:#name.
Clear enough to supply this argument.
userName
Limit to one author by Slack username (with or without @); added to the query as from:@name.
Clear enough to supply this argument.
cursor
Pass next_cursor from the previous page. Omit on the first call.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
limit
Matches to return in this page.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
actor
Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted.
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; without a personal connection, or from Shared Agents, only public channels are searched through another member's grant. Supports Slack search operators (in:, from:, before:, after:). Returns one page, newest first, with author, channel, ts, link and up to 300 characters of text, plus a cursor for the next page when more remain.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"query"
],
"properties": {
"actor": {
"anyOf": [
{
"enum": [
"user",
"bot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Which Slack identity makes the call. user: your own connected Slack account, acting as you and seeing your private channels and DMs. bot: the workspace's item app, which sees only conversations it is in. Omit or null for your personal account when connected and allowed, otherwise the bot. Shared Agents use the bot (message search instead uses a member's grant, public channels only). The result's actor field reports which was used. Edit or delete needs the account that posted."
},
"limit": {
"type": "number",
"default": 20,
"maximum": 100,
"description": "Matches to return in this page."
},
"query": {
"type": "string",
"description": "Search words or phrase; Slack search operators such as after:2026-04-01 or has:link are allowed."
},
"cursor": {
"type": "string",
"maxLength": 4096,
"description": "Pass next_cursor from the previous page. Omit on the first call."
},
"userName": {
"type": "string",
"description": "Limit to one author by Slack username (with or without @); added to the query as from:@name."
},
"channelName": {
"type": "string",
"description": "Limit to one channel by name (with or without #); added to the query as in:#name."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Search Slack messages",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Read one Stripe customer by ID from the connected Stripe account. Returns the full customer object (email, name, phone, description, metadata, creation time, default payment method in invoice settings) with the customer's subscriptions embedded, each including its plan's product details. Nothing is changed.
The description explains the capability, when to use it, and what to expect.
Inputs100/100
Input documentation gives an agent enough context to populate the arguments.
customer_id
Stripe customer ID (cus_…), from stripe_list_customers or the customer field of a charge, invoice or subscription.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "stripe_get_customer",
"title": "Get Stripe customer",
"description": "Read one Stripe customer by ID from the connected Stripe account. Returns the full customer object (email, name, phone, description, metadata, creation time, default payment method in invoice settings) with the customer's subscriptions embedded, each including its plan's product details. Nothing is changed.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"customer_id"
],
"properties": {
"customer_id": {
"type": "string",
"description": "Stripe customer ID (cus_…), from stripe_list_customers or the customer field of a charge, invoice or subscription."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Get Stripe customer",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description100/100
Search or list customers in the connected Stripe account, for example by email or creation date. Returns one page of customer objects (ID, email, name, phone, metadata, creation time) with has_more; when has_more is true, pass next_starting_after as starting_after to read the next page. Returns up to 100 customers per page. Nothing is saved.
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.
email
Exact customer email address to match (Stripe's email filter); omit to list all customers.
Clear enough to supply this argument.
created_gte
Unix timestamp in seconds; only customers created at or after this time are returned.
Clear enough to supply this argument.
created_lte
Unix timestamp in seconds; only customers created at or before this time are returned.
Clear enough to supply this argument.
limit
Number of customers to return on this page.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
starting_after
Customer ID (cus_…) to continue after; pass next_starting_after from the previous page.
Clear enough to supply this argument.
ending_before
Customer ID (cus_…) to page backward from; pass the first customer ID of the current page to get the preceding page.
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 customers in the connected Stripe account, for example by email or creation date. Returns one page of customer objects (ID, email, name, phone, metadata, creation time) with has_more; when has_more is true, pass next_starting_after as starting_after to read the next page. Returns up to 100 customers per page. Nothing is saved.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {
"email": {
"type": "string",
"description": "Exact customer email address to match (Stripe's email filter); omit to list all customers."
},
"limit": {
"type": "number",
"default": 10,
"maximum": 100,
"minimum": 1,
"description": "Number of customers to return on this page."
},
"created_gte": {
"type": "number",
"description": "Unix timestamp in seconds; only customers created at or after this time are returned."
},
"created_lte": {
"type": "number",
"description": "Unix timestamp in seconds; only customers created at or before this time are returned."
},
"ending_before": {
"type": "string",
"description": "Customer ID (cus_…) to page backward from; pass the first customer ID of the current page to get the preceding page."
},
"starting_after": {
"type": "string",
"description": "Customer ID (cus_…) to continue after; pass next_starting_after from the previous page."
}
},
"additionalProperties": false
},
"annotations": {
"title": "List Stripe customers",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Read one charge from the connected Stripe account by ID. Returns the full charge object: amount and amount refunded in the smallest currency unit (e.g. cents), currency, status (succeeded, pending or failed), paid and refunded flags, customer and payment intent IDs, description, receipt URL and creation time. Nothing is changed.
The description explains the capability, when to use it, and what to expect.
Inputs100/100
Input documentation gives an agent enough context to populate the arguments.
charge_id
Stripe charge ID (ch_… or py_…), from stripe_list_charges or a payment intent's latest_charge.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description100/100
List charges in the connected Stripe account, optionally for one customer or creation-date range, newest first. Returns one page of charge objects (amount in the smallest currency unit, currency, status, refunded flag, customer and payment intent IDs, creation time) with has_more; to read the next page pass the last charge ID as starting_after. Nothing is saved.
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.
customer
Stripe customer ID (cus_…), from stripe_list_customers; omit to list charges across all customers.
Clear enough to supply this argument.
created_gte
Unix timestamp in seconds; only charges created at or after this time are returned.
Clear enough to supply this argument.
created_lte
Unix timestamp in seconds; only charges created at or before this time are returned.
Clear enough to supply this argument.
limit
Number of charges to return on this page.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
starting_after
Charge ID (ch_…) to continue after; pass the ID of the last charge on the previous page.
Clear enough to supply this argument.
ending_before
Charge ID (ch_…) to page backward from; pass the first charge ID of the current page.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "stripe_list_charges",
"title": "List Stripe charges",
"description": "List charges in the connected Stripe account, optionally for one customer or creation-date range, newest first. Returns one page of charge objects (amount in the smallest currency unit, currency, status, refunded flag, customer and payment intent IDs, creation time) with has_more; to read the next page pass the last charge ID as starting_after. Nothing is saved.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {
"limit": {
"type": "number",
"default": 10,
"maximum": 100,
"minimum": 1,
"description": "Number of charges to return on this page."
},
"customer": {
"type": "string",
"description": "Stripe customer ID (cus_…), from stripe_list_customers; omit to list charges across all customers."
},
"created_gte": {
"type": "number",
"description": "Unix timestamp in seconds; only charges created at or after this time are returned."
},
"created_lte": {
"type": "number",
"description": "Unix timestamp in seconds; only charges created at or before this time are returned."
},
"ending_before": {
"type": "string",
"description": "Charge ID (ch_…) to page backward from; pass the first charge ID of the current page."
},
"starting_after": {
"type": "string",
"description": "Charge ID (ch_…) to continue after; pass the ID of the last charge on the previous page."
}
},
"additionalProperties": false
},
"annotations": {
"title": "List Stripe charges",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Read one subscription from the connected Stripe account by ID. Returns the full subscription object: customer ID, status (such as active, trialing, past_due or canceled), items with their prices and quantities, billing period dates, whether it cancels at period end, trial dates, discounts, latest invoice ID and creation time. Nothing is changed.
The description explains the capability, when to use it, and what to expect.
Inputs100/100
Input documentation gives an agent enough context to populate the arguments.
subscription_id
Stripe subscription ID (sub_…), not a customer ID; find it with stripe_list_subscriptions or stripe_get_customer.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "stripe_get_subscription",
"title": "Get Stripe subscription",
"description": "Read one subscription from the connected Stripe account by ID. Returns the full subscription object: customer ID, status (such as active, trialing, past_due or canceled), items with their prices and quantities, billing period dates, whether it cancels at period end, trial dates, discounts, latest invoice ID and creation time. Nothing is changed.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"subscription_id"
],
"properties": {
"subscription_id": {
"type": "string",
"description": "Stripe subscription ID (sub_…), not a customer ID; find it with stripe_list_subscriptions or stripe_get_customer."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Get Stripe subscription",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
List subscriptions in the connected Stripe account, optionally for one customer, status or creation-date range. Returns one page of subscription objects (customer ID, status, items and prices, billing period, cancel-at-period-end flag) with has_more; when has_more is true, pass next_starting_after as starting_after to read the next page. Returns up to 100 subscriptions per page. Nothing is saved.
The description explains the capability, when to use it, and what to expect.
Inputs93/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
customer
Stripe customer ID (cus_…), from stripe_list_customers; omit to list subscriptions for all customers.
Clear enough to supply this argument.
status
Subscription status to filter by: active, trialing, past_due (payment failed, retrying), unpaid, canceled, incomplete or incomplete_expired (first payment failed/expired); all includes canceled ones. If omitted, Stripe returns all non-canceled subscriptions.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
created_gte
Unix timestamp in seconds; only subscriptions created at or after this time are returned.
Clear enough to supply this argument.
created_lte
Unix timestamp in seconds; only subscriptions created at or before this time are returned.
Clear enough to supply this argument.
limit
Number of subscriptions to return on this page.
Explain what happens when this optional value is omitted.
starting_after
Subscription ID (sub_…) to continue after; pass next_starting_after from the previous page.
Clear enough to supply this argument.
ending_before
Subscription ID (sub_…) to page backward from; pass the first subscription ID of the current page.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "stripe_list_subscriptions",
"title": "List Stripe subscriptions",
"description": "List subscriptions in the connected Stripe account, optionally for one customer, status or creation-date range. Returns one page of subscription objects (customer ID, status, items and prices, billing period, cancel-at-period-end flag) with has_more; when has_more is true, pass next_starting_after as starting_after to read the next page. Returns up to 100 subscriptions per page. Nothing is saved.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {
"limit": {
"type": "number",
"default": 10,
"maximum": 100,
"minimum": 1,
"description": "Number of subscriptions to return on this page."
},
"status": {
"enum": [
"active",
"past_due",
"unpaid",
"canceled",
"incomplete",
"incomplete_expired",
"trialing",
"all"
],
"type": "string",
"description": "Subscription status to filter by: active, trialing, past_due (payment failed, retrying), unpaid, canceled, incomplete or incomplete_expired (first payment failed/expired); all includes canceled ones. If omitted, Stripe returns all non-canceled subscriptions."
},
"customer": {
"type": "string",
"description": "Stripe customer ID (cus_…), from stripe_list_customers; omit to list subscriptions for all customers."
},
"created_gte": {
"type": "number",
"description": "Unix timestamp in seconds; only subscriptions created at or after this time are returned."
},
"created_lte": {
"type": "number",
"description": "Unix timestamp in seconds; only subscriptions created at or before this time are returned."
},
"ending_before": {
"type": "string",
"description": "Subscription ID (sub_…) to page backward from; pass the first subscription ID of the current page."
},
"starting_after": {
"type": "string",
"description": "Subscription ID (sub_…) to continue after; pass next_starting_after from the previous page."
}
},
"additionalProperties": false
},
"annotations": {
"title": "List Stripe subscriptions",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Read one payment intent from the connected Stripe account by ID. Returns the full payment intent: amount and amount received in the smallest currency unit (e.g. cents), currency, status (such as requires_payment_method, processing, succeeded or canceled), customer ID, latest charge ID, payment method, description and creation time. Nothing is changed.
The description explains the capability, when to use it, and what to expect.
Inputs100/100
Input documentation gives an agent enough context to populate the arguments.
payment_intent_id
Stripe payment intent ID (pi_…), from stripe_list_payment_intents or a charge's payment_intent field.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
List payment intents in the connected Stripe account, optionally for one customer or creation-date range. Returns success and data holding Stripe's list response: data, the payment intent objects (each with id, amount and amount_received in the smallest currency unit, currency, status, customer, latest_charge and created), and has_more; to read the next page pass the last payment intent ID as starting_after. Nothing is saved.
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.
customer
Stripe customer ID (cus_…), from stripe_list_customers; omit to list payment intents across all customers.
Clear enough to supply this argument.
customer_account
Filter by connected account customer ID (Stripe Connect)
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
created_gte
Unix timestamp in seconds; only payment intents created at or after this time are returned.
Clear enough to supply this argument.
created_lte
Unix timestamp in seconds; only payment intents created at or before this time are returned.
Clear enough to supply this argument.
limit
Number of payment intents to return on this page.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
starting_after
Payment intent ID (pi_…) to continue after; pass the ID of the last payment intent on the previous page.
Clear enough to supply this argument.
ending_before
Payment intent ID (pi_…) to page backward from; pass the first ID of the current page.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "stripe_list_payment_intents",
"title": "List Stripe payment intents",
"description": "List payment intents in the connected Stripe account, optionally for one customer or creation-date range. Returns success and data holding Stripe's list response: data, the payment intent objects (each with id, amount and amount_received in the smallest currency unit, currency, status, customer, latest_charge and created), and has_more; to read the next page pass the last payment intent ID as starting_after. Nothing is saved.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {
"limit": {
"type": "number",
"default": 10,
"maximum": 100,
"minimum": 1,
"description": "Number of payment intents to return on this page."
},
"customer": {
"type": "string",
"description": "Stripe customer ID (cus_…), from stripe_list_customers; omit to list payment intents across all customers."
},
"created_gte": {
"type": "number",
"description": "Unix timestamp in seconds; only payment intents created at or after this time are returned."
},
"created_lte": {
"type": "number",
"description": "Unix timestamp in seconds; only payment intents created at or before this time are returned."
},
"ending_before": {
"type": "string",
"description": "Payment intent ID (pi_…) to page backward from; pass the first ID of the current page."
},
"starting_after": {
"type": "string",
"description": "Payment intent ID (pi_…) to continue after; pass the ID of the last payment intent on the previous page."
},
"customer_account": {
"type": "string",
"description": "Filter by connected account customer ID (Stripe Connect)"
}
},
"additionalProperties": false
},
"annotations": {
"title": "List Stripe payment intents",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Read one refund from the connected Stripe account by ID. Returns the full refund object: amount in the smallest currency unit (e.g. cents), currency, status (such as pending, succeeded or failed), reason, the refunded charge and payment intent IDs, metadata and creation time. Nothing is changed.
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.
refund_id
Stripe refund ID (re_…), from stripe_list_refunds.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description100/100
List refunds in the connected Stripe account, optionally for one charge, payment intent or creation-date range. Returns one page of refund objects (amount in the smallest currency unit, currency, status, reason, charge and payment intent IDs, creation time) with has_more; to read the next page pass the last refund ID as starting_after. Nothing is saved.
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.
charge
Stripe charge ID (ch_…), from stripe_list_charges; omit to not filter by charge.
Clear enough to supply this argument.
payment_intent
Stripe payment intent ID (pi_…), from stripe_list_payment_intents; omit to not filter by payment intent.
Clear enough to supply this argument.
created_gte
Unix timestamp in seconds; only refunds created at or after this time are returned.
Clear enough to supply this argument.
created_lte
Unix timestamp in seconds; only refunds created at or before this time are returned.
Clear enough to supply this argument.
limit
Number of refunds to return on this page.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
starting_after
Refund ID (re_…) to continue after; pass the ID of the last refund on the previous page.
Clear enough to supply this argument.
ending_before
Refund ID (re_…) to page backward from; pass the first refund ID of the current page.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "stripe_list_refunds",
"title": "List Stripe refunds",
"description": "List refunds in the connected Stripe account, optionally for one charge, payment intent or creation-date range. Returns one page of refund objects (amount in the smallest currency unit, currency, status, reason, charge and payment intent IDs, creation time) with has_more; to read the next page pass the last refund ID as starting_after. Nothing is saved.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {
"limit": {
"type": "number",
"default": 10,
"maximum": 100,
"minimum": 1,
"description": "Number of refunds to return on this page."
},
"charge": {
"type": "string",
"description": "Stripe charge ID (ch_…), from stripe_list_charges; omit to not filter by charge."
},
"created_gte": {
"type": "number",
"description": "Unix timestamp in seconds; only refunds created at or after this time are returned."
},
"created_lte": {
"type": "number",
"description": "Unix timestamp in seconds; only refunds created at or before this time are returned."
},
"ending_before": {
"type": "string",
"description": "Refund ID (re_…) to page backward from; pass the first refund ID of the current page."
},
"payment_intent": {
"type": "string",
"description": "Stripe payment intent ID (pi_…), from stripe_list_payment_intents; omit to not filter by payment intent."
},
"starting_after": {
"type": "string",
"description": "Refund ID (re_…) to continue after; pass the ID of the last refund on the previous page."
}
},
"additionalProperties": false
},
"annotations": {
"title": "List Stripe refunds",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Read one invoice from the connected Stripe account by ID. Returns the full invoice: number, customer, status (draft, open, paid, uncollectible or void), amount due, paid and remaining in the smallest currency unit (e.g. cents), currency, due date, line items, hosted invoice and PDF links and creation time. Nothing is changed.
The description explains the capability, when to use it, and what to expect.
Inputs100/100
Input documentation gives an agent enough context to populate the arguments.
invoice_id
Stripe invoice ID (in_…), from stripe_list_invoices or a subscription's latest_invoice.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "stripe_get_invoice",
"title": "Get Stripe invoice",
"description": "Read one invoice from the connected Stripe account by ID. Returns the full invoice: number, customer, status (draft, open, paid, uncollectible or void), amount due, paid and remaining in the smallest currency unit (e.g. cents), currency, due date, line items, hosted invoice and PDF links and creation time. Nothing is changed.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"invoice_id"
],
"properties": {
"invoice_id": {
"type": "string",
"description": "Stripe invoice ID (in_…), from stripe_list_invoices or a subscription's latest_invoice."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Get Stripe invoice",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description100/100
List invoices in the connected Stripe account, optionally for one customer, status or creation-date range. Returns one page of invoices (number, customer, status, amounts due and paid in the smallest currency unit, currency, due date, hosted invoice link, creation time) with has_more; to read the next page pass the last invoice ID as starting_after. Nothing is saved.
The description explains the capability, when to use it, and what to expect.
Inputs96/100
Explain what happens when this optional value is omitted.
customer
Stripe customer ID (cus_…), from stripe_list_customers; omit to list invoices for all customers.
Clear enough to supply this argument.
status
Invoice status to filter by: draft (not finalized), open (finalized, awaiting payment), paid, uncollectible (marked unlikely to be paid) or void (cancelled). Omit to include every status.
Clear enough to supply this argument.
created_gte
Unix timestamp in seconds; only invoices created at or after this time are returned.
Clear enough to supply this argument.
created_lte
Unix timestamp in seconds; only invoices created at or before this time are returned.
Clear enough to supply this argument.
limit
Number of invoices to return on this page.
Explain what happens when this optional value is omitted.
starting_after
Invoice ID (in_…) to continue after; pass the ID of the last invoice on the previous page.
Clear enough to supply this argument.
ending_before
Invoice ID (in_…) to page backward from; pass the first invoice ID of the current page.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "stripe_list_invoices",
"title": "List Stripe invoices",
"description": "List invoices in the connected Stripe account, optionally for one customer, status or creation-date range. Returns one page of invoices (number, customer, status, amounts due and paid in the smallest currency unit, currency, due date, hosted invoice link, creation time) with has_more; to read the next page pass the last invoice ID as starting_after. Nothing is saved.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {
"limit": {
"type": "number",
"default": 10,
"maximum": 100,
"minimum": 1,
"description": "Number of invoices to return on this page."
},
"status": {
"enum": [
"draft",
"open",
"paid",
"uncollectible",
"void"
],
"type": "string",
"description": "Invoice status to filter by: draft (not finalized), open (finalized, awaiting payment), paid, uncollectible (marked unlikely to be paid) or void (cancelled). Omit to include every status."
},
"customer": {
"type": "string",
"description": "Stripe customer ID (cus_…), from stripe_list_customers; omit to list invoices for all customers."
},
"created_gte": {
"type": "number",
"description": "Unix timestamp in seconds; only invoices created at or after this time are returned."
},
"created_lte": {
"type": "number",
"description": "Unix timestamp in seconds; only invoices created at or before this time are returned."
},
"ending_before": {
"type": "string",
"description": "Invoice ID (in_…) to page backward from; pass the first invoice ID of the current page."
},
"starting_after": {
"type": "string",
"description": "Invoice ID (in_…) to continue after; pass the ID of the last invoice on the previous page."
}
},
"additionalProperties": false
},
"annotations": {
"title": "List Stripe invoices",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Create a new customer record in the connected Stripe account with the given email and optional name, phone, description and metadata. Returns the created customer object, including its new customer ID. Repeating the call creates a duplicate customer; 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.
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.
email
Email address for the new customer; Stripe does not enforce uniqueness, so check stripe_list_customers to avoid duplicates.
Clear enough to supply this argument.
name
Customer's full name or business name; omit if unknown.
Clear enough to supply this argument.
phone
Customer phone number as free text (Stripe does not validate the format); omit if unknown.
Clear enough to supply this argument.
description
Internal free-text note stored on the customer record (not an email or name); omit if not needed.
Clear enough to supply this argument.
metadata
Object of string keys to string values stored on the customer, e.g. an internal account ID; omit if not needed.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 new customer record in the connected Stripe account with the given email and optional name, phone, description and metadata. Returns the created customer object, including its new customer ID. Repeating the call creates a duplicate customer; 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": "Customer's full name or business name; omit if unknown."
},
"email": {
"type": "string",
"description": "Email address for the new customer; Stripe does not enforce uniqueness, so check stripe_list_customers to avoid duplicates."
},
"phone": {
"type": "string",
"description": "Customer phone number as free text (Stripe does not validate the format); omit if unknown."
},
"metadata": {
"type": "object",
"description": "Object of string keys to string values stored on the customer, e.g. an internal account ID; omit if not needed.",
"additionalProperties": {}
},
"description": {
"type": "string",
"description": "Internal free-text note stored on the customer record (not an email or name); omit if not needed."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Create Stripe customer",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
List products in the connected Stripe account, optionally only active or inactive ones. Returns one page of products (ID, name, description, active flag, metadata) each with its default price expanded: price ID, unit amount in the smallest currency unit, currency and recurring interval. Includes has_more; to read the next page pass the last product ID as starting_after. 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.
limit
Number of products to return on this page.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
starting_after
Product ID (prod_…) to continue after; pass the ID of the last product on the previous page.
Clear enough to supply this argument.
active
true returns only products available for purchase, false only archived ones; omit to return both.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "stripe_list_products",
"title": "List Stripe products",
"description": "List products in the connected Stripe account, optionally only active or inactive ones. Returns one page of products (ID, name, description, active flag, metadata) each with its default price expanded: price ID, unit amount in the smallest currency unit, currency and recurring interval. Includes has_more; to read the next page pass the last product ID as starting_after. Nothing is saved.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {
"limit": {
"type": "number",
"default": 10,
"maximum": 100,
"minimum": 1,
"description": "Number of products to return on this page."
},
"active": {
"type": "boolean",
"description": "true returns only products available for purchase, false only archived ones; omit to return both."
},
"starting_after": {
"type": "string",
"description": "Product ID (prod_…) to continue after; pass the ID of the last product on the previous page."
}
},
"additionalProperties": false
},
"annotations": {
"title": "List Stripe products",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
List coupons in the connected Stripe account. Returns one page of coupons: coupon ID, name, discount as percent off or amount off (smallest currency unit) with currency, duration (once, repeating or forever) and months, whether it is still valid, redemption counts and limits, and expiry. Includes has_more; to read the next page pass the last coupon ID as starting_after. Nothing is saved.
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.
limit
Number of coupons to return on this page.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
starting_after
Coupon ID to continue after; pass the ID of the last coupon on the previous page.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "stripe_list_coupons",
"title": "List Stripe coupons",
"description": "List coupons in the connected Stripe account. Returns one page of coupons: coupon ID, name, discount as percent off or amount off (smallest currency unit) with currency, duration (once, repeating or forever) and months, whether it is still valid, redemption counts and limits, and expiry. Includes has_more; to read the next page pass the last coupon ID as starting_after. Nothing is saved.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {
"limit": {
"type": "number",
"default": 10,
"maximum": 100,
"minimum": 1,
"description": "Number of coupons to return on this page."
},
"starting_after": {
"type": "string",
"description": "Coupon ID to continue after; pass the ID of the last coupon on the previous page."
}
},
"additionalProperties": false
},
"annotations": {
"title": "List Stripe coupons",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
Create a Skill, an automated workflow that can run actions such as sending email when its triggers fire. New Skills start paused, with no triggers or actions, in My Agent unless an accessible shared Agent is given. Returns the new skillId, title and version. 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. Write the instructions as a short SOP with the headings Goal, Steps, Rules, and Hand-off. Do not restate the trigger or schedule. Read get_item_guide topic skill-writing-instructions. Writing guidance such as tone and message content belongs in each action’s configuration. Instructions given here cannot contain [[action:N]] references, since no actions exist yet; add actions, then update the instructions with their tokens. 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
Skill name shown in item. An empty title becomes New Skill (or New <Agent> Skill).
Clear enough to supply this argument.
instructions
SOP the Skill follows, with the headings Goal, Steps, Rules, and Hand-off. Plain words, about 2,500 characters. Do not restate the trigger or schedule; that lives on the trigger. Action tokens cannot be used yet; add actions, then reference their [[action:N]] tokens in an update. Message writing belongs on the action. Approval uses set_approval_settings. Trigger filters belong on the trigger. Durable facts belong in memory once. A save returns instructionWarnings (soft checks; the save still applies) and instructionChangeSummary. Read get_item_guide topic skill-writing-instructions.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
worker
Shared Agent that holds the Skill: outbound, inbound, account manager or system manager. Null or omitted keeps it private in your My Agent; a shared Agent needs your access.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
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, with no triggers or actions, in My Agent unless an accessible shared Agent is given. Returns the new skillId, title and version. 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. Write the instructions as a short SOP with the headings Goal, Steps, Rules, and Hand-off. Do not restate the trigger or schedule. Read get_item_guide topic skill-writing-instructions. Writing guidance such as tone and message content belongs in each action’s configuration. Instructions given here cannot contain [[action:N]] references, since no actions exist yet; add actions, then update the instructions with their tokens. 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": "Skill name shown in item. An empty title becomes New Skill (or New <Agent> Skill)."
},
"worker": {
"anyOf": [
{
"enum": [
"outbound",
"inbound",
"account_manager",
"system_manager"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Shared Agent that holds the Skill: outbound, inbound, account manager or system manager. Null or omitted keeps it private in your My Agent; a shared Agent needs your access."
},
"instructions": {
"type": "string",
"description": "SOP the Skill follows, with the headings Goal, Steps, Rules, and Hand-off. Plain words, about 2,500 characters. Do not restate the trigger or schedule; that lives on the trigger. Action tokens cannot be used yet; add actions, then reference their [[action:N]] tokens in an update. Message writing belongs on the action. Approval uses set_approval_settings. Trigger filters belong on the trigger. Durable facts belong in memory once. A save returns instructionWarnings (soft checks; the save still applies) and instructionChangeSummary. Read get_item_guide topic skill-writing-instructions."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Create Skill",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
Change a Skill’s title, instructions, memory, status or placement. Changes save immediately and a live Skill uses them on its next run. Setting status live activates all of the Skill’s triggers so they can start runs; paused deactivates them. Moving placement fails, listing the affected tools, when the destination Agent lacks a tool the Skill uses. Returns the saved values and version. Use instructionEdits for exact, unique instruction-only replacements; missing, repeated or overlapping excerpts reject the entire edit, and other fields cannot be changed in that call. For a whole-procedure rewrite, write a short SOP (Goal, Steps, Rules, Hand-off) and put the change in the matching step or rule. Do not restate the trigger or schedule. Reference each action with the exact [[action:N]] token returned when the action was added. Writing guidance belongs in the action configuration. The result includes instructionWarnings and instructionChangeSummary; tell the user the summary. Read get_item_guide topic skill-writing-instructions.
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
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
skillId
Skill ID, from list_skills.
Clear enough to supply this argument.
clear_fields
Fields to erase; a cleared field is emptied even if a new value is also sent. Null or [] clears nothing. Null or an empty string 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
Full SOP replacement, or null to leave the instructions unchanged. Use the headings Goal, Steps, Rules, and Hand-off, and fold the change into the matching step or rule. Do not restate the trigger or schedule. Reference each action with its [[action:N]] token. instructionWarnings lists soft checks for length, missing headings, and growth over 25 percent; the save still applies. Tell the user instructionChangeSummary.text. Read get_item_guide topic skill-writing-instructions.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
instructionEdits › anyOf › 0 › items › oldText
Exact unique excerpt from the current get_skill instructions, including any markup within it.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
instructionEdits › anyOf › 0 › items › newText
Replacement for only that excerpt. Keep unrelated business requirements unchanged.
Clear enough to supply this argument.
memory
Durable facts for later runs, stored once in the knowledge base. Do not repeat them in the instructions. Pass null to leave this 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
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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. Changes save immediately and a live Skill uses them on its next run. Setting status live activates all of the Skill’s triggers so they can start runs; paused deactivates them. Moving placement fails, listing the affected tools, when the destination Agent lacks a tool the Skill uses. Returns the saved values and version. Use instructionEdits for exact, unique instruction-only replacements; missing, repeated or overlapping excerpts reject the entire edit, and other fields cannot be changed in that call. For a whole-procedure rewrite, write a short SOP (Goal, Steps, Rules, Hand-off) and put the change in the matching step or rule. Do not restate the trigger or schedule. Reference each action with the exact [[action:N]] token returned when the action was added. Writing guidance belongs in the action configuration. The result includes instructionWarnings and instructionChangeSummary; tell the user the summary. Read get_item_guide topic skill-writing-instructions.\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": "Durable facts for later runs, stored once in the knowledge base. Do not repeat them in the instructions. Pass null to leave this 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": "Skill ID, from list_skills."
},
"clear_fields": {
"anyOf": [
{
"type": "array",
"items": {
"enum": [
"memory",
"instructions"
],
"type": "string"
}
},
{
"type": "null"
}
],
"description": "Fields to erase; a cleared field is emptied even if a new value is also sent. Null or [] clears nothing. Null or an empty string in a field itself leaves it unchanged."
},
"instructions": {
"type": [
"string",
"null"
],
"description": "Full SOP replacement, or null to leave the instructions unchanged. Use the headings Goal, Steps, Rules, and Hand-off, and fold the change into the matching step or rule. Do not restate the trigger or schedule. Reference each action with its [[action:N]] token. instructionWarnings lists soft checks for length, missing headings, and growth over 25 percent; the save still applies. Tell the user instructionChangeSummary.text. Read get_item_guide topic skill-writing-instructions."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
},
"instructionEdits": {
"anyOf": [
{
"type": "array",
"items": {
"type": "object",
"required": [
"oldText",
"newText"
],
"properties": {
"newText": {
"type": "string",
"description": "Replacement for only that excerpt. Keep unrelated business requirements unchanged."
},
"oldText": {
"type": "string",
"minLength": 1,
"description": "Exact unique excerpt from the current get_skill instructions, including any markup within it."
}
},
"additionalProperties": false
},
"minItems": 1
},
{
"type": "null"
}
],
"description": "Literal disjoint instruction edits for a narrow change. All matches are checked before saving; missing, repeated or overlapping excerpts reject the whole edit. Replace complete action references or pills, not fragments. Pass null otherwise. Cannot be combined with instructions or other updates."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Update Skill",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
Read one Skill’s title, instructions, memory, status and placement (worker null means private to My Agent), its triggers with configuration and next scheduled run, and its actions with configuration, including the trigger and action IDs other Skill tools take. Approval settings are not included. Optional textQuery returns bounded literal matches in instructions, memory and action text instead of full details, with counts and a truncation flag; it does not validate business meaning. 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.
Inputs88/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
skillId
Skill ID, from list_skills.
Clear enough to supply this argument.
textQuery
Case-insensitive literal search terms in saved instructions, memory and action string fields, including templates. Returns exact saved excerpts and counts, not full details. A truncated result requires narrower terms or a full read; zero matches do not prove semantic completeness. Pass null for full details.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_skill",
"title": "Get Skill",
"description": "Read one Skill’s title, instructions, memory, status and placement (worker null means private to My Agent), its triggers with configuration and next scheduled run, and its actions with configuration, including the trigger and action IDs other Skill tools take. Approval settings are not included. Optional textQuery returns bounded literal matches in instructions, memory and action text instead of full details, with counts and a truncation flag; it does not validate business meaning. To change the Skill, read get_item_guide topic skill-authoring first instead of inferring trigger or action configuration from memory.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"skillId"
],
"properties": {
"skillId": {
"type": "string",
"description": "Skill ID, from list_skills."
},
"textQuery": {
"anyOf": [
{
"type": "array",
"items": {
"type": "string",
"maxLength": 256,
"minLength": 1
},
"maxItems": 8,
"minItems": 1
},
{
"type": "null"
}
],
"description": "Case-insensitive literal search terms in saved instructions, memory and action string fields, including templates. Returns exact saved excerpts and counts, not full details. A truncated result requires narrower terms or a full read; zero matches do not prove semantic completeness. Pass null for full details."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Get Skill",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
List the Skills you can access, most recently edited first: your private My Agent Skills and Skills on shared Agents you can use. Returns each Skill’s ID, title, status, description and placement; in workspaces with run history enabled, also its run, completion, error and exit counts and last run time for the past 14 days. To create or change a Skill, read get_item_guide topic skill-authoring first for the trigger and action configuration available to you.
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.
status
Lifecycle state to filter by. Null or omitted lists Skills in every state.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
limit
Maximum number of Skills to return, most recently edited first; 20 when omitted.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
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, most recently edited first: your private My Agent Skills and Skills on shared Agents you can use. Returns each Skill’s ID, title, status, description and placement; in workspaces with run history enabled, also its run, completion, error and exit counts and last run time for the past 14 days. 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, most recently edited first; 20 when omitted."
},
"status": {
"anyOf": [
{
"enum": [
"live",
"paused"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Lifecycle state to filter by. Null or omitted lists Skills in every state."
}
},
"additionalProperties": false
},
"annotations": {
"title": "List Skills",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description95/100
List this workspace's forms, sorted by title, with each form's ID, title and the ID of the Skill it triggers (linkedSkillId, null when none). A form triggers at most one Skill.
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 output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "list_forms",
"title": "List forms",
"description": "List this workspace's forms, sorted by title, with each form's ID, title and the ID of the Skill it triggers (linkedSkillId, null when none). A form triggers at most one Skill.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {},
"additionalProperties": false
},
"annotations": {
"title": "List forms",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Add a trigger, such as a schedule or event, that starts a Skill automatically. The trigger is saved active: on a live Skill it fires on its next matching event or scheduled time, while triggers on a paused Skill fire only once it is live. Adding a trigger does not start a run itself. A form trigger links that form to this Skill and unlinks any other form linked to it. Returns the triggerId, the saved trigger (with next run time for schedules) and version. Read get_item_guide topic skill-triggers first for the exact configuration instead of guessing it from memory. 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.
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.
skillId
Skill ID, from list_skills.
Clear enough to supply this argument.
triggerType
Event that starts the Skill: for example time_based for a schedule, form_submission for a form, people_search for newly found people matching criteria, or connector_event for a connected app event. get_item_guide topic skill-authoring lists the types available to you.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
config
Trigger configuration; get_item_guide topic skill-triggers has each schema. time_based: {"schedule_type":"weekly","schedule_config":{"days_of_week":[1],"time":"09:00","timezone":"America/New_York"}}; times use schedule_config.timezone (IANA), UTC if omitted. form_submission: {formId, isConfigured: true}, formId from list_forms. connector_event: {connector_id, event_id, isConfigured: true}. people_search: {nlquery, frequency, profilesQty, isConfigured: true}, nlquery describing only who to find. record_saved update triggers need an existing field's fieldDefinitionId from get_object_schema.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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. The trigger is saved active: on a live Skill it fires on its next matching event or scheduled time, while triggers on a paused Skill fire only once it is live. Adding a trigger does not start a run itself. A form trigger links that form to this Skill and unlinks any other form linked to it. Returns the triggerId, the saved trigger (with next run time for schedules) and version. Read get_item_guide topic skill-triggers first for the exact configuration instead of guessing it from memory. 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; get_item_guide topic skill-triggers has each schema. time_based: {\"schedule_type\":\"weekly\",\"schedule_config\":{\"days_of_week\":[1],\"time\":\"09:00\",\"timezone\":\"America/New_York\"}}; times use schedule_config.timezone (IANA), UTC if omitted. form_submission: {formId, isConfigured: true}, formId from list_forms. connector_event: {connector_id, event_id, isConfigured: true}. people_search: {nlquery, frequency, profilesQty, isConfigured: true}, nlquery describing only who to find. record_saved update triggers need an existing field's fieldDefinitionId from get_object_schema.",
"additionalProperties": {}
},
"skillId": {
"type": "string",
"description": "Skill ID, from list_skills."
},
"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": "Event that starts the Skill: for example time_based for a schedule, form_submission for a form, people_search for newly found people matching criteria, or connector_event for a connected app event. get_item_guide topic skill-authoring lists the types available to you."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Add Skill trigger",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description93/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.
Inputs96/100
Input documentation gives an agent enough context to populate the arguments.
skillId
Skill ID, from list_skills.
Clear enough to supply this argument.
triggerId
Trigger ID, from get_skill.
Clear enough to supply this argument.
config
Configuration keys to change, shallow-merged into the saved configuration (nested objects are replaced whole). For time_based, send schedule_type with the complete schedule_config; the next run time is recalculated. A form trigger's formId re-links the form; an empty or null formId unlinks it. people_search nlquery describes only who to find. get_item_guide topic skill-triggers has each schema.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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": "Configuration keys to change, shallow-merged into the saved configuration (nested objects are replaced whole). For time_based, send schedule_type with the complete schedule_config; the next run time is recalculated. A form trigger's formId re-links the form; an empty or null formId unlinks it. people_search nlquery describes only who to find. get_item_guide topic skill-triggers has each schema.",
"additionalProperties": {}
},
"skillId": {
"type": "string",
"description": "Skill ID, from list_skills."
},
"triggerId": {
"type": "number",
"description": "Trigger ID, from get_skill."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Update Skill trigger",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Delete a trigger from a Skill so it no longer starts runs. A time-based trigger’s schedule is deleted and a form trigger’s form is unlinked from the Skill. Returns the removed triggerId and version; a trigger ID that is not on the Skill returns an error. 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.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
skillId
Skill ID, from list_skills.
Clear enough to supply this argument.
triggerId
Trigger ID, from get_skill.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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": "Delete a trigger from a Skill so it no longer starts runs. A time-based trigger’s schedule is deleted and a form trigger’s form is unlinked from the Skill. Returns the removed triggerId and version; a trigger ID that is not on the Skill returns an error. 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": "Skill ID, from list_skills."
},
"triggerId": {
"type": "number",
"description": "Trigger ID, from get_skill."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Remove Skill trigger",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"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. The action is saved immediately; the Skill’s runner (you, or its shared Agent) needs access to that action’s connector, otherwise the call fails with the denied permission. 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.
Inputs93/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
skillId
Skill ID, from list_skills.
Clear enough to supply this argument.
actionType
Action the Skill may perform. Connector actions (Linear, Loops, Mailchimp, Slack, Stripe) need that integration connected. Contact and company enrichment run in every Skill and are not actions. get_item_guide topic skill-authoring lists the types available to you.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
configuration
Action configuration, where writing guidance (tone, voice, what to say and avoid) goes. Email: {bodyMode, subjectMode, instructions, senderId, isConfigured: true}; LinkedIn: {action, messageMode, instructions, senderId, isConfigured: true}. Auto mode needs instructions on the message purpose and audience; the sender’s learned voice applies at run time. Most connector actions take {isConfigured: true}. Approval is set with set_approval_settings; get_item_guide topics skill-actions and skill-connectors have each schema.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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. The action is saved immediately; the Skill’s runner (you, or its shared Agent) needs access to that action’s connector, otherwise the call fails with the denied permission. 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": "Skill ID, from list_skills."
},
"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 the Skill may perform. Connector actions (Linear, Loops, Mailchimp, Slack, Stripe) need that integration connected. Contact and company enrichment run in every Skill and are not actions. get_item_guide topic skill-authoring lists the types available to you."
},
"configuration": {
"type": "object",
"description": "Action configuration, where writing guidance (tone, voice, what to say and avoid) goes. Email: {bodyMode, subjectMode, instructions, senderId, isConfigured: true}; LinkedIn: {action, messageMode, instructions, senderId, isConfigured: true}. Auto mode needs instructions on the message purpose and audience; the sender’s learned voice applies at run time. Most connector actions take {isConfigured: true}. Approval is set 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": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Add Skill action",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Change a Skill action’s configuration; changes save immediately. Only the keys sent change and the rest are kept; nested objects sent are replaced whole. Returns the updated action and version. 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
Configuration keys to change, merged over the saved configuration; unsent keys are kept and nested objects are replaced whole. Writing guidance for email and LinkedIn actions goes in instructions here. get_item_guide topics skill-actions and skill-connectors list each action’s keys.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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; changes save immediately. Only the keys sent change and the rest are kept; nested objects sent are replaced whole. Returns the updated action and version. 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": "Configuration keys to change, merged over the saved configuration; unsent keys are kept and nested objects are replaced whole. Writing guidance for email and LinkedIn actions goes in instructions here. get_item_guide topics skill-actions and skill-connectors list each action’s keys.",
"additionalProperties": {}
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Update Skill action",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Delete an action from a Skill so its runs can no longer perform it. 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. Returns the removed actionId and version; an action ID that is not on the Skill returns an error.
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.
skillId
Skill ID, from list_skills.
Clear enough to supply this argument.
actionId
Action ID, from get_skill.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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": "Delete an action from a Skill so its runs can no longer perform it. 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. Returns the removed actionId and version; an action ID that is not on the Skill returns an error.\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": "Skill ID, from list_skills."
},
"actionId": {
"type": "number",
"description": "Action ID, from get_skill."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Remove Skill action",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Choose whether a Skill’s action type, such as sending email, requires approval before item runs it. The setting covers every action of that type in the Skill and is saved immediately; returns the new version. 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.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
skillId
Skill ID, from list_skills.
Clear enough to supply this argument.
actionType
Outbound email or LinkedIn action type whose approval rule to set; it applies to every action of this type in the Skill.
Clear enough to supply this argument.
requireApproval
Whether this action should require user approval
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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. The setting covers every action of that type in the Skill and is saved immediately; returns the new version. 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": "Skill ID, from list_skills."
},
"actionType": {
"enum": [
"send_email",
"reply_to_email",
"send_linkedin_message",
"send_linkedin_invitation",
"send_linkedin_inmail"
],
"type": "string",
"description": "Outbound email or LinkedIn action type whose approval rule to set; it applies to every action of this type in the Skill."
},
"requireApproval": {
"type": "boolean",
"description": "Whether this action should require user approval"
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Set approval settings",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Upload a csv, pdf or html file from your item MCP workspace and return a download link; other file types fail. Report files containing internal database identifiers are blocked. Returns the artifact ID, filename, content type and a download link path in the item app; opening it requires an item sign-in with access to the originating conversation and issues a short-lived file link.
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.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
path
Path of a csv, pdf or html file in your item MCP workspace, such as data/export.csv, from an earlier call that saved it.
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
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 csv, pdf or html file from your item MCP workspace and return a download link; other file types fail. Report files containing internal database identifiers are blocked. Returns the artifact ID, filename, content type and a download link path in the item app; opening it requires an item sign-in with access to the originating conversation and issues a short-lived file link.\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 of a csv, pdf or html file in your item MCP workspace, such as data/export.csv, from an earlier call that saved it."
},
"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": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Create file download link",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description97/100
Read how an item analytics chart is defined: title, type, version, a plain-language definition, data sources, date range, filters, grouping, SQL, axis encodings, whether it uses email data, last refresh time and row count, plus a link to its page. Data rows are not included. Nothing is changed.
The description explains the capability, when to use it, and what to expect.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
chart_id
Chart ID, from the tiles returned by update_dashboard or the added_chart_ids returned by build_dashboard_from_template or create_dashboard.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_chart_definition",
"title": "Get chart definition",
"description": "Read how an item analytics chart is defined: title, type, version, a plain-language definition, data sources, date range, filters, grouping, SQL, axis encodings, whether it uses email data, last refresh time and row count, plus a link to its page. Data rows are not included. Nothing is changed.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"chart_id"
],
"properties": {
"chart_id": {
"type": "string",
"format": "uuid",
"description": "Chart ID, from the tiles returned by update_dashboard or the added_chart_ids returned by build_dashboard_from_template or create_dashboard."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Get chart definition",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
Export an item chart's data as a CSV file and return a download link that expires after one hour, with the chart version, title, filename and a data-sensitivity note. Each call creates a new file. The png format returns no file or link over this connection. Fails if the chart has no computed rows.
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.
chart_id
Chart ID, from the tiles returned by update_dashboard or the added_chart_ids returned by build_dashboard_from_template or create_dashboard.
Clear enough to supply this argument.
format
csv returns a link to the rows the chart shows. png is rendered in the item app and produces no file or link over this connection.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 an item chart's data as a CSV file and return a download link that expires after one hour, with the chart version, title, filename and a data-sensitivity note. Each call creates a new file. The png format returns no file or link over this connection. Fails if the chart has no computed rows.\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 returns a link to the rows the chart shows. png is rendered in the item app and produces no file or link over this connection."
},
"chart_id": {
"type": "string",
"format": "uuid",
"description": "Chart ID, from the tiles returned by update_dashboard or the added_chart_ids returned by build_dashboard_from_template or create_dashboard."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Export chart",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Build one of your recommended dashboard templates in item, either as a new dashboard or into the draft of an empty dashboard you can edit, using your current data access. Returns the dashboard ID, name, link, chart count, whether the result is a draft, and the IDs of the charts added. 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.
The description explains the capability, when to use it, and what to expect.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
template_id
ID of a dashboard recommendation offered to you in the item app; no exposed tool lists them. Dismissed recommendations are rejected.
Clear enough to supply this argument.
dashboard_id
Empty dashboard to fill, from list_dashboards or create_dashboard; charts go into your draft of it. Omit to create a new dashboard.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 in item, either as a new dashboard or into the draft of an empty dashboard you can edit, using your current data access. Returns the dashboard ID, name, link, chart count, whether the result is a draft, and the IDs of the charts added. 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",
"description": "ID of a dashboard recommendation offered to you in the item app; no exposed tool lists them. Dismissed recommendations are rejected."
},
"dashboard_id": {
"type": "string",
"format": "uuid",
"description": "Empty dashboard to fill, from list_dashboards or create_dashboard; charts go into your draft of it. Omit to create a new dashboard."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Build dashboard from template",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
List your dashboards, most recently edited first, optionally filtered by name. Returns total and up to 50 dashboards with dashboard_id, name, url, chart_count and updated_at; when chart_id is given, each also includes contains_chart.
The description explains the capability, when to use it, and what to expect.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
query
Case-insensitive name filter. Omit to list all.
Clear enough to supply this argument.
chart_id
ID of a chart; when set, each dashboard includes contains_chart, showing whether that chart is already on it.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "list_dashboards",
"title": "List dashboards",
"description": "List your dashboards, most recently edited first, optionally filtered by name. Returns total and up to 50 dashboards with dashboard_id, name, url, chart_count and updated_at; when chart_id is given, each also includes contains_chart.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [],
"properties": {
"query": {
"type": "string",
"maxLength": 120,
"description": "Case-insensitive name filter. Omit to list all."
},
"chart_id": {
"type": "string",
"format": "uuid",
"description": "ID of a chart; when set, each dashboard includes contains_chart, showing whether that chart is already on it."
}
},
"additionalProperties": false
},
"annotations": {
"title": "List dashboards",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Create a private item dashboard, optionally placing existing charts you created on it in order. Returns the dashboard ID, name, link, chart count and the IDs of charts added. Each call creates a new dashboard.
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.
name
Dashboard name shown in item.
Clear enough to supply this argument.
description
Optional subtitle for the dashboard. Omit for none.
Clear enough to supply this argument.
chart_ids
Charts to place, in order. Only charts you created qualify; IDs come from get_chart_definition or earlier dashboard results.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 item dashboard, optionally placing existing charts you created on it in order. Returns the dashboard ID, name, link, chart count and the IDs of charts added. Each call creates a new dashboard.\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,
"description": "Dashboard name shown in item."
},
"chart_ids": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
},
"maxItems": 30,
"description": "Charts to place, in order. Only charts you created qualify; IDs come from get_chart_definition or earlier dashboard results."
},
"description": {
"type": "string",
"maxLength": 500,
"description": "Optional subtitle for the dashboard. Omit for none."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Create dashboard",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Add a chart you created to one of your item dashboards, as the last tile in a new dashboard version. The dashboard is found by ID or by name (exact, then partial match); no match or several matches return an error. Adding a chart that is already there has no effect. Returns the dashboard ID, name, link and chart count.
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.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
chart_id
Chart you created, from get_chart_definition or earlier dashboard results.
Clear enough to supply this argument.
dashboard_id
Target dashboard ID from list_dashboards or create_dashboard. Omit when using dashboard_name.
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
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 item dashboards, as the last tile in a new dashboard version. The dashboard is found by ID or by name (exact, then partial match); no match or several matches return an error. Adding a chart that is already there has no effect. Returns the dashboard ID, name, link and chart count.\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",
"description": "Chart you created, from get_chart_definition or earlier dashboard results."
},
"dashboard_id": {
"type": "string",
"format": "uuid",
"description": "Target dashboard ID from list_dashboards or create_dashboard. Omit when using dashboard_name."
},
"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": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Add chart to dashboard",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
Export an item dashboard you can view as a zip of CSV files (one per chart, plus key-numbers.csv for its key numbers) and return a download link that expires after one hour, with the dashboard name, filename, chart count and a data-sensitivity note. The dashboard is found by ID or by name (exact, then partial match). Each call creates a new file. The pdf format returns no file or link over this connection. Fails if any chart's data cannot be read.
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.
dashboard_id
Dashboard ID from list_dashboards or create_dashboard. Omit when using dashboard_name.
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.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
format
csv returns a link to a zip with one CSV per chart and key-numbers.csv. pdf is rendered in the item app and produces no file or link over this connection.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "export_dashboard",
"title": "Export dashboard",
"description": "Export an item dashboard you can view as a zip of CSV files (one per chart, plus key-numbers.csv for its key numbers) and return a download link that expires after one hour, with the dashboard name, filename, chart count and a data-sensitivity note. The dashboard is found by ID or by name (exact, then partial match). Each call creates a new file. The pdf format returns no file or link over this connection. Fails if any chart's data cannot be read.\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": [
"format",
"_item_request_id"
],
"properties": {
"format": {
"enum": [
"pdf",
"csv"
],
"type": "string",
"description": "csv returns a link to a zip with one CSV per chart and key-numbers.csv. pdf is rendered in the item app and produces no file or link over this connection."
},
"dashboard_id": {
"type": "string",
"format": "uuid",
"description": "Dashboard ID from list_dashboards or create_dashboard. Omit when using dashboard_name."
},
"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": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Export dashboard",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Edit an item dashboard: add, remove, move or resize charts, regroup them, rename it, change its description or how a tile displays its chart, undo the last change, or restore a saved version. All operations in one call apply together or not at all, and each change saves a new dashboard version; undo restores the previous version as a new one, and redo is unavailable here. Tile display edits do not change the chart. Returns the new version number, change summary and the tiles with their chart IDs.
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
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
dashboard_id
Dashboard to edit, from list_dashboards or create_dashboard.
Clear enough to supply this argument.
operations › items › op
add_chart, remove_chart, move_chart, resize_chart, rename, set_description, edit_tile and reset_tile change one item. beautify regroups all charts by topic with numbers on top. undo restores the previous version. restore_version restores the version given in version. redo works only on drafts and fails here.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
operations › items › chart_id
Chart the operation targets, from the tiles in an earlier result or get_chart_definition. add_chart accepts only charts you created.
Clear enough to supply this argument.
operations › items › presentation
edit_tile: show the chart or its data table without changing the underlying chart type.
Clear enough to supply this argument.
operations › items › position
0-based tile order, 0 = top. A value past the end places the tile last.
Clear enough to supply this argument.
operations › items › width
For resize_chart: columns of the 6-column page (charts 2 to 6, key numbers 1 to 6; a key number in the top row takes one or two places of an even row of up to four), or "full_page" for a chart edge to edge. Height follows the layout.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
operations › items › name
New dashboard name, for rename.
Clear enough to supply this argument.
operations › items › description
Empty string clears it.
Clear enough to supply this argument.
operations › items › view › title
Title shown on this tile only.
Clear enough to supply this argument.
operations › items › view › subtitle
Subtitle shown on this tile only.
Clear enough to supply this argument.
operations › items › view › type
Chart type used to draw this tile; the saved chart keeps its own type.
Clear enough to supply this argument.
operations › items › view › sort › field
Result column to sort the tile by.
Clear enough to supply this argument.
operations › items › view › sort › direction
asc for smallest first, desc for largest first.
Clear enough to supply this argument.
operations › items › view › stack
none draws series side by side, stacked stacks values, percent stacks them as shares of 100%.
Clear enough to supply this argument.
operations › items › view › normalize
share_of_total shows each value as a share of the total.
Clear enough to supply this argument.
operations › items › view › top_n
Bar, column, donut and pie tiles: draw the N largest categories and add the rest up into one "Other" drawn last; measures that cannot be added up, such as averages, get no Other. The table and CSV keep every row.
Clear enough to supply this argument.
operations › items › view_unset
edit_tile: only tile display settings the user asked to remove (subtitle, sort, stack, normalize or top_n); they are removed from the tile, not restored to the chart's own. Never as filler; reset_tile restores the chart's own display.
Clear enough to supply this argument.
operations › items › version
Dashboard version number to restore, from the version returned by earlier edits.
Clear enough to supply this argument.
change_summary
Short summary saved with the new version, e.g. "Removed churn, pipeline first".
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "update_dashboard",
"title": "Update dashboard",
"description": "Edit an item dashboard: add, remove, move or resize charts, regroup them, rename it, change its description or how a tile displays its chart, undo the last change, or restore a saved version. All operations in one call apply together or not at all, and each change saves a new dashboard version; undo restores the previous version as a new one, and redo is unavailable here. Tile display edits do not change the chart. Returns the new version number, change summary and the tiles with their chart IDs.\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": [
"dashboard_id",
"operations",
"_item_request_id"
],
"properties": {
"operations": {
"type": "array",
"items": {
"type": "object",
"required": [
"op"
],
"properties": {
"op": {
"enum": [
"add_chart",
"remove_chart",
"move_chart",
"resize_chart",
"beautify",
"rename",
"set_description",
"edit_tile",
"reset_tile",
"undo",
"redo",
"restore_version"
],
"type": "string",
"description": "add_chart, remove_chart, move_chart, resize_chart, rename, set_description, edit_tile and reset_tile change one item. beautify regroups all charts by topic with numbers on top. undo restores the previous version. restore_version restores the version given in version. redo works only on drafts and fails here."
},
"name": {
"type": "string",
"maxLength": 120,
"minLength": 1,
"description": "New dashboard name, for rename."
},
"view": {
"type": "object",
"properties": {
"sort": {
"type": "object",
"required": [
"field",
"direction"
],
"properties": {
"field": {
"type": "string",
"maxLength": 128,
"minLength": 1,
"description": "Result column to sort the tile by."
},
"direction": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "asc for smallest first, desc for largest first."
}
},
"description": "Tile sort order as {field, direction}.",
"additionalProperties": false
},
"type": {
"enum": [
"kpi",
"table",
"list",
"line",
"multi_line",
"stacked_area",
"column",
"bar",
"grouped_column",
"stacked_column",
"percent_stacked_column",
"percent_stacked_bar",
"donut",
"gauge",
"scatter",
"heatmap",
"histogram",
"box",
"cohort",
"waterfall",
"step",
"slope",
"dumbbell",
"treemap",
"activity_dots",
"sankey",
"line_with_gaps",
"percent_stacked_area",
"density_grid",
"conversion_funnel",
"bullet",
"segmented_progress",
"half_donut",
"waffle",
"bar_line",
"dual_axis_line",
"sparkline_table",
"bubble",
"stacked_groups",
"daily_rhythm",
"icicle",
"geographic_coordinates",
"pulse",
"brushline",
"pie",
"needle",
"trendscatter",
"spaceplan"
],
"type": "string",
"description": "Chart type used to draw this tile; the saved chart keeps its own type."
},
"stack": {
"enum": [
"none",
"stacked",
"percent"
],
"type": "string",
"description": "none draws series side by side, stacked stacks values, percent stacks them as shares of 100%."
},
"title": {
"type": "string",
"maxLength": 120,
"minLength": 1,
"description": "Title shown on this tile only."
},
"top_n": {
"type": "integer",
"maximum": 500,
"minimum": 1,
"description": "Bar, column, donut and pie tiles: draw the N largest categories and add the rest up into one \"Other\" drawn last; measures that cannot be added up, such as averages, get no Other. The table and CSV keep every row."
},
"subtitle": {
"type": "string",
"maxLength": 200,
"description": "Subtitle shown on this tile only."
},
"normalize": {
"enum": [
"share_of_total"
],
"type": "string",
"description": "share_of_total shows each value as a share of the total."
}
},
"description": "edit_tile: how this dashboard's tile shows the chart (type, sort, stack, share of total, top categories, tile title, subtitle). Send only the fields the user asked to change. The chart itself is unchanged.",
"additionalProperties": false
},
"width": {
"anyOf": [
{
"type": "integer",
"maximum": 6,
"minimum": 1
},
{
"type": "string",
"const": "full_page"
}
],
"description": "For resize_chart: columns of the 6-column page (charts 2 to 6, key numbers 1 to 6; a key number in the top row takes one or two places of an even row of up to four), or \"full_page\" for a chart edge to edge. Height follows the layout."
},
"version": {
"type": "integer",
"minimum": 1,
"description": "Dashboard version number to restore, from the version returned by earlier edits."
},
"chart_id": {
"type": "string",
"format": "uuid",
"description": "Chart the operation targets, from the tiles in an earlier result or get_chart_definition. add_chart accepts only charts you created."
},
"position": {
"type": "integer",
"minimum": 0,
"description": "0-based tile order, 0 = top. A value past the end places the tile last."
},
"view_unset": {
"type": "array",
"items": {
"enum": [
"subtitle",
"sort",
"stack",
"normalize",
"top_n"
],
"type": "string"
},
"maxItems": 5,
"description": "edit_tile: only tile display settings the user asked to remove (subtitle, sort, stack, normalize or top_n); they are removed from the tile, not restored to the chart's own. Never as filler; reset_tile restores the chart's own display."
},
"description": {
"type": "string",
"maxLength": 500,
"description": "Empty string clears it."
},
"presentation": {
"enum": [
"chart",
"table"
],
"type": "string",
"description": "edit_tile: show the chart or its data table without changing the underlying chart type."
}
},
"additionalProperties": false
},
"maxItems": 20,
"minItems": 1,
"description": "Edits to apply together in order. undo and restore_version go alone in their own call."
},
"dashboard_id": {
"type": "string",
"format": "uuid",
"description": "Dashboard to edit, from list_dashboards or create_dashboard."
},
"change_summary": {
"type": "string",
"maxLength": 160,
"description": "Short summary saved with the new version, e.g. \"Removed churn, pipeline first\"."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Update dashboard",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description94/100
Draft a new item formula field, or a change to an existing one, and check it against every record on the object. Workspace admins only. Returns whether the draft is ready plus the formula, result type, record counts, example values, admin-only inputs and similar existing fields, or why it is invalid or needs clarification. 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 object the field lives on, e.g. contacts or deals, from list_object_types.
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 computed field to change, from get_object_schema; empty string to draft 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
Record on the object to preview, from search_objects; 0 for none.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 item formula field, or a change to an existing one, and check it against every record on the object. Workspace admins only. Returns whether the draft is ready plus the formula, result type, record counts, example values, admin-only inputs and similar existing fields, or why it is invalid or needs clarification. 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 object the field lives on, e.g. contacts or deals, from list_object_types."
},
"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 computed field to change, from get_object_schema; empty string to draft a new field."
},
"previewRecordId": {
"type": "integer",
"minimum": 0,
"description": "Record on the object to preview, from search_objects; 0 for none."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key 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,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Save a new item formula field from a ready draft, adding it to the object. Workspace admins only. Values are calculated for every record in the background. Returns the field ID and name, expression, result type, visibility, whether calculation was queued, the record count and a settings link.
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
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
objectSlug
Slug of the object the field lives on, e.g. contacts or deals, from list_object_types.
Clear enough to supply this argument.
displayName
Display name of the new field, copied from the draft result.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
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
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key 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.
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 item formula field from a ready draft, adding it to the object. Workspace admins only. Values are calculated for every record in the background. Returns the field ID and name, expression, result type, visibility, whether calculation was queued, the record count and a settings link.\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 object the field lives on, e.g. contacts or deals, from list_object_types."
},
"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": "Display name of the new field, copied from the draft result."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key 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,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Save changes to an existing item formula field from a ready draft. Workspace admins only. Values recalculate for every record in the background. Returns the field ID and name, expression, result type, visibility, whether recalculation was queued, the record count and a settings link.
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.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
objectSlug
Slug of the object the field lives on, e.g. contacts or deals, from list_object_types.
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 display or field name of the computed field, from get_object_schema, exactly as sent with the draft.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key 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.
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 item formula field from a ready draft. Workspace admins only. Values recalculate for every record in the background. Returns the field ID and name, expression, result type, visibility, whether recalculation was queued, the record count and a settings link.\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 object the field lives on, e.g. contacts or deals, from list_object_types."
},
"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 display or field name of the computed field, from get_object_schema, exactly as sent with the draft."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key 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,
"idempotentHint": false,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Delete an item formula field and its stored values from an object and every view. Workspace admins only. Returns the deleted field's ID and name and a settings link.
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.
objectSlug
Slug of the object the field lives on, e.g. contacts or deals, from list_object_types.
Clear enough to supply this argument.
fieldName
Display or field name of the computed field to delete, from get_object_schema.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 an item formula field and its stored values from an object and every view. Workspace admins only. Returns the deleted field's ID and name and a settings link.\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": "Display or field name of the computed field to delete, from get_object_schema."
},
"objectSlug": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Slug of the object the field lives on, e.g. contacts or deals, from list_object_types."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Delete computed field",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Make a field on an item object Visible, Hidden or Admin Only. Workspace admins only. Relationship, Name, Created At and Updated At fields cannot be made Hidden or Admin Only, and built-in fields can be changed only on Contacts and Companies. Making a field Admin Only also makes computed fields that use it Admin Only. Returns the previous and new visibility and the computed fields 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.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
objectSlug
Slug of the object the field lives on, e.g. contacts or deals, from list_object_types.
Clear enough to supply this argument.
fieldName
Display or field name of the field, from get_object_schema.
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
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 on an item object Visible, Hidden or Admin Only. Workspace admins only. Relationship, Name, Created At and Updated At fields cannot be made Hidden or Admin Only, and built-in fields can be changed only on Contacts and Companies. Making a field Admin Only also makes computed fields that use it Admin Only. Returns the previous and new visibility and the computed fields 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": [
"objectSlug",
"fieldName",
"visibility",
"_item_request_id"
],
"properties": {
"fieldName": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Display or field name of the field, from get_object_schema."
},
"objectSlug": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Slug of the object the field lives on, e.g. contacts or deals, from list_object_types."
},
"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": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Set field visibility",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Read the progress of an import job in this item workspace, by the job ID of an import started in the item app (no MCP tool starts or lists imports). Returns the phase (preparing, enriching, reconciling, applying, enriching companies, completed, completed with attention or failed), progress within the phase, record counts (created, updated, invalid, skipped, consolidated, conflicts, failed and enrichment failures) and the ID of the list holding imported records.
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.
jobId
Import job ID. Imports are started and tracked in the item app, which is where the ID comes from; no MCP tool starts or lists import jobs.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_import_status",
"title": "Get import status",
"description": "Read the progress of an import job in this item workspace, by the job ID of an import started in the item app (no MCP tool starts or lists imports). Returns the phase (preparing, enriching, reconciling, applying, enriching companies, completed, completed with attention or failed), progress within the phase, record counts (created, updated, invalid, skipped, consolidated, conflicts, failed and enrichment failures) and the ID of the list holding imported records.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"jobId"
],
"properties": {
"jobId": {
"type": "string",
"maxLength": 120,
"minLength": 1,
"description": "Import job ID. Imports are started and tracked in the item app, which is where the ID comes from; no MCP tool starts or lists import jobs."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Get import status",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description90/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.
Inputs99/100
Input documentation gives an agent enough context to populate the arguments.
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 position to start from, taken from next_offset of the previous call. Omit to start at the beginning.
Clear enough to supply this argument.
limit
Maximum characters to return in this call. Omit to read as much as one call allows; next_offset is set when the file continues past what was returned.
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 characters to return in this call. Omit to read as much as one call allows; next_offset is set when the file continues past what was returned."
},
"offset": {
"type": "integer",
"default": 0,
"minimum": 0,
"description": "Character position to start from, taken from next_offset of the previous call. Omit to start at the beginning."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Read workspace file",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Set or clear the description of a static item list. The name, members, object type and sharing are unchanged. Returns the list's id, name, description, public flag and object_type_id.
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.
listId
ID of the list to update, from list_lists, sent as a string.
Clear enough to supply this argument.
description
New description, or null to clear it.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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. Returns the list's id, name, description, public flag and object_type_id.\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": "ID of the list to update, from list_lists, sent as a string."
},
"description": {
"anyOf": [
{
"type": "string",
"maxLength": 2000
},
{
"type": "null"
}
],
"description": "New description, or null to clear it."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Update list description",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/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. Returns affectedCount (records newly added) and requestedCount.
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.
listId
ID of the list, from list_lists, sent as a string.
Clear enough to supply this argument.
object
Object type slug of the list (objectType from list_lists); the call fails if it does not match the list.
Clear enough to supply this argument.
objectIds
IDs of the records to add, from search_objects or get_list, sent as strings. Duplicate IDs are ignored.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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. Returns affectedCount (records newly added) and requestedCount.\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": "ID of the list, from list_lists, sent as a string."
},
"object": {
"type": "string",
"minLength": 1,
"description": "Object type slug of the list (objectType from list_lists); the call fails if it does not match the list."
},
"objectIds": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[1-9][0-9]*$"
},
"maxItems": 1000,
"minItems": 1,
"description": "IDs of the records to add, from search_objects or get_list, sent as strings. Duplicate IDs are ignored."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Add list members",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/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; records not on the list are skipped. Returns affectedCount (memberships removed) and requestedCount.
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.
listId
ID of the list, from list_lists, sent as a string.
Clear enough to supply this argument.
object
Object type slug of the list (objectType from list_lists); the call fails if it does not match the list.
Clear enough to supply this argument.
objectIds
IDs of the records to remove, from get_list, sent as strings. Duplicate IDs are ignored.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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; records not on the list are skipped. Returns affectedCount (memberships removed) and requestedCount.\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": "ID of the list, from list_lists, sent as a string."
},
"object": {
"type": "string",
"minLength": 1,
"description": "Object type slug of the list (objectType from list_lists); the call fails if it does not match the list."
},
"objectIds": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[1-9][0-9]*$"
},
"maxItems": 1000,
"minItems": 1,
"description": "IDs of the records to remove, from get_list, sent as strings. Duplicate IDs are ignored."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Remove list members",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Permanently delete a static item list definition, its memberships and its membership change history. The member records are not deleted. Requires confirmed: true, sent only after the user explicitly confirms the deletion. Returns listId, deleted: true and memberRecordsDeleted: false.
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.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
listId
ID of the list to delete, from list_lists, sent as a string.
Clear enough to supply this argument.
confirmed
Explicit confirmation; set true only after the user confirms deleting this list.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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, its memberships and its membership change history. The member records are not deleted. Requires confirmed: true, sent only after the user explicitly confirms the deletion. Returns listId, deleted: true and memberRecordsDeleted: false.\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": "ID of the list to delete, from list_lists, sent as a string."
},
"confirmed": {
"type": "boolean",
"const": true,
"description": "Explicit confirmation; set true only after the user confirms deleting this list."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Delete list",
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description76/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 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,
"idempotentHint": true,
"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.
Inputs99/100
Input documentation gives an agent enough context to populate the arguments.
meeting_recording_id
Meeting recording ID from search_meeting_recordings, or from recording.recordings[].meeting_recording_id (or recording.meeting_recording_id) in a get_calendar_event result. Not the calendar event ID.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
},
"meeting_recording_id": {
"type": "integer",
"description": "Meeting recording ID from search_meeting_recordings, or from recording.recordings[].meeting_recording_id (or recording.meeting_recording_id) in a get_calendar_event result. Not the calendar event ID.",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
},
"annotations": {
"title": "Export meeting transcript",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description100/100
Fetch up to 1,000 customers from the connected Stripe account matching the filters and save them as new TSV files in your item MCP workspace. Returns the file paths, row count, has_more, truncated and next_starting_after for continuing the export; existing files are not changed, and each call writes new files. If Stripe errors mid-export, the partial rows are saved and the error is reported.
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.
email
Exact customer email address to match; omit to export all customers.
Clear enough to supply this argument.
created_gte
Unix timestamp in seconds; only customers created at or after this time are exported.
Clear enough to supply this argument.
created_lte
Unix timestamp in seconds; only customers created at or before this time are exported.
Clear enough to supply this argument.
starting_after
Customer ID (cus_…) to start after; pass next_starting_after from a previous export or list page to continue. Omit to start from the newest customer.
Clear enough to supply this argument.
max_records
Upper bound on customers to collect; fetched 100 per Stripe page, and fewer may be saved if Stripe ends the list first.
Clear enough to supply this argument.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 customers from the connected Stripe account matching the filters and save them as new TSV files in your item MCP workspace. Returns the file paths, row count, has_more, truncated and next_starting_after for continuing the export; existing files are not changed, and each call writes new files. If Stripe errors mid-export, the partial rows are saved and the error is reported.\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": "Exact customer email address to match; omit to export all customers."
},
"created_gte": {
"type": "number",
"description": "Unix timestamp in seconds; only customers created at or after this time are exported."
},
"created_lte": {
"type": "number",
"description": "Unix timestamp in seconds; only customers created at or before this time are exported."
},
"max_records": {
"type": "number",
"default": 500,
"maximum": 1000,
"minimum": 1,
"description": "Upper bound on customers to collect; fetched 100 per Stripe page, and fewer may be saved if Stripe ends the list first."
},
"starting_after": {
"type": "string",
"description": "Customer ID (cus_…) to start after; pass next_starting_after from a previous export or list page to continue. Omit to start from the newest customer."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Export Stripe customers",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description99/100
Fetch up to 1,000 subscriptions from the connected Stripe account matching the filters and save them as new TSV files in your item MCP workspace. Returns the file paths, row count, has_more, truncated and next_starting_after for continuing the export; existing files are not changed, and each call writes new files. If Stripe errors mid-export, the partial rows are saved and the error is reported.
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
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
customer
Stripe customer ID (cus_…), from stripe_list_customers; omit to export subscriptions for all customers.
Clear enough to supply this argument.
status
Only export subscriptions with this status; all includes canceled ones. If omitted, Stripe returns all non-canceled subscriptions.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
created_gte
Unix timestamp in seconds; only subscriptions created at or after this time are exported.
Clear enough to supply this argument.
created_lte
Unix timestamp in seconds; only subscriptions created at or before this time are exported.
Clear enough to supply this argument.
starting_after
Subscription ID (sub_…) to start after; pass next_starting_after from a previous export or list page to continue. Omit to start from the newest subscription.
Clear enough to supply this argument.
max_records
Upper bound on subscriptions to collect; fetched 100 per Stripe page, and fewer may be saved if Stripe ends the list first.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
_item_request_id
Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected.
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 subscriptions from the connected Stripe account matching the filters and save them as new TSV files in your item MCP workspace. Returns the file paths, row count, has_more, truncated and next_starting_after for continuing the export; existing files are not changed, and each call writes new files. If Stripe errors mid-export, the partial rows are saved and the error is reported.\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",
"description": "Only export subscriptions with this status; all includes canceled ones. If omitted, Stripe returns all non-canceled subscriptions."
},
"customer": {
"type": "string",
"description": "Stripe customer ID (cus_…), from stripe_list_customers; omit to export subscriptions for all customers."
},
"created_gte": {
"type": "number",
"description": "Unix timestamp in seconds; only subscriptions created at or after this time are exported."
},
"created_lte": {
"type": "number",
"description": "Unix timestamp in seconds; only subscriptions created at or before this time are exported."
},
"max_records": {
"type": "number",
"default": 500,
"maximum": 1000,
"minimum": 1,
"description": "Upper bound on subscriptions to collect; fetched 100 per Stripe page, and fewer may be saved if Stripe ends the list first."
},
"starting_after": {
"type": "string",
"description": "Subscription ID (sub_…) to start after; pass next_starting_after from a previous export or list page to continue. Omit to start from the newest subscription."
},
"_item_request_id": {
"type": "string",
"format": "uuid",
"description": "Idempotency key for this call: a UUID you generate for the action and resend unchanged if you retry, so the retry returns the original result instead of repeating the action. Reusing a key with different arguments is rejected."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Export Stripe subscriptions",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/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 with descriptions. A topic returns one page of markdown (up to 20,000 characters) with total_characters and next_offset for the next page; nothing is changed.
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.
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: The short SOP for Skill instructions: Goal, Steps, Rules, and Hand-off, plus where writing, approval, and facts belong. The trigger already shows when the Skill runs.
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. Omit to start at the beginning; ignored when no topic is given.
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 with descriptions. A topic returns one page of markdown (up to 20,000 characters) with total_characters and next_offset for the next page; 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: The short SOP for Skill instructions: Goal, Steps, Rules, and Hand-off, plus where writing, approval, and facts belong. The trigger already shows when the Skill runs.\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. Omit to start at the beginning; ignored when no topic is given."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Get Item guide",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Ask the item assistant a natural-language question in read-only mode and get its written answer. Suited to analysis, multi-step reasoning and synthesis across object types, emails, meetings and recordings, timelines, connected tools and large numbers of CRM records; structured tools suit simple lookups and explicit item changes. Returns thread_id, answer and title. Pass the latest thread_id to continue the same conversation; omit it to start a new 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
The question or request in natural language, with any context needed; earlier turns are available only when thread_id is passed.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
thread_id
thread_id from the most recent ask_item_assistant response, to continue that conversation with its history. Omit to start a new thread. Only your own threads can be continued.
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 and get its written answer. Suited to analysis, multi-step reasoning and synthesis across object types, emails, meetings and recordings, timelines, connected tools and large numbers of CRM records; structured tools suit simple lookups and explicit item changes. Returns thread_id, answer and title. Pass the latest thread_id to continue the same conversation; omit it to start a new thread.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"message"
],
"properties": {
"message": {
"type": "string",
"minLength": 1,
"description": "The question or request in natural language, with any context needed; earlier turns are available only when thread_id is passed."
},
"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": "thread_id from the most recent ask_item_assistant response, to continue that conversation with its history. Omit to start a new thread. Only your own threads can be continued."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Ask Item assistant",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description96/100
Run a saved view you own or that is shared with the team, applying its filters, first sort and columns, and return one page of matching records. Returns view_id, object_slug, view_name, view_icon, view_type, data, total (all matching rows), returned and offset. Pages hold up to 200 rows.
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.
view_id
Saved view UUID, from list_views (view_id) or inspect_view saved_views. The virtual All view is not supported.
Clear enough to supply this argument.
limit
Rows to return; default 50, values above 200 are capped at 200.
Clear enough to supply this argument.
offset
Matching rows to skip; add returned to offset to fetch the next page while it is below total. Default 0.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "execute_view",
"title": "Run saved view",
"description": "Run a saved view you own or that is shared with the team, applying its filters, first sort and columns, and return one page of matching records. Returns view_id, object_slug, view_name, view_icon, view_type, data, total (all matching rows), returned and offset. Pages hold up to 200 rows.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"view_id"
],
"properties": {
"limit": {
"type": "number",
"description": "Rows to return; default 50, values above 200 are capped at 200."
},
"offset": {
"type": "number",
"description": "Matching rows to skip; add returned to offset to fetch the next page while it is below total. Default 0."
},
"view_id": {
"type": "string",
"description": "Saved view UUID, from list_views (view_id) or inspect_view saved_views. The virtual All view is not supported."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Run saved view",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Find item CRM records by keyword, by text in one field, or through a relationship field on a parent record. Returns results grouped as people, companies and custom_objects, with total, returned, isComplete and nextOffset. Keyword search covers contacts, companies and custom objects unless object_slug narrows it; field search needs object_slug and field_name; traversal needs parent_object_slug, parent_object_id and relationship_field_name together. Listing a whole object type ("*" or no query) works only when 20 or fewer records match; larger sets return an error with the count. Results over 20 rows are saved as a TSV file in your MCP workspace and returned in sandbox_files.
The description explains the capability, when to use it, and what to expect.
Inputs97/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
query
Keyword or name to match. "*" or omitting it means no keyword: in a relationship traversal it returns all linked records; with only object_slug it lists that type but errors when more than 20 records match.
Clear enough to supply this argument.
object_slug
Object type slug from list_object_types. Narrows keyword search to that type and is required for field_name; ignored in relationship traversal, where the linked type comes from the relationship field.
Clear enough to supply this argument.
field_name
field_name from get_object_schema to match query against (case-insensitive contains). Used only together with object_slug.
Clear enough to supply this argument.
parent_object_slug
Object type slug of the parent record whose relationship field is traversed. Set together with parent_object_id and relationship_field_name.
Clear enough to supply this argument.
parent_object_id
Integer ID of the parent record, from search_objects or get_object results.
Clear enough to supply this argument.
relationship_field_name
field_name of a relationship field on the parent's object type (from get_object_schema for parent_object_slug), not on the linked type. Returns the records it links to; query filters them by name.
Clear enough to supply this argument.
limit
Maximum records per object type; default 10. More than 20 rows are saved to a workspace TSV file readable with read_workspace_file.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
offset
Records to skip; use nextOffset from the previous response. Keyword searches report isComplete true without a full total, so paging them is approximate.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "search_objects",
"title": "Search CRM objects",
"description": "Find item CRM records by keyword, by text in one field, or through a relationship field on a parent record. Returns results grouped as people, companies and custom_objects, with total, returned, isComplete and nextOffset. Keyword search covers contacts, companies and custom objects unless object_slug narrows it; field search needs object_slug and field_name; traversal needs parent_object_slug, parent_object_id and relationship_field_name together. Listing a whole object type (\"*\" or no query) works only when 20 or fewer records match; larger sets return an error with the count. Results over 20 rows are saved as a TSV file in your MCP workspace and returned in sandbox_files.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Maximum records per object type; default 10. More than 20 rows are saved to a workspace TSV file readable with read_workspace_file."
},
"query": {
"type": "string",
"description": "Keyword or name to match. \"*\" or omitting it means no keyword: in a relationship traversal it returns all linked records; with only object_slug it lists that type but errors when more than 20 records match."
},
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Records to skip; use nextOffset from the previous response. Keyword searches report isComplete true without a full total, so paging them is approximate."
},
"field_name": {
"type": "string",
"description": "field_name from get_object_schema to match query against (case-insensitive contains). Used only together with object_slug."
},
"object_slug": {
"type": "string",
"description": "Object type slug from list_object_types. Narrows keyword search to that type and is required for field_name; ignored in relationship traversal, where the linked type comes from the relationship field."
},
"parent_object_id": {
"type": "number",
"description": "Integer ID of the parent record, from search_objects or get_object results."
},
"parent_object_slug": {
"type": "string",
"description": "Object type slug of the parent record whose relationship field is traversed. Set together with parent_object_id and relationship_field_name."
},
"relationship_field_name": {
"type": "string",
"description": "field_name of a relationship field on the parent's object type (from get_object_schema for parent_object_slug), not on the linked type. Returns the records it links to; query filters them by name."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Search CRM objects",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": false,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description98/100
Fetch one item CRM record by object_slug and object_id. Returns results (an array holding the record, empty when it is not found or deleted), total, returned and related_objects (linked record IDs and names per relationship field). It can also include system_fields: readable metadata such as last email, last/next meeting and last phone call for contacts and companies, plus activity metrics and stage timing. Value-only questions can be answered from it; it holds timestamps, counts and labels, not message or meeting content.
The description explains the capability, when to use it, and what to expect.
Inputs98/100
Input documentation gives an agent enough context to populate the arguments.
object_slug
Object type slug from list_object_types, such as contacts, companies or deals.
Clear enough to supply this argument.
object_id
Record ID: the id field from search_objects, get_list or execute_view results.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_object",
"title": "Get CRM object",
"description": "Fetch one item CRM record by object_slug and object_id. Returns results (an array holding the record, empty when it is not found or deleted), total, returned and related_objects (linked record IDs and names per relationship field). It can also include system_fields: readable metadata such as last email, last/next meeting and last phone call for contacts and companies, plus activity metrics and stage timing. Value-only questions can be answered from it; it holds timestamps, counts and labels, not message or meeting content.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"object_slug",
"object_id"
],
"properties": {
"object_id": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Record ID: the id field from search_objects, get_list or execute_view results."
},
"object_slug": {
"type": "string",
"description": "Object type slug from list_object_types, such as contacts, companies or deals."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Get CRM object",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description93/100
List the active system and custom object types available to this item organization, sorted by display name. Returns object_types with id, slug, display_name, plural_display_name, description, system_object_type and is_system. The slugs identify object types when searching, reading schemas and writing records.
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.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description93/100
Get the field definitions for one item object type by slug. Returns object_type and fields with field_name, display_name, field_type, select_options, is_required, allow_multiple, number limits and relationship details (related_object_slug). Restricted and unavailable fields are listed with only their name, required flag and reason. The field_name and option values are the ones used when filtering or writing records.
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.
object_slug
Object type slug from list_object_types, such as contacts, companies or deals.
No output schema is declared. Add one for structured results so clients can interpret returned fields.
Not declared
Original tool metadata
{
"name": "get_object_schema",
"title": "Get object schema",
"description": "Get the field definitions for one item object type by slug. Returns object_type and fields with field_name, display_name, field_type, select_options, is_required, allow_multiple, number limits and relationship details (related_object_slug). Restricted and unavailable fields are listed with only their name, required flag and reason. The field_name and option values are the ones used when filtering or writing records.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"object_slug"
],
"properties": {
"object_slug": {
"type": "string",
"description": "Object type slug from list_object_types, such as contacts, companies or deals."
}
},
"additionalProperties": false
},
"annotations": {
"title": "Get object schema",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}
}
Loading score analytics…
Put your MCP to the test
A few tasks worth trying with this server, chosen from its reviewed tools. These have not been run.
01Search the webSearch the public web (via Exa) for a topic or question and return up to 5 results as Markdown, each with title, URL, published date and up to 3,000 characte…
02Search formsFind forms in this workspace whose title contains the query (case-insensitive); without a query, list all forms.
03Fetch web pageFetch a public web page by URL (via Exa, live-crawled when possible) and return its title, URL and up to 10,000 characters of extracted text as Markdown.
04Search Linear projectsSearch Linear projects by name (case-insensitive partial match) and filter by project state.
05List Stripe productsList products in the connected Stripe account, optionally only active or inactive ones.
Want to run these tasks against your MCP server with us?
Browse, summarize, update, and analyze customer data directly from Claude. Connect live context from contacts, companies, deals, lists, saved views, notes, and relationship history so your assistant can answer account questions, find the right records, and help move work forward without jumping between tabs. Turn scattered CRM data into usable context for research, planning, follow-ups, and customer-facing work.
ask_item_assistantsearch_objectsget_objectlist_object_typesget_object_schemacreate_objectupdate_objectdelete_objectlist_viewsexecute_viewlist_listsget_list+10 more
item setup, tools, quality score, publishing readiness, and alternatives.
How do I add item to Claude, ChatGPT, or Cursor?
Add item 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 MCP ready for ChatGPT and Claude?
As of November 10, 2026, item scores 100/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's MCP tool documentation?
As of November 10, 2026, item scores 88/100 in Manufact's review of tool titles, descriptions, input and output schemas, and behavior annotations. The review covers 217 of 217 discovered tools. The quality score measures documentation clarity; runtime behavior and marketplace readiness require separate checks.
What tools does the item MCP server provide?
item 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?
As of November 10, 2026, alternatives to item in sales-and-marketing on the Manufact MCP leaderboard include Flowsery Analytics, Revnu, Close, Clera, and PumpGTM.
Does item MCP require authentication?
item requires authentication. Connect it in Claude, ChatGPT, or Cursor and complete the OAuth login prompt.
Who develops item?
item 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.