naftiko: "1.0.0-alpha2" info: label: "Ron Swanson Quotes API — Quotes" description: >- Quotes — read-only retrieval of Ron Swanson quotes from the Parks and Recreation corpus. 3 operations. Lead operation: return a single random quote. Self-contained Naftiko capability covering the Ron Swanson Quotes public surface (no authentication, CORS-enabled, JSON arrays of strings). tags: - Ron Swanson Quotes - Entertainment - Quotes created: "2026-05-30" modified: "2026-05-30" binds: - namespace: env keys: {} capability: # ── 1. Consumes — the upstream HTTP API this capability speaks to ───── consumes: - type: http namespace: "ron-swanson-quotes-quotes" baseUri: "https://ron-swanson-quotes.herokuapp.com/v2" description: >- Ron Swanson Quotes API — Quotes business capability. Self-contained, no shared references. No authentication required. resources: - name: "quotes" path: "/quotes" operations: - name: "getRandomQuote" method: GET description: "Return a single random Ron Swanson quote wrapped in a one-element JSON array." inputParameters: [] outputRawFormat: json outputParameters: - name: result type: object value: "$." - name: "getRandomQuotes" method: GET description: "Return N random Ron Swanson quotes via /quotes/{count}." inputParameters: - name: "count" in: path type: integer required: true description: "Number of random quotes to return." outputRawFormat: json outputParameters: - name: result type: object value: "$." - name: "searchQuotes" method: GET description: "Return every Ron Swanson quote whose text contains the given term (case-insensitive)." inputParameters: - name: "term" in: path type: string required: true description: "URL-encoded search term matched case-insensitively across the quote corpus." outputRawFormat: json outputParameters: - name: result type: object value: "$." # ── 2. REST exposer — required default. One Spectral-compliant resource per consumed op ── exposes: - type: rest namespace: "ron-swanson-quotes-quotes-rest" port: 8080 description: "REST adapter for Ron Swanson Quotes API — Quotes. One Spectral-compliant resource per consumed operation, prefixed with /v1." resources: - path: "/v1/quotes" name: "quotes" description: "REST surface for the random-quote endpoint." operations: - method: GET name: "getRandomQuote" description: "Return a single random Ron Swanson quote." call: "ron-swanson-quotes-quotes.getRandomQuote" with: {} outputParameters: - type: object mapping: "$." - path: "/v1/quotes/{count}" name: "quotes-count" description: "REST surface for the batch random-quotes endpoint." operations: - method: GET name: "getRandomQuotes" description: "Return N random Ron Swanson quotes." call: "ron-swanson-quotes-quotes.getRandomQuotes" with: "count": "rest.count" outputParameters: - type: object mapping: "$." - path: "/v1/quotes/search/{term}" name: "quotes-search" description: "REST surface for the case-insensitive quote search endpoint." operations: - method: GET name: "searchQuotes" description: "Return every quote that matches the given term." call: "ron-swanson-quotes-quotes.searchQuotes" with: "term": "rest.term" outputParameters: - type: object mapping: "$." # ── 3. MCP exposer — required default. One verb-noun tool per consumed op ── - type: mcp namespace: "ron-swanson-quotes-quotes-mcp" port: 9090 transport: http description: "MCP adapter for Ron Swanson Quotes API — Quotes. One tool per consumed operation, routed inline through this capability's consumes block." tools: - name: "get-random-quote" description: "Return a single random Ron Swanson quote." hints: readOnly: true destructive: false idempotent: true call: "ron-swanson-quotes-quotes.getRandomQuote" with: {} outputParameters: - type: object mapping: "$." - name: "get-random-quotes" description: "Return N random Ron Swanson quotes." hints: readOnly: true destructive: false idempotent: true call: "ron-swanson-quotes-quotes.getRandomQuotes" with: "count": "tools.count" outputParameters: - type: object mapping: "$." - name: "search-quotes" description: "Return every quote that matches the given term (case-insensitive)." hints: readOnly: true destructive: false idempotent: true call: "ron-swanson-quotes-quotes.searchQuotes" with: "term": "tools.term" outputParameters: - type: object mapping: "$."