hyreflow-ai .well Known API

The .well Known API from hyreflow-ai — 6 operation(s) for .well known.

GitHub OpenAPI

Operations 6

GET /.well-known/openai-apps-challenge Openai Apps Challenge #
GET /.well-known/oauth-protected-resource/api/v2/mcp Protected Resource Metadata #
GET /.well-known/oauth-authorization-server Authorization Server Metadata #
GET /.well-known/skills/index.json Skills Wellknown Index #
GET /.well-known/skills/archives/{name}.tar.gz Skills Wellknown Archive #
GET /.well-known/skills/{name}/{rel_path} Skills Wellknown File #

Work with this as data

Every API 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 apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • 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 API
curl "https://apis.io/api/v1/apis/hyreflow-ai:hyreflow-ai-well-known-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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.

OpenAPI Specification

hyreflow-ai-well-known-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: hyreflow engine (local) .well Known API
  version: 0.1.0
tags:
- name: .well Known
paths:
  /.well-known/openai-apps-challenge:
    get:
      summary: Openai Apps Challenge
      description: 'Domain proof for the OpenAI plugin directory: the portal hands the publisher a token and fetches

        it back from this exact path on the MCP server''s host, as bare text — not JSON, no wrapping. The token

        comes from the environment so rotating it is a config change, not a deploy; unset, the path is a 404

        like any other, so nothing is claimable by accident.'
      operationId: openai_apps_challenge__well_known_openai_apps_challenge_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      tags:
      - .well Known
  /.well-known/oauth-protected-resource/api/v2/mcp:
    get:
      summary: Protected Resource Metadata
      operationId: protected_resource_metadata__well_known_oauth_protected_resource_api_v2_mcp_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      tags:
      - .well Known
  /.well-known/oauth-authorization-server:
    get:
      summary: Authorization Server Metadata
      operationId: authorization_server_metadata__well_known_oauth_authorization_server_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      tags:
      - .well Known
  /.well-known/skills/index.json:
    get:
      summary: Skills Wellknown Index
      description: 'Skill-discovery index for any agent harness, not just our own CLI — same public rationale as

        skills_bundle (no secrets ship in these packages; there''s no bearer yet at discovery time).


        Every entry is consumable BOTH ways, because harnesses split on this and the index can''t know which

        one is reading it:

        * `files` + the per-file route — a consumer that GETs each file as text (Hermes does exactly this:

        it reads `files`, defaults to ["SKILL.md"], and fetches `//`). Note it

        derives that base from the INDEX URL and ignores any `base_url` we publish, so the per-file route

        has to live directly beside this one.

        * `url` + `digest` — one byte-verifiable archive, for a consumer that would rather take the whole

        package in a single request than make ~70 of them.

        Dropping either half silently breaks whichever consumer needed it — an archive-only index leaves

        Hermes 404ing on SKILL.md, and it still LISTS fine (search only reads name+description), so the

        failure shows up at install time, not discovery.


        `$schema` is what selects the parse in a consumer that knows both shapes, so it can''t be added as

        decoration: declaring it routes the reference installer down its single-artifact path, where only

        `name`/`type`/`url`/`digest` are read and the archive is expected to unpack from its root. `version`,

        `base_url`, `files`, `entrypoint` and `documents` ride along as extra keys for the consumers that use

        them (they''re ignored by the artifact path), and every skills_sha-keyed extra stays consistent with the

        digest because both come off the same content hash.'
      operationId: skills_wellknown_index__well_known_skills_index_json_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
      tags:
      - .well Known
  /.well-known/skills/archives/{name}.tar.gz:
    get:
      summary: Skills Wellknown Archive
      description: 'Serve one package''s deterministic gzip tarball — see _skill_archive for what keeps this

        byte-identical to the digest index.json advertises. Unknown/non-skill name (incl. any traversal

        shape, which can''t even reach here — no `/` fits {name}) -> 404, never a path outside SKILL_ROOT.'
      operationId: skills_wellknown_archive__well_known_skills_archives__name__tar_gz_get
      parameters:
      - name: name
        in: path
        required: true
        schema:
          type: string
          title: Name
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - .well Known
  /.well-known/skills/{name}/{rel_path}:
    get:
      summary: Skills Wellknown File
      description: 'One file from one package, as text — the half of the catalog a harness uses when it installs by

        fetching each file rather than an archive (see skills_wellknown_index for who does which).


        Everything served here is inside a package the index already lists publicly, and `{rel_path:path}`

        accepts slashes, so this is the one catalog route where a traversal is expressible. Two independent

        gates: the name must be a real package, and the resolved path must stay inside that package — a

        `..` climb, an absolute path, or a symlink pointing out all fail the second one.'
      operationId: skills_wellknown_file__well_known_skills__name___rel_path__get
      parameters:
      - name: name
        in: path
        required: true
        schema:
          type: string
          title: Name
      - name: rel_path
        in: path
        required: true
        schema:
          type: string
          title: Rel Path
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      tags:
      - .well Known
components:
  schemas:
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer