Twenty MCP server. Read people, companies, opportunities, notes and tasks; create and update records in Twenty CRM.
Add to your MCP config, then reload & authorize:
{
"mcpServers": {
"twenty": {
"url": "https://twenty.usefulapi.io/mcp"
}
}
}| Tool | Type | What it does |
|---|---|---|
twenty_list_metadata_objects | read | List metadata objects 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. |
twenty_list_people | read | List people List/filter people (contacts). Supports cursor pagination, raw filter/order_by, and relation depth. Twenty REST: GET /rest/people. |
twenty_get_person | read | Get person Get a single person (contact) by id. Twenty REST: GET /rest/people/{id}. |
twenty_list_companies | read | List companies List/filter companies. Supports cursor pagination, raw filter/order_by, and relation depth. Twenty REST: GET /rest/companies. |
twenty_get_company | read | Get company Get a single company by id. Twenty REST: GET /rest/companies/{id}. |
twenty_list_opportunities | read | List opportunities List/filter opportunities (deals). Supports cursor pagination, raw filter/order_by, and relation depth. Twenty REST: GET /rest/opportunities. |
twenty_get_opportunity | read | Get opportunity Get a single opportunity by id. Twenty REST: GET /rest/opportunities/{id}. |
twenty_list_notes | read | List notes List/filter notes. Supports cursor pagination, raw filter/order_by, and relation depth. Twenty REST: GET /rest/notes. |
twenty_get_note | read | Get note Get a single note by id. Twenty REST: GET /rest/notes/{id}. |
twenty_list_tasks | read | List tasks List/filter tasks. Supports cursor pagination, raw filter/order_by, and relation depth. Twenty REST: GET /rest/tasks. |
twenty_get_task | read | Get task Get a single task by id. Twenty REST: GET /rest/tasks/{id}. |
twenty_create_person | write | Create person Create a new person (contact). All fields optional; firstName/lastName combine into name:{firstName,lastName}. Twenty REST: POST /rest/people. |
twenty_update_person | write | Update person Update fields on an existing person. Only provided fields change. Twenty REST: PATCH /rest/people/{id}. |
twenty_create_company | write | Create company Create a new company. `name` is required. Twenty REST: POST /rest/companies. |
twenty_update_company | write | Update company Update fields on an existing company. Only provided fields change. Twenty REST: PATCH /rest/companies/{id}. |
twenty_create_opportunity | write | Create opportunity Create a new opportunity (deal). `name` is required; amountMicros combines with currencyCode into amount:{amountMicros,currencyCode}. Twenty REST: POST /rest/opportunities. |
twenty_update_opportunity | write | Update opportunity Update fields on an existing opportunity. Only provided fields change. Twenty REST: PATCH /rest/opportunities/{id}. |
twenty_create_note | write | Create note 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. |
twenty_create_task | write | Create task Create a task. `title` is required. Twenty REST: POST /rest/tasks. |
twenty_update_task | write | Update task Update fields on an existing task. Only provided fields change. Twenty REST: PATCH /rest/tasks/{id}. |
twenty_usage_status | Usage status (free-tier meter) Report the caller's current free-tier usage this month: calls used, monthly limit, remaining, and whether the cap is reached. | |
twenty_upgrade | Upgrade to Pro (unlimited) Subscribe to Pro for unlimited tool calls, monthly ($9) or yearly ($90). Returns a Stripe Checkout link. |
| Plan | Price | Limit |
|---|---|---|
| Free | $0 | 100 tool calls / month |
| Pro | $9/mo · $90/yr | Unlimited |
This is a Model Context Protocol endpoint — meant to be connected from an AI client, not opened in a browser. An invalid_token response at the URL is the auth gate working as designed; clients authenticate automatically.