naftiko: 1.0.0-alpha2 info: label: FactSet Vermilion API — Tenant description: 'FactSet Vermilion API — Tenant. 11 operations. Lead operation: Factset Lists All Datasources. Self-contained Naftiko capability covering one Factset business surface.' tags: - Factset - Tenant created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: FACTSET_API_KEY: FACTSET_API_KEY capability: consumes: - type: http namespace: vermilion-tenant baseUri: '' description: FactSet Vermilion API — Tenant business capability. Self-contained, no shared references. resources: - name: v1-tenant-data-sources path: /v1/{tenant}/data-sources operations: - name: getalldatasources method: GET description: Factset Lists All Datasources outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: tenant in: path type: string description: The code of the tenancy required: true - name: _sort in: query type: array description: The column to sort on. Append - to sort in descending order. If parameter is not given, no sorting will be done - name: _paginationLimit in: query type: integer description: Non-negative maximum number of entries to return. Default is 25 - name: _paginationOffset in: query type: integer description: Non-negative number of entries to skip. Default is 0 - name: v1-tenant-data-sources-dataSourceCode path: /v1/{tenant}/data-sources/{dataSourceCode} operations: - name: getdatasourcebycode method: GET description: Factset Gets a Datasource outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: tenant in: path type: string description: The code of the tenancy required: true - name: dataSourceCode in: path type: string description: The code of the datasource required: true - name: v1-tenant-data-sources-dataSourceCode-data path: /v1/{tenant}/data-sources/{dataSourceCode}/data operations: - name: getdatasourcedata method: GET description: Factset Gets the Data for the Datasource outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: tenant in: path type: string description: The code of the tenancy required: true - name: dataSourceCode in: path type: string description: The code of the datasource required: true - name: entityCodes in: query type: string description: 'A series of query parameter used to filter the data for a datasource. This represents the entities for the datasource. E.g.: entityCodes=ACCOUNT&entityCodes=FUN' - name: entityKeys in: query type: string description: 'A series of query parameter used to filter the data for a datasource. This is the entity key value for an entity selection. E.g.: entityKeys=1&entityKeys=Test2' - name: _paginationLimit in: query type: integer description: Non-negative maximum number of entries to return. Default is 25 - name: _paginationOffset in: query type: integer description: Non-negative number of entries to skip. Default is 0 - name: v1-tenant-entities-entityCode-values path: /v1/{tenant}/entities/{entityCode}/values operations: - name: getentityvaluesbycode method: GET description: Factset Gets the Entity Values outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: tenant in: path type: string description: The code of the tenancy required: true - name: entityCode in: path type: string description: The code of the entity required: true - name: _sort in: query type: array description: The entity field to sort on. Can only be sorted on entity key, description or secondary key fields. Append "-" to sort in descending order. If no parameter give - name: _paginationLimit in: query type: integer description: Non-negative maximum number of entries to return. Default is 25 - name: _paginationOffset in: query type: integer description: Non-negative number of entries to skip. Default is 0 - name: showAll in: query type: integer description: Whether to show all field values for each entity row. Value should either be 1 or 0. Default is 0 (false) - name: v1-tenant-report-instances path: /v1/{tenant}/report-instances operations: - name: getallreportinstances method: GET description: Factset Gets a List of Report Instances outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: tenant in: path type: string description: The code of the tenancy required: true - name: reportDefinitionCode in: query type: string description: Acts as a filter for the retrieval process. Filters the report instances that match the report definition code - name: entityCodes in: query type: string description: 'A series of query parameters used to filter the report instances by entity code. E.g: entityCode=DATE&entityCode=SYSTEM_LANG' - name: entityKeys in: query type: string description: 'A series of query parameters used to filter the report instances by entity keys. E.g: entityKey=en-gb' - name: sectionFilter in: query type: string description: Acts as a filter for the retrieval process. Filters the report instances that match the section filter - name: outputFormat in: query type: string description: Acts as a filter for the retrieval process. Filters the report instances that match the output format - name: _sort in: query type: array description: The column to sort on. Append - to sort in descending order. If parameter is not given, sorting will be based on the report instance id in descending order - name: _paginationLimit in: query type: integer description: Non-negative maximum number of entries to return - name: _paginationOffset in: query type: integer description: Non-negative number of entries to skip - name: v1-tenant-report-instances-reportInstanceId path: /v1/{tenant}/report-instances/{reportInstanceId} operations: - name: cancelreport method: DELETE description: Factset Cancels a Report Generation outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: tenant in: path type: string description: The code of the tenancy required: true - name: reportInstanceId in: path type: string description: The id of the report instance required: true - name: getreportinstancebyid method: GET description: Factset Gets a Report Instance Based on the Id outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: reportInstanceId in: path type: string description: The ID of the report instance required: true - name: tenant in: path type: string description: The code of the tenancy required: true - name: v1-tenant-report-instances-reportInstanceId-logs path: /v1/{tenant}/report-instances/{reportInstanceId}/logs operations: - name: getreportgenerationlogs method: GET description: Factset Gets a List of Logs for the Report Instance Generation outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: tenant in: path type: string description: The code of the tenancy required: true - name: reportInstanceId in: path type: string description: Used to validate that report file name belongs to the report instance passed required: true - name: errorsOnly in: query type: string description: 'If the parameter is set to true the endpoint should return just errors and warnings E.g: errorsOnly=true' - name: _sort in: query type: array description: The column to sort on. Can add - to sort - name: _paginationLimit in: query type: integer description: Non-negative maximum number of entries to return - name: _paginationOffset in: query type: integer description: Non-negative number of entries to skip - name: v1-tenant-report-instances-reportInstanceId-results-reportFileName path: /v1/{tenant}/report-instances/{reportInstanceId}/results/{reportFileName} operations: - name: getreportfile method: GET description: Factset Gets the Generated File outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: tenant in: path type: string description: The code of the tenancy required: true - name: reportInstanceId in: path type: string description: Used to validate that report file name belongs to the report instance passed required: true - name: reportFileName in: path type: string description: 'The report file name that has to be retrieved. report file name. E.g: xyz.pdf' required: true - name: v1-tenant-reports path: /v1/{tenant}/reports operations: - name: getallreportdefinitions method: GET description: Factset Gets All Report Definitions outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: tenant in: path type: string description: The code of the tenancy required: true - name: _sort in: query type: array description: The column to sort on. Can add - to sort - name: _paginationLimit in: query type: integer description: Non-negative maximum number of entries to return - name: _paginationOffset in: query type: integer description: Non-negative number of entries to skip - name: v1-tenant-reports-reportDefinitionCode path: /v1/{tenant}/reports/{reportDefinitionCode} operations: - name: getreportdefinitionbycode method: GET description: Factset Gets a Report Definition outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: tenant in: path type: string description: The code of the tenancy required: true - name: reportDefinitionCode in: path type: string description: The code of the report definition required: true authentication: type: bearer token: '{{env.FACTSET_API_KEY}}' exposes: - type: rest namespace: vermilion-tenant-rest port: 8080 description: REST adapter for FactSet Vermilion API — Tenant. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/v1/{tenant}/data-sources name: v1-tenant-data-sources description: REST surface for v1-tenant-data-sources. operations: - method: GET name: getalldatasources description: Factset Lists All Datasources call: vermilion-tenant.getalldatasources with: tenant: rest.tenant _sort: rest._sort _paginationLimit: rest._paginationLimit _paginationOffset: rest._paginationOffset outputParameters: - type: object mapping: $. - path: /v1/v1/{tenant}/data-sources/{datasourcecode} name: v1-tenant-data-sources-datasourcecode description: REST surface for v1-tenant-data-sources-dataSourceCode. operations: - method: GET name: getdatasourcebycode description: Factset Gets a Datasource call: vermilion-tenant.getdatasourcebycode with: tenant: rest.tenant dataSourceCode: rest.dataSourceCode outputParameters: - type: object mapping: $. - path: /v1/v1/{tenant}/data-sources/{datasourcecode}/data name: v1-tenant-data-sources-datasourcecode-data description: REST surface for v1-tenant-data-sources-dataSourceCode-data. operations: - method: GET name: getdatasourcedata description: Factset Gets the Data for the Datasource call: vermilion-tenant.getdatasourcedata with: tenant: rest.tenant dataSourceCode: rest.dataSourceCode entityCodes: rest.entityCodes entityKeys: rest.entityKeys _paginationLimit: rest._paginationLimit _paginationOffset: rest._paginationOffset outputParameters: - type: object mapping: $. - path: /v1/v1/{tenant}/entities/{entitycode}/values name: v1-tenant-entities-entitycode-values description: REST surface for v1-tenant-entities-entityCode-values. operations: - method: GET name: getentityvaluesbycode description: Factset Gets the Entity Values call: vermilion-tenant.getentityvaluesbycode with: tenant: rest.tenant entityCode: rest.entityCode _sort: rest._sort _paginationLimit: rest._paginationLimit _paginationOffset: rest._paginationOffset showAll: rest.showAll outputParameters: - type: object mapping: $. - path: /v1/v1/{tenant}/report-instances name: v1-tenant-report-instances description: REST surface for v1-tenant-report-instances. operations: - method: GET name: getallreportinstances description: Factset Gets a List of Report Instances call: vermilion-tenant.getallreportinstances with: tenant: rest.tenant reportDefinitionCode: rest.reportDefinitionCode entityCodes: rest.entityCodes entityKeys: rest.entityKeys sectionFilter: rest.sectionFilter outputFormat: rest.outputFormat _sort: rest._sort _paginationLimit: rest._paginationLimit _paginationOffset: rest._paginationOffset outputParameters: - type: object mapping: $. - path: /v1/v1/{tenant}/report-instances/{reportinstanceid} name: v1-tenant-report-instances-reportinstanceid description: REST surface for v1-tenant-report-instances-reportInstanceId. operations: - method: DELETE name: cancelreport description: Factset Cancels a Report Generation call: vermilion-tenant.cancelreport with: tenant: rest.tenant reportInstanceId: rest.reportInstanceId outputParameters: - type: object mapping: $. - method: GET name: getreportinstancebyid description: Factset Gets a Report Instance Based on the Id call: vermilion-tenant.getreportinstancebyid with: reportInstanceId: rest.reportInstanceId tenant: rest.tenant outputParameters: - type: object mapping: $. - path: /v1/v1/{tenant}/report-instances/{reportinstanceid}/logs name: v1-tenant-report-instances-reportinstanceid-logs description: REST surface for v1-tenant-report-instances-reportInstanceId-logs. operations: - method: GET name: getreportgenerationlogs description: Factset Gets a List of Logs for the Report Instance Generation call: vermilion-tenant.getreportgenerationlogs with: tenant: rest.tenant reportInstanceId: rest.reportInstanceId errorsOnly: rest.errorsOnly _sort: rest._sort _paginationLimit: rest._paginationLimit _paginationOffset: rest._paginationOffset outputParameters: - type: object mapping: $. - path: /v1/v1/{tenant}/report-instances/{reportinstanceid}/results/{reportfilename} name: v1-tenant-report-instances-reportinstanceid-results-reportfilename description: REST surface for v1-tenant-report-instances-reportInstanceId-results-reportFileName. operations: - method: GET name: getreportfile description: Factset Gets the Generated File call: vermilion-tenant.getreportfile with: tenant: rest.tenant reportInstanceId: rest.reportInstanceId reportFileName: rest.reportFileName outputParameters: - type: object mapping: $. - path: /v1/v1/{tenant}/reports name: v1-tenant-reports description: REST surface for v1-tenant-reports. operations: - method: GET name: getallreportdefinitions description: Factset Gets All Report Definitions call: vermilion-tenant.getallreportdefinitions with: tenant: rest.tenant _sort: rest._sort _paginationLimit: rest._paginationLimit _paginationOffset: rest._paginationOffset outputParameters: - type: object mapping: $. - path: /v1/v1/{tenant}/reports/{reportdefinitioncode} name: v1-tenant-reports-reportdefinitioncode description: REST surface for v1-tenant-reports-reportDefinitionCode. operations: - method: GET name: getreportdefinitionbycode description: Factset Gets a Report Definition call: vermilion-tenant.getreportdefinitionbycode with: tenant: rest.tenant reportDefinitionCode: rest.reportDefinitionCode outputParameters: - type: object mapping: $. - type: mcp namespace: vermilion-tenant-mcp port: 9090 transport: http description: MCP adapter for FactSet Vermilion API — Tenant. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: factset-lists-all-datasources description: Factset Lists All Datasources hints: readOnly: true destructive: false idempotent: true call: vermilion-tenant.getalldatasources with: tenant: tools.tenant _sort: tools._sort _paginationLimit: tools._paginationLimit _paginationOffset: tools._paginationOffset outputParameters: - type: object mapping: $. - name: factset-gets-datasource description: Factset Gets a Datasource hints: readOnly: true destructive: false idempotent: true call: vermilion-tenant.getdatasourcebycode with: tenant: tools.tenant dataSourceCode: tools.dataSourceCode outputParameters: - type: object mapping: $. - name: factset-gets-data-datasource description: Factset Gets the Data for the Datasource hints: readOnly: true destructive: false idempotent: true call: vermilion-tenant.getdatasourcedata with: tenant: tools.tenant dataSourceCode: tools.dataSourceCode entityCodes: tools.entityCodes entityKeys: tools.entityKeys _paginationLimit: tools._paginationLimit _paginationOffset: tools._paginationOffset outputParameters: - type: object mapping: $. - name: factset-gets-entity-values description: Factset Gets the Entity Values hints: readOnly: true destructive: false idempotent: true call: vermilion-tenant.getentityvaluesbycode with: tenant: tools.tenant entityCode: tools.entityCode _sort: tools._sort _paginationLimit: tools._paginationLimit _paginationOffset: tools._paginationOffset showAll: tools.showAll outputParameters: - type: object mapping: $. - name: factset-gets-list-report-instances description: Factset Gets a List of Report Instances hints: readOnly: true destructive: false idempotent: true call: vermilion-tenant.getallreportinstances with: tenant: tools.tenant reportDefinitionCode: tools.reportDefinitionCode entityCodes: tools.entityCodes entityKeys: tools.entityKeys sectionFilter: tools.sectionFilter outputFormat: tools.outputFormat _sort: tools._sort _paginationLimit: tools._paginationLimit _paginationOffset: tools._paginationOffset outputParameters: - type: object mapping: $. - name: factset-cancels-report-generation description: Factset Cancels a Report Generation hints: readOnly: false destructive: true idempotent: true call: vermilion-tenant.cancelreport with: tenant: tools.tenant reportInstanceId: tools.reportInstanceId outputParameters: - type: object mapping: $. - name: factset-gets-report-instance-based description: Factset Gets a Report Instance Based on the Id hints: readOnly: true destructive: false idempotent: true call: vermilion-tenant.getreportinstancebyid with: reportInstanceId: tools.reportInstanceId tenant: tools.tenant outputParameters: - type: object mapping: $. - name: factset-gets-list-logs-report description: Factset Gets a List of Logs for the Report Instance Generation hints: readOnly: true destructive: false idempotent: true call: vermilion-tenant.getreportgenerationlogs with: tenant: tools.tenant reportInstanceId: tools.reportInstanceId errorsOnly: tools.errorsOnly _sort: tools._sort _paginationLimit: tools._paginationLimit _paginationOffset: tools._paginationOffset outputParameters: - type: object mapping: $. - name: factset-gets-generated-file description: Factset Gets the Generated File hints: readOnly: true destructive: false idempotent: true call: vermilion-tenant.getreportfile with: tenant: tools.tenant reportInstanceId: tools.reportInstanceId reportFileName: tools.reportFileName outputParameters: - type: object mapping: $. - name: factset-gets-all-report-definitions description: Factset Gets All Report Definitions hints: readOnly: true destructive: false idempotent: true call: vermilion-tenant.getallreportdefinitions with: tenant: tools.tenant _sort: tools._sort _paginationLimit: tools._paginationLimit _paginationOffset: tools._paginationOffset outputParameters: - type: object mapping: $. - name: factset-gets-report-definition description: Factset Gets a Report Definition hints: readOnly: true destructive: false idempotent: true call: vermilion-tenant.getreportdefinitionbycode with: tenant: tools.tenant reportDefinitionCode: tools.reportDefinitionCode outputParameters: - type: object mapping: $.