naftiko: "1.0.0-alpha2" info: label: "Breaking Bad API — Quotes" description: >- Quotes surface — Quotes. 3 operations. Lead operation: list every catalogued quote attributed to a character across both series. Self-contained Naftiko capability covering one Breaking Bad business surface. Note: upstream host (breakingbadapi.com) is deprecated and unreachable as of 2026-05-29; this capability is preserved for historical reference and for use against community mirrors or local re-implementations. tags: - Breaking Bad - Quotes - Television created: "2026-05-29" modified: "2026-05-29" binds: - namespace: env keys: BREAKING_BAD_API_BASE: BREAKING_BAD_API_BASE capability: consumes: - type: http namespace: "breaking-bad-quotes" baseUri: "https://www.breakingbadapi.com/api" description: "Breaking Bad API — Quotes business capability. Self-contained, no shared references." resources: - name: "quotes" path: "/quotes" operations: - name: "listQuotes" method: GET description: "List every catalogued quote." inputParameters: [] outputRawFormat: json outputParameters: - name: result type: object value: "$." - name: "quote-by-id" path: "/quotes/{id}" operations: - name: "getQuoteById" method: GET description: "Retrieve a single quote by numeric id." inputParameters: - name: "id" in: path type: integer required: true description: "Numeric quote id." outputRawFormat: json outputParameters: - name: result type: object value: "$." - name: "random-quote" path: "/quote/random" operations: - name: "getRandomQuote" method: GET description: "Return one randomly selected quote, optionally filtered by author." inputParameters: - name: "author" in: query type: string required: false description: "Filter random selection by author (use + for spaces)." outputRawFormat: json outputParameters: - name: result type: object value: "$." exposes: - type: rest namespace: "breaking-bad-quotes-rest" port: 8080 description: "REST adapter for Breaking Bad API — Quotes. One Spectral-compliant resource per consumed operation, prefixed with /v1." resources: - path: "/v1/quotes" name: "quotes" description: "REST surface for the quotes collection." operations: - method: GET name: "listQuotes" description: "List quotes." call: "breaking-bad-quotes.listQuotes" with: {} outputParameters: - type: object mapping: "$." - path: "/v1/quotes/{id}" name: "quote-by-id" description: "REST surface for a single quote by id." operations: - method: GET name: "getQuoteById" description: "Get a quote by id." call: "breaking-bad-quotes.getQuoteById" with: id: "rest.id" outputParameters: - type: object mapping: "$." - path: "/v1/quotes/random" name: "random-quote" description: "REST surface for a random quote." operations: - method: GET name: "getRandomQuote" description: "Get one random quote." call: "breaking-bad-quotes.getRandomQuote" with: author: "rest.author" outputParameters: - type: object mapping: "$." - type: mcp namespace: "breaking-bad-quotes-mcp" port: 9090 transport: http description: "MCP adapter for Breaking Bad API — Quotes." tools: - name: "list-quotes" description: "List every catalogued quote." hints: readOnly: true destructive: false idempotent: true call: "breaking-bad-quotes.listQuotes" with: {} outputParameters: - type: object mapping: "$." - name: "get-quote" description: "Retrieve a single quote by id." hints: readOnly: true destructive: false idempotent: true call: "breaking-bad-quotes.getQuoteById" with: id: "tools.id" outputParameters: - type: object mapping: "$." - name: "get-random-quote" description: "Return one randomly selected quote, optionally filtered by author." hints: readOnly: true destructive: false idempotent: true call: "breaking-bad-quotes.getRandomQuote" with: author: "tools.author" outputParameters: - type: object mapping: "$."