naftiko: 1.0.0-alpha2 info: label: Runloop Axons (axons) description: Runloop axons capability covering one Runloop business surface. 8 operations. tags: - Runloop - Axons - AI Agents - Sandboxes created: '2026-05-25' modified: '2026-05-25' binds: - namespace: env keys: RUNLOOP_API_KEY: RUNLOOP_API_KEY capability: consumes: - type: http namespace: axons-axons baseUri: https://api.runloop.ai description: Runloop axons business capability. Self-contained, no shared references. resources: - name: v1-axons path: /v1/axons operations: - name: createAxon method: POST description: '[Beta] Create an axon.' outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: false - name: listActiveAxons method: GET description: '[Beta] List active axons.' outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: name in: query type: string description: Filter by axon name (prefix match supported). required: false - name: id in: query type: string description: Filter by axon ID. required: false - name: limit in: query type: integer description: The limit of items to return. Default is 20. Max is 5000. required: false - name: starting_after in: query type: string description: Load the next page of data starting after the item with the given ID. required: false - name: include_total_count in: query type: boolean description: If true (default), includes total_count in the response. Set to false to skip the count query for better performance on large datasets. required: false - name: v1-axons-id path: /v1/axons/{id} operations: - name: getAxon method: GET description: '[Beta] Get an axon.' outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The axon identifier. required: true - name: v1-axons-id-events path: /v1/axons/{id}/events operations: - name: listAxonEvents method: GET description: '[Beta] List events for an axon.' outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The axon identifier. required: true - name: limit in: query type: integer description: The limit of items to return. Default is 20. Max is 5000. required: false - name: starting_after in: query type: string description: Load the next page of data starting after the item with the given ID. required: false - name: include_total_count in: query type: boolean description: If true (default), includes total_count in the response. Set to false to skip the count query for better performance on large datasets. required: false - name: v1-axons-id-publish path: /v1/axons/{id}/publish operations: - name: publishToAxon method: POST description: '[Beta] Publish an event to an axon.' outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The axon identifier. required: true - name: body in: body type: object description: Request body (JSON). required: false - name: v1-axons-id-sql-batch path: /v1/axons/{id}/sql/batch operations: - name: axonSqlBatch method: POST description: '[Beta] Execute a batch of SQL statements against an axon''s database.' outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The axon identifier. required: true - name: body in: body type: object description: Request body (JSON). required: true - name: v1-axons-id-sql-query path: /v1/axons/{id}/sql/query operations: - name: axonSqlQuery method: POST description: '[Beta] Execute a SQL query against an axon''s database.' outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The axon identifier. required: true - name: body in: body type: object description: Request body (JSON). required: true - name: v1-axons-id-subscribe-sse path: /v1/axons/{id}/subscribe/sse operations: - name: subscribeToAxonSse method: GET description: '[Beta] Subscribe to an axon event stream via SSE.' outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: id in: path type: string description: The axon identifier. required: true - name: after_sequence in: query type: integer description: Sequence number after which to start streaming. Events with sequence > this value are returned. If unset, replay from the beginning. required: false authentication: type: bearer value: '{{env.RUNLOOP_API_KEY}}' placement: header exposes: - type: rest namespace: axons-axons-rest port: 8080 description: REST adapter for Runloop axons. One Spectral-compliant resource per consumed operation. resources: - path: /v1/axons name: v1-axons description: REST surface for v1-axons. operations: - method: POST name: createAxon description: '[Beta] Create an axon.' call: axons-axons.createAxon with: body: rest.body outputParameters: - type: object mapping: $. - method: GET name: listActiveAxons description: '[Beta] List active axons.' call: axons-axons.listActiveAxons with: name: rest.params.name id: rest.params.id limit: rest.params.limit starting_after: rest.params.starting_after include_total_count: rest.params.include_total_count outputParameters: - type: object mapping: $. - path: /v1/axons/{id} name: v1-axons-id description: REST surface for v1-axons-id. operations: - method: GET name: getAxon description: '[Beta] Get an axon.' call: axons-axons.getAxon with: id: rest.params.id outputParameters: - type: object mapping: $. - path: /v1/axons/{id}/events name: v1-axons-id-events description: REST surface for v1-axons-id-events. operations: - method: GET name: listAxonEvents description: '[Beta] List events for an axon.' call: axons-axons.listAxonEvents with: id: rest.params.id limit: rest.params.limit starting_after: rest.params.starting_after include_total_count: rest.params.include_total_count outputParameters: - type: object mapping: $. - path: /v1/axons/{id}/publish name: v1-axons-id-publish description: REST surface for v1-axons-id-publish. operations: - method: POST name: publishToAxon description: '[Beta] Publish an event to an axon.' call: axons-axons.publishToAxon with: id: rest.params.id body: rest.body outputParameters: - type: object mapping: $. - path: /v1/axons/{id}/sql/batch name: v1-axons-id-sql-batch description: REST surface for v1-axons-id-sql-batch. operations: - method: POST name: axonSqlBatch description: '[Beta] Execute a batch of SQL statements against an axon''s database.' call: axons-axons.axonSqlBatch with: id: rest.params.id body: rest.body outputParameters: - type: object mapping: $. - path: /v1/axons/{id}/sql/query name: v1-axons-id-sql-query description: REST surface for v1-axons-id-sql-query. operations: - method: POST name: axonSqlQuery description: '[Beta] Execute a SQL query against an axon''s database.' call: axons-axons.axonSqlQuery with: id: rest.params.id body: rest.body outputParameters: - type: object mapping: $. - path: /v1/axons/{id}/subscribe/sse name: v1-axons-id-subscribe-sse description: REST surface for v1-axons-id-subscribe-sse. operations: - method: GET name: subscribeToAxonSse description: '[Beta] Subscribe to an axon event stream via SSE.' call: axons-axons.subscribeToAxonSse with: id: rest.params.id after_sequence: rest.params.after_sequence outputParameters: - type: object mapping: $. - type: mcp namespace: axons-axons-mcp port: 9090 transport: http description: MCP adapter for Runloop axons. One tool per consumed operation. tools: - name: runloop-axons-axons-createAxon description: '[Beta] Create an axon.' hints: readOnly: false destructive: false idempotent: false call: axons-axons.createAxon with: body: tools.body outputParameters: - type: object mapping: $. - name: runloop-axons-axons-listActiveAxons description: '[Beta] List active axons.' hints: readOnly: true destructive: false idempotent: true call: axons-axons.listActiveAxons with: name: tools.name id: tools.id limit: tools.limit starting_after: tools.starting_after include_total_count: tools.include_total_count outputParameters: - type: object mapping: $. - name: runloop-axons-axons-getAxon description: '[Beta] Get an axon.' hints: readOnly: true destructive: false idempotent: true call: axons-axons.getAxon with: id: tools.id outputParameters: - type: object mapping: $. - name: runloop-axons-axons-listAxonEvents description: '[Beta] List events for an axon.' hints: readOnly: true destructive: false idempotent: true call: axons-axons.listAxonEvents with: id: tools.id limit: tools.limit starting_after: tools.starting_after include_total_count: tools.include_total_count outputParameters: - type: object mapping: $. - name: runloop-axons-axons-publishToAxon description: '[Beta] Publish an event to an axon.' hints: readOnly: false destructive: false idempotent: false call: axons-axons.publishToAxon with: id: tools.id body: tools.body outputParameters: - type: object mapping: $. - name: runloop-axons-axons-axonSqlBatch description: '[Beta] Execute a batch of SQL statements against an axon''s database.' hints: readOnly: false destructive: false idempotent: false call: axons-axons.axonSqlBatch with: id: tools.id body: tools.body outputParameters: - type: object mapping: $. - name: runloop-axons-axons-axonSqlQuery description: '[Beta] Execute a SQL query against an axon''s database.' hints: readOnly: false destructive: false idempotent: false call: axons-axons.axonSqlQuery with: id: tools.id body: tools.body outputParameters: - type: object mapping: $. - name: runloop-axons-axons-subscribeToAxonSse description: '[Beta] Subscribe to an axon event stream via SSE.' hints: readOnly: true destructive: false idempotent: true call: axons-axons.subscribeToAxonSse with: id: tools.id after_sequence: tools.after_sequence outputParameters: - type: object mapping: $.