Stack Exchange · Capability
Stack Exchange API v2.3 — Questions
Questions surface of the Stack Exchange API. 9 operations. Lead operation: List Questions. Self-contained Naftiko capability covering one Stack Exchange business surface.
What You Can Do
GET
Listquestions
— List Questions
/v1/questions
GET
Listfeaturedquestions
— List Featured Questions
/v1/questions/featured
GET
Listunansweredquestions
— List Unanswered Questions
/v1/questions/unanswered
GET
Listquestionswithoutanswers
— List Questions Without Answers
/v1/questions/no-answers
GET
Getquestionsbyids
— Get Questions by Ids
/v1/questions/{ids}
GET
Listanswersonquestions
— List Answers on Questions
/v1/questions/{ids}/answers
GET
Listcommentsonquestions
— List Comments on Questions
/v1/questions/{ids}/comments
GET
Listlinkedquestions
— List Linked Questions
/v1/questions/{ids}/linked
GET
Listrelatedquestions
— List Related Questions
/v1/questions/{ids}/related
MCP Tools
list-questions
List Questions
read-only
idempotent
list-featured-questions
List Featured Questions
read-only
idempotent
list-unanswered-questions
List Unanswered Questions
read-only
idempotent
list-questions-without-answers
List Questions Without Answers
read-only
idempotent
get-questions-ids
Get Questions by Ids
read-only
idempotent
list-answers-questions
List Answers on Questions
read-only
idempotent
list-comments-questions
List Comments on Questions
read-only
idempotent
list-linked-questions
List Linked Questions
read-only
idempotent
list-related-questions
List Related Questions
read-only
idempotent
Capability Spec
naftiko: 1.0.0-alpha2
info:
label: Stack Exchange API v2.3 — Questions
description: 'Questions surface of the Stack Exchange API. 9 operations. Lead operation: List Questions. Self-contained Naftiko capability covering one Stack Exchange business surface.'
tags:
- Stack Exchange
- Q And A
- Questions
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-questions
baseUri: https://api.stackexchange.com/2.3
description: Stack Exchange API v2.3 — Questions business capability. Self-contained, no shared references.
authentication:
type: apikey
key: key
value: '{{env.STACK_EXCHANGE_KEY}}'
placement: query
resources:
- name: questions
path: /questions
operations:
- name: listQuestions
method: GET
description: List 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: access_token
in: query
type: string
required: false
description: OAuth 2.0 access token. Required for any /me surface and any write.
- 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: order
in: query
type: string
required: false
description: Sort direction.
- name: fromdate
in: query
type: integer
required: false
description: Unix epoch seconds — earliest creation_date.
- name: todate
in: query
type: integer
required: false
description: Unix epoch seconds — latest creation_date.
- name: tagged
in: query
type: string
required: false
description: Semicolon-delimited list of tags to AND-filter by.
- name: sort
in: query
type: string
required: false
description: sort parameter
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: questions-featured
path: /questions/featured
operations:
- name: listFeaturedQuestions
method: GET
description: List Featured 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: tagged
in: query
type: string
required: false
description: Semicolon-delimited list of tags to AND-filter by.
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: questions-unanswered
path: /questions/unanswered
operations:
- name: listUnansweredQuestions
method: GET
description: List Unanswered 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: tagged
in: query
type: string
required: false
description: Semicolon-delimited list of tags to AND-filter by.
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: questions-no-answers
path: /questions/no-answers
operations:
- name: listQuestionsWithoutAnswers
method: GET
description: List Questions Without Answers
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: tagged
in: query
type: string
required: false
description: Semicolon-delimited list of tags to AND-filter by.
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: questions-ids
path: /questions/{ids}
operations:
- name: getQuestionsByIds
method: GET
description: Get Questions by Ids
inputParameters:
- name: ids
in: path
type: string
required: true
description: Up to 100 semicolon-delimited ids of the resource.
- 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.
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: questions-ids-answers
path: /questions/{ids}/answers
operations:
- name: listAnswersOnQuestions
method: GET
description: List Answers on Questions
inputParameters:
- name: ids
in: path
type: string
required: true
description: Up to 100 semicolon-delimited ids of the resource.
- 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).
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: questions-ids-comments
path: /questions/{ids}/comments
operations:
- name: listCommentsOnQuestions
method: GET
description: List Comments on Questions
inputParameters:
- name: ids
in: path
type: string
required: true
description: Up to 100 semicolon-delimited ids of the resource.
- 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).
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: questions-ids-linked
path: /questions/{ids}/linked
operations:
- name: listLinkedQuestions
method: GET
description: List Linked Questions
inputParameters:
- name: ids
in: path
type: string
required: true
description: Up to 100 semicolon-delimited ids of the resource.
- 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.
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: questions-ids-related
path: /questions/{ids}/related
operations:
- name: listRelatedQuestions
method: GET
description: List Related Questions
inputParameters:
- name: ids
in: path
type: string
required: true
description: Up to 100 semicolon-delimited ids of the resource.
- 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.
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
exposes:
- type: rest
namespace: stack-exchange-questions-rest
port: 8080
description: REST adapter for Stack Exchange API v2.3 — Questions. One Spectral-compliant resource per consumed operation, prefixed with /v1.
resources:
- path: /v1/questions
name: questions
description: REST surface for questions.
operations:
- method: GET
name: listQuestions
description: List Questions
call: stack-exchange-questions.listQuestions
with:
site: rest.site
key: rest.key
access_token: rest.access_token
filter: rest.filter
page: rest.page
pagesize: rest.pagesize
order: rest.order
fromdate: rest.fromdate
todate: rest.todate
tagged: rest.tagged
sort: rest.sort
outputParameters:
- type: object
mapping: $.
- path: /v1/questions/featured
name: featured
description: REST surface for questions.
operations:
- method: GET
name: listFeaturedQuestions
description: List Featured Questions
call: stack-exchange-questions.listFeaturedQuestions
with:
site: rest.site
key: rest.key
filter: rest.filter
page: rest.page
pagesize: rest.pagesize
tagged: rest.tagged
outputParameters:
- type: object
mapping: $.
- path: /v1/questions/unanswered
name: unanswered
description: REST surface for questions.
operations:
- method: GET
name: listUnansweredQuestions
description: List Unanswered Questions
call: stack-exchange-questions.listUnansweredQuestions
with:
site: rest.site
key: rest.key
filter: rest.filter
page: rest.page
pagesize: rest.pagesize
tagged: rest.tagged
outputParameters:
- type: object
mapping: $.
- path: /v1/questions/no-answers
name: no-answers
description: REST surface for questions.
operations:
- method: GET
name: listQuestionsWithoutAnswers
description: List Questions Without Answers
call: stack-exchange-questions.listQuestionsWithoutAnswers
with:
site: rest.site
key: rest.key
filter: rest.filter
page: rest.page
pagesize: rest.pagesize
tagged: rest.tagged
outputParameters:
- type: object
mapping: $.
- path: /v1/questions/{ids}
name: questions
description: REST surface for questions.
operations:
- method: GET
name: getQuestionsByIds
description: Get Questions by Ids
call: stack-exchange-questions.getQuestionsByIds
with:
ids: rest.ids
site: rest.site
key: rest.key
filter: rest.filter
outputParameters:
- type: object
mapping: $.
- path: /v1/questions/{ids}/answers
name: answers
description: REST surface for questions.
operations:
- method: GET
name: listAnswersOnQuestions
description: List Answers on Questions
call: stack-exchange-questions.listAnswersOnQuestions
with:
ids: rest.ids
site: rest.site
key: rest.key
filter: rest.filter
page: rest.page
pagesize: rest.pagesize
outputParameters:
- type: object
mapping: $.
- path: /v1/questions/{ids}/comments
name: comments
description: REST surface for questions.
operations:
- method: GET
name: listCommentsOnQuestions
description: List Comments on Questions
call: stack-exchange-questions.listCommentsOnQuestions
with:
ids: rest.ids
site: rest.site
key: rest.key
filter: rest.filter
page: rest.page
pagesize: rest.pagesize
outputParameters:
- type: object
mapping: $.
- path: /v1/questions/{ids}/linked
name: linked
description: REST surface for questions.
operations:
- method: GET
name: listLinkedQuestions
description: List Linked Questions
call: stack-exchange-questions.listLinkedQuestions
with:
ids: rest.ids
site: rest.site
key: rest.key
filter: rest.filter
outputParameters:
- type: object
mapping: $.
- path: /v1/questions/{ids}/related
name: related
description: REST surface for questions.
operations:
- method: GET
name: listRelatedQuestions
description: List Related Questions
call: stack-exchange-questions.listRelatedQuestions
with:
ids: rest.ids
site: rest.site
key: rest.key
filter: rest.filter
outputParameters:
- type: object
mapping: $.
- type: mcp
namespace: stack-exchange-questions-mcp
port: 9090
transport: http
description: MCP adapter for Stack Exchange API v2.3 — Questions. One tool per consumed operation, routed inline through this capability's consumes block.
tools:
- name: list-questions
description: List Questions
hints:
readOnly: true
destructive: false
idempotent: true
call: stack-exchange-questions.listQuestions
with:
site: tools.site
key: tools.key
access_token: tools.access_token
filter: tools.filter
page: tools.page
pagesize: tools.pagesize
order: tools.order
fromdate: tools.fromdate
todate: tools.todate
tagged: tools.tagged
sort: tools.sort
outputParameters:
- type: object
mapping: $.
- name: list-featured-questions
description: List Featured Questions
hints:
readOnly: true
destructive: false
idempotent: true
call: stack-exchange-questions.listFeaturedQuestions
with:
site: tools.site
key: tools.key
filter: tools.filter
page: tools.page
pagesize: tools.pagesize
tagged: tools.tagged
outputParameters:
- type: object
mapping: $.
- name: list-unanswered-questions
description: List Unanswered Questions
hints:
readOnly: true
destructive: false
idempotent: true
call: stack-exchange-questions.listUnansweredQuestions
with:
site: tools.site
key: tools.key
filter: tools.filter
page: tools.page
pagesize: tools.pagesize
tagged: tools.tagged
outputParameters:
- type: object
mapping: $.
- name: list-questions-without-answers
description: List Questions Without Answers
hints:
readOnly: true
destructive: false
idempotent: true
call: stack-exchange-questions.listQuestionsWithoutAnswers
with:
site: tools.site
key: tools.key
filter: tools.filter
page: tools.page
pagesize: tools.pagesize
tagged: tools.tagged
outputParameters:
- type: object
mapping: $.
- name: get-questions-ids
description: Get Questions by Ids
hints:
readOnly: true
destructive: false
idempotent: true
call: stack-exchange-questions.getQuestionsByIds
with:
ids: tools.ids
site: tools.site
key: tools.key
filter: tools.filter
outputParameters:
- type: object
mapping: $.
- name: list-answers-questions
description: List Answers on Questions
hints:
readOnly: true
destructive: false
idempotent: true
call: stack-exchange-questions.listAnswersOnQuestions
with:
ids: tools.ids
site: tools.site
key: tools.key
filter: tools.filter
page: tools.page
pagesize: tools.pagesize
outputParameters:
- type: object
mapping: $.
- name: list-comments-questions
description: List Comments on Questions
hints:
readOnly: true
destructive: false
idempotent: true
call: stack-exchange-questions.listCommentsOnQuestions
with:
ids: tools.ids
site: tools.site
key: tools.key
filter: tools.filter
page: tools.page
pagesize: tools.pagesize
outputParameters:
- type: object
mapping: $.
- name: list-linked-questions
description: List Linked Questions
hints:
readOnly: true
destructive: false
idempotent: true
call: stack-exchange-questions.listLinkedQuestions
with:
ids: tools.ids
site: tools.site
key: tools.key
filter: tools.filter
outputParameters:
- type: object
mapping: $.
- name: list-related-questions
description: List Related Questions
hints:
readOnly: true
destructive: false
idempotent: true
call: stack-exchange-questions.listRelatedQuestions
with:
ids: tools.ids
site: tools.site
key: tools.key
filter: tools.filter
outputParameters:
- type: object
mapping: $.