naftiko: 1.0.0-alpha2 info: label: FRED API — Categories description: 'FRED API — Categories. 6 operations. Lead operation: FRED Get a Category. Self-contained Naftiko capability covering one FRED business surface.' tags: - FRED - FRED - Categories created: '2026-05-28' modified: '2026-05-28' binds: - namespace: env keys: FRED_API_KEY: FRED_API_KEY capability: consumes: - type: http namespace: fred-categories baseUri: https://api.stlouisfed.org/fred description: FRED API — Categories business capability. Self-contained, no shared references. authentication: type: apikey key: api_key value: '{{env.FRED_API_KEY}}' placement: query resources: - name: category path: /category operations: - name: getCategory method: GET description: FRED Get a Category inputParameters: - name: api_key in: query type: string required: true description: 32-character lower-case alphanumeric FRED API key. - name: file_type in: query type: string required: false description: Response format. xml (default) or json. The observations endpoint additionally accepts xlsx and csv. - name: category_id in: query type: integer required: true description: Numeric ID of the FRED category to retrieve. outputRawFormat: json outputParameters: - name: result type: object value: $. - name: category-children path: /category/children operations: - name: getCategoryChildren method: GET description: FRED Get the Child Categories for a Category inputParameters: - name: api_key in: query type: string required: true description: 32-character lower-case alphanumeric FRED API key. - name: file_type in: query type: string required: false description: Response format. xml (default) or json. The observations endpoint additionally accepts xlsx and csv. - name: category_id in: query type: integer required: true description: Parent category ID. - name: realtime_start in: query type: string required: false description: Start of the real-time period (YYYY-MM-DD). Defaults to today. - name: realtime_end in: query type: string required: false description: End of the real-time period (YYYY-MM-DD). Defaults to today. outputRawFormat: json outputParameters: - name: result type: object value: $. - name: category-related path: /category/related operations: - name: getCategoryRelated method: GET description: FRED Get the Related Categories for a Category inputParameters: - name: api_key in: query type: string required: true description: 32-character lower-case alphanumeric FRED API key. - name: file_type in: query type: string required: false description: Response format. xml (default) or json. The observations endpoint additionally accepts xlsx and csv. - name: category_id in: query type: integer required: true description: The seed category ID. - name: realtime_start in: query type: string required: false description: Start of the real-time period (YYYY-MM-DD). Defaults to today. - name: realtime_end in: query type: string required: false description: End of the real-time period (YYYY-MM-DD). Defaults to today. outputRawFormat: json outputParameters: - name: result type: object value: $. - name: category-series path: /category/series operations: - name: getCategorySeries method: GET description: FRED Get the Series in a Category inputParameters: - name: api_key in: query type: string required: true description: 32-character lower-case alphanumeric FRED API key. - name: file_type in: query type: string required: false description: Response format. xml (default) or json. The observations endpoint additionally accepts xlsx and csv. - name: category_id in: query type: integer required: true description: The category to enumerate. - name: realtime_start in: query type: string required: false description: Start of the real-time period (YYYY-MM-DD). Defaults to today. - name: realtime_end in: query type: string required: false description: End of the real-time period (YYYY-MM-DD). Defaults to today. - name: limit in: query type: integer required: false description: Maximum number of results to return (1–1000). - name: offset in: query type: integer required: false description: Non-negative integer offset into the result set for pagination. - name: order_by in: query type: string required: false description: Field to order series results by. - name: sort_order in: query type: string required: false description: Sort order. asc (ascending, default) or desc (descending). - name: filter_variable in: query type: string required: false description: Attribute to filter series results by. - name: filter_value in: query type: string required: false description: Value of the filter_variable attribute to match. - name: tag_names in: query type: string required: false description: Semicolon-separated list of tag names to require. - name: exclude_tag_names in: query type: string required: false description: Semicolon-separated list of tag names to exclude. outputRawFormat: json outputParameters: - name: result type: object value: $. - name: category-tags path: /category/tags operations: - name: getCategoryTags method: GET description: FRED Get the Tags for a Category inputParameters: - name: api_key in: query type: string required: true description: 32-character lower-case alphanumeric FRED API key. - name: file_type in: query type: string required: false description: Response format. xml (default) or json. The observations endpoint additionally accepts xlsx and csv. - name: category_id in: query type: integer required: true description: The category to list tags for. - name: realtime_start in: query type: string required: false description: Start of the real-time period (YYYY-MM-DD). Defaults to today. - name: realtime_end in: query type: string required: false description: End of the real-time period (YYYY-MM-DD). Defaults to today. - name: tag_names in: query type: string required: false description: Semicolon-separated list of tag names to require. - name: tag_group_id in: query type: string required: false description: Group identifier for tags — freq, gen, geo, geot, rls, seas, src. - name: search_text in: query type: string required: false description: Words to match against tag names and descriptions. - name: limit in: query type: integer required: false description: Maximum number of results to return (1–1000). - name: offset in: query type: integer required: false description: Non-negative integer offset into the result set for pagination. - name: order_by in: query type: string required: false description: Field to order tag results by. - name: sort_order in: query type: string required: false description: Sort order. asc (ascending, default) or desc (descending). outputRawFormat: json outputParameters: - name: result type: object value: $. - name: category-related-tags path: /category/related_tags operations: - name: getCategoryRelatedTags method: GET description: FRED Get the Related Tags for a Category inputParameters: - name: api_key in: query type: string required: true description: 32-character lower-case alphanumeric FRED API key. - name: file_type in: query type: string required: false description: Response format. xml (default) or json. The observations endpoint additionally accepts xlsx and csv. - name: category_id in: query type: integer required: true description: Seed category. - name: realtime_start in: query type: string required: false description: Start of the real-time period (YYYY-MM-DD). Defaults to today. - name: realtime_end in: query type: string required: false description: End of the real-time period (YYYY-MM-DD). Defaults to today. - name: tag_names in: query type: string required: false description: Semicolon-separated list of tag names to require. - name: exclude_tag_names in: query type: string required: false description: Semicolon-separated list of tag names to exclude. - name: tag_group_id in: query type: string required: false description: Group identifier for tags — freq, gen, geo, geot, rls, seas, src. - name: search_text in: query type: string required: false description: Words to match against tag names and descriptions. - name: limit in: query type: integer required: false description: Maximum number of results to return (1–1000). - name: offset in: query type: integer required: false description: Non-negative integer offset into the result set for pagination. - name: order_by in: query type: string required: false description: Field to order tag results by. - name: sort_order in: query type: string required: false description: Sort order. asc (ascending, default) or desc (descending). outputRawFormat: json outputParameters: - name: result type: object value: $. exposes: - type: rest namespace: fred-categories-rest port: 8080 description: REST adapter for FRED API — Categories. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/category name: category description: REST surface for /category. operations: - method: GET name: getCategory description: FRED Get a Category call: fred-categories.getCategory with: api_key: rest.api_key file_type: rest.file_type category_id: rest.category_id outputParameters: - type: object mapping: $. - path: /v1/category/children name: category-children description: REST surface for /category/children. operations: - method: GET name: getCategoryChildren description: FRED Get the Child Categories for a Category call: fred-categories.getCategoryChildren with: api_key: rest.api_key file_type: rest.file_type category_id: rest.category_id realtime_start: rest.realtime_start realtime_end: rest.realtime_end outputParameters: - type: object mapping: $. - path: /v1/category/related name: category-related description: REST surface for /category/related. operations: - method: GET name: getCategoryRelated description: FRED Get the Related Categories for a Category call: fred-categories.getCategoryRelated with: api_key: rest.api_key file_type: rest.file_type category_id: rest.category_id realtime_start: rest.realtime_start realtime_end: rest.realtime_end outputParameters: - type: object mapping: $. - path: /v1/category/series name: category-series description: REST surface for /category/series. operations: - method: GET name: getCategorySeries description: FRED Get the Series in a Category call: fred-categories.getCategorySeries with: api_key: rest.api_key file_type: rest.file_type category_id: rest.category_id realtime_start: rest.realtime_start realtime_end: rest.realtime_end limit: rest.limit offset: rest.offset order_by: rest.order_by sort_order: rest.sort_order filter_variable: rest.filter_variable filter_value: rest.filter_value tag_names: rest.tag_names exclude_tag_names: rest.exclude_tag_names outputParameters: - type: object mapping: $. - path: /v1/category/tags name: category-tags description: REST surface for /category/tags. operations: - method: GET name: getCategoryTags description: FRED Get the Tags for a Category call: fred-categories.getCategoryTags with: api_key: rest.api_key file_type: rest.file_type category_id: rest.category_id realtime_start: rest.realtime_start realtime_end: rest.realtime_end tag_names: rest.tag_names tag_group_id: rest.tag_group_id search_text: rest.search_text limit: rest.limit offset: rest.offset order_by: rest.order_by sort_order: rest.sort_order outputParameters: - type: object mapping: $. - path: /v1/category/related-tags name: category-related-tags description: REST surface for /category/related_tags. operations: - method: GET name: getCategoryRelatedTags description: FRED Get the Related Tags for a Category call: fred-categories.getCategoryRelatedTags with: api_key: rest.api_key file_type: rest.file_type category_id: rest.category_id realtime_start: rest.realtime_start realtime_end: rest.realtime_end tag_names: rest.tag_names exclude_tag_names: rest.exclude_tag_names tag_group_id: rest.tag_group_id search_text: rest.search_text limit: rest.limit offset: rest.offset order_by: rest.order_by sort_order: rest.sort_order outputParameters: - type: object mapping: $. - type: mcp namespace: fred-categories-mcp port: 9090 transport: http description: MCP adapter for FRED API — Categories. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: get-category description: FRED Get a Category hints: readOnly: true destructive: false idempotent: true call: fred-categories.getCategory with: api_key: tools.api_key file_type: tools.file_type category_id: tools.category_id outputParameters: - type: object mapping: $. - name: get-child-categories-category description: FRED Get the Child Categories for a Category hints: readOnly: true destructive: false idempotent: true call: fred-categories.getCategoryChildren with: api_key: tools.api_key file_type: tools.file_type category_id: tools.category_id realtime_start: tools.realtime_start realtime_end: tools.realtime_end outputParameters: - type: object mapping: $. - name: get-related-categories-category description: FRED Get the Related Categories for a Category hints: readOnly: true destructive: false idempotent: true call: fred-categories.getCategoryRelated with: api_key: tools.api_key file_type: tools.file_type category_id: tools.category_id realtime_start: tools.realtime_start realtime_end: tools.realtime_end outputParameters: - type: object mapping: $. - name: get-series-category description: FRED Get the Series in a Category hints: readOnly: true destructive: false idempotent: true call: fred-categories.getCategorySeries with: api_key: tools.api_key file_type: tools.file_type category_id: tools.category_id realtime_start: tools.realtime_start realtime_end: tools.realtime_end limit: tools.limit offset: tools.offset order_by: tools.order_by sort_order: tools.sort_order filter_variable: tools.filter_variable filter_value: tools.filter_value tag_names: tools.tag_names exclude_tag_names: tools.exclude_tag_names outputParameters: - type: object mapping: $. - name: get-tags-category description: FRED Get the Tags for a Category hints: readOnly: true destructive: false idempotent: true call: fred-categories.getCategoryTags with: api_key: tools.api_key file_type: tools.file_type category_id: tools.category_id realtime_start: tools.realtime_start realtime_end: tools.realtime_end tag_names: tools.tag_names tag_group_id: tools.tag_group_id search_text: tools.search_text limit: tools.limit offset: tools.offset order_by: tools.order_by sort_order: tools.sort_order outputParameters: - type: object mapping: $. - name: get-related-tags-category description: FRED Get the Related Tags for a Category hints: readOnly: true destructive: false idempotent: true call: fred-categories.getCategoryRelatedTags with: api_key: tools.api_key file_type: tools.file_type category_id: tools.category_id realtime_start: tools.realtime_start realtime_end: tools.realtime_end tag_names: tools.tag_names exclude_tag_names: tools.exclude_tag_names tag_group_id: tools.tag_group_id search_text: tools.search_text limit: tools.limit offset: tools.offset order_by: tools.order_by sort_order: tools.sort_order outputParameters: - type: object mapping: $.