naftiko: 1.0.0-alpha2 info: label: Factset Open:FactSet Marketplace API — Ofs description: 'Factset Open:FactSet Marketplace API — Ofs. 22 operations. Lead operation: Factset Retrieve a collection of Attribute records.. Self-contained Naftiko capability covering one Factset business surface.' tags: - Factset - Ofs created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: FACTSET_API_KEY: FACTSET_API_KEY capability: consumes: - type: http namespace: open-marketplace-ofs baseUri: https://api-sandbox.factset.com description: Factset Open:FactSet Marketplace API — Ofs business capability. Self-contained, no shared references. resources: - name: ofs-v2-attributes path: /ofs/v2/attributes operations: - name: get method: GET description: Factset Retrieve a collection of Attribute records. outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: limit in: query type: integer description: Limit the amount of records per page - name: page in: query type: integer description: Select which page to show - name: ofs-v2-attributes-groups path: /ofs/v2/attributes/groups operations: - name: get method: GET description: Factset Retrieve a collection of Attributes Group records. outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: limit in: query type: integer description: Limit the amount of records per page - name: page in: query type: integer description: Select which page to show - name: ofs-v2-attributes-groups-search path: /ofs/v2/attributes/groups/search operations: - name: post method: POST description: Factset Retrieve a collection of Attributes Group records. outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: json - name: ofs-v2-attributes-groups-used path: /ofs/v2/attributes/groups/used operations: - name: get method: GET description: Factset Retrieve a collection of Attributes Group records in use. outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: limit in: query type: integer description: Limit the amount of records per page - name: page in: query type: integer description: Select which page to show - name: ofs-v2-attributes-groups-id path: /ofs/v2/attributes/groups/{id} operations: - name: get method: GET description: Factset Retrieve a specific Attributes Group record. outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Globally unique identifier (GUID) of an Attributes Group record required: true - name: ofs-v2-attributes-search path: /ofs/v2/attributes/search operations: - name: post method: POST description: Factset Retrieve a collection of Attribute records. outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: json - name: ofs-v2-attributes-id path: /ofs/v2/attributes/{id} operations: - name: get method: GET description: Factset Retrieve a collection of Attribute records. outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Globally unique identifier (GUID) of an attribute record required: true - name: ofs-v2-media-download-namespace-scope-guid-fileName path: /ofs/v2/media/download/{namespace}/{scope}/{guid}/{fileName} operations: - name: get method: GET description: Factset Retrieve a specific media file outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: namespace in: path type: string description: The namespace of the media file required: true - name: scope in: path type: string description: The scope of the media file required: true - name: guid in: path type: string description: The GUID of the file being requested required: true - name: fileName in: path type: string description: The name you want to show for this file in the uri. required: true - name: head method: HEAD description: Factset Check the existence and retrieve the headers of a spefic media file outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: namespace in: path type: string description: The namespace of the media file required: true - name: scope in: path type: string description: The scope of the media file required: true - name: guid in: path type: string description: The GUID of the file being requested required: true - name: fileName in: path type: string description: The name you want to show for this file in the uri. required: true - name: ofs-v2-partners path: /ofs/v2/partners operations: - name: get method: GET description: Factset Retrieve a collection of Partner records. outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: limit in: query type: integer description: Limit the amount of records per page - name: page in: query type: integer description: Select which page to show - name: ofs-v2-partners-search path: /ofs/v2/partners/search operations: - name: post method: POST description: Factset Retrieve a collection of Partner records. outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: json - name: ofs-v2-partners-id path: /ofs/v2/partners/{id} operations: - name: get method: GET description: Factset Retrieve a specific Partner record. outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Globally unique identifier (GUID) of a partner record required: true - name: ofs-v2-products path: /ofs/v2/products operations: - name: get method: GET description: Factset Retrieve a collection of Product records. outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: limit in: query type: integer description: Limit the amount of records per page - name: page in: query type: integer description: Select which page to show - name: ofs-v2-products-search path: /ofs/v2/products/search operations: - name: post method: POST description: Factset Retrieve a collection of Product records. outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: json - name: ofs-v2-products-types path: /ofs/v2/products/types operations: - name: get method: GET description: Factset Retrieve a collection of the available Product Types along with the number of published products per type. outputRawFormat: json outputParameters: - name: result type: object value: $. - name: ofs-v2-products-id path: /ofs/v2/products/{id} operations: - name: get method: GET description: Factset Retrieve a specific Product record. outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Globally unique identifier (GUID) of a Product record required: true - name: ofs-v2-resources path: /ofs/v2/resources operations: - name: get method: GET description: Factset Retrieve a collection of Resource records. outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: limit in: query type: integer description: Limit the amount of records per page - name: page in: query type: integer description: Select which page to show - name: ofs-v2-resources-search path: /ofs/v2/resources/search operations: - name: post method: POST description: Factset Retrieve a collection of Resource records. outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: json - name: ofs-v2-resources-sections path: /ofs/v2/resources/sections operations: - name: get method: GET description: Factset Retrieve a collection of Resources Section records. outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: limit in: query type: integer description: Limit the amount of records per page - name: page in: query type: integer description: Select which page to show - name: ofs-v2-resources-sections-search path: /ofs/v2/resources/sections/search operations: - name: post method: POST description: Factset Retrieve a collection of Resources Section records. outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: json - name: ofs-v2-resources-sections-id path: /ofs/v2/resources/sections/{id} operations: - name: get method: GET description: Factset Retrieve a specific Resources Section record. outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Globally unique identifier (GUID) of a Resources Section record required: true - name: ofs-v2-resources-id path: /ofs/v2/resources/{id} operations: - name: get method: GET description: Factset Retrieve a specific Resource record. outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Globally unique identifier (GUID) of a Resource record required: true exposes: - type: rest namespace: open-marketplace-ofs-rest port: 8080 description: REST adapter for Factset Open:FactSet Marketplace API — Ofs. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/ofs/v2/attributes name: ofs-v2-attributes description: REST surface for ofs-v2-attributes. operations: - method: GET name: get description: Factset Retrieve a collection of Attribute records. call: open-marketplace-ofs.get with: limit: rest.limit page: rest.page outputParameters: - type: object mapping: $. - path: /v1/ofs/v2/attributes/groups name: ofs-v2-attributes-groups description: REST surface for ofs-v2-attributes-groups. operations: - method: GET name: get description: Factset Retrieve a collection of Attributes Group records. call: open-marketplace-ofs.get with: limit: rest.limit page: rest.page outputParameters: - type: object mapping: $. - path: /v1/ofs/v2/attributes/groups/search name: ofs-v2-attributes-groups-search description: REST surface for ofs-v2-attributes-groups-search. operations: - method: POST name: post description: Factset Retrieve a collection of Attributes Group records. call: open-marketplace-ofs.post with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/ofs/v2/attributes/groups/used name: ofs-v2-attributes-groups-used description: REST surface for ofs-v2-attributes-groups-used. operations: - method: GET name: get description: Factset Retrieve a collection of Attributes Group records in use. call: open-marketplace-ofs.get with: limit: rest.limit page: rest.page outputParameters: - type: object mapping: $. - path: /v1/ofs/v2/attributes/groups/{id} name: ofs-v2-attributes-groups-id description: REST surface for ofs-v2-attributes-groups-id. operations: - method: GET name: get description: Factset Retrieve a specific Attributes Group record. call: open-marketplace-ofs.get with: id: rest.id outputParameters: - type: object mapping: $. - path: /v1/ofs/v2/attributes/search name: ofs-v2-attributes-search description: REST surface for ofs-v2-attributes-search. operations: - method: POST name: post description: Factset Retrieve a collection of Attribute records. call: open-marketplace-ofs.post with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/ofs/v2/attributes/{id} name: ofs-v2-attributes-id description: REST surface for ofs-v2-attributes-id. operations: - method: GET name: get description: Factset Retrieve a collection of Attribute records. call: open-marketplace-ofs.get with: id: rest.id outputParameters: - type: object mapping: $. - path: /v1/ofs/v2/media/download/{namespace}/{scope}/{guid}/{filename} name: ofs-v2-media-download-namespace-scope-guid-filename description: REST surface for ofs-v2-media-download-namespace-scope-guid-fileName. operations: - method: GET name: get description: Factset Retrieve a specific media file call: open-marketplace-ofs.get with: namespace: rest.namespace scope: rest.scope guid: rest.guid fileName: rest.fileName outputParameters: - type: object mapping: $. - method: HEAD name: head description: Factset Check the existence and retrieve the headers of a spefic media file call: open-marketplace-ofs.head with: namespace: rest.namespace scope: rest.scope guid: rest.guid fileName: rest.fileName outputParameters: - type: object mapping: $. - path: /v1/ofs/v2/partners name: ofs-v2-partners description: REST surface for ofs-v2-partners. operations: - method: GET name: get description: Factset Retrieve a collection of Partner records. call: open-marketplace-ofs.get with: limit: rest.limit page: rest.page outputParameters: - type: object mapping: $. - path: /v1/ofs/v2/partners/search name: ofs-v2-partners-search description: REST surface for ofs-v2-partners-search. operations: - method: POST name: post description: Factset Retrieve a collection of Partner records. call: open-marketplace-ofs.post with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/ofs/v2/partners/{id} name: ofs-v2-partners-id description: REST surface for ofs-v2-partners-id. operations: - method: GET name: get description: Factset Retrieve a specific Partner record. call: open-marketplace-ofs.get with: id: rest.id outputParameters: - type: object mapping: $. - path: /v1/ofs/v2/products name: ofs-v2-products description: REST surface for ofs-v2-products. operations: - method: GET name: get description: Factset Retrieve a collection of Product records. call: open-marketplace-ofs.get with: limit: rest.limit page: rest.page outputParameters: - type: object mapping: $. - path: /v1/ofs/v2/products/search name: ofs-v2-products-search description: REST surface for ofs-v2-products-search. operations: - method: POST name: post description: Factset Retrieve a collection of Product records. call: open-marketplace-ofs.post with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/ofs/v2/products/types name: ofs-v2-products-types description: REST surface for ofs-v2-products-types. operations: - method: GET name: get description: Factset Retrieve a collection of the available Product Types along with the number of published products per type. call: open-marketplace-ofs.get outputParameters: - type: object mapping: $. - path: /v1/ofs/v2/products/{id} name: ofs-v2-products-id description: REST surface for ofs-v2-products-id. operations: - method: GET name: get description: Factset Retrieve a specific Product record. call: open-marketplace-ofs.get with: id: rest.id outputParameters: - type: object mapping: $. - path: /v1/ofs/v2/resources name: ofs-v2-resources description: REST surface for ofs-v2-resources. operations: - method: GET name: get description: Factset Retrieve a collection of Resource records. call: open-marketplace-ofs.get with: limit: rest.limit page: rest.page outputParameters: - type: object mapping: $. - path: /v1/ofs/v2/resources/search name: ofs-v2-resources-search description: REST surface for ofs-v2-resources-search. operations: - method: POST name: post description: Factset Retrieve a collection of Resource records. call: open-marketplace-ofs.post with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/ofs/v2/resources/sections name: ofs-v2-resources-sections description: REST surface for ofs-v2-resources-sections. operations: - method: GET name: get description: Factset Retrieve a collection of Resources Section records. call: open-marketplace-ofs.get with: limit: rest.limit page: rest.page outputParameters: - type: object mapping: $. - path: /v1/ofs/v2/resources/sections/search name: ofs-v2-resources-sections-search description: REST surface for ofs-v2-resources-sections-search. operations: - method: POST name: post description: Factset Retrieve a collection of Resources Section records. call: open-marketplace-ofs.post with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/ofs/v2/resources/sections/{id} name: ofs-v2-resources-sections-id description: REST surface for ofs-v2-resources-sections-id. operations: - method: GET name: get description: Factset Retrieve a specific Resources Section record. call: open-marketplace-ofs.get with: id: rest.id outputParameters: - type: object mapping: $. - path: /v1/ofs/v2/resources/{id} name: ofs-v2-resources-id description: REST surface for ofs-v2-resources-id. operations: - method: GET name: get description: Factset Retrieve a specific Resource record. call: open-marketplace-ofs.get with: id: rest.id outputParameters: - type: object mapping: $. - type: mcp namespace: open-marketplace-ofs-mcp port: 9090 transport: http description: MCP adapter for Factset Open:FactSet Marketplace API — Ofs. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: factset-retrieve-collection-attribute-records description: Factset Retrieve a collection of Attribute records. hints: readOnly: true destructive: false idempotent: true call: open-marketplace-ofs.get with: limit: tools.limit page: tools.page outputParameters: - type: object mapping: $. - name: factset-retrieve-collection-attributes-group description: Factset Retrieve a collection of Attributes Group records. hints: readOnly: true destructive: false idempotent: true call: open-marketplace-ofs.get with: limit: tools.limit page: tools.page outputParameters: - type: object mapping: $. - name: factset-retrieve-collection-attributes-group-2 description: Factset Retrieve a collection of Attributes Group records. hints: readOnly: true destructive: false idempotent: false call: open-marketplace-ofs.post with: body: tools.body outputParameters: - type: object mapping: $. - name: factset-retrieve-collection-attributes-group-3 description: Factset Retrieve a collection of Attributes Group records in use. hints: readOnly: true destructive: false idempotent: true call: open-marketplace-ofs.get with: limit: tools.limit page: tools.page outputParameters: - type: object mapping: $. - name: factset-retrieve-specific-attributes-group description: Factset Retrieve a specific Attributes Group record. hints: readOnly: true destructive: false idempotent: true call: open-marketplace-ofs.get with: id: tools.id outputParameters: - type: object mapping: $. - name: factset-retrieve-collection-attribute-records-2 description: Factset Retrieve a collection of Attribute records. hints: readOnly: true destructive: false idempotent: false call: open-marketplace-ofs.post with: body: tools.body outputParameters: - type: object mapping: $. - name: factset-retrieve-collection-attribute-records-3 description: Factset Retrieve a collection of Attribute records. hints: readOnly: true destructive: false idempotent: true call: open-marketplace-ofs.get with: id: tools.id outputParameters: - type: object mapping: $. - name: factset-retrieve-specific-media-file description: Factset Retrieve a specific media file hints: readOnly: true destructive: false idempotent: true call: open-marketplace-ofs.get with: namespace: tools.namespace scope: tools.scope guid: tools.guid fileName: tools.fileName outputParameters: - type: object mapping: $. - name: factset-check-existence-and-retrieve description: Factset Check the existence and retrieve the headers of a spefic media file hints: readOnly: false destructive: false idempotent: false call: open-marketplace-ofs.head with: namespace: tools.namespace scope: tools.scope guid: tools.guid fileName: tools.fileName outputParameters: - type: object mapping: $. - name: factset-retrieve-collection-partner-records description: Factset Retrieve a collection of Partner records. hints: readOnly: true destructive: false idempotent: true call: open-marketplace-ofs.get with: limit: tools.limit page: tools.page outputParameters: - type: object mapping: $. - name: factset-retrieve-collection-partner-records-2 description: Factset Retrieve a collection of Partner records. hints: readOnly: true destructive: false idempotent: false call: open-marketplace-ofs.post with: body: tools.body outputParameters: - type: object mapping: $. - name: factset-retrieve-specific-partner-record description: Factset Retrieve a specific Partner record. hints: readOnly: true destructive: false idempotent: true call: open-marketplace-ofs.get with: id: tools.id outputParameters: - type: object mapping: $. - name: factset-retrieve-collection-product-records description: Factset Retrieve a collection of Product records. hints: readOnly: true destructive: false idempotent: true call: open-marketplace-ofs.get with: limit: tools.limit page: tools.page outputParameters: - type: object mapping: $. - name: factset-retrieve-collection-product-records-2 description: Factset Retrieve a collection of Product records. hints: readOnly: true destructive: false idempotent: false call: open-marketplace-ofs.post with: body: tools.body outputParameters: - type: object mapping: $. - name: factset-retrieve-collection-available-product description: Factset Retrieve a collection of the available Product Types along with the number of published products per type. hints: readOnly: true destructive: false idempotent: true call: open-marketplace-ofs.get outputParameters: - type: object mapping: $. - name: factset-retrieve-specific-product-record description: Factset Retrieve a specific Product record. hints: readOnly: true destructive: false idempotent: true call: open-marketplace-ofs.get with: id: tools.id outputParameters: - type: object mapping: $. - name: factset-retrieve-collection-resource-records description: Factset Retrieve a collection of Resource records. hints: readOnly: true destructive: false idempotent: true call: open-marketplace-ofs.get with: limit: tools.limit page: tools.page outputParameters: - type: object mapping: $. - name: factset-retrieve-collection-resource-records-2 description: Factset Retrieve a collection of Resource records. hints: readOnly: true destructive: false idempotent: false call: open-marketplace-ofs.post with: body: tools.body outputParameters: - type: object mapping: $. - name: factset-retrieve-collection-resources-section description: Factset Retrieve a collection of Resources Section records. hints: readOnly: true destructive: false idempotent: true call: open-marketplace-ofs.get with: limit: tools.limit page: tools.page outputParameters: - type: object mapping: $. - name: factset-retrieve-collection-resources-section-2 description: Factset Retrieve a collection of Resources Section records. hints: readOnly: true destructive: false idempotent: false call: open-marketplace-ofs.post with: body: tools.body outputParameters: - type: object mapping: $. - name: factset-retrieve-specific-resources-section description: Factset Retrieve a specific Resources Section record. hints: readOnly: true destructive: false idempotent: true call: open-marketplace-ofs.get with: id: tools.id outputParameters: - type: object mapping: $. - name: factset-retrieve-specific-resource-record description: Factset Retrieve a specific Resource record. hints: readOnly: true destructive: false idempotent: true call: open-marketplace-ofs.get with: id: tools.id outputParameters: - type: object mapping: $.