Skip to content

Transforms

Transforms shape data as it flows between operations. Every operation has a typed input and output; a transform bridges two operations by converting one shape into another - most commonly turning a system-specific record into a generic Record (or a Record back into a system-specific shape), and, at the end of a pipeline, turning a RecordSet into a terminal artifact such as a CSV or PDF.

The transform model

  • Typed in / typed out. Each transform declares an InputType and an OutputType. The pipeline type-checker uses those types to decide whether one step can feed the next: a step is only valid if the upstream output can reach the downstream input, directly or through a transform. This is what lets Maestro compose a multi-step transient pipeline safely, without the model ever seeing the intermediate records.
  • Record is the lingua franca. Most connectors ship a matched pair per entity: a …ToRecord transform (system shape → generic Record) and a RecordTo… transform (generic Record → system shape). A Record from one system can therefore be re-shaped and handed to another, which is how cross-system pipelines are built.
  • RecordSet for collections. Iterable operations produce many records; RecordSet transforms fan those in and out (e.g. RecordSetToRecord, RecordToRecordSet).
  • Terminal transforms convert a RecordSet into a returnable artifact - CSV or PDF - so a pipeline yields a single file rather than streaming raw records back to the model.

Authoring notes

  • Naming convention. <Source>To<Target>; the direction is readable from the name. <Entity>ToRecord is inbound (system → generic), RecordTo<Entity> is outbound (generic → system).
  • JavaScript field mapping. Field-level mapping can be expressed inline with TransformJS / JSFilter (a small JS engine), with helpers such as toBase64 for encoding.
  • Versioning. Like connectors and operations, a transform carries [ExportMetadata("Version")]; bump the patch component on any metadata change so StewardBus rebuilds it.

This catalog is a snapshot

The authoritative, live list of transforms available to a pipeline is what the pipeline_discover tool returns for your enabled resources. The tables below catalog the transforms packaged with the MCP-enabled connectors, grouped by system and shown as Input → Output.

Physical access control

S2 (NetBox)

Inbound (→ Record) Outbound (Record →)
S2PersonToRecord (Person) · S2PersonAccessToRecord (PersonAccess) · S2PersonCardAccessToRecord · S2CredentialToRecord (Credential) · AccessToRecord · AccessLevelToRecord · AccessLevelWebToRecord · AccessLevelGroupToRecord · AccessRightToRecord · ActivityToRecord · EventToRecord · EventTypeToRecord · PortalToRecord · PortalGroupToRecord · ReaderToRecord · ReaderGroupToRecord · S2ElevatorToRecord · S2FloorToRecord · PartitionToRecord · CardFormatToRecord · TimeSpecToRecord · TimeSpecGroupToRecord · ThreatLevelToRecord · AlarmInputToRecord · AlarmOutputToRecord · MercuryBoardToRecord · MercuryPanelToRecord · NetworkNodeToRecord RecordToS2Person (Person) · RecordToS2PersonSearch (PersonSearch) · RecordToS2Credential (Credential) · RecordToAccess · RecordToAccessSearch · RecordToAccessLevel · RecordToAccessLevelWeb · RecordToAccessLevelGroup · RecordToActivity · RecordToEventType · RecordToPortal · RecordToPortalGroup · RecordToReader · RecordToReaderGroup · RecordToTimeSpec · RecordToTimeSpecGroup · RecordToThreatLevel · RecordToAlamInput · RecordToAlarmOutput · RecordToMercuryBoard · RecordToMercuryPanel · RecordToNetworkNode

Access-analytics helpers (used by the fatigue/last-access features): S2PersonAccessToAccessSpan, AccessSpanToRecordSet, AccessSpanToAggRecordSet, CalendarFatigue and IntervalFatigue (AccessSpan → AccessSpan), and EntrySorter.

OpenPath

Inbound (→ Record) Outbound (Record →)
UserToRecord · CredentialToRecord · CredentialTypeToRecord · CredentialActionTypeToRecord · CardFormatToRecord · GroupToRecord · RoleToRecord · ReaderToRecord · SiteToRecord · ZoneToRecord · OrganizationToRecord (Org) · ScheduledEventToRecord · AccessActivityEventToRecord · EventDataToRecord · AuditReportToRecord (Audit) · CustomFieldToRecord RecordToUser · RecordToCredential

Genetec (Security Center)

Inbound (→ Record) Outbound (Record →)
CardholderToRecord · CredentialToRecord · CredentialFormatToRecord · AccessHistoryToRecord · VisitorToRecord · DeviceToRecord · GroupProvisionToRecord · CustomFieldSystemEntityToRecord · DataToRecord RecordToCardholder · RecordToGroupProvision · RecordToCredentialUpdateState (→ Credential)

C-CURE 9000

Inbound (→ Record) Outbound (Record →)
PersonToRecord · ClearanceToRecord · PersonnelTypeToRecord · CustomFieldToRecord · ChuidFormatToRecord · JournalMessageToRecord · EventToRecord RecordToPerson · RecordToJournalMessage

Brivo

Inbound (→ Record) Outbound (Record →)
BrivoUserToRecord (User) · AccessPointToRecord · BrivoGroupToRecord (Group) · BrivoSiteToRecord (Site) · BrivoAccessEventToRecord (AccessEvent) · BrivoAuditToRecord (Audit) · BrivoCredentialFormatToRecord · BrivoCustomFieldToRecord · SubscriptionToRecord RecordToBrivoUser (User) · RecordToAccessPoint · RecordToSubscription

Otis (elevator dispatch)

Inbound (→ Record) Outbound (Record →)
DirectCallToRecord · OtisDECToRecord · SwipeEventToRecord · AuditMessageToRecord (OtisMessage) RecordToDirectCall · RecordToOtisDEC · RecordToSwipeEvent

ThyssenKrupp (elevator dispatch)

Inbound (→ Record) Outbound (Record →)
CarCallToRecord · KioskToRecord · SwipeEventToRecord · DispatchEventToRecord (TKEMessage) RecordToCarCall · RecordToSwipeEvent · RecordToDispatchEvent (TKEMessage)

Google Workspace

Inbound (→ Record) Outbound (Record →)
UserToRecord · GroupToRecord · MemberToRecord · OrganizationUnitToRecord · DriveFileToRecord · DriveFileContentToRecord · GmailMessageToRecord · GmailMessageContentToRecord · SheetRowToRecord · SheetValuesToRecord · SheetFormatToRecord RecordToGmailDraft (DraftGmailMessageRequest) · RecordToSheetRow · RecordToSheetValues · RecordToSheetFormat

Salesforce

Inbound (→ Record) Outbound (Record →)
AccountToRecord · ContactToRecord · CaseToRecord · ContractToRecord · AssetToRecord · TaskRayProjectToRecord · TaskRayTaskToRecord RecordToAttachment (Attachment)

Jira

Inbound (→ Record) Outbound (Record →)
IssueToRecord · UserToRecord RecordToIssue · RecordToComponent

MediaWiki

Inbound (→ Record) Outbound (Record →)
PageToRecord · SectionToRecord · SiteInfoToRecord RecordToSection

Everbridge (critical-event management)

Inbound (→ Record) Outbound (Record →)
ContactToRecord · ContactAttributeToRecord · ContactPathToRecord · GroupToRecord · IncidentToRecord · IncidentTemplateToRecord · LocationToRecord · ReaderToRecord · NotificationStatusToRecordSet (→ RecordSet) RecordToContact · RecordToIncident (IncidentCreate) · RecordToLocation · RecordToNotification · RecordToReader

Workday (HCM)

Inbound (→ Record) Outbound (Record →)
WorkerToRecord · OtherIdToRecord · TimeEntryToRecord RecordToWorker · RecordToOtherId · RecordToTimeEntry

Zoom (conferencing)

Inbound (→ Record) Outbound (Record →)
UserToRecord · GroupToRecord · MeetingToRecord · ReservationToRecord · ReservationActionToRecord · EventMessageToRecord RecordToReservationAction

ODBC (RDBMS)

Inbound (→ Record) Outbound (Record →)
DBTupleToRecord (DBTuple) RecordToDBTuple · RecordSetToDbTuple (RecordSet → DBTuple)

File

Inbound (→ Record) Outbound (Record →)
FileInfoToRecord · DirectoryInfoToRecord RecordToDirectoryInfo

Composer (self-introspection)

Shape Composer's own catalog into records - used to answer "what connectors / resources / operations / transforms are available?"

ConnectorToRecord · ResourceToRecord · OperationToRecord · TransformToRecord · ServiceToRecord · IntegrationToRecord · FilterToRecord · UserToRecord (all → Record).

Utility & terminal (Standard)

System-agnostic building blocks available to every pipeline.

Transform Shape Purpose
Identity object → object Pass-through (universal; satisfies any step boundary)
RecordToRecord Record → Record Field-level reshape/rename via JS mapping
RecordToRecordSet / RecordSetToRecord / RecordSetToRecordSet between Record and RecordSet Fan collections in/out
JsonObjectToRecord Record → Record Parse a JSON payload into a record
JsonArrayToRecordSet Record → RecordSet Parse a JSON array into a record set
ParameterSetToRecord ParameterSet → Record Turn call parameters into a record
ImageRecordToImageRecord Record → Record Image record reshape
PDFToRecordSet PDF → RecordSet Extract rows from a PDF
RecordToCSVString Record → CSVString Terminal - record to CSV
RecordSetToCSVStringSet RecordSet → CSVStringSet Terminal - record set to CSV
RecordSetToPDF RecordSet → PDF Terminal - record set to PDF