Noun Project · Capability

Noun Project API V2 — Collection

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.

Run with Naftiko Noun ProjectCollectionsIcon Sets

What You Can Do

GET
Searchcollections — Search curated icon collections by query term.
/v1/collections
GET
Getcollection — Retrieve a single icon collection with full metadata and member icons.
/v1/collections/{collection_id}

MCP Tools

search-collections

Search curated icon collections by query term.

read-only idempotent
get-collection

Retrieve a single icon collection with full metadata and member icons.

read-only idempotent

Capability Spec

noun-project-collection.yaml Raw ↑
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: "$."