Sunny Yuen · OpenAPI Overlay 1.0.0

API Evangelist enhancements for the Resume Agent API

Non-destructive enhancements to https://agent.yuens.me/openapi.json (openapi/yuens-me-openapi.yml). Every addition below is grounded in a live probe or the provider's own README on 2026-09-19: the 400 envelope was observed by POSTing an empty body; the 429 ceiling is published in the agent card's api-docs extension and README; tags and externalDocs point at the provider's own documentation. The original is never mutated.

17 actions 17 updates documentation extends openapi/yuens-me-openapi.yml
Derived by API Evangelist Built from the contracts Sunny Yuen publishes. Sunny Yuen did not publish this file.
View Overlay File View on GitHub Overlay Specification

What the actions change

tags429x-a2a-skill400contactlicenseexternalDocsdescription

Targets 16

$.info
$
$.servers[0]
$.paths['/query'].post
$.paths['/match'].post
$.paths['/info'].get
$.paths['/availability'].get
$.paths['/projects'].get
$.paths['/observations'].get
$.paths['/query'].post.requestBody.content['application/json'].schema.properties
$.paths['/query'].post.responses
$.paths['/match'].post.responses
$.paths['/info'].get.responses
$.paths['/availability'].get.responses
$.paths['/projects'].get.responses
$.paths['/observations'].get.responses

OpenAPI Overlay

Raw ↑
overlay: 1.0.0
info:
  title: API Evangelist enhancements for the Resume Agent API
  version: 2026-09-19
  description: >-
    Non-destructive enhancements to https://agent.yuens.me/openapi.json (openapi/yuens-me-openapi.yml). Every
    addition below is grounded in a live probe or the provider's own README on 2026-09-19: the 400 envelope
    was observed by POSTing an empty body; the 429 ceiling is published in the agent card's api-docs
    extension and README; tags and externalDocs point at the provider's own documentation. The original is
    never mutated.
extends: openapi/yuens-me-openapi.yml
x-generated: '2026-09-19'
x-method: generated
actions:
  - target: $.info
    update:
      contact:
        name: Sunny Yuen (resume-agent maintainer)
        url: https://github.com/yuens1002/resume-agent
      license:
        name: MIT
        url: https://github.com/yuens1002/resume-agent/blob/main/LICENSE
  - target: $
    update:
      externalDocs:
        description: Public API endpoints, engagement rules and security model (source README)
        url: https://github.com/yuens1002/resume-agent#public-api-endpoints
      tags:
        - name: Query
          description: Natural-language questions answered from the published profile (also exposed as the MCP tool ask_candidate).
        - name: Match
          description: Structured job-fit scoring against a pasted job description.
        - name: Profile
          description: Structured, cacheable profile snapshots with no LLM call.
        - name: Evidence
          description: Portfolio projects and the authored observation trail behind the profile.
  - target: $.servers[0]
    update:
      description: Production. Anonymous; 30 requests per minute per IP on every route except OPTIONS and /health.
  - target: $.paths['/query'].post
    update:
      tags: [Query]
      x-mcp-tool: ask_candidate
      x-a2a-skill: query
  - target: $.paths['/match'].post
    update:
      tags: [Match]
      x-a2a-skill: match
  - target: $.paths['/info'].get
    update:
      tags: [Profile]
      x-a2a-skill: info
  - target: $.paths['/availability'].get
    update:
      tags: [Profile]
      x-a2a-skill: availability
  - target: $.paths['/projects'].get
    update:
      tags: [Evidence]
      x-a2a-skill: projects
  - target: $.paths['/observations'].get
    update:
      tags: [Evidence]
  - target: $.paths['/query'].post.requestBody.content['application/json'].schema.properties
    update:
      stream:
        type: boolean
        default: false
        description: When true the response is chunked text/plain, not JSON (documented in the README and the GET /query self-descriptor).
      style:
        type: string
        enum: [cited, conversational]
        default: cited
        description: cited = inline [N] markers plus a Sources block; conversational = 2-4 plain sentences with attribution only in sources[] (also selected by an x-agent-type header of human).
  - target: $.paths['/query'].post.responses
    update:
      '400':
        description: Request body failed validation (observed 2026-09-19 with an empty body).
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ValidationError'
      '429':
        description: Per-IP ceiling of 30 requests per minute exceeded (documented; response headers are not published).
  - target: $.paths['/match'].post.responses
    update:
      '400':
        description: Request body failed validation (observed 2026-09-19 with an empty body).
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ValidationError'
      '429':
        description: Per-IP ceiling of 30 requests per minute exceeded (documented; response headers are not published).
  - target: $.paths['/info'].get.responses
    update:
      '429':
        description: Per-IP ceiling of 30 requests per minute exceeded (documented).
  - target: $.paths['/availability'].get.responses
    update:
      '429':
        description: Per-IP ceiling of 30 requests per minute exceeded (documented).
  - target: $.paths['/projects'].get.responses
    update:
      '429':
        description: Per-IP ceiling of 30 requests per minute exceeded (documented).
  - target: $.paths['/observations'].get.responses
    update:
      '429':
        description: Per-IP ceiling of 30 requests per minute exceeded (documented).
  - target: $
    update:
      components:
        schemas:
          ValidationError:
            type: object
            description: Zod validation envelope as observed on 2026-09-19.
            properties:
              success:
                type: boolean
                const: false
              error:
                type: object
                properties:
                  name:
                    type: string
                    example: ZodError
                  issues:
                    type: array
                    items:
                      type: object
                      properties:
                        code: {type: string, example: invalid_type}
                        expected: {type: string, example: string}
                        received: {type: string, example: undefined}
                        path: {type: array, items: {type: string}}
                        message: {type: string, example: Required}

Work with this as data

Every overlay here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for openapi overlays

4 MCP tools reach this
  • find_overlaysBrowse and filter every overlay in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This overlay
curl "https://apis.io/api/v1/overlays/yuens-me-openapi-overlay"
All openapi overlays
curl "https://apis.io/api/v1/overlays?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.