naftiko: 1.0.0-alpha2 info: label: FactSet Portfolio Metadata API — Account description: 'FactSet Portfolio Metadata API — Account. 10 operations. Lead operation: Account. Self-contained Naftiko capability covering one Factset business surface.' tags: - Factset - Account created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: FACTSET_API_KEY: FACTSET_API_KEY capability: consumes: - type: http namespace: portfolio-metadata-account baseUri: https://api.factset.com/analytics/portfolio-metadata/v1 description: FactSet Portfolio Metadata API — Account business capability. Self-contained, no shared references. resources: - name: account path: /account operations: - name: createaccount method: POST description: Create a new account outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: listaccount method: GET description: List account outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: path in: query type: string description: Directory to list - name: name in: query type: string description: Return only files whose name includes this query - name: description in: query type: string description: Return only files whose name includes this query - name: _paginationLimit in: query type: number description: Number of directory items to return - name: _paginationCursor in: query type: string description: Cursor used for paging. Fetch items after the specified cursor - name: account-composite path: /account-composite operations: - name: createaccountcomposite method: POST description: Create a new account composite outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: listaccountcomposite method: GET description: List account composite outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: path in: query type: string description: Directory to list - name: name in: query type: string description: Return only files whose name includes this query - name: description in: query type: string description: Return only files whose name includes this query - name: _paginationLimit in: query type: number description: Number of directory items to return - name: _paginationCursor in: query type: string description: Cursor used for paging. Fetch items after the specified cursor - name: account-composite-id path: /account-composite/{id} operations: - name: deleteaccountcomposite method: DELETE description: Remove a account composite outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Unique identifier for the account composite to be deleted required: true - name: reason in: query type: string description: User auditable reason that the account composite is being removed - name: readaccountcomposite method: GET description: Read a account composite outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Unique identifier of the account composite to be read required: true - name: updateaccountcomposite method: PUT description: Modify a account composite outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Unique identifier for the account composite to be updated required: true - name: body in: body type: object description: Request body (JSON). required: true - name: account-id path: /account/{id} operations: - name: deleteaccount method: DELETE description: Remove a account outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Unique identifier for the account to be deleted required: true - name: reason in: query type: string description: User auditable reason that the account is being removed - name: readaccount method: GET description: Read a account outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Unique identifier of the account to be read required: true - name: updateaccount method: PUT description: Modify a account outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: Unique identifier for the account to be updated required: true - name: body in: body type: object description: Request body (JSON). required: true authentication: type: bearer token: '{{env.FACTSET_API_KEY}}' exposes: - type: rest namespace: portfolio-metadata-account-rest port: 8080 description: REST adapter for FactSet Portfolio Metadata API — Account. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/account name: account description: REST surface for account. operations: - method: POST name: createaccount description: Create a new account call: portfolio-metadata-account.createaccount with: body: rest.body outputParameters: - type: object mapping: $. - method: GET name: listaccount description: List account call: portfolio-metadata-account.listaccount with: path: rest.path name: rest.name description: rest.description _paginationLimit: rest._paginationLimit _paginationCursor: rest._paginationCursor outputParameters: - type: object mapping: $. - path: /v1/account-composite name: account-composite description: REST surface for account-composite. operations: - method: POST name: createaccountcomposite description: Create a new account composite call: portfolio-metadata-account.createaccountcomposite with: body: rest.body outputParameters: - type: object mapping: $. - method: GET name: listaccountcomposite description: List account composite call: portfolio-metadata-account.listaccountcomposite with: path: rest.path name: rest.name description: rest.description _paginationLimit: rest._paginationLimit _paginationCursor: rest._paginationCursor outputParameters: - type: object mapping: $. - path: /v1/account-composite/{id} name: account-composite-id description: REST surface for account-composite-id. operations: - method: DELETE name: deleteaccountcomposite description: Remove a account composite call: portfolio-metadata-account.deleteaccountcomposite with: id: rest.id reason: rest.reason outputParameters: - type: object mapping: $. - method: GET name: readaccountcomposite description: Read a account composite call: portfolio-metadata-account.readaccountcomposite with: id: rest.id outputParameters: - type: object mapping: $. - method: PUT name: updateaccountcomposite description: Modify a account composite call: portfolio-metadata-account.updateaccountcomposite with: id: rest.id body: rest.body outputParameters: - type: object mapping: $. - path: /v1/account/{id} name: account-id description: REST surface for account-id. operations: - method: DELETE name: deleteaccount description: Remove a account call: portfolio-metadata-account.deleteaccount with: id: rest.id reason: rest.reason outputParameters: - type: object mapping: $. - method: GET name: readaccount description: Read a account call: portfolio-metadata-account.readaccount with: id: rest.id outputParameters: - type: object mapping: $. - method: PUT name: updateaccount description: Modify a account call: portfolio-metadata-account.updateaccount with: id: rest.id body: rest.body outputParameters: - type: object mapping: $. - type: mcp namespace: portfolio-metadata-account-mcp port: 9090 transport: http description: MCP adapter for FactSet Portfolio Metadata API — Account. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: create-new-account description: Create a new account hints: readOnly: false destructive: false idempotent: false call: portfolio-metadata-account.createaccount with: body: tools.body outputParameters: - type: object mapping: $. - name: list-account description: List account hints: readOnly: true destructive: false idempotent: true call: portfolio-metadata-account.listaccount with: path: tools.path name: tools.name description: tools.description _paginationLimit: tools._paginationLimit _paginationCursor: tools._paginationCursor outputParameters: - type: object mapping: $. - name: create-new-account-composite description: Create a new account composite hints: readOnly: false destructive: false idempotent: false call: portfolio-metadata-account.createaccountcomposite with: body: tools.body outputParameters: - type: object mapping: $. - name: list-account-composite description: List account composite hints: readOnly: true destructive: false idempotent: true call: portfolio-metadata-account.listaccountcomposite with: path: tools.path name: tools.name description: tools.description _paginationLimit: tools._paginationLimit _paginationCursor: tools._paginationCursor outputParameters: - type: object mapping: $. - name: remove-account-composite description: Remove a account composite hints: readOnly: false destructive: true idempotent: true call: portfolio-metadata-account.deleteaccountcomposite with: id: tools.id reason: tools.reason outputParameters: - type: object mapping: $. - name: read-account-composite description: Read a account composite hints: readOnly: true destructive: false idempotent: true call: portfolio-metadata-account.readaccountcomposite with: id: tools.id outputParameters: - type: object mapping: $. - name: modify-account-composite description: Modify a account composite hints: readOnly: false destructive: false idempotent: true call: portfolio-metadata-account.updateaccountcomposite with: id: tools.id body: tools.body outputParameters: - type: object mapping: $. - name: remove-account description: Remove a account hints: readOnly: false destructive: true idempotent: true call: portfolio-metadata-account.deleteaccount with: id: tools.id reason: tools.reason outputParameters: - type: object mapping: $. - name: read-account description: Read a account hints: readOnly: true destructive: false idempotent: true call: portfolio-metadata-account.readaccount with: id: tools.id outputParameters: - type: object mapping: $. - name: modify-account description: Modify a account hints: readOnly: false destructive: false idempotent: true call: portfolio-metadata-account.updateaccount with: id: tools.id body: tools.body outputParameters: - type: object mapping: $.