Stack Exchange · Capability

Stack Exchange API v2.3 — Search

Search surface of the Stack Exchange API. 4 operations. Lead operation: Search Questions. Self-contained Naftiko capability covering one Stack Exchange business surface.

Run with Naftiko Stack ExchangeQ And ASearch

What You Can Do

GET
Searchquestions — Search Questions
/v1/search
GET
Searchquestionsadvanced — Search Questions Advanced
/v1/search/advanced
GET
Searchexcerpts — Search Excerpts
/v1/search/excerpts
GET
Findsimilarquestions — Find Similar Questions
/v1/similar

MCP Tools

search-questions

Search Questions

read-only idempotent
search-questions-advanced

Search Questions Advanced

read-only idempotent
search-excerpts

Search Excerpts

read-only idempotent
find-similar-questions

Find Similar Questions

read-only idempotent

Capability Spec

stack-exchange-search.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Stack Exchange API v2.3 — Search
  description: 'Search surface of the Stack Exchange API. 4 operations. Lead operation: Search Questions. Self-contained Naftiko capability covering one Stack Exchange business surface.'
  tags:
  - Stack Exchange
  - Q And A
  - Search
  created: '2026-05-29'
  modified: '2026-05-29'
binds:
- namespace: env
  keys:
    STACK_EXCHANGE_KEY: STACK_EXCHANGE_KEY
    STACK_EXCHANGE_ACCESS_TOKEN: STACK_EXCHANGE_ACCESS_TOKEN
