Agent Surface Docs API

The Docs API from Agent Surface — 1 operation(s) for docs.

Operations 1

GET /api/docs/search Search documentation with bounded page-level results #

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/agentsurface-dev:agentsurface-dev-docs-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

agentsurface-dev-docs-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Agent Surface documentation Docs API
  version: 1.0.0
  description: 'Public read-only documentation retrieval, without credentials. Search to discover pages, then fetch the canonical Markdown. Compatibility: these unversioned URLs and existing operationIds are stable within API version 1. Additive fields may appear; clients should ignore unknown fields. Breaking changes require a new major version and a documented migration period before retiring an existing route. There is no application quota or rate-limit policy; query and response bounds below apply. Remote MCP uses POST /mcp with protocol 2026-07-28.'
servers:
- url: https://agentsurface.dev
security: []
tags:
- name: Docs
paths:
  /api/docs/search:
    get:
      operationId: searchDocs
      summary: Search documentation with bounded page-level results
      description: 'Use when you know the topic but not the page URL. Searches titles, descriptions, headings and body. Chunks are deduplicated by canonical page URL, preserving the page-group order returned by Fumadocs full-text search (ZBSearch). rank is a 1-based position, not a probability or confidence score. Snippets are capped at 600 characters. No match (including an unknown section) returns 200 with results: [] and has_more: false. has_more means additional pages exist: narrow the query or section, or increase limit up to 20. Use the docs index for exhaustive browsing. Fetch a selected page with getPage.'
      parameters:
      - name: query
        in: query
        required: true
        description: Trimmed topic keywords; 2 to 500 characters.
        example: content negotiation
        schema:
          type: string
          minLength: 2
          maxLength: 500
      - name: limit
        in: query
        description: Maximum number of distinct pages, default 5 and maximum 20.
        example: 5
        schema:
          type: integer
          minimum: 1
          maximum: 20
          default: 5
      - name: section
        in: query
        description: Optional top-level documentation section. Unknown sections return an empty result set.
        example: discovery
        schema:
          type: string
          pattern: ^[a-z0-9-]+$
      responses:
        '200':
          description: Bounded relevance-ordered pages with stable IDs, canonical URLs and content dates where available.
          content:
            application/json:
              schema:
                $schema: https://json-schema.org/draft/2020-12/schema
                type: object
                properties:
                  results:
                    maxItems: 20
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          description: Stable documentation path, independent of rank.
                        title:
                          type: string
                          description: Published page title.
                        description:
                          type: string
                          description: Published page summary.
                        url:
                          type: string
                          format: uri
                          description: Canonical source URL; pass this to get_page.
                        slug:
                          type: string
                          description: Slash-separated docs slug for /api/md; index identifies the docs home.
                        updated_at:
                          description: Content revision time, or last verification date where a revision time is unavailable.
                          type: string
                        snippet:
                          type: string
                          maxLength: 600
                          description: Matching body or heading excerpt, at most 600 characters.
                        rank:
                          type: integer
                          minimum: 1
                          maximum: 20
                          description: 1-based position within this result set, lower is earlier; not confidence and not comparable across queries.
                      required:
                      - id
                      - title
                      - description
                      - url
                      - slug
                      - snippet
                      - rank
                      additionalProperties: false
                    description: Distinct matching documentation pages, bounded by the caller limit.
                  has_more:
                    type: boolean
                    description: More matching pages exist beyond this limit. Narrow query or section, increase limit up to 20, or browse list_pages.
                  ranking:
                    type: string
                    description: Explanation of the relevance ordering and rank semantics.
                required:
                - results
                - has_more
                - ranking
                additionalProperties: false
        '400':
          description: Problem Details with recovery suggestions and a trace_id. is_retriable means safe to retry the unchanged request.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
        '500':
          description: Problem Details with recovery suggestions and a trace_id. is_retriable means safe to retry the unchanged request.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
      tags:
      - Docs
components:
  schemas:
    Problem:
      type: object
      required:
      - type
      - title
      - status
      - detail
      - instance
      - is_retriable
      - suggestions
      - trace_id
      - code
      - message
      - hint
      properties:
        type:
          type: string
          example: about:blank
        title:
          type: string
        status:
          type: integer
        detail:
          type: string
        instance:
          type: string
          description: Request path and query, identifying the failed request.
          example: /api/docs/search?query=x
        is_retriable:
          type: boolean
          description: True only when it is safe to retry the unchanged request. Validation and missing-page errors are false; a temporary read-only search failure is true.
        suggestions:
          type: array
          items:
            type: string
        trace_id:
          type: string
          description: Opaque request identifier, also returned in X-Request-Id.
        code:
          type: string
        message:
          type: string
        hint:
          type: string