Endpoints: 28,729MCP servers: 18,414Payout addresses: 2,071Paid calls: 1,562Letters: 14Defects: 1,336counted just now
teppi

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 yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:af0c378b35b4e027c649f8918e7859a1f5d298382ce77817d286418e956662fb | sha256sum