capability:
  consumes:
  - type: http
    namespace: stack-exchange-search
    baseUri: https://api.stackexchange.com/2.3
    description: Stack Exchange API v2.3 — Search business capability. Self-contained, no shared references.
    authentication:
      type: apikey
      key: key
      value: '{{env.STACK_EXCHANGE_KEY}}'
      placement: query
    resources:
    - name: search
      path: /search
      operations:
      - name: searchQuestions
        method: GET
        description: Search Questions
        inputParameters:
        - name: site
          in: query
          type: string
          required: true
          description: Target Q&A community. Either the api_site_parameter from a `/sites` entry (e.g. `stackoverflow`, `serverfault`, `superuser`) or a full domain (`stackoverflow.com`).
        - name: key
          in: query
          type: string
          required: false
          description: App key from stackapps.com. Raises the daily quota to 10,000/IP.
        - name: filter
          in: query
          type: string
          required: false
          description: Custom response filter id created via /filters/create.
        - name: page
          in: query
          type: integer
          required: false
          description: 1-indexed page number.
        - name: pagesize
          in: query
          type: integer
          required: false
          description: Items per page (max 100).
        - name: intitle
          in: query
          type: string
          required: true
          description: intitle parameter
        - name: tagged
          in: query
          type: string
          required: false
          description: tagged parameter
        - name: nottagged
          in: query
          type: string
          required: false
          description: nottagged parameter
        - name: sort
          in: query
          type: string
          required: false
          description: sort parameter
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: search-advanced
      path: /search/advanced
      operations:
      - name: searchQuestionsAdvanced
        method: GET
        description: Search Questions Advanced
        inputParameters:
        - name: site
          in: query
          type: string
          required: true
          description: Target Q&A community. Either the api_site_parameter from a `/sites` entry (e.g. `stackoverflow`, `serverfault`, `superuser`) or a full domain (`stackoverflow.com`).
        - name: key
          in: query
          type: string
          required: false
          description: App key from stackapps.com. Raises the daily quota to 10,000/IP.
        - name: filter
          in: query
          type: string
          required: false
          description: Custom response filter id created via /filters/create.
        - name: page
          in: query
          type: integer
          required: false
          description: 1-indexed page number.
        - name: pagesize
          in: query
          type: integer
          required: false
          description: Items per page (max 100).
        - name: q
          in: query
          type: string
          required: false
          description: q parameter
        - name: title
          in: query
          type: string
          required: false
          description: title parameter
        - name: body
          in: query
          type: string
          required: false
          description: body parameter
        - name: tagged
          in: query
          type: string
          required: false
          description: tagged parameter
        - name: nottagged
          in: query
          type: string
          required: false
          description: nottagged parameter
        - name: accepted
          in: query
          type: boolean
          required: false
          description: accepted parameter
        - name: answers
          in: query
          type: integer
          required: false
          description: answers parameter
        - name: closed
          in: query
          type: boolean
          required: false
          description: closed parameter
        - name: migrated
          in: query
          type: boolean
          required: false
          description: migrated parameter
        - name: notice
          in: query
          type: boolean
          required: false
          description: notice parameter
        - name: views
          in: query
          type: integer
          required: false
          description: views parameter
        - name: sort
          in: query
          type: string
          required: false
          description: sort parameter
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: search-excerpts
      path: /search/excerpts
      operations:
      - name: searchExcerpts
        method: GET
        description: Search Excerpts
        inputParameters:
        - name: site
          in: query
          type: string
          required: true
          description: Target Q&A community. Either the api_site_parameter from a `/sites` entry (e.g. `stackoverflow`, `serverfault`, `superuser`) or a full domain (`stackoverflow.com`).
        - name: key
          in: query
          type: string
          required: false
          description: App key from stackapps.com. Raises the daily quota to 10,000/IP.
        - name: filter
          in: query
          type: string
          required: false
          description: Custom response filter id created via /filters/create.
        - name: page
          in: query
          type: integer
          required: false
          description: 1-indexed page number.
        - name: pagesize
          in: query
          type: integer
          required: false
          description: Items per page (max 100).
        - name: q
          in: query
          type: string
          required: false
          description: q parameter
        - name: tagged
          in: query
          type: string
          required: false
          description: tagged parameter
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: similar
      path: /similar
      operations:
      - name: findSimilarQuestions
        method: GET
        description: Find Similar Questions
        inputParameters:
        - name: site
          in: query
          type: string
          required: true
          description: Target Q&A community. Either the api_site_parameter from a `/sites` entry (e.g. `stackoverflow`, `serverfault`, `superuser`) or a full domain (`stackoverflow.com`).
        - name: key
          in: query
          type: string
          required: false
          description: App key from stackapps.com. Raises the daily quota to 10,000/IP.
        - name: filter
          in: query
          type: string
          required: false
          description: Custom response filter id created via /filters/create.
        - name: page
          in: query
          type: integer
          required: false
          description: 1-indexed page number.
        - name: pagesize
          in: query
          type: integer
          required: false
          description: Items per page (max 100).
        - name: title
          in: query
          type: string
          required: true
          description: title parameter
        - name: tagged
          in: query
          type: string
          required: false
          description: tagged parameter
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
  exposes:
  - type: rest
    namespace: stack-exchange-search-rest
    port: 8080
    description: REST adapter for Stack Exchange API v2.3 — Search. One Spectral-compliant resource per consumed operation, prefixed with /v1.
    resources:
    - path: /v1/search
      name: search
      description: REST surface for search.
      operations:
      - method: GET
        name: searchQuestions
        description: Search Questions
        call: stack-exchange-search.searchQuestions
        with:
          site: rest.site
          key: rest.key
          filter: rest.filter
          page: rest.page
          pagesize: rest.pagesize
          intitle: rest.intitle
          tagged: rest.tagged
          nottagged: rest.nottagged
          sort: rest.sort
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/search/advanced
      name: advanced
      description: REST surface for search.
      operations:
      - method: GET
        name: searchQuestionsAdvanced
        description: Search Questions Advanced
        call: stack-exchange-search.searchQuestionsAdvanced
        with:
          site: rest.site
          key: rest.key
          filter: rest.filter
          page: rest.page
          pagesize: rest.pagesize
          q: rest.q
          title: rest.title
          body: rest.body
          tagged: rest.tagged
          nottagged: rest.nottagged
          accepted: rest.accepted
          answers: rest.answers
          closed: rest.closed
          migrated: rest.migrated
          notice: rest.notice
          views: rest.views
          sort: rest.sort
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/search/excerpts
      name: excerpts
      description: REST surface for search.
      operations:
      - method: GET
        name: searchExcerpts
        description: Search Excerpts
        call: stack-exchange-search.searchExcerpts
        with:
          site: rest.site
          key: rest.key
          filter: rest.filter
          page: rest.page
          pagesize: rest.pagesize
          q: rest.q
          tagged: rest.tagged
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/similar
      name: similar
      description: REST surface for similar.
      operations:
      - method: GET
        name: findSimilarQuestions
        description: Find Similar Questions
        call: stack-exchange-search.findSimilarQuestions
        with:
          site: rest.site
          key: rest.key
          filter: rest.filter
          page: rest.page
          pagesize: rest.pagesize
          title: rest.title
          tagged: rest.tagged
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: stack-exchange-search-mcp
    port: 9090
    transport: http
    description: MCP adapter for Stack Exchange API v2.3 — Search. One tool per consumed operation, routed inline through this capability's consumes block.
    tools:
    - name: search-questions
      description: Search Questions
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: stack-exchange-search.searchQuestions
      with:
        site: tools.site
        key: tools.key
        filter: tools.filter
        page: tools.page
        pagesize: tools.pagesize
        intitle: tools.intitle
        tagged: tools.tagged
        nottagged: tools.nottagged
        sort: tools.sort
      outputParameters:
      - type: object
        mapping: $.
    - name: search-questions-advanced
      description: Search Questions Advanced
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: stack-exchange-search.searchQuestionsAdvanced
      with:
        site: tools.site
        key: tools.key
        filter: tools.filter
        page: tools.page
        pagesize: tools.pagesize
        q: tools.q
        title: tools.title
        body: tools.body
        tagged: tools.tagged
        nottagged: tools.nottagged
        accepted: tools.accepted
        answers: tools.answers
        closed: tools.closed
        migrated: tools.migrated
        notice: tools.notice
        views: tools.views
        sort: tools.sort
      outputParameters:
      - type: object
        mapping: $.
    - name: search-excerpts
      description: Search Excerpts
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: stack-exchange-search.searchExcerpts
      with:
        site: tools.site
        key: tools.key
        filter: tools.filter
        page: tools.page
        pagesize: tools.pagesize
        q: tools.q
        tagged: tools.tagged
      outputParameters:
      - type: object
        mapping: $.
    - name: find-similar-questions
      description: Find Similar Questions
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: stack-exchange-search.findSimilarQuestions
      with:
        site: tools.site
        key: tools.key
        filter: tools.filter
        page: tools.page
        pagesize: tools.pagesize
        title: tools.title
        tagged: tools.tagged
      outputParameters:
      - type: object
        mapping: $.