Factset · Capability

FactSet Portfolio Metadata API — Defined

FactSet Portfolio Metadata API — Defined. 4 operations. Lead operation: Defined. Self-contained Naftiko capability covering one Factset business surface.

Run with Naftiko FactsetDefined

What You Can Do

GET
Listuserdefinedfields — List user defined fields
/v1/user-defined-field
GET
Listuserdefinedfieldgroups — List user defined groups
/v1/user-defined-field-group
GET
Readuserdefinedgroup — Read a specific user defined field group and list its fields.
/v1/user-defined-field-group/{id}
GET
Readuserdefinedfield — Read a user defined field
/v1/user-defined-field/{id}

MCP Tools

list-user-defined-fields

List user defined fields

read-only idempotent
list-user-defined-groups

List user defined groups

read-only idempotent
read-specific-user-defined-field

Read a specific user defined field group and list its fields.

read-only idempotent
read-user-defined-field

Read a user defined field

read-only idempotent

Capability Spec

portfolio-metadata-defined.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: FactSet Portfolio Metadata API — Defined
  description: 'FactSet Portfolio Metadata API — Defined. 4 operations. Lead operation: Defined. Self-contained Naftiko capability
    covering one Factset business surface.'
  tags:
  - Factset
  - Defined
  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-defined
    baseUri: https://api.factset.com/analytics/portfolio-metadata/v1
    description: FactSet Portfolio Metadata API — Defined business capability. Self-contained, no shared references.
    resources:
    - name: user-defined-field
      path: /user-defined-field
      operations:
      - name: listuserdefinedfields
        method: GET
        description: List user defined fields
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: database
          in: query
          type: string
          description: Database where the fields are defined.
        - name: name
          in: query
          type: string
          description: Return only fields whose name includes this query
        - name: group
          in: query
          type: string
          description: Return only fields whose group includes this query
        - name: _paginationLimit
          in: query
          type: number
          description: Number of fields to return
        - name: _paginationCursor
          in: query
          type: string
          description: Cursor used for paging.  Fetch items after the specified cursor
    - name: user-defined-field-group
      path: /user-defined-field-group
      operations:
      - name: listuserdefinedfieldgroups
        method: GET
        description: List user defined groups
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: name
          in: query
          type: string
          description: Return only files whose name includes this query
        - name: _paginationLimit
          in: query
          type: number
          description: Number of groups to return
        - name: _paginationCursor
          in: query
          type: string
          description: Cursor used for paging.  Fetch items after the specified cursor
    - name: user-defined-field-group-id
      path: /user-defined-field-group/{id}
      operations:
      - name: readuserdefinedgroup
        method: GET
        description: Read a specific user defined field group and list its fields.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: Unique identifer for the group to be read.
          required: true
        - name: _paginationLimit
          in: query
          type: number
          description: Number of fields to list from this group
        - name: _paginationCursor
          in: query
          type: string
          description: Cursor used for paging.  Fetch fields after the specified cursor
    - name: user-defined-field-id
      path: /user-defined-field/{id}
      operations:
      - name: readuserdefinedfield
        method: GET
        description: Read a user defined field
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: Unique identifier of the user defined field to be read
          required: true
    authentication:
      type: bearer
      token: '{{env.FACTSET_API_KEY}}'
  exposes:
  - type: rest
    namespace: portfolio-metadata-defined-rest
    port: 8080
    description: REST adapter for FactSet Portfolio Metadata API — Defined. One Spectral-compliant resource per consumed operation,
      prefixed with /v1.
    resources:
    - path: /v1/user-defined-field
      name: user-defined-field
      description: REST surface for user-defined-field.
      operations:
      - method: GET
        name: listuserdefinedfields
        description: List user defined fields
        call: portfolio-metadata-defined.listuserdefinedfields
        with:
          database: rest.database
          name: rest.name
          group: rest.group
          _paginationLimit: rest._paginationLimit
          _paginationCursor: rest._paginationCursor
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/user-defined-field-group
      name: user-defined-field-group
      description: REST surface for user-defined-field-group.
      operations:
      - method: GET
        name: listuserdefinedfieldgroups
        description: List user defined groups
        call: portfolio-metadata-defined.listuserdefinedfieldgroups
        with:
          name: rest.name
          _paginationLimit: rest._paginationLimit
          _paginationCursor: rest._paginationCursor
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/user-defined-field-group/{id}
      name: user-defined-field-group-id
      description: REST surface for user-defined-field-group-id.
      operations:
      - method: GET
        name: readuserdefinedgroup
        description: Read a specific user defined field group and list its fields.
        call: portfolio-metadata-defined.readuserdefinedgroup
        with:
          id: rest.id
          _paginationLimit: rest._paginationLimit
          _paginationCursor: rest._paginationCursor
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/user-defined-field/{id}
      name: user-defined-field-id
      description: REST surface for user-defined-field-id.
      operations:
      - method: GET
        name: readuserdefinedfield
        description: Read a user defined field
        call: portfolio-metadata-defined.readuserdefinedfield
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: portfolio-metadata-defined-mcp
    port: 9090
    transport: http
    description: MCP adapter for FactSet Portfolio Metadata API — Defined. One tool per consumed operation, routed inline
      through this capability's consumes block.
    tools:
    - name: list-user-defined-fields
      description: List user defined fields
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: portfolio-metadata-defined.listuserdefinedfields
      with:
        database: tools.database
        name: tools.name
        group: tools.group
        _paginationLimit: tools._paginationLimit
        _paginationCursor: tools._paginationCursor
      outputParameters:
      - type: object
        mapping: $.
    - name: list-user-defined-groups
      description: List user defined groups
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: portfolio-metadata-defined.listuserdefinedfieldgroups
      with:
        name: tools.name
        _paginationLimit: tools._paginationLimit
        _paginationCursor: tools._paginationCursor
      outputParameters:
      - type: object
        mapping: $.
    - name: read-specific-user-defined-field
      description: Read a specific user defined field group and list its fields.
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: portfolio-metadata-defined.readuserdefinedgroup
      with:
        id: tools.id
        _paginationLimit: tools._paginationLimit
        _paginationCursor: tools._paginationCursor
      outputParameters:
      - type: object
        mapping: $.
    - name: read-user-defined-field
      description: Read a user defined field
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: portfolio-metadata-defined.readuserdefinedfield
      with:
        id: tools.id
      outputParameters:
      - type: object
        mapping: $.