Twenty MCP by usefulapi
by usefulapi.io · remote · no sign-in to list tools · v1.16.3 · published by io.usefulapi
Read people, companies, opportunities, notes and tasks; create and update records in Twenty CRM.
20 tools: 9 can delete or cancel things and 11 only read.
Scanned Oct 21, 2026
- Deletes or cancels9Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things0Claude Code: ask
- Only reads11Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http twenty https://twenty.usefulapi.io/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
20 tools
Deletes or cancels 9Claude Code: deny
twenty_create_companyCreate a new company.No findings
Why it is in this group
- The name "twenty_create_company" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Create a new company. `name` is required. Twenty REST: POST /rest/companies.
Annotations the server declares
- title: Create company
- destructiveHint: true
twenty_create_noteCreate a note.No findings
Why it is in this group
- The name "twenty_create_note" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Create a note. `title` is required; `body` holds the note content. (Attaching to records via noteTargets is out of scope.) Twenty REST: POST /rest/notes.
Annotations the server declares
- title: Create note
- destructiveHint: true
twenty_create_opportunityCreate a new opportunity (deal).No findings
Why it is in this group
- The name "twenty_create_opportunity" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Create a new opportunity (deal). `name` is required; amountMicros combines with currencyCode into amount:{amountMicros,currencyCode}. Twenty REST: POST /rest/opportunities.
Annotations the server declares
- title: Create opportunity
- destructiveHint: true
twenty_create_personCreate a new person (contact).No findings
Why it is in this group
- The name "twenty_create_person" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Create a new person (contact). All fields optional; firstName/lastName combine into name:{firstName,lastName}. Twenty REST: POST /rest/people.
Annotations the server declares
- title: Create person
- destructiveHint: true
twenty_create_taskCreate a task.No findings
Why it is in this group
- The name "twenty_create_task" says "create": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Create a task. `title` is required. Twenty REST: POST /rest/tasks.
Annotations the server declares
- title: Create task
- destructiveHint: true
twenty_update_companyUpdate fields on an existing company.No findings
Why it is in this group
- The name "twenty_update_company" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Update fields on an existing company. Only provided fields change. Twenty REST: PATCH /rest/companies/{id}.
Annotations the server declares
- title: Update company
- destructiveHint: true
twenty_update_opportunityUpdate fields on an existing opportunity.No findings
Why it is in this group
- The name "twenty_update_opportunity" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Update fields on an existing opportunity. Only provided fields change. Twenty REST: PATCH /rest/opportunities/{id}.
Annotations the server declares
- title: Update opportunity
- destructiveHint: true
twenty_update_personUpdate fields on an existing person.No findings
Why it is in this group
- The name "twenty_update_person" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Update fields on an existing person. Only provided fields change. Twenty REST: PATCH /rest/people/{id}.
Annotations the server declares
- title: Update person
- destructiveHint: true
twenty_update_taskUpdate fields on an existing task.No findings
Why it is in this group
- The name "twenty_update_task" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Update fields on an existing task. Only provided fields change. Twenty REST: PATCH /rest/tasks/{id}.
Annotations the server declares
- title: Update task
- destructiveHint: true
Only reads 11Claude Code: allow
twenty_get_companyGet a single company by id.No findings
Why it is in this group
- The name "twenty_get_company" says "get": a word for reading.
Description, as the server wrote it Get a single company by id. Twenty REST: GET /rest/companies/{id}.
Annotations the server declares
- title: Get company
- readOnlyHint: true
twenty_get_noteGet a single note by id.No findings
Why it is in this group
- The name "twenty_get_note" says "get": a word for reading.
Description, as the server wrote it Get a single note by id. Twenty REST: GET /rest/notes/{id}.
Annotations the server declares
- title: Get note
- readOnlyHint: true
twenty_get_opportunityGet a single opportunity by id.No findings
Why it is in this group
- The name "twenty_get_opportunity" says "get": a word for reading.
Description, as the server wrote it Get a single opportunity by id. Twenty REST: GET /rest/opportunities/{id}.
Annotations the server declares
- title: Get opportunity
- readOnlyHint: true
twenty_get_personGet a single person (contact) by id.No findings
Why it is in this group
- The name "twenty_get_person" says "get": a word for reading.
Description, as the server wrote it Get a single person (contact) by id. Twenty REST: GET /rest/people/{id}.
Annotations the server declares
- title: Get person
- readOnlyHint: true
twenty_get_taskGet a single task by id.No findings
Why it is in this group
- The name "twenty_get_task" says "get": a word for reading.
Description, as the server wrote it Get a single task by id. Twenty REST: GET /rest/tasks/{id}.
Annotations the server declares
- title: Get task
- readOnlyHint: true
twenty_list_companiesList/filter companies.No findings
Why it is in this group
- The name "twenty_list_companies" says "list": a word for reading.
Description, as the server wrote it List/filter companies. Supports cursor pagination, raw filter/order_by, and relation depth. Twenty REST: GET /rest/companies.
Annotations the server declares
- title: List companies
- readOnlyHint: true
twenty_list_metadata_objectsList all objects (standard + custom) and their fields from the Twenty schema — use this to discover custom objects/fields and valid field names.No findings
Why it is in this group
- The name "twenty_list_metadata_objects" says "list": a word for reading.
Description, as the server wrote it List all objects (standard + custom) and their fields from the Twenty schema — use this to discover custom objects/fields and valid field names. Twenty REST: GET /rest/metadata/objects.
Annotations the server declares
- title: List metadata objects
- readOnlyHint: true
twenty_list_notesList/filter notes.No findings
Why it is in this group
- The name "twenty_list_notes" says "list": a word for reading.
Description, as the server wrote it List/filter notes. Supports cursor pagination, raw filter/order_by, and relation depth. Twenty REST: GET /rest/notes.
Annotations the server declares
- title: List notes
- readOnlyHint: true
twenty_list_opportunitiesList/filter opportunities (deals).No findings
Why it is in this group
- The name "twenty_list_opportunities" says "list": a word for reading.
Description, as the server wrote it List/filter opportunities (deals). Supports cursor pagination, raw filter/order_by, and relation depth. Twenty REST: GET /rest/opportunities.
Annotations the server declares
- title: List opportunities
- readOnlyHint: true
twenty_list_peopleList/filter people (contacts).No findings
Why it is in this group
- The name "twenty_list_people" says "list": a word for reading.
Description, as the server wrote it List/filter people (contacts). Supports cursor pagination, raw filter/order_by, and relation depth. Twenty REST: GET /rest/people.
Annotations the server declares
- title: List people
- readOnlyHint: true
twenty_list_tasksList/filter tasks.No findings
Why it is in this group
- The name "twenty_list_tasks" says "list": a word for reading.
Description, as the server wrote it List/filter tasks. Supports cursor pagination, raw filter/order_by, and relation depth. Twenty REST: GET /rest/tasks.
Annotations the server declares
- title: List tasks
- readOnlyHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.16.3. Values in angle brackets are yours to fill in.
claude mcp add --transport http twenty https://twenty.usefulapi.io/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__twenty__twenty_list_metadata_objects",
"mcp__twenty__twenty_list_people",
"mcp__twenty__twenty_get_person",
"mcp__twenty__twenty_list_companies",
"mcp__twenty__twenty_get_company",
"mcp__twenty__twenty_list_opportunities",
"mcp__twenty__twenty_get_opportunity",
"mcp__twenty__twenty_list_notes",
"mcp__twenty__twenty_get_note",
"mcp__twenty__twenty_list_tasks",
"mcp__twenty__twenty_get_task"
],
"ask": [],
"deny": [
"mcp__twenty__twenty_create_person",
"mcp__twenty__twenty_update_person",
"mcp__twenty__twenty_create_company",
"mcp__twenty__twenty_update_company",
"mcp__twenty__twenty_create_opportunity",
"mcp__twenty__twenty_update_opportunity",
"mcp__twenty__twenty_create_note",
"mcp__twenty__twenty_create_task",
"mcp__twenty__twenty_update_task"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as twenty. Review it before you use it.