About pipefy-relations
A skill for managing Pipefy relations across workflows, aimed at MCP clients and CLI users. It covers relation operations and clarifies identifier requirements and the differences between pipe relations and connector fields.
Key features
- 01Query pipe, card, and table relations
- 02Create or update pipe relations
- 03Link cards through pipe relations
- 04Explain connector-field write behavior
- 05Flag destructive actions for approval
Use cases
- 01Inspect relations between workflows
- 02Link two cards and verify the result
- 03Adjust relation constraints or auto-fill
MCP support
Provides guidance for managing Pipefy relations through MCP client operations; the README directs MCP clients to a separate reference.
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ pipefy/ ai-toolkit --skill pipefy-relationsAfter installing, type/pipefy-relationsin Claude Code to confirm it loaded.
Bundled filesreferences/cli.mdreferences/mcp.md
Details
From the project READMEConnections & Relations
MCP clients: read references/mcp.md. CLI users: read references/cli.md. Examples below describe shared operation arguments.
Link processes and cards across workflows.
Key concepts
- Pipe relations define parent/child structure between pipes (who connects to whom, constraints, auto-fill). Use
get_pipe_relationson a pipe to list relation IDs and metadata. - Card relations connect individual cards through an existing pipe relation: pass
source_id= the pipe relation's ID (fromget_pipe_relations). DefaultsourceTypeisPipeRelation; useextra_input(e.g.,sourceType: Field) when the API requires a field-based link — seeintrospect_typeonCreateCardRelationInput. - Table relations in GraphQL are loaded by table-relation ID, not by database table ID:
get_table_relationstakes a non-empty list of those IDs. - Connector fields are card fields (connection type), not pipe relations for writes. Prefer
update_card+field_updateswithoperationADD/REMOVE (related card ids, or record ids when the field connects to a database table). An id from any other pipe or table is dropped without an error:ADDkeeps the existing links, andupdate_card_fieldwith no valid id clears them all. Read the links back after a write.update_card_fieldis replace-all of the full id list;get_cardvalueis display titles only — do not rebuild from it. This skill'sget_card_relationsstill reads connector-field links (with card ids).create_card_relation/delete_card_relationwrite links through a pipe relation and are incremental — pick the surface that matches the link type.delete_card_relationremoves only a link made through a pipe relation, never a connector-field link, and needs permission to edit the parent card.
Tools
| Operation | Read-only | Purpose |
|---|---|---|
get_pipe_relations | Yes | List pipe-to-pipe relations for a pipe. |
create_pipe_relation | No | Create a new pipe-to-pipe relation. |
update_pipe_relation | No | Change relation config (auto-fill, constraints). Pass every constraint flag; see Failure modes. |
delete_pipe_relation | No | Destructive; review and approve first. |
get_table_relations | Yes | Load table relations by relation ID. |
get_card_relations | Yes | List all card-to-card relations on a card. |
create_card_relation | No | Link two cards through an existing pipe relation. |
delete_card_relation | No | Destructive; review and approve first. |
Steps — link two cards via an existing pipe relation
-
Get the pipe relation ID:
Operation:
get_pipe_relations(pipe_id=67890)Note the
idfield on the relation (not the pipe ID). -
Create the card relation:
Operation:
create_card_relation(parent_id=<PARENT_CARD_ID>, child_id=<CHILD_CARD_ID>, source_id=<PIPE_RELATION_ID>) -
Verify:
Operation:
get_card_relations(card_id=<CHILD_CARD_ID>)
Steps — create a new pipe relation
-
Create the relation between two pipes:
Operation:
create_pipe_relation(parent_id=111, child_id=222, name="Support Escalation") -
Use the relation — cards in the parent pipe can now be linked to cards in the child pipe using
create_card_relation.
Success criteria
get_pipe_relationsreturns the new relation with both pipe IDs.get_card_relationsshows the linked card ID aftercreate_card_relation.
Failure modes
create_card_relationfails with "relation not found":source_idmust be the pipe relation ID (fromget_pipe_relations), not the pipe ID. These are different values.- Table relations return empty:
get_table_relationsrequires table-relation IDs, not table IDs. Get table-relation IDs from the table's connection config. update_pipe_relationresets the flags you leave out. Pipefy requires all eight constraint flags on every update (allChildrenMustBeDoneToFinishParent,allChildrenMustBeDoneToMoveParent,autoFillFieldEnabled,canConnectExistingItems,canConnectMultipleItems,canCreateNewItems,childMustExistToFinishParent,childMustExistToMoveParent). A flag you do not pass is sent with a default: the threecanConnect…/canCreateNewItemsflagstrue, the other fivefalse. So even a rename changes the relation's constraints. Read the relation withget_pipe_relationsand pass every flag's current value. LeaveownFieldMapsout to keep the auto-fill mappings: sending it replaces the whole list.- Deletion: show the affected relation and obtain approval before removing it.
See also
pipefy-pipes-and-cards— create the pipes and cards before linking them; connector field updates andupdate_card_fieldreplace-all live there.docs/mcp/tools/identifiers.md— which args expect slug vs numeric id for field and relation tools.pipefy-introspection— discoverCreateCardRelationInputwhen non-standardsourceTypeis needed.