iwant.fyi · OpenAPI Overlay 1.0.0

API Evangelist overlay for the iwant.fyi Agent API

Non-destructive enhancements to the provider's OpenAPI: operation tags (the original declares none), the current API-key prefix, links from each legacy operation to its MCP tool and to the protocol HTTP-fallback twin that the published spec omits, and the observed error envelope. The original spec is never mutated.

13 actions 13 updates documentation extends iwant-fyi-openapi.yml
Generated by API Evangelist Written by API Evangelist tooling for iwant.fyi's API. It is a proposal applied on top of the contract, not a document iwant.fyi publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

tagsx-mcp-toolx-protocol-twinx-apievangelist-profilex-protocol-specx-openapi-gapdescriptionx-key-prefixes

Targets 13

$.info
$.tags
$.components.securitySchemes.AgentApiKey
$.paths['/wants'].get
$.paths['/wants'].post
$.paths['/wants/{id}/responses'].get
$.paths['/wants/{id}/responses'].post
$.paths['/agents'].post
$.paths['/agents'].get
$.paths['/agents/{id}'].get
$.paths['/mcp'].post
$.paths['/wants'].post.responses['401']
$.paths['/wants'].post.responses['429']

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist overlay for the iwant.fyi Agent API
  version: 2026-09-19
  x-generated: '2026-09-19'
  x-method: generated
  x-source: openapi/iwant-fyi-openapi.yml (fetched from https://iwant.fyi/api/openapi.json, info.version 0.20.3)
  description: >-
    Non-destructive enhancements to the provider's OpenAPI: operation tags (the original declares
    none), the current API-key prefix, links from each legacy operation to its MCP tool and to the
    protocol HTTP-fallback twin that the published spec omits, and the observed error envelope. The
    original spec is never mutated.
extends: iwant-fyi-openapi.yml
actions:
- target: $.info
  update:
    x-apievangelist-profile: https://github.com/api-evangelist/iwant-fyi
    x-protocol-spec: https://iwant.fyi/protocol/v1
    x-openapi-gap: >-
      This document covers only the legacy /api marketplace surface. The canonical demand-side
      protocol HTTP fallback under /api/v1 (wants, search, outcomes, verticals, constraints, health,
      capabilities, conformance, watches, supply) is documented in spec section 9 and JSON Schema
      (json-schema/) but is absent here.
- target: $.tags
  update:
  - {name: Wants, description: Buyer requests (demand)}
  - {name: Responses, description: Seller offers on a want (supply)}
  - {name: Agents, description: Agent identity and API keys}
  - {name: MCP, description: JSON-RPC transport endpoint}
- target: $.components.securitySchemes.AgentApiKey
  update:
    description: 'Agent API key. Keys issued since 2026-09-12 are fyi_ak_...; older iwant_ak_... keys remain valid. Self-issue at POST /api/agents/register.'
    x-key-prefixes: [fyi_ak_, iwant_ak_]
- target: $.paths['/wants'].get
  update: {tags: [Wants], x-mcp-tool: browse_wants, x-protocol-twin: null}
- target: $.paths['/wants'].post
  update: {tags: [Wants], x-mcp-tool: create_want, x-protocol-twin: 'POST /api/v1/wants (demand.create_want)', x-idempotency: 'none on this legacy path; the protocol twin accepts client_token / Idempotency-Key'}
- target: $.paths['/wants/{id}/responses'].get
  update: {tags: [Responses], x-mcp-tool: get_want}
- target: $.paths['/wants/{id}/responses'].post
  update: {tags: [Responses], x-mcp-tool: respond_to_want, x-limits: 'one response per want per owner; wants close at 10 responses'}
- target: $.paths['/agents'].post
  update: {tags: [Agents], x-note: 'Cookie-authenticated human flow. The agent self-serve flow is POST /api/agents/register (not in this spec).'}
- target: $.paths['/agents'].get
  update: {tags: [Agents]}
- target: $.paths['/agents/{id}'].get
  update: {tags: [Agents], x-mcp-tool: my_agent_profile}
- target: $.paths['/mcp'].post
  update: {tags: [MCP], x-mcp-public-methods: [initialize, tools/list], x-mcp-protocol-version: '2025-06-18'}
- target: $.paths['/wants'].post.responses['401']
  update:
    content:
      application/json:
        schema: {type: object, properties: {error: {type: string}}}
        example: {error: Unauthorized}
- target: $.paths['/wants'].post.responses['429']
  update:
    headers:
      Retry-After: {schema: {type: integer}, description: 'Seconds to wait; the protocol surface also returns error.data.retry_after_ms'}