naftiko: "1.0.0-alpha2" info: label: "Noun Project API V2 — Collection" description: >- Collection — Search and retrieve curated icon collections (icon sets) from the Noun Project. 2 operations. Lead operation: Search Collections by query term. Self-contained Naftiko capability covering one Noun Project business surface. tags: - Noun Project - Collections - Icon Sets created: "2026-05-28" modified: "2026-05-28" binds: - namespace: env keys: NOUN_PROJECT_OAUTH_KEY: NOUN_PROJECT_OAUTH_KEY NOUN_PROJECT_OAUTH_SECRET: NOUN_PROJECT_OAUTH_SECRET capability: consumes: - type: http namespace: "noun-project-collection" baseUri: "https://api.thenounproject.com" description: "Noun Project API V2 — Collection business capability. Self-contained, no shared references." authentication: type: oauth1 consumerKey: "{{env.NOUN_PROJECT_OAUTH_KEY}}" consumerSecret: "{{env.NOUN_PROJECT_OAUTH_SECRET}}" signatureMethod: HMAC-SHA1 resources: - name: "collection-search" path: "/v2/collection" operations: - name: "searchCollections" method: GET description: "Search curated icon collections by query term." inputParameters: - name: query in: query type: string required: true description: "Search term used to match collection titles, tags, and descriptions." - name: blacklist in: query type: boolean required: false description: "When true, applies the client's configured blocklist to results." - name: limit in: query type: integer required: false description: "Maximum number of collections returned per page." - name: prev_page in: query type: string required: false description: "Cursor token for backward pagination." - name: next_page in: query type: string required: false description: "Cursor token for forward pagination." outputRawFormat: json outputParameters: - name: result type: object value: "$." - name: "collection-detail" path: "/v2/collection/{collection_id}" operations: - name: "getCollection" method: GET description: "Retrieve a single icon collection with full metadata and member icons." inputParameters: - name: collection_id in: path type: integer required: true description: "Numeric identifier of the collection." - name: blacklist in: query type: boolean required: false description: "When true, returns 404 if the collection is on the client's blocklist." - name: thumbnail_size in: query type: integer required: false description: "Pixel dimension for returned thumbnail URLs." - name: include_svg in: query type: boolean required: false description: "When true, includes raw SVG markup in each member icon." - name: limit in: query type: integer required: false description: "Maximum number of member icons returned per page." - name: prev_page in: query type: string required: false description: "Cursor token for backward pagination." - name: next_page in: query type: string required: false description: "Cursor token for forward pagination." outputRawFormat: json outputParameters: - name: result type: object value: "$." exposes: - type: rest namespace: "noun-project-collection-rest" port: 8080 description: "REST adapter for Noun Project API V2 — Collection. One Spectral-compliant resource per consumed operation." resources: - path: "/v1/collections" name: "collections" description: "REST surface for collection search." operations: - method: GET name: "searchCollections" description: "Search curated icon collections by query term." call: "noun-project-collection.searchCollections" with: query: "rest.query" blacklist: "rest.blacklist" limit: "rest.limit" prev_page: "rest.prev_page" next_page: "rest.next_page" outputParameters: - type: object mapping: "$." - path: "/v1/collections/{collection_id}" name: "collection-detail" description: "REST surface for retrieving a single collection." operations: - method: GET name: "getCollection" description: "Retrieve a single icon collection with full metadata and member icons." call: "noun-project-collection.getCollection" with: collection_id: "rest.collection_id" blacklist: "rest.blacklist" thumbnail_size: "rest.thumbnail_size" include_svg: "rest.include_svg" limit: "rest.limit" prev_page: "rest.prev_page" next_page: "rest.next_page" outputParameters: - type: object mapping: "$." - type: mcp namespace: "noun-project-collection-mcp" port: 9090 transport: http description: "MCP adapter for Noun Project API V2 — Collection. One tool per consumed operation." tools: - name: "search-collections" description: "Search curated icon collections by query term." hints: readOnly: true destructive: false idempotent: true call: "noun-project-collection.searchCollections" with: query: "tools.query" blacklist: "tools.blacklist" limit: "tools.limit" prev_page: "tools.prev_page" next_page: "tools.next_page" outputParameters: - type: object mapping: "$." - name: "get-collection" description: "Retrieve a single icon collection with full metadata and member icons." hints: readOnly: true destructive: false idempotent: true call: "noun-project-collection.getCollection" with: collection_id: "tools.collection_id" blacklist: "tools.blacklist" thumbnail_size: "tools.thumbnail_size" include_svg: "tools.include_svg" limit: "tools.limit" prev_page: "tools.prev_page" next_page: "tools.next_page" outputParameters: - type: object mapping: "$."