Server definition
- Hash
- sha256:af0c378b35b4e027c649f8918e7859a1f5d298382ce77817d286418e956662fb
- What it is
- What a remote MCP server returned when asked what it offers: 20 tools
The blob, as servednamed by its sha256
{
"instructions": null,
"tools": [
{
"description": "Create a new company. `name` is required. Twenty REST: POST /rest/companies.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"addressCity": {
"description": "City (sent as address:{addressCity}).",
"type": "string"
},
"domainName": {
"description": "Primary domain / website URL (sent as domainName:{primaryLinkUrl}).",
"type": "string"
},
"employees": {
"description": "Employee count.",
"type": "number"
},
"extra": {
"additionalProperties": {},
"description": "Passthrough object of additional/custom fields merged into the request body verbatim.",
"propertyNames": {
"type": "string"
},
"type": "object"
},
"idealCustomerProfile": {
"description": "Whether this company matches the ideal customer profile.",
"type": "boolean"
},
"linkedinUrl": {
"description": "LinkedIn URL (sent as linkedinLink:{primaryLinkUrl}).",
"type": "string"
},
"name": {
"description": "The company name (required).",
"type": "string"
},
"xUrl": {
"description": "X/Twitter URL (sent as xLink:{primaryLinkUrl}).",
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"name": "twenty_create_company",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"body": {
"description": "The note content/body.",
"type": "string"
},
"extra": {
"additionalProperties": {},
"description": "Passthrough object of additional/custom fields merged into the request body verbatim.",
"propertyNames": {
"type": "string"
},
"type": "object"
},
"title": {
"description": "The note title (required).",
"type": "string"
}
},
"required": [
"title"
],
"type": "object"
},
"name": "twenty_create_note",
"outputSchema": null
},
{
"description": "Create a new opportunity (deal). `name` is required; amountMicros combines with currencyCode into amount:{amountMicros,currencyCode}. Twenty REST: POST /rest/opportunities.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"amountMicros": {
"description": "Opportunity amount in micros (× 1,000,000). Sent as amount:{amountMicros,currencyCode}.",
"type": "number"
},
"closeDate": {
"description": "Expected close date (ISO 8601).",
"type": "string"
},
"companyId": {
"description": "Id of the associated company.",
"type": "string"
},
"currencyCode": {
"default": "USD",
"description": "Currency code for the amount (default USD; only sent when amountMicros is provided).",
"type": "string"
},
"extra": {
"additionalProperties": {},
"description": "Passthrough object of additional/custom fields merged into the request body verbatim.",
"propertyNames": {
"type": "string"
},
"type": "object"
},
"name": {
"description": "The opportunity name (required).",
"type": "string"
},
"pointOfContactId": {
"description": "Id of the point-of-contact person.",
"type": "string"
},
"stage": {
"description": "Pipeline stage — e.g. SCREENING, MEETING, PROPOSAL, NEGOTIATION, CUSTOMER (custom pipelines vary).",
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"name": "twenty_create_opportunity",
"outputSchema": null
},
{
"description": "Create a new person (contact). All fields optional; firstName/lastName combine into name:{firstName,lastName}. Twenty REST: POST /rest/people.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"city": {
"description": "City.",
"type": "string"
},
"companyId": {
"description": "Id of the company to link this person to.",
"type": "string"
},
"extra": {
"additionalProperties": {},
"description": "Passthrough object of additional/custom fields merged into the request body verbatim.",
"propertyNames": {
"type": "string"
},
"type": "object"
},
"firstName": {
"description": "First name (combined into name:{firstName,lastName}).",
"type": "string"
},
"jobTitle": {
"description": "Job title.",
"type": "string"
},
"lastName": {
"description": "Last name (combined into name:{firstName,lastName}).",
"type": "string"
},
"linkedinUrl": {
"description": "LinkedIn URL (sent as linkedinLink:{primaryLinkUrl}).",
"type": "string"
},
"primaryEmail": {
"description": "Primary email address (sent as emails:{primaryEmail}).",
"type": "string"
},
"primaryPhone": {
"description": "Primary phone number (sent as phones:{primaryPhoneNumber}).",
"type": "string"
},
"xUrl": {
"description": "X/Twitter URL (sent as xLink:{primaryLinkUrl}).",
"type": "string"
}
},
"type": "object"
},
"name": "twenty_create_person",
"outputSchema": null
},
{
"description": "Create a task. `title` is required. Twenty REST: POST /rest/tasks.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"assigneeId": {
"description": "Id of the workspace member assigned to the task.",
"type": "string"
},
"body": {
"description": "Task body / description.",
"type": "string"
},
"dueAt": {
"description": "Due date/time (ISO 8601).",
"type": "string"
},
"extra": {
"additionalProperties": {},
"description": "Passthrough object of additional/custom fields merged into the request body verbatim.",
"propertyNames": {
"type": "string"
},
"type": "object"
},
"status": {
"description": "Task status — e.g. TODO, IN_PROGRESS, DONE.",
"type": "string"
},
"title": {
"description": "The task title (required).",
"type": "string"
}
},
"required": [
"title"
],
"type": "object"
},
"name": "twenty_create_task",
"outputSchema": null
},
{
"description": "Get a single company by id. Twenty REST: GET /rest/companies/{id}.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"depth": {
"description": "How deep to hydrate related records: 0, 1, or 2.",
"maximum": 2,
"minimum": 0,
"type": "integer"
},
"id": {
"description": "The company id.",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "twenty_get_company",
"outputSchema": null
},
{
"description": "Get a single note by id. Twenty REST: GET /rest/notes/{id}.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"depth": {
"description": "How deep to hydrate related records: 0, 1, or 2.",
"maximum": 2,
"minimum": 0,
"type": "integer"
},
"id": {
"description": "The note id.",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "twenty_get_note",
"outputSchema": null
},
{
"description": "Get a single opportunity by id. Twenty REST: GET /rest/opportunities/{id}.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"depth": {
"description": "How deep to hydrate related records: 0, 1, or 2.",
"maximum": 2,
"minimum": 0,
"type": "integer"
},
"id": {
"description": "The opportunity id.",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "twenty_get_opportunity",
"outputSchema": null
},
{
"description": "Get a single person (contact) by id. Twenty REST: GET /rest/people/{id}.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"depth": {
"description": "How deep to hydrate related records: 0, 1, or 2.",
"maximum": 2,
"minimum": 0,
"type": "integer"
},
"id": {
"description": "The person id.",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "twenty_get_person",
"outputSchema": null
},
{
"description": "Get a single task by id. Twenty REST: GET /rest/tasks/{id}.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"depth": {
"description": "How deep to hydrate related records: 0, 1, or 2.",
"maximum": 2,
"minimum": 0,
"type": "integer"
},
"id": {
"description": "The task id.",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "twenty_get_task",
"outputSchema": null
},
{
"description": "List/filter companies. Supports cursor pagination, raw filter/order_by, and relation depth. Twenty REST: GET /rest/companies.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"depth": {
"description": "How deep to hydrate related records: 0, 1, or 2.",
"maximum": 2,
"minimum": 0,
"type": "integer"
},
"ending_before": {
"description": "Pagination cursor — return records before this cursor (from a previous page's pageInfo).",
"type": "string"
},
"filter": {
"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.",
"type": "string"
},
"limit": {
"description": "Results per page (1-60, default 20 — Twenty caps at 60).",
"maximum": 60,
"minimum": 1,
"type": "integer"
},
"order_by": {
"description": "Raw Twenty ordering string, passed verbatim as ?order_by=, e.g. `createdAt[DescNullsLast]`.",
"type": "string"
},
"starting_after": {
"description": "Pagination cursor — return records after this cursor (from a previous page's pageInfo).",
"type": "string"
}
},
"type": "object"
},
"name": "twenty_list_companies",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {},
"type": "object"
},
"name": "twenty_list_metadata_objects",
"outputSchema": null
},
{
"description": "List/filter notes. Supports cursor pagination, raw filter/order_by, and relation depth. Twenty REST: GET /rest/notes.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"depth": {
"description": "How deep to hydrate related records: 0, 1, or 2.",
"maximum": 2,
"minimum": 0,
"type": "integer"
},
"ending_before": {
"description": "Pagination cursor — return records before this cursor (from a previous page's pageInfo).",
"type": "string"
},
"filter": {
"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.",
"type": "string"
},
"limit": {
"description": "Results per page (1-60, default 20 — Twenty caps at 60).",
"maximum": 60,
"minimum": 1,
"type": "integer"
},
"order_by": {
"description": "Raw Twenty ordering string, passed verbatim as ?order_by=, e.g. `createdAt[DescNullsLast]`.",
"type": "string"
},
"starting_after": {
"description": "Pagination cursor — return records after this cursor (from a previous page's pageInfo).",
"type": "string"
}
},
"type": "object"
},
"name": "twenty_list_notes",
"outputSchema": null
},
{
"description": "List/filter opportunities (deals). Supports cursor pagination, raw filter/order_by, and relation depth. Twenty REST: GET /rest/opportunities.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"depth": {
"description": "How deep to hydrate related records: 0, 1, or 2.",
"maximum": 2,
"minimum": 0,
"type": "integer"
},
"ending_before": {
"description": "Pagination cursor — return records before this cursor (from a previous page's pageInfo).",
"type": "string"
},
"filter": {
"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.",
"type": "string"
},
"limit": {
"description": "Results per page (1-60, default 20 — Twenty caps at 60).",
"maximum": 60,
"minimum": 1,
"type": "integer"
},
"order_by": {
"description": "Raw Twenty ordering string, passed verbatim as ?order_by=, e.g. `createdAt[DescNullsLast]`.",
"type": "string"
},
"starting_after": {
"description": "Pagination cursor — return records after this cursor (from a previous page's pageInfo).",
"type": "string"
}
},
"type": "object"
},
"name": "twenty_list_opportunities",
"outputSchema": null
},
{
"description": "List/filter people (contacts). Supports cursor pagination, raw filter/order_by, and relation depth. Twenty REST: GET /rest/people.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"depth": {
"description": "How deep to hydrate related records: 0, 1, or 2.",
"maximum": 2,
"minimum": 0,
"type": "integer"
},
"ending_before": {
"description": "Pagination cursor — return records before this cursor (from a previous page's pageInfo).",
"type": "string"
},
"filter": {
"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.",
"type": "string"
},
"limit": {
"description": "Results per page (1-60, default 20 — Twenty caps at 60).",
"maximum": 60,
"minimum": 1,
"type": "integer"
},
"order_by": {
"description": "Raw Twenty ordering string, passed verbatim as ?order_by=, e.g. `createdAt[DescNullsLast]`.",
"type": "string"
},
"starting_after": {
"description": "Pagination cursor — return records after this cursor (from a previous page's pageInfo).",
"type": "string"
}
},
"type": "object"
},
"name": "twenty_list_people",
"outputSchema": null
},
{
"description": "List/filter tasks. Supports cursor pagination, raw filter/order_by, and relation depth. Twenty REST: GET /rest/tasks.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"depth": {
"description": "How deep to hydrate related records: 0, 1, or 2.",
"maximum": 2,
"minimum": 0,
"type": "integer"
},
"ending_before": {
"description": "Pagination cursor — return records before this cursor (from a previous page's pageInfo).",
"type": "string"
},
"filter": {
"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.",
"type": "string"
},
"limit": {
"description": "Results per page (1-60, default 20 — Twenty caps at 60).",
"maximum": 60,
"minimum": 1,
"type": "integer"
},
"order_by": {
"description": "Raw Twenty ordering string, passed verbatim as ?order_by=, e.g. `createdAt[DescNullsLast]`.",
"type": "string"
},
"starting_after": {
"description": "Pagination cursor — return records after this cursor (from a previous page's pageInfo).",
"type": "string"
}
},
"type": "object"
},
"name": "twenty_list_tasks",
"outputSchema": null
},
{
"description": "Update fields on an existing company. Only provided fields change. Twenty REST: PATCH /rest/companies/{id}.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"addressCity": {
"description": "City (sent as address:{addressCity}).",
"type": "string"
},
"domainName": {
"description": "Primary domain / website URL (sent as domainName:{primaryLinkUrl}).",
"type": "string"
},
"employees": {
"description": "Employee count.",
"type": "number"
},
"extra": {
"additionalProperties": {},
"description": "Passthrough object of additional/custom fields merged into the request body verbatim.",
"propertyNames": {
"type": "string"
},
"type": "object"
},
"id": {
"description": "The company id to update.",
"type": "string"
},
"idealCustomerProfile": {
"description": "Whether this company matches the ideal customer profile.",
"type": "boolean"
},
"linkedinUrl": {
"description": "LinkedIn URL (sent as linkedinLink:{primaryLinkUrl}).",
"type": "string"
},
"name": {
"description": "The company name.",
"type": "string"
},
"xUrl": {
"description": "X/Twitter URL (sent as xLink:{primaryLinkUrl}).",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "twenty_update_company",
"outputSchema": null
},
{
"description": "Update fields on an existing opportunity. Only provided fields change. Twenty REST: PATCH /rest/opportunities/{id}.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"amountMicros": {
"description": "Opportunity amount in micros (× 1,000,000). Sent as amount:{amountMicros,currencyCode}.",
"type": "number"
},
"closeDate": {
"description": "Expected close date (ISO 8601).",
"type": "string"
},
"companyId": {
"description": "Id of the associated company.",
"type": "string"
},
"currencyCode": {
"default": "USD",
"description": "Currency code for the amount (default USD; only sent when amountMicros is provided).",
"type": "string"
},
"extra": {
"additionalProperties": {},
"description": "Passthrough object of additional/custom fields merged into the request body verbatim.",
"propertyNames": {
"type": "string"
},
"type": "object"
},
"id": {
"description": "The opportunity id to update.",
"type": "string"
},
"name": {
"description": "The opportunity name.",
"type": "string"
},
"pointOfContactId": {
"description": "Id of the point-of-contact person.",
"type": "string"
},
"stage": {
"description": "Pipeline stage — e.g. SCREENING, MEETING, PROPOSAL, NEGOTIATION, CUSTOMER (custom pipelines vary).",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "twenty_update_opportunity",
"outputSchema": null
},
{
"description": "Update fields on an existing person. Only provided fields change. Twenty REST: PATCH /rest/people/{id}.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"city": {
"description": "City.",
"type": "string"
},
"companyId": {
"description": "Id of the company to link this person to.",
"type": "string"
},
"extra": {
"additionalProperties": {},
"description": "Passthrough object of additional/custom fields merged into the request body verbatim.",
"propertyNames": {
"type": "string"
},
"type": "object"
},
"firstName": {
"description": "First name (combined into name:{firstName,lastName}).",
"type": "string"
},
"id": {
"description": "The person id to update.",
"type": "string"
},
"jobTitle": {
"description": "Job title.",
"type": "string"
},
"lastName": {
"description": "Last name (combined into name:{firstName,lastName}).",
"type": "string"
},
"linkedinUrl": {
"description": "LinkedIn URL (sent as linkedinLink:{primaryLinkUrl}).",
"type": "string"
},
"primaryEmail": {
"description": "Primary email address (sent as emails:{primaryEmail}).",
"type": "string"
},
"primaryPhone": {
"description": "Primary phone number (sent as phones:{primaryPhoneNumber}).",
"type": "string"
},
"xUrl": {
"description": "X/Twitter URL (sent as xLink:{primaryLinkUrl}).",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "twenty_update_person",
"outputSchema": null
},
{
"description": "Update fields on an existing task. Only provided fields change. Twenty REST: PATCH /rest/tasks/{id}.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"assigneeId": {
"description": "Id of the workspace member assigned to the task.",
"type": "string"
},
"body": {
"description": "Task body / description.",
"type": "string"
},
"dueAt": {
"description": "Due date/time (ISO 8601).",
"type": "string"
},
"extra": {
"additionalProperties": {},
"description": "Passthrough object of additional/custom fields merged into the request body verbatim.",
"propertyNames": {
"type": "string"
},
"type": "object"
},
"id": {
"description": "The task id to update.",
"type": "string"
},
"status": {
"description": "Task status — e.g. TODO, IN_PROGRESS, DONE.",
"type": "string"
},
"title": {
"description": "The task title.",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "twenty_update_task",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:af0c378b35b4e027c649f8918e7859a1f5d298382ce77817d286418e956662fb | sha256sum