naftiko: 1.0.0-alpha2 info: label: "Exa Research API \u2014 Research" description: "Exa Research API \u2014 Research. 3 operations. Lead operation: List research requests. Self-contained Naftiko\ \ capability covering one Exa business surface." tags: - Exa - Research created: '2026-05-25' modified: '2026-05-25' binds: - namespace: env keys: EXA_API_KEY: EXA_API_KEY capability: consumes: - type: http namespace: research baseUri: https://api.exa.ai description: "Exa Research API \u2014 Research business capability. Self-contained, no shared references." resources: - name: research-v1 path: /research/v1 operations: - name: researchcontrollerlistresearch method: GET description: Exa List research requests outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: cursor in: query type: string description: The cursor to paginate through the results required: false - name: limit in: query type: number description: Number of results per page (1-50) required: false - name: researchcontrollercreateresearch method: POST description: Exa Create a new research request outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: research-v1-researchid path: /research/v1/{researchId} operations: - name: researchcontrollergetresearch method: GET description: Exa Get a research request by id outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: researchId in: path type: string description: The unique identifier of the research request to retrieve required: true - name: stream in: query type: string description: Set to "true" to receive real-time updates via Server-Sent Events (SSE) required: false - name: events in: query type: string description: Set to "true" to include the detailed event log of all operations performed required: false authentication: type: apikey key: x-api-key value: '{{env.EXA_API_KEY}}' placement: header exposes: - type: rest namespace: research-rest port: 8080 description: "REST adapter for Exa Research API \u2014 Research. One Spectral-compliant resource per consumed operation,\ \ prefixed with /v1." resources: - path: /v1/research/v1 name: research-v1 description: REST surface for research-v1. operations: - method: GET name: researchcontrollerlistresearch description: Exa List research requests call: research.researchcontrollerlistresearch with: cursor: rest.cursor limit: rest.limit outputParameters: - type: object mapping: $. - method: POST name: researchcontrollercreateresearch description: Exa Create a new research request call: research.researchcontrollercreateresearch with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/research/v1/{researchId} name: research-v1-researchid description: REST surface for research-v1-researchid. operations: - method: GET name: researchcontrollergetresearch description: Exa Get a research request by id call: research.researchcontrollergetresearch with: researchId: rest.researchId stream: rest.stream events: rest.events outputParameters: - type: object mapping: $. - type: mcp namespace: research-mcp port: 9090 transport: http description: "MCP adapter for Exa Research API \u2014 Research. One tool per consumed operation, routed inline through\ \ this capability's consumes block." tools: - name: exa-list-research-requests description: Exa List research requests hints: readOnly: true destructive: false idempotent: true call: research.researchcontrollerlistresearch with: cursor: tools.cursor limit: tools.limit outputParameters: - type: object mapping: $. - name: exa-create-a-new-research-request description: Exa Create a new research request hints: readOnly: false destructive: false idempotent: false call: research.researchcontrollercreateresearch with: body: tools.body outputParameters: - type: object mapping: $. - name: exa-get-a-research-request-by-id description: Exa Get a research request by id hints: readOnly: true destructive: false idempotent: true call: research.researchcontrollergetresearch with: researchId: tools.researchId stream: tools.stream events: tools.events outputParameters: - type: object mapping: $.