naftiko: 1.0.0-alpha2 info: label: Salesforce — Record description: 'Salesforce — Record. 19 operations. Lead operation: Salesforce Record Feed Elements. Self-contained Naftiko capability covering one Salesforce business surface.' tags: - Salesforce - Record created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: SALESFORCE_API_KEY: SALESFORCE_API_KEY capability: consumes: - type: http namespace: salesforce-record baseUri: https://login.salesforce.com description: Salesforce — Record business capability. Self-contained, no shared references. resources: - name: data-v64.0-chatter-feeds-record-RECORD_GROUP_ID-feed-elements path: /data/v64.0/chatter/feeds/record/{RECORD_GROUP_ID}/feed-elements operations: - name: recordfeedelements method: GET description: Salesforce Record Feed Elements outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: RECORD_GROUP_ID in: path type: string required: true - name: data-v64.0-jobs-ingest-failedResults path: /data/v64.0/jobs/ingest//failedResults operations: - name: getjobfailedrecordresults method: GET description: Salesforce Get Job Failed Record Results outputRawFormat: json outputParameters: - name: result type: object value: $. - name: data-v64.0-jobs-ingest-successfulResults path: /data/v64.0/jobs/ingest//successfulResults operations: - name: getjobsuccessfulrecordresults method: GET description: Salesforce Get Job Successful Record Results outputRawFormat: json outputParameters: - name: result type: object value: $. - name: data-v64.0-jobs-ingest-unprocessedrecords path: /data/v64.0/jobs/ingest//unprocessedrecords operations: - name: getjobunprocessedrecordresults method: GET description: Salesforce Get Job Unprocessed Record Results outputRawFormat: json outputParameters: - name: result type: object value: $. - name: data-v64.0-limits-recordCount path: /data/v64.0/limits/recordCount operations: - name: recordcount method: GET description: Salesforce Record Count outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: sObjects in: query type: string description: A comma-delimited list of object names. If a listed object is not found in the org, it is ignored and not returned in the response. required: true - name: Content-Type in: header type: string required: true - name: data-v64.0-sobjects-SOBJECT_API_NAME-describe-layouts-RECORD_TYPE_ID path: /data/v64.0/sobjects/{SOBJECT_API_NAME}/describe/layouts/{RECORD_TYPE_ID} operations: - name: describesobjectlayoutsperrecordtype method: GET description: Salesforce Describe Sobject Layouts Per Record Type outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: SOBJECT_API_NAME in: path type: string required: true - name: RECORD_TYPE_ID in: path type: string required: true - name: Content-Type in: header type: string required: true - name: data-v64.0-ui-api-actions-list-view-record-RECORD_IDS path: /data/v64.0/ui-api/actions/list-view-record/{RECORD_IDS} operations: - name: getlistviewrecordactions method: GET description: Salesforce Get List View Record Actions outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: RECORD_IDS in: path type: string description: A single record ID, or a comma-delimited list of record IDs. required: true - name: data-v64.0-ui-api-actions-record-RECORD_IDS path: /data/v64.0/ui-api/actions/record/{RECORD_IDS} operations: - name: getrecorddetailpageactions method: GET description: Salesforce Get Record Detail Page Actions outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: RECORD_IDS in: path type: string description: A single record ID, or a comma-delimited list of record IDs. required: true - name: data-v64.0-ui-api-actions-record-RECORD_ID-record-edit path: /data/v64.0/ui-api/actions/record/{RECORD_ID}/record-edit operations: - name: getrecordeditpageactions method: GET description: Salesforce Get Record Edit Page Actions outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: RECORD_ID in: path type: string description: Record ID required: true - name: data-v64.0-ui-api-actions-record-RECORD_ID-related-list-record-RELATED_LIST_RECO path: /data/v64.0/ui-api/actions/record/{RECORD_ID}/related-list-record/{RELATED_LIST_RECORD_IDS} operations: - name: getrelatedlistrecordactions method: GET description: Salesforce Get Related List Record Actions outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: RECORD_ID in: path type: string description: Record ID required: true - name: RELATED_LIST_RECORD_IDS in: path type: string description: A related list record ID, or a comma-delimited list of related list record IDs. required: true - name: data-v64.0-ui-api-layout-SOBJECT_API_NAME path: /data/v64.0/ui-api/layout/{SOBJECT_API_NAME} operations: - name: getrecordlayoutmetadata method: GET description: Salesforce Get Record Layout Metadata outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: SOBJECT_API_NAME in: path type: string required: true - name: data-v64.0-ui-api-object-info-SOBJECT_API_NAME-picklist-values-RECORD_TYPE_ID path: /data/v64.0/ui-api/object-info/{SOBJECT_API_NAME}/picklist-values/{RECORD_TYPE_ID} operations: - name: getvaluesforallpicklistfieldsofarecordtype method: GET description: Salesforce Get Values for All Picklist Fields of a Record Type outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: SOBJECT_API_NAME in: path type: string description: Object API Name required: true - name: RECORD_TYPE_ID in: path type: string description: Record type Id. Use `012000000000000AAA` as default when there are no custom record types. required: true - name: data-v64.0-ui-api-record-defaults-clone-RECORD_ID path: /data/v64.0/ui-api/record-defaults/clone/{RECORD_ID} operations: - name: getdefaultvaluestoclonearecord method: GET description: Salesforce Get Default Values to Clone a Record outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: RECORD_ID in: path type: string description: Record ID required: true - name: data-v64.0-ui-api-record-defaults-create-SOBJECT_API_NAME path: /data/v64.0/ui-api/record-defaults/create/{SOBJECT_API_NAME} operations: - name: getdefaultvaluestocreatearecord method: GET description: Salesforce Get Default Values to Create a Record outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: SOBJECT_API_NAME in: path type: string description: sObject API name required: true - name: data-v64.0-ui-api-record-ui-RECORD_IDS path: /data/v64.0/ui-api/record-ui/{RECORD_IDS} operations: - name: getrecorddataandobjectmetadata method: GET description: Salesforce Get Record Data and Object Metadata outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: RECORD_IDS in: path type: string description: Comma-separated list of record IDs required: true - name: data-v64.0-ui-api-records path: /data/v64.0/ui-api/records operations: - name: createarecord method: POST description: Salesforce Create a Record outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: data-v64.0-ui-api-records-RECORD_ID path: /data/v64.0/ui-api/records/{RECORD_ID} operations: - name: getarecord method: GET description: Salesforce Get a Record outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: RECORD_ID in: path type: string required: true - name: updatearecord method: PATCH description: Salesforce Update a Record outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: RECORD_ID in: path type: string description: Record ID required: true - name: body in: body type: object description: Request body (JSON). required: true - name: deletearecord method: DELETE description: Salesforce Delete a Record outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: RECORD_ID in: path type: string description: Record ID required: true authentication: type: bearer token: '{{env.SALESFORCE_API_KEY}}' exposes: - type: rest namespace: salesforce-record-rest port: 8080 description: REST adapter for Salesforce — Record. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/data/v64-0/chatter/feeds/record/{record-group-id}/feed-elements name: data-v64-0-chatter-feeds-record-record-group-id-feed-elements description: REST surface for data-v64.0-chatter-feeds-record-RECORD_GROUP_ID-feed-elements. operations: - method: GET name: recordfeedelements description: Salesforce Record Feed Elements call: salesforce-record.recordfeedelements with: RECORD_GROUP_ID: rest.RECORD_GROUP_ID outputParameters: - type: object mapping: $. - path: /v1/data/v64-0/jobs/ingest/failedresults name: data-v64-0-jobs-ingest-failedresults description: REST surface for data-v64.0-jobs-ingest-failedResults. operations: - method: GET name: getjobfailedrecordresults description: Salesforce Get Job Failed Record Results call: salesforce-record.getjobfailedrecordresults outputParameters: - type: object mapping: $. - path: /v1/data/v64-0/jobs/ingest/successfulresults name: data-v64-0-jobs-ingest-successfulresults description: REST surface for data-v64.0-jobs-ingest-successfulResults. operations: - method: GET name: getjobsuccessfulrecordresults description: Salesforce Get Job Successful Record Results call: salesforce-record.getjobsuccessfulrecordresults outputParameters: - type: object mapping: $. - path: /v1/data/v64-0/jobs/ingest/unprocessedrecords name: data-v64-0-jobs-ingest-unprocessedrecords description: REST surface for data-v64.0-jobs-ingest-unprocessedrecords. operations: - method: GET name: getjobunprocessedrecordresults description: Salesforce Get Job Unprocessed Record Results call: salesforce-record.getjobunprocessedrecordresults outputParameters: - type: object mapping: $. - path: /v1/data/v64-0/limits/recordcount name: data-v64-0-limits-recordcount description: REST surface for data-v64.0-limits-recordCount. operations: - method: GET name: recordcount description: Salesforce Record Count call: salesforce-record.recordcount with: sObjects: rest.sObjects Content-Type: rest.Content-Type outputParameters: - type: object mapping: $. - path: /v1/data/v64-0/sobjects/{sobject-api-name}/describe/layouts/{record-type-id} name: data-v64-0-sobjects-sobject-api-name-describe-layouts-record-type-id description: REST surface for data-v64.0-sobjects-SOBJECT_API_NAME-describe-layouts-RECORD_TYPE_ID. operations: - method: GET name: describesobjectlayoutsperrecordtype description: Salesforce Describe Sobject Layouts Per Record Type call: salesforce-record.describesobjectlayoutsperrecordtype with: SOBJECT_API_NAME: rest.SOBJECT_API_NAME RECORD_TYPE_ID: rest.RECORD_TYPE_ID Content-Type: rest.Content-Type outputParameters: - type: object mapping: $. - path: /v1/data/v64-0/ui-api/actions/list-view-record/{record-ids} name: data-v64-0-ui-api-actions-list-view-record-record-ids description: REST surface for data-v64.0-ui-api-actions-list-view-record-RECORD_IDS. operations: - method: GET name: getlistviewrecordactions description: Salesforce Get List View Record Actions call: salesforce-record.getlistviewrecordactions with: RECORD_IDS: rest.RECORD_IDS outputParameters: - type: object mapping: $. - path: /v1/data/v64-0/ui-api/actions/record/{record-ids} name: data-v64-0-ui-api-actions-record-record-ids description: REST surface for data-v64.0-ui-api-actions-record-RECORD_IDS. operations: - method: GET name: getrecorddetailpageactions description: Salesforce Get Record Detail Page Actions call: salesforce-record.getrecorddetailpageactions with: RECORD_IDS: rest.RECORD_IDS outputParameters: - type: object mapping: $. - path: /v1/data/v64-0/ui-api/actions/record/{record-id}/record-edit name: data-v64-0-ui-api-actions-record-record-id-record-edit description: REST surface for data-v64.0-ui-api-actions-record-RECORD_ID-record-edit. operations: - method: GET name: getrecordeditpageactions description: Salesforce Get Record Edit Page Actions call: salesforce-record.getrecordeditpageactions with: RECORD_ID: rest.RECORD_ID outputParameters: - type: object mapping: $. - path: /v1/data/v64-0/ui-api/actions/record/{record-id}/related-list-record/{related-list-record-ids} name: data-v64-0-ui-api-actions-record-record-id-related-list-record-related-list-reco description: REST surface for data-v64.0-ui-api-actions-record-RECORD_ID-related-list-record-RELATED_LIST_RECO. operations: - method: GET name: getrelatedlistrecordactions description: Salesforce Get Related List Record Actions call: salesforce-record.getrelatedlistrecordactions with: RECORD_ID: rest.RECORD_ID RELATED_LIST_RECORD_IDS: rest.RELATED_LIST_RECORD_IDS outputParameters: - type: object mapping: $. - path: /v1/data/v64-0/ui-api/layout/{sobject-api-name} name: data-v64-0-ui-api-layout-sobject-api-name description: REST surface for data-v64.0-ui-api-layout-SOBJECT_API_NAME. operations: - method: GET name: getrecordlayoutmetadata description: Salesforce Get Record Layout Metadata call: salesforce-record.getrecordlayoutmetadata with: SOBJECT_API_NAME: rest.SOBJECT_API_NAME outputParameters: - type: object mapping: $. - path: /v1/data/v64-0/ui-api/object-info/{sobject-api-name}/picklist-values/{record-type-id} name: data-v64-0-ui-api-object-info-sobject-api-name-picklist-values-record-type-id description: REST surface for data-v64.0-ui-api-object-info-SOBJECT_API_NAME-picklist-values-RECORD_TYPE_ID. operations: - method: GET name: getvaluesforallpicklistfieldsofarecordtype description: Salesforce Get Values for All Picklist Fields of a Record Type call: salesforce-record.getvaluesforallpicklistfieldsofarecordtype with: SOBJECT_API_NAME: rest.SOBJECT_API_NAME RECORD_TYPE_ID: rest.RECORD_TYPE_ID outputParameters: - type: object mapping: $. - path: /v1/data/v64-0/ui-api/record-defaults/clone/{record-id} name: data-v64-0-ui-api-record-defaults-clone-record-id description: REST surface for data-v64.0-ui-api-record-defaults-clone-RECORD_ID. operations: - method: GET name: getdefaultvaluestoclonearecord description: Salesforce Get Default Values to Clone a Record call: salesforce-record.getdefaultvaluestoclonearecord with: RECORD_ID: rest.RECORD_ID outputParameters: - type: object mapping: $. - path: /v1/data/v64-0/ui-api/record-defaults/create/{sobject-api-name} name: data-v64-0-ui-api-record-defaults-create-sobject-api-name description: REST surface for data-v64.0-ui-api-record-defaults-create-SOBJECT_API_NAME. operations: - method: GET name: getdefaultvaluestocreatearecord description: Salesforce Get Default Values to Create a Record call: salesforce-record.getdefaultvaluestocreatearecord with: SOBJECT_API_NAME: rest.SOBJECT_API_NAME outputParameters: - type: object mapping: $. - path: /v1/data/v64-0/ui-api/record-ui/{record-ids} name: data-v64-0-ui-api-record-ui-record-ids description: REST surface for data-v64.0-ui-api-record-ui-RECORD_IDS. operations: - method: GET name: getrecorddataandobjectmetadata description: Salesforce Get Record Data and Object Metadata call: salesforce-record.getrecorddataandobjectmetadata with: RECORD_IDS: rest.RECORD_IDS outputParameters: - type: object mapping: $. - path: /v1/data/v64-0/ui-api/records name: data-v64-0-ui-api-records description: REST surface for data-v64.0-ui-api-records. operations: - method: POST name: createarecord description: Salesforce Create a Record call: salesforce-record.createarecord with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/data/v64-0/ui-api/records/{record-id} name: data-v64-0-ui-api-records-record-id description: REST surface for data-v64.0-ui-api-records-RECORD_ID. operations: - method: GET name: getarecord description: Salesforce Get a Record call: salesforce-record.getarecord with: RECORD_ID: rest.RECORD_ID outputParameters: - type: object mapping: $. - method: PATCH name: updatearecord description: Salesforce Update a Record call: salesforce-record.updatearecord with: RECORD_ID: rest.RECORD_ID body: rest.body outputParameters: - type: object mapping: $. - method: DELETE name: deletearecord description: Salesforce Delete a Record call: salesforce-record.deletearecord with: RECORD_ID: rest.RECORD_ID outputParameters: - type: object mapping: $. - type: mcp namespace: salesforce-record-mcp port: 9090 transport: http description: MCP adapter for Salesforce — Record. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: salesforce-record-feed-elements description: Salesforce Record Feed Elements hints: readOnly: true destructive: false idempotent: true call: salesforce-record.recordfeedelements with: RECORD_GROUP_ID: tools.RECORD_GROUP_ID outputParameters: - type: object mapping: $. - name: salesforce-get-job-failed-record description: Salesforce Get Job Failed Record Results hints: readOnly: true destructive: false idempotent: true call: salesforce-record.getjobfailedrecordresults outputParameters: - type: object mapping: $. - name: salesforce-get-job-successful-record description: Salesforce Get Job Successful Record Results hints: readOnly: true destructive: false idempotent: true call: salesforce-record.getjobsuccessfulrecordresults outputParameters: - type: object mapping: $. - name: salesforce-get-job-unprocessed-record description: Salesforce Get Job Unprocessed Record Results hints: readOnly: true destructive: false idempotent: true call: salesforce-record.getjobunprocessedrecordresults outputParameters: - type: object mapping: $. - name: salesforce-record-count description: Salesforce Record Count hints: readOnly: true destructive: false idempotent: true call: salesforce-record.recordcount with: sObjects: tools.sObjects Content-Type: tools.Content-Type outputParameters: - type: object mapping: $. - name: salesforce-describe-sobject-layouts-per description: Salesforce Describe Sobject Layouts Per Record Type hints: readOnly: true destructive: false idempotent: true call: salesforce-record.describesobjectlayoutsperrecordtype with: SOBJECT_API_NAME: tools.SOBJECT_API_NAME RECORD_TYPE_ID: tools.RECORD_TYPE_ID Content-Type: tools.Content-Type outputParameters: - type: object mapping: $. - name: salesforce-get-list-view-record description: Salesforce Get List View Record Actions hints: readOnly: true destructive: false idempotent: true call: salesforce-record.getlistviewrecordactions with: RECORD_IDS: tools.RECORD_IDS outputParameters: - type: object mapping: $. - name: salesforce-get-record-detail-page description: Salesforce Get Record Detail Page Actions hints: readOnly: true destructive: false idempotent: true call: salesforce-record.getrecorddetailpageactions with: RECORD_IDS: tools.RECORD_IDS outputParameters: - type: object mapping: $. - name: salesforce-get-record-edit-page description: Salesforce Get Record Edit Page Actions hints: readOnly: true destructive: false idempotent: true call: salesforce-record.getrecordeditpageactions with: RECORD_ID: tools.RECORD_ID outputParameters: - type: object mapping: $. - name: salesforce-get-related-list-record description: Salesforce Get Related List Record Actions hints: readOnly: true destructive: false idempotent: true call: salesforce-record.getrelatedlistrecordactions with: RECORD_ID: tools.RECORD_ID RELATED_LIST_RECORD_IDS: tools.RELATED_LIST_RECORD_IDS outputParameters: - type: object mapping: $. - name: salesforce-get-record-layout-metadata description: Salesforce Get Record Layout Metadata hints: readOnly: true destructive: false idempotent: true call: salesforce-record.getrecordlayoutmetadata with: SOBJECT_API_NAME: tools.SOBJECT_API_NAME outputParameters: - type: object mapping: $. - name: salesforce-get-values-all-picklist description: Salesforce Get Values for All Picklist Fields of a Record Type hints: readOnly: true destructive: false idempotent: true call: salesforce-record.getvaluesforallpicklistfieldsofarecordtype with: SOBJECT_API_NAME: tools.SOBJECT_API_NAME RECORD_TYPE_ID: tools.RECORD_TYPE_ID outputParameters: - type: object mapping: $. - name: salesforce-get-default-values-clone description: Salesforce Get Default Values to Clone a Record hints: readOnly: true destructive: false idempotent: true call: salesforce-record.getdefaultvaluestoclonearecord with: RECORD_ID: tools.RECORD_ID outputParameters: - type: object mapping: $. - name: salesforce-get-default-values-create description: Salesforce Get Default Values to Create a Record hints: readOnly: true destructive: false idempotent: true call: salesforce-record.getdefaultvaluestocreatearecord with: SOBJECT_API_NAME: tools.SOBJECT_API_NAME outputParameters: - type: object mapping: $. - name: salesforce-get-record-data-and description: Salesforce Get Record Data and Object Metadata hints: readOnly: true destructive: false idempotent: true call: salesforce-record.getrecorddataandobjectmetadata with: RECORD_IDS: tools.RECORD_IDS outputParameters: - type: object mapping: $. - name: salesforce-create-record description: Salesforce Create a Record hints: readOnly: false destructive: false idempotent: false call: salesforce-record.createarecord with: body: tools.body outputParameters: - type: object mapping: $. - name: salesforce-get-record description: Salesforce Get a Record hints: readOnly: true destructive: false idempotent: true call: salesforce-record.getarecord with: RECORD_ID: tools.RECORD_ID outputParameters: - type: object mapping: $. - name: salesforce-update-record description: Salesforce Update a Record hints: readOnly: false destructive: false idempotent: true call: salesforce-record.updatearecord with: RECORD_ID: tools.RECORD_ID body: tools.body outputParameters: - type: object mapping: $. - name: salesforce-delete-record description: Salesforce Delete a Record hints: readOnly: false destructive: true idempotent: true call: salesforce-record.deletearecord with: RECORD_ID: tools.RECORD_ID outputParameters: - type: object mapping: $.