Giphy · Capability

GIPHY API — Search Discovery

GIPHY — Search Discovery. 3 operations. Lead operation: Tag autocompletion for a partial search term. Also covers related search terms and trending search queries. Self-contained Naftiko capability covering one GIPHY business surface.

Run with Naftiko GIPHYSearchDiscovery

What You Can Do

GET
Autocompletesearchtags — Autocomplete tags.
/v1/search-tags
GET
Getrelatedsearchterms — Get related search terms.
/v1/related-tags/{term}
GET
Gettrendingsearches — Get trending searches.
/v1/trending-searches

MCP Tools

autocomplete-search-tags

Autocomplete search tags for a partial term.

read-only idempotent
get-related-search-terms

Get related search terms.

read-only idempotent
get-trending-searches

Get most popular search terms across GIPHY.

read-only idempotent

Capability Spec

giphy-search-discovery.yaml Raw ↑
naftiko: "1.0.0-alpha2"

info:
  label: "GIPHY API — Search Discovery"
  description: >-
    GIPHY — Search Discovery. 3 operations. Lead operation: Tag autocompletion for
    a partial search term. Also covers related search terms and trending search
    queries. Self-contained Naftiko capability covering one GIPHY business surface.
  tags:
    - GIPHY
    - Search
    - Discovery
  created: "2026-05-30"
  modified: "2026-05-30"

binds:
  - namespace: env
    keys:
      GIPHY_API_KEY: GIPHY_API_KEY

capability:

  consumes:
    - type: http
      namespace: "giphy-search-discovery"
      baseUri: "https://api.giphy.com"
      description: "GIPHY API — Search Discovery business capability."
      authentication:
        type: apikey
        key: api_key
        value: "{{env.GIPHY_API_KEY}}"
        placement: query
      resources:
        - name: "search-tags"
          path: "/v1/gifs/search/tags"
          operations:
            - name: "autocompleteSearchTags"
              method: GET
              description: "Return tag suggestions for a partial search term."
              inputParameters:
                - { name: q, in: query, type: string, required: true, description: "Partial search term." }
                - { name: limit, in: query, type: integer, required: false, description: "Results per page." }
                - { name: offset, in: query, type: integer, required: false, description: "Pagination offset." }
              outputRawFormat: json
              outputParameters:
                - { name: result, type: object, value: "$." }
        - name: "related-tags"
          path: "/v1/tags/related/{term}"
          operations:
            - name: "getRelatedSearchTerms"
              method: GET
              description: "Return related search terms for a given query."
              inputParameters:
                - { name: term, in: path, type: string, required: true, description: "Search term to look up." }
              outputRawFormat: json
              outputParameters:
                - { name: result, type: object, value: "$." }
        - name: "trending-searches"
          path: "/v1/trending/searches"
          operations:
            - name: "getTrendingSearches"
              method: GET
              description: "Return the most popular search terms across GIPHY."
              inputParameters: []
              outputRawFormat: json
              outputParameters:
                - { name: result, type: object, value: "$." }

  exposes:
    - type: rest
      namespace: "giphy-search-discovery-rest"
      port: 8080
      description: "REST adapter for GIPHY API — Search Discovery."
      resources:
        - path: "/v1/search-tags"
          name: "search-tags"
          description: "REST surface for tag autocomplete."
          operations:
            - method: GET
              name: "autocompleteSearchTags"
              description: "Autocomplete tags."
              call: "giphy-search-discovery.autocompleteSearchTags"
              with: { q: "rest.q", limit: "rest.limit", offset: "rest.offset" }
              outputParameters:
                - { type: object, mapping: "$." }
        - path: "/v1/related-tags/{term}"
          name: "related-tags"
          description: "REST surface for related tags."
          operations:
            - method: GET
              name: "getRelatedSearchTerms"
              description: "Get related search terms."
              call: "giphy-search-discovery.getRelatedSearchTerms"
              with: { term: "rest.term" }
              outputParameters:
                - { type: object, mapping: "$." }
        - path: "/v1/trending-searches"
          name: "trending-searches"
          description: "REST surface for trending searches."
          operations:
            - method: GET
              name: "getTrendingSearches"
              description: "Get trending searches."
              call: "giphy-search-discovery.getTrendingSearches"
              with: {}
              outputParameters:
                - { type: object, mapping: "$." }

    - type: mcp
      namespace: "giphy-search-discovery-mcp"
      port: 9090
      transport: http
      description: "MCP adapter for GIPHY API — Search Discovery."
      tools:
        - name: "autocomplete-search-tags"
          description: "Autocomplete search tags for a partial term."
          hints: { readOnly: true, destructive: false, idempotent: true }
          call: "giphy-search-discovery.autocompleteSearchTags"
          with: { q: "tools.q", limit: "tools.limit", offset: "tools.offset" }
          outputParameters:
            - { type: object, mapping: "$." }
        - name: "get-related-search-terms"
          description: "Get related search terms."
          hints: { readOnly: true, destructive: false, idempotent: true }
          call: "giphy-search-discovery.getRelatedSearchTerms"
          with: { term: "tools.term" }
          outputParameters:
            - { type: object, mapping: "$." }
        - name: "get-trending-searches"
          description: "Get most popular search terms across GIPHY."
          hints: { readOnly: true, destructive: false, idempotent: true }
          call: "giphy-search-discovery.getTrendingSearches"
          with: {}
          outputParameters:
            - { type: object, mapping: "$." }