Read people, companies, opportunities, notes and tasks; create and update records in Twenty CRM.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Create a new company. `name` is required. Twenty REST: POST /rest/companies.
The company name (required).
X/Twitter URL (sent as xLink:{primaryLinkUrl}).
Passthrough object of additional/custom fields merged into the request body verbatim.
Employee count.
Primary domain / website URL (sent as domainName:{primaryLinkUrl}).
City (sent as address:{addressCity}).
LinkedIn URL (sent as linkedinLink:{primaryLinkUrl}).
Whether this company matches the ideal customer profile.
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
Create a new company. `name` is required. Twenty REST: POST /rest/companies.
| Argument | Type | Description |
|---|---|---|
| name* | string | The company name (required). |
| xUrl | string | X/Twitter URL (sent as xLink:{primaryLinkUrl}). |
| extra | object | Passthrough object of additional/custom fields merged into the request body verbatim. |
| employees | number | Employee count. |
| domainName | string | Primary domain / website URL (sent as domainName:{primaryLinkUrl}). |
| addressCity | string | City (sent as address:{addressCity}). |
| linkedinUrl | string | LinkedIn URL (sent as linkedinLink:{primaryLinkUrl}). |
| idealCustomerProfile | boolean | Whether this company matches the ideal customer profile. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "The company name (required)."
},
"xUrl": {
"type": "string",
"description": "X/Twitter URL (sent as xLink:{primaryLinkUrl})."
},
"extra": {
"type": "object",
"description": "Passthrough object of additional/custom fields merged into the request body verbatim.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"employees": {
"type": "number",
"description": "Employee count."
},
"domainName": {
"type": "string",
"description": "Primary domain / website URL (sent as domainName:{primaryLinkUrl})."
},
"addressCity": {
"type": "string",
"description": "City (sent as address:{addressCity})."
},
"linkedinUrl": {
"type": "string",
"description": "LinkedIn URL (sent as linkedinLink:{primaryLinkUrl})."
},
"idealCustomerProfile": {
"type": "boolean",
"description": "Whether this company matches the ideal customer profile."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| body | string | The note content/body. |
| extra | object | Passthrough object of additional/custom fields merged into the request body verbatim. |
| title* | string | The note title (required). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"title"
],
"properties": {
"body": {
"type": "string",
"description": "The note content/body."
},
"extra": {
"type": "object",
"description": "Passthrough object of additional/custom fields merged into the request body verbatim.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"title": {
"type": "string",
"description": "The note title (required)."
}
}
}Create a new opportunity (deal). `name` is required; amountMicros combines with currencyCode into amount:{amountMicros,currencyCode}. Twenty REST: POST /rest/opportunities.
| Argument | Type | Description |
|---|---|---|
| name* | string | The opportunity name (required). |
| extra | object | Passthrough object of additional/custom fields merged into the request body verbatim. |
| stage | string | Pipeline stage — e.g. SCREENING, MEETING, PROPOSAL, NEGOTIATION, CUSTOMER (custom pipelines vary). |
| closeDate | string | Expected close date (ISO 8601). |
| companyId | string | Id of the associated company. |
| amountMicros | number | Opportunity amount in micros (× 1,000,000). Sent as amount:{amountMicros,currencyCode}. |
| currencyCode | string | Currency code for the amount (default USD; only sent when amountMicros is provided). |
| pointOfContactId | string | Id of the point-of-contact person. |
Create a new person (contact). All fields optional; firstName/lastName combine into name:{firstName,lastName}. Twenty REST: POST /rest/people.
| Argument | Type | Description |
|---|---|---|
| city | string | City. |
| xUrl | string | X/Twitter URL (sent as xLink:{primaryLinkUrl}). |
| extra | object | Passthrough object of additional/custom fields merged into the request body verbatim. |
| jobTitle | string | Job title. |
| lastName | string | Last name (combined into name:{firstName,lastName}). |
| companyId | string | Id of the company to link this person to. |
| firstName | string | First name (combined into name:{firstName,lastName}). |
| linkedinUrl | string | LinkedIn URL (sent as linkedinLink:{primaryLinkUrl}). |
| primaryEmail | string | Primary email address (sent as emails:{primaryEmail}). |
Create a task. `title` is required. Twenty REST: POST /rest/tasks.
| Argument | Type | Description |
|---|---|---|
| body | string | Task body / description. |
| dueAt | string | Due date/time (ISO 8601). |
| extra | object | Passthrough object of additional/custom fields merged into the request body verbatim. |
| title* | string | The task title (required). |
| status | string | Task status — e.g. TODO, IN_PROGRESS, DONE. |
| assigneeId | string | Id of the workspace member assigned to the task. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"title"
],
"properties": {
"body": {
"type": "string",
"description": "Task body / description."
},
"dueAt": {
"type": "string",
"description": "Due date/time (ISO 8601)."
},
"extra": {
"type": "object",
"description": "Passthrough object of additional/custom fields merged into the request body verbatim.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"title": {
"type": "string",
"description": "The task title (required)."
},
"status": {
"type": "string",
"description": "Task status — e.g. TODO, IN_PROGRESS, DONE."
},
"assigneeId": {
"type": "string",
"description": "Id of the workspace member assigned to the task."
}
}
}Get a single company by id. Twenty REST: GET /rest/companies/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | string | The company id. |
| depth | integer | How deep to hydrate related records: 0, 1, or 2. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The company id."
},
"depth": {
"type": "integer",
"maximum": 2,
"minimum": 0,
"description": "How deep to hydrate related records: 0, 1, or 2."
}
}
}Get a single note by id. Twenty REST: GET /rest/notes/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | string | The note id. |
| depth | integer | How deep to hydrate related records: 0, 1, or 2. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The note id."
},
"depth": {
"type": "integer",
"maximum": 2,
"minimum": 0,
"description": "How deep to hydrate related records: 0, 1, or 2."
}
}
}Get a single opportunity by id. Twenty REST: GET /rest/opportunities/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | string | The opportunity id. |
| depth | integer | How deep to hydrate related records: 0, 1, or 2. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The opportunity id."
},
"depth": {
"type": "integer",
"maximum": 2,
"minimum": 0,
"description": "How deep to hydrate related records: 0, 1, or 2."
}
}
}Get a single person (contact) by id. Twenty REST: GET /rest/people/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | string | The person id. |
| depth | integer | How deep to hydrate related records: 0, 1, or 2. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The person id."
},
"depth": {
"type": "integer",
"maximum": 2,
"minimum": 0,
"description": "How deep to hydrate related records: 0, 1, or 2."
}
}
}Get a single task by id. Twenty REST: GET /rest/tasks/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | string | The task id. |
| depth | integer | How deep to hydrate related records: 0, 1, or 2. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The task id."
},
"depth": {
"type": "integer",
"maximum": 2,
"minimum": 0,
"description": "How deep to hydrate related records: 0, 1, or 2."
}
}
}List/filter companies. Supports cursor pagination, raw filter/order_by, and relation depth. Twenty REST: GET /rest/companies.
| Argument | Type | Description |
|---|---|---|
| depth | integer | How deep to hydrate related records: 0, 1, or 2. |
| limit | integer | Results per page (1-60, default 20 — Twenty caps at 60). |
| filter | string | Raw Twenty filter string, passed verbatim as ?filter=. Syntax: field[comparator]:value, e.g. `employees[gte]:100` or `stage[eq]:"MEETING"`. Comparators: eq, neq, gt, gte, lt, lte, in, is, like, ilike, startsWith. |
| order_by | string | Raw Twenty ordering string, passed verbatim as ?order_by=, e.g. `createdAt[DescNullsLast]`. |
| ending_before | string | Pagination cursor — return records before this cursor (from a previous page's pageInfo). |
| starting_after | string | Pagination cursor — return records after this cursor (from a previous page's pageInfo). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"depth": {
"type": "integer",
"maximum": 2,
"minimum": 0,
"description": "How deep to hydrate related records: 0, 1, or 2."
},
"limit": {
"type": "integer",
"maximum": 60,
"minimum": 1,
"description": "Results per page (1-60, default 20 — Twenty caps at 60)."
},
"filter": {
"type": "string",
"description": "Raw Twenty filter string, passed verbatim as ?filter=. Syntax: field[comparator]:value, e.g. `employees[gte]:100` or `stage[eq]:\"MEETING\"`. Comparators: eq, neq, gt, gte, lt, lte, in, is, like, ilike, startsWith."
},
"order_by": {
"type": "string",
"description": "Raw Twenty ordering string, passed verbatim as ?order_by=, e.g. `createdAt[DescNullsLast]`."
},
"ending_before": {
"type": "string",
"description": "Pagination cursor — return records before this cursor (from a previous page's pageInfo)."
},
"starting_after": {
"type": "string",
"description": "Pagination cursor — return records after this cursor (from a previous page's pageInfo)."
}
}
}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.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}List/filter notes. Supports cursor pagination, raw filter/order_by, and relation depth. Twenty REST: GET /rest/notes.
| Argument | Type | Description |
|---|---|---|
| depth | integer | How deep to hydrate related records: 0, 1, or 2. |
| limit | integer | Results per page (1-60, default 20 — Twenty caps at 60). |
| filter | string | Raw Twenty filter string, passed verbatim as ?filter=. Syntax: field[comparator]:value, e.g. `employees[gte]:100` or `stage[eq]:"MEETING"`. Comparators: eq, neq, gt, gte, lt, lte, in, is, like, ilike, startsWith. |
| order_by | string | Raw Twenty ordering string, passed verbatim as ?order_by=, e.g. `createdAt[DescNullsLast]`. |
| ending_before | string | Pagination cursor — return records before this cursor (from a previous page's pageInfo). |
| starting_after | string | Pagination cursor — return records after this cursor (from a previous page's pageInfo). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"depth": {
"type": "integer",
"maximum": 2,
"minimum": 0,
"description": "How deep to hydrate related records: 0, 1, or 2."
},
"limit": {
"type": "integer",
"maximum": 60,
"minimum": 1,
"description": "Results per page (1-60, default 20 — Twenty caps at 60)."
},
"filter": {
"type": "string",
"description": "Raw Twenty filter string, passed verbatim as ?filter=. Syntax: field[comparator]:value, e.g. `employees[gte]:100` or `stage[eq]:\"MEETING\"`. Comparators: eq, neq, gt, gte, lt, lte, in, is, like, ilike, startsWith."
},
"order_by": {
"type": "string",
"description": "Raw Twenty ordering string, passed verbatim as ?order_by=, e.g. `createdAt[DescNullsLast]`."
},
"ending_before": {
"type": "string",
"description": "Pagination cursor — return records before this cursor (from a previous page's pageInfo)."
},
"starting_after": {
"type": "string",
"description": "Pagination cursor — return records after this cursor (from a previous page's pageInfo)."
}
}
}List/filter opportunities (deals). Supports cursor pagination, raw filter/order_by, and relation depth. Twenty REST: GET /rest/opportunities.
| Argument | Type | Description |
|---|---|---|
| depth | integer | How deep to hydrate related records: 0, 1, or 2. |
| limit | integer | Results per page (1-60, default 20 — Twenty caps at 60). |
| filter | string | Raw Twenty filter string, passed verbatim as ?filter=. Syntax: field[comparator]:value, e.g. `employees[gte]:100` or `stage[eq]:"MEETING"`. Comparators: eq, neq, gt, gte, lt, lte, in, is, like, ilike, startsWith. |
| order_by | string | Raw Twenty ordering string, passed verbatim as ?order_by=, e.g. `createdAt[DescNullsLast]`. |
| ending_before | string | Pagination cursor — return records before this cursor (from a previous page's pageInfo). |
| starting_after | string | Pagination cursor — return records after this cursor (from a previous page's pageInfo). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"depth": {
"type": "integer",
"maximum": 2,
"minimum": 0,
"description": "How deep to hydrate related records: 0, 1, or 2."
},
"limit": {
"type": "integer",
"maximum": 60,
"minimum": 1,
"description": "Results per page (1-60, default 20 — Twenty caps at 60)."
},
"filter": {
"type": "string",
"description": "Raw Twenty filter string, passed verbatim as ?filter=. Syntax: field[comparator]:value, e.g. `employees[gte]:100` or `stage[eq]:\"MEETING\"`. Comparators: eq, neq, gt, gte, lt, lte, in, is, like, ilike, startsWith."
},
"order_by": {
"type": "string",
"description": "Raw Twenty ordering string, passed verbatim as ?order_by=, e.g. `createdAt[DescNullsLast]`."
},
"ending_before": {
"type": "string",
"description": "Pagination cursor — return records before this cursor (from a previous page's pageInfo)."
},
"starting_after": {
"type": "string",
"description": "Pagination cursor — return records after this cursor (from a previous page's pageInfo)."
}
}
}List/filter people (contacts). Supports cursor pagination, raw filter/order_by, and relation depth. Twenty REST: GET /rest/people.
| Argument | Type | Description |
|---|---|---|
| depth | integer | How deep to hydrate related records: 0, 1, or 2. |
| limit | integer | Results per page (1-60, default 20 — Twenty caps at 60). |
| filter | string | Raw Twenty filter string, passed verbatim as ?filter=. Syntax: field[comparator]:value, e.g. `employees[gte]:100` or `stage[eq]:"MEETING"`. Comparators: eq, neq, gt, gte, lt, lte, in, is, like, ilike, startsWith. |
| order_by | string | Raw Twenty ordering string, passed verbatim as ?order_by=, e.g. `createdAt[DescNullsLast]`. |
| ending_before | string | Pagination cursor — return records before this cursor (from a previous page's pageInfo). |
| starting_after | string | Pagination cursor — return records after this cursor (from a previous page's pageInfo). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"depth": {
"type": "integer",
"maximum": 2,
"minimum": 0,
"description": "How deep to hydrate related records: 0, 1, or 2."
},
"limit": {
"type": "integer",
"maximum": 60,
"minimum": 1,
"description": "Results per page (1-60, default 20 — Twenty caps at 60)."
},
"filter": {
"type": "string",
"description": "Raw Twenty filter string, passed verbatim as ?filter=. Syntax: field[comparator]:value, e.g. `employees[gte]:100` or `stage[eq]:\"MEETING\"`. Comparators: eq, neq, gt, gte, lt, lte, in, is, like, ilike, startsWith."
},
"order_by": {
"type": "string",
"description": "Raw Twenty ordering string, passed verbatim as ?order_by=, e.g. `createdAt[DescNullsLast]`."
},
"ending_before": {
"type": "string",
"description": "Pagination cursor — return records before this cursor (from a previous page's pageInfo)."
},
"starting_after": {
"type": "string",
"description": "Pagination cursor — return records after this cursor (from a previous page's pageInfo)."
}
}
}List/filter tasks. Supports cursor pagination, raw filter/order_by, and relation depth. Twenty REST: GET /rest/tasks.
| Argument | Type | Description |
|---|---|---|
| depth | integer | How deep to hydrate related records: 0, 1, or 2. |
| limit | integer | Results per page (1-60, default 20 — Twenty caps at 60). |
| filter | string | Raw Twenty filter string, passed verbatim as ?filter=. Syntax: field[comparator]:value, e.g. `employees[gte]:100` or `stage[eq]:"MEETING"`. Comparators: eq, neq, gt, gte, lt, lte, in, is, like, ilike, startsWith. |
| order_by | string | Raw Twenty ordering string, passed verbatim as ?order_by=, e.g. `createdAt[DescNullsLast]`. |
| ending_before | string | Pagination cursor — return records before this cursor (from a previous page's pageInfo). |
| starting_after | string | Pagination cursor — return records after this cursor (from a previous page's pageInfo). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"depth": {
"type": "integer",
"maximum": 2,
"minimum": 0,
"description": "How deep to hydrate related records: 0, 1, or 2."
},
"limit": {
"type": "integer",
"maximum": 60,
"minimum": 1,
"description": "Results per page (1-60, default 20 — Twenty caps at 60)."
},
"filter": {
"type": "string",
"description": "Raw Twenty filter string, passed verbatim as ?filter=. Syntax: field[comparator]:value, e.g. `employees[gte]:100` or `stage[eq]:\"MEETING\"`. Comparators: eq, neq, gt, gte, lt, lte, in, is, like, ilike, startsWith."
},
"order_by": {
"type": "string",
"description": "Raw Twenty ordering string, passed verbatim as ?order_by=, e.g. `createdAt[DescNullsLast]`."
},
"ending_before": {
"type": "string",
"description": "Pagination cursor — return records before this cursor (from a previous page's pageInfo)."
},
"starting_after": {
"type": "string",
"description": "Pagination cursor — return records after this cursor (from a previous page's pageInfo)."
}
}
}Update fields on an existing company. Only provided fields change. Twenty REST: PATCH /rest/companies/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | string | The company id to update. |
| name | string | The company name. |
| xUrl | string | X/Twitter URL (sent as xLink:{primaryLinkUrl}). |
| extra | object | Passthrough object of additional/custom fields merged into the request body verbatim. |
| employees | number | Employee count. |
| domainName | string | Primary domain / website URL (sent as domainName:{primaryLinkUrl}). |
| addressCity | string | City (sent as address:{addressCity}). |
| linkedinUrl | string | LinkedIn URL (sent as linkedinLink:{primaryLinkUrl}). |
| idealCustomerProfile | boolean | Whether this company matches the ideal customer profile. |
Update fields on an existing opportunity. Only provided fields change. Twenty REST: PATCH /rest/opportunities/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | string | The opportunity id to update. |
| name | string | The opportunity name. |
| extra | object | Passthrough object of additional/custom fields merged into the request body verbatim. |
| stage | string | Pipeline stage — e.g. SCREENING, MEETING, PROPOSAL, NEGOTIATION, CUSTOMER (custom pipelines vary). |
| closeDate | string | Expected close date (ISO 8601). |
| companyId | string | Id of the associated company. |
| amountMicros | number | Opportunity amount in micros (× 1,000,000). Sent as amount:{amountMicros,currencyCode}. |
| currencyCode | string | Currency code for the amount (default USD; only sent when amountMicros is provided). |
| pointOfContactId |
Update fields on an existing person. Only provided fields change. Twenty REST: PATCH /rest/people/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | string | The person id to update. |
| city | string | City. |
| xUrl | string | X/Twitter URL (sent as xLink:{primaryLinkUrl}). |
| extra | object | Passthrough object of additional/custom fields merged into the request body verbatim. |
| jobTitle | string | Job title. |
| lastName | string | Last name (combined into name:{firstName,lastName}). |
| companyId | string | Id of the company to link this person to. |
| firstName | string | First name (combined into name:{firstName,lastName}). |
| linkedinUrl | string | LinkedIn URL (sent as linkedinLink:{primaryLinkUrl}). |
Update fields on an existing task. Only provided fields change. Twenty REST: PATCH /rest/tasks/{id}.
| Argument | Type | Description |
|---|---|---|
| id* | string | The task id to update. |
| body | string | Task body / description. |
| dueAt | string | Due date/time (ISO 8601). |
| extra | object | Passthrough object of additional/custom fields merged into the request body verbatim. |
| title | string | The task title. |
| status | string | Task status — e.g. TODO, IN_PROGRESS, DONE. |
| assigneeId | string | Id of the workspace member assigned to the task. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The task id to update."
},
"body": {
"type": "string",
"description": "Task body / description."
},
"dueAt": {
"type": "string",
"description": "Due date/time (ISO 8601)."
},
"extra": {
"type": "object",
"description": "Passthrough object of additional/custom fields merged into the request body verbatim.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"title": {
"type": "string",
"description": "The task title."
},
"status": {
"type": "string",
"description": "Task status — e.g. TODO, IN_PROGRESS, DONE."
},
"assigneeId": {
"type": "string",
"description": "Id of the workspace member assigned to the task."
}
}
}{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "The opportunity name (required)."
},
"extra": {
"type": "object",
"description": "Passthrough object of additional/custom fields merged into the request body verbatim.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"stage": {
"type": "string",
"description": "Pipeline stage — e.g. SCREENING, MEETING, PROPOSAL, NEGOTIATION, CUSTOMER (custom pipelines vary)."
},
"closeDate": {
"type": "string",
"description": "Expected close date (ISO 8601)."
},
"companyId": {
"type": "string",
"description": "Id of the associated company."
},
"amountMicros": {
"type": "number",
"description": "Opportunity amount in micros (× 1,000,000). Sent as amount:{amountMicros,currencyCode}."
},
"currencyCode": {
"type": "string",
"default": "USD",
"description": "Currency code for the amount (default USD; only sent when amountMicros is provided)."
},
"pointOfContactId": {
"type": "string",
"description": "Id of the point-of-contact person."
}
}
}| primaryPhone | string | Primary phone number (sent as phones:{primaryPhoneNumber}). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"city": {
"type": "string",
"description": "City."
},
"xUrl": {
"type": "string",
"description": "X/Twitter URL (sent as xLink:{primaryLinkUrl})."
},
"extra": {
"type": "object",
"description": "Passthrough object of additional/custom fields merged into the request body verbatim.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"jobTitle": {
"type": "string",
"description": "Job title."
},
"lastName": {
"type": "string",
"description": "Last name (combined into name:{firstName,lastName})."
},
"companyId": {
"type": "string",
"description": "Id of the company to link this person to."
},
"firstName": {
"type": "string",
"description": "First name (combined into name:{firstName,lastName})."
},
"linkedinUrl": {
"type": "string",
"description": "LinkedIn URL (sent as linkedinLink:{primaryLinkUrl})."
},
"primaryEmail": {
"type": "string",
"description": "Primary email address (sent as emails:{primaryEmail})."
},
"primaryPhone": {
"type": "string",
"description": "Primary phone number (sent as phones:{primaryPhoneNumber})."
}
}
}{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The company id to update."
},
"name": {
"type": "string",
"description": "The company name."
},
"xUrl": {
"type": "string",
"description": "X/Twitter URL (sent as xLink:{primaryLinkUrl})."
},
"extra": {
"type": "object",
"description": "Passthrough object of additional/custom fields merged into the request body verbatim.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"employees": {
"type": "number",
"description": "Employee count."
},
"domainName": {
"type": "string",
"description": "Primary domain / website URL (sent as domainName:{primaryLinkUrl})."
},
"addressCity": {
"type": "string",
"description": "City (sent as address:{addressCity})."
},
"linkedinUrl": {
"type": "string",
"description": "LinkedIn URL (sent as linkedinLink:{primaryLinkUrl})."
},
"idealCustomerProfile": {
"type": "boolean",
"description": "Whether this company matches the ideal customer profile."
}
}
}| string |
| Id of the point-of-contact person. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The opportunity id to update."
},
"name": {
"type": "string",
"description": "The opportunity name."
},
"extra": {
"type": "object",
"description": "Passthrough object of additional/custom fields merged into the request body verbatim.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"stage": {
"type": "string",
"description": "Pipeline stage — e.g. SCREENING, MEETING, PROPOSAL, NEGOTIATION, CUSTOMER (custom pipelines vary)."
},
"closeDate": {
"type": "string",
"description": "Expected close date (ISO 8601)."
},
"companyId": {
"type": "string",
"description": "Id of the associated company."
},
"amountMicros": {
"type": "number",
"description": "Opportunity amount in micros (× 1,000,000). Sent as amount:{amountMicros,currencyCode}."
},
"currencyCode": {
"type": "string",
"default": "USD",
"description": "Currency code for the amount (default USD; only sent when amountMicros is provided)."
},
"pointOfContactId": {
"type": "string",
"description": "Id of the point-of-contact person."
}
}
}| primaryEmail |
| string |
| Primary email address (sent as emails:{primaryEmail}). |
| primaryPhone | string | Primary phone number (sent as phones:{primaryPhoneNumber}). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "The person id to update."
},
"city": {
"type": "string",
"description": "City."
},
"xUrl": {
"type": "string",
"description": "X/Twitter URL (sent as xLink:{primaryLinkUrl})."
},
"extra": {
"type": "object",
"description": "Passthrough object of additional/custom fields merged into the request body verbatim.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"jobTitle": {
"type": "string",
"description": "Job title."
},
"lastName": {
"type": "string",
"description": "Last name (combined into name:{firstName,lastName})."
},
"companyId": {
"type": "string",
"description": "Id of the company to link this person to."
},
"firstName": {
"type": "string",
"description": "First name (combined into name:{firstName,lastName})."
},
"linkedinUrl": {
"type": "string",
"description": "LinkedIn URL (sent as linkedinLink:{primaryLinkUrl})."
},
"primaryEmail": {
"type": "string",
"description": "Primary email address (sent as emails:{primaryEmail})."
},
"primaryPhone": {
"type": "string",
"description": "Primary phone number (sent as phones:{primaryPhoneNumber})."
}
}
}