Help us improve
Share bugs, ideas, or general feedback.
From Pipefy
Creates, reads, updates, and deletes Pipefy Database Tables, records (rows), and table fields (schema columns). Covers 17 MCP tools with pagination and filtering guidance.
npx claudepluginhub pipefy/ai-toolkit --plugin pipefyHow this skill is triggered — by the user, by Claude, or both
Slash command
/pipefy:pipefy-database-tablesThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Tables, records (rows), schema columns (table fields), and attachments for Pipefy Database Tables. **17 MCP tools.**
Automates Airtable CRUD operations on records, bases, tables, fields, and views via Composio toolkit and Rube MCP. Requires active connections for schema-aware workflows.
Links pipes, tables, or cards across Pipefy workflows. Covers 8 MCP tools for creating, updating, and deleting pipe relations, table relations, and card relations.
Automates Airtable tasks (records, bases, tables, fields, views) via Composio's Airtable toolkit through Rube MCP. Includes workflows for CRUD and filtering.
Share bugs, ideas, or general feedback.
Tables, records (rows), schema columns (table fields), and attachments for Pipefy Database Tables. 17 MCP tools.
introspect_type on inputs such as CreateTableFieldInput / UpdateTableFieldInput, debug=true on mutations.get_table_records and find_records support first / after. With the unified MCP envelope, read top-level pagination.has_more and pagination.end_cursor (and pagination.page_size) and pass after=end_cursor for the next page (default page size is 50).find_records over paginated get_table_records when you know the field value. One find_records call with a column_id/search_value filter beats N pages of get_table_records.result (for example result.createTableRecord). Read the payload inside that key; shape may differ from tools that already use the unified envelope.| Tool (MCP) | CLI | Read-only | Purpose |
|---|---|---|---|
get_tables | pipefy table list | Yes | List database tables by org. |
search_tables | pipefy table list --search | Yes | Search tables by name. |
get_table | pipefy table get <id> | Yes | Table metadata and field schema. |
create_table | pipefy table create | No | Create a new database table. |
update_table | pipefy table update <id> | No | Rename or change settings. |
delete_table | pipefy table delete <id> | No | Two-step destructive. |
| Tool (MCP) | CLI | Purpose |
|---|---|---|
create_table_field | pipefy field create --table <id> | Add a column to a table schema. |
update_table_field | pipefy field update <id> | Rename or reorder a column. |
delete_table_field | pipefy field delete <id> --table <id> | Two-step destructive. Now requires table_id. |
| Tool (MCP) | CLI | Read-only | Purpose |
|---|---|---|---|
get_table_records | pipefy record find --table <id> | Yes | Paginated list of all records in a table. |
find_records | pipefy record find --filter | Yes | Filter records by field value (JSON filter) — preferred over paginating get_table_records. |
get_table_record | pipefy record get <id> | Yes | Single record with all populated field values. |
create_table_record | pipefy record create | No | Add a row to a table. |
update_table_record | pipefy record update <id> --fields ... | No | Update one or more field values on a row. |
set_table_record_field_value | pipefy record update <id> --field-id <slug> --value <json> | No | More targeted single-field update than update_table_record. |
delete_table_record | pipefy record delete <id> | No | Two-step destructive. |
| Tool (MCP) | CLI | Purpose |
|---|---|---|
upload_attachment_to_table_record | pipefy attachment upload --record <id> --field <slug> --file <path> --organization <id> | Attach a file to a table record. |
Get table ID (if not known):
MCP: get_tables organization_id=123
CLI: pipefy table list
Find the record (use find_records, not pagination):
MCP: find_records table_id=456 filter='{"column_id":"email","search_value":"user@example.com"}'
CLI: pipefy record find --table 456 --filter '{"column_id":"email","search_value":"user@example.com"}'
Update one field (targeted):
MCP: set_table_record_field_value record_id=789 field_id="status" value="Active"
CLI: pipefy record update 789 --field-id status --value '"Active"'
Update multiple fields:
MCP: update_table_record record_id=789 node_fields='[{"field_id":"status","field_value":"Active"}]'
CLI: pipefy record update 789 --fields '{"status":"Active"}'
Always call without confirm=true first, surface the preview to the user, then call again with confirm=true after explicit approval. Preview content per tool:
delete_table — show table name, field count, and record count. Deleting a table destroys all rows and schema.delete_table_record — show record title and key field values so the user can identify which row will vanish.delete_table_field — show field name and type; warn explicitly that all column data will be permanently lost.Never delete in a single call.
get_table_records returns the created/updated records with correct field values.get_table.get_table_record / get_table_records omit empty fields. Records only return populated fields, so you cannot tell "field unset" from "field doesn't exist" without calling get_table for the full schema.create_table_record title silently overridden. When the first table field is a start-form-style label column, Pipefy uses that field's value as the record title, ignoring the title parameter. Don't rely on title if the first field auto-populates a label-like column.create_table_field rejects type: call introspect_type type_name="CreateTableFieldInput" for valid field types.find_records returns empty: check that column_id matches a field's ID (not label) from get_table.