naftiko: "1.0.0-alpha2" info: label: "GIPHY API — Clips" description: >- GIPHY — Clips. 2 operations. Lead operation: Search the GIPHY Clips library of GIFs with sound. Access to Clips endpoints is gated; contact clips@giphy.com. Self-contained Naftiko capability covering one GIPHY business surface. tags: - GIPHY - Media - Clips created: "2026-05-30" modified: "2026-05-30" binds: - namespace: env keys: GIPHY_API_KEY: GIPHY_API_KEY capability: consumes: - type: http namespace: "giphy-clips" baseUri: "https://api.giphy.com" description: "GIPHY API — Clips business capability." authentication: type: apikey key: api_key value: "{{env.GIPHY_API_KEY}}" placement: query resources: - name: "clips-search" path: "/v1/clips/search" operations: - name: "searchClips" method: GET description: "Search the GIPHY Clips library (GIFs with sound)." inputParameters: - { name: q, in: query, type: string, required: true, description: "Search query." } - { name: limit, in: query, type: integer, required: false, description: "Results per page." } - { name: offset, in: query, type: integer, required: false, description: "Pagination offset." } - { name: rating, in: query, type: string, required: false, description: "Rating filter." } - { name: country_code, in: query, type: string, required: false, description: "ISO 3166-1 alpha-2 code." } outputRawFormat: json outputParameters: - { name: result, type: object, value: "$." } - name: "clips-trending" path: "/v1/clips/trending" operations: - name: "getTrendingClips" method: GET description: "Return trending clips of the day." inputParameters: - { name: limit, in: query, type: integer, required: false, description: "Results per page." } - { name: offset, in: query, type: integer, required: false, description: "Pagination offset." } - { name: rating, in: query, type: string, required: false, description: "Rating filter." } outputRawFormat: json outputParameters: - { name: result, type: object, value: "$." } exposes: - type: rest namespace: "giphy-clips-rest" port: 8080 description: "REST adapter for GIPHY API — Clips." resources: - path: "/v1/clips-search" name: "clips-search" description: "REST surface for Clips search." operations: - method: GET name: "searchClips" description: "Search Clips." call: "giphy-clips.searchClips" with: { q: "rest.q", limit: "rest.limit", offset: "rest.offset", rating: "rest.rating", country_code: "rest.country_code" } outputParameters: - { type: object, mapping: "$." } - path: "/v1/clips-trending" name: "clips-trending" description: "REST surface for trending Clips." operations: - method: GET name: "getTrendingClips" description: "Get trending Clips." call: "giphy-clips.getTrendingClips" with: { limit: "rest.limit", offset: "rest.offset", rating: "rest.rating" } outputParameters: - { type: object, mapping: "$." } - type: mcp namespace: "giphy-clips-mcp" port: 9090 transport: http description: "MCP adapter for GIPHY API — Clips." tools: - name: "search-clips" description: "Search GIPHY Clips library." hints: { readOnly: true, destructive: false, idempotent: true } call: "giphy-clips.searchClips" with: { q: "tools.q", limit: "tools.limit", offset: "tools.offset", rating: "tools.rating", country_code: "tools.country_code" } outputParameters: - { type: object, mapping: "$." } - name: "get-trending-clips" description: "Get trending GIPHY Clips." hints: { readOnly: true, destructive: false, idempotent: true } call: "giphy-clips.getTrendingClips" with: { limit: "tools.limit", offset: "tools.offset", rating: "tools.rating" } outputParameters: - { type: object, mapping: "$." }