naftiko: 1.0.0-alpha2 info: label: Agent API — Messages description: 'Agent API — Messages. 8 operations. Lead operation: Search messages. Self-contained Naftiko capability covering one Finos business surface.' tags: - Finos - Messages created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: FINOS_API_KEY: FINOS_API_KEY capability: consumes: - type: http namespace: symphony-agent-messages baseUri: '' description: Agent API — Messages business capability. Self-contained, no shared references. resources: - name: v1-message-search path: /v1/message/search operations: - name: get method: GET description: Search messages outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: query in: query type: string description: The search query. See above for the query syntax. required: true - name: skip in: query type: integer description: No. of results to skip. - name: limit in: query type: integer description: Max no. of results to return. If no value is provided, 50 is the default. - name: scope in: query type: string description: Describes where content should be searched for that query. - name: sortDir in: query type: string description: 'Messages sort direction : ASC or DESC (default to DESC)' - name: tier in: query type: string description: 'Target search tier : hot, warm or all (default to hot)' - name: sessionToken in: header type: string description: Session authentication token. required: true - name: keyManagerToken in: header type: string description: Key Manager authentication token. - name: post method: POST description: Search messages outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: skip in: query type: integer description: No. of results to skip. - name: limit in: query type: integer description: Max no. of results to return. If no value is provided, 50 is the default. - name: scope in: query type: string description: Describes where content should be searched for that query. - name: sortDir in: query type: string description: 'Messages sort direction : ASC or DESC (default to DESC)' - name: tier in: query type: string description: 'Target search tier : hot, warm or all (default to hot)' - name: sessionToken in: header type: string description: Session authentication token. required: true - name: keyManagerToken in: header type: string description: Key Manager authentication token. - name: body in: body type: object description: Request body (JSON). required: true - name: v1-message-id path: /v1/message/{id} operations: - name: get method: GET description: Get a message by ID outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: sessionToken in: header type: string description: Session authentication token. required: true - name: keyManagerToken in: header type: string description: Key Manager authentication token. - name: id in: path type: string description: Message ID as a URL-safe string required: true - name: v4-message-blast path: /v4/message/blast operations: - name: post method: POST description: Post a message to multiple existing streams. outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: sessionToken in: header type: string description: Authorization token used to make delegated calls. required: true - name: keyManagerToken in: header type: string description: Key Manager authentication token. - name: body in: body type: object description: Request body (JSON). required: false - name: v4-message-import path: /v4/message/import operations: - name: post method: POST description: Import messages from other systems into Symphony. outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: sessionToken in: header type: string description: Session authentication token. required: true - name: keyManagerToken in: header type: string description: Key Manager authentication token. - name: body in: body type: object description: Request body (JSON). required: true - name: v4-stream-sid-message path: /v4/stream/{sid}/message operations: - name: get method: GET description: Get messages from an existing stream. outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: sid in: path type: string description: Stream ID required: true - name: since in: query type: integer description: Timestamp of first required message. required: true - name: until in: query type: integer description: Timestamp of last required message. - name: skip in: query type: integer description: No. of messages to skip. - name: limit in: query type: integer description: Max No. of messages to return. If no value is provided, 50 is the default. The maximum supported value is 500. - name: sessionToken in: header type: string description: Session authentication token. required: true - name: keyManagerToken in: header type: string description: Key Manager authentication token. - name: v4-stream-sid-message-create path: /v4/stream/{sid}/message/create operations: - name: post method: POST description: Post a message to one existing stream. outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: sid in: path type: string description: Stream ID required: true - name: sessionToken in: header type: string description: Authorization token used to make delegated calls. required: true - name: keyManagerToken in: header type: string description: Key Manager authentication token. - name: body in: body type: object description: Request body (JSON). required: false - name: v4-stream-sid-message-mid-update path: /v4/stream/{sid}/message/{mid}/update operations: - name: post method: POST description: Update an existing message. outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: sid in: path type: string description: Stream ID required: true - name: mid in: path type: string description: ID of the message to be updated required: true - name: sessionToken in: header type: string description: Authorization token used to make delegated calls. required: true - name: keyManagerToken in: header type: string description: Key Manager authentication token. - name: body in: body type: object description: Request body (JSON). required: false exposes: - type: rest namespace: symphony-agent-messages-rest port: 8080 description: REST adapter for Agent API — Messages. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/v1/message/search name: v1-message-search description: REST surface for v1-message-search. operations: - method: GET name: get description: Search messages call: symphony-agent-messages.get with: query: rest.query skip: rest.skip limit: rest.limit scope: rest.scope sortDir: rest.sortDir tier: rest.tier sessionToken: rest.sessionToken keyManagerToken: rest.keyManagerToken outputParameters: - type: object mapping: $. - method: POST name: post description: Search messages call: symphony-agent-messages.post with: skip: rest.skip limit: rest.limit scope: rest.scope sortDir: rest.sortDir tier: rest.tier sessionToken: rest.sessionToken keyManagerToken: rest.keyManagerToken body: rest.body outputParameters: - type: object mapping: $. - path: /v1/v1/message/{id} name: v1-message-id description: REST surface for v1-message-id. operations: - method: GET name: get description: Get a message by ID call: symphony-agent-messages.get with: sessionToken: rest.sessionToken keyManagerToken: rest.keyManagerToken id: rest.id outputParameters: - type: object mapping: $. - path: /v1/v4/message/blast name: v4-message-blast description: REST surface for v4-message-blast. operations: - method: POST name: post description: Post a message to multiple existing streams. call: symphony-agent-messages.post with: sessionToken: rest.sessionToken keyManagerToken: rest.keyManagerToken body: rest.body outputParameters: - type: object mapping: $. - path: /v1/v4/message/import name: v4-message-import description: REST surface for v4-message-import. operations: - method: POST name: post description: Import messages from other systems into Symphony. call: symphony-agent-messages.post with: sessionToken: rest.sessionToken keyManagerToken: rest.keyManagerToken body: rest.body outputParameters: - type: object mapping: $. - path: /v1/v4/stream/{sid}/message name: v4-stream-sid-message description: REST surface for v4-stream-sid-message. operations: - method: GET name: get description: Get messages from an existing stream. call: symphony-agent-messages.get with: sid: rest.sid since: rest.since until: rest.until skip: rest.skip limit: rest.limit sessionToken: rest.sessionToken keyManagerToken: rest.keyManagerToken outputParameters: - type: object mapping: $. - path: /v1/v4/stream/{sid}/message/create name: v4-stream-sid-message-create description: REST surface for v4-stream-sid-message-create. operations: - method: POST name: post description: Post a message to one existing stream. call: symphony-agent-messages.post with: sid: rest.sid sessionToken: rest.sessionToken keyManagerToken: rest.keyManagerToken body: rest.body outputParameters: - type: object mapping: $. - path: /v1/v4/stream/{sid}/message/{mid}/update name: v4-stream-sid-message-mid-update description: REST surface for v4-stream-sid-message-mid-update. operations: - method: POST name: post description: Update an existing message. call: symphony-agent-messages.post with: sid: rest.sid mid: rest.mid sessionToken: rest.sessionToken keyManagerToken: rest.keyManagerToken body: rest.body outputParameters: - type: object mapping: $. - type: mcp namespace: symphony-agent-messages-mcp port: 9090 transport: http description: MCP adapter for Agent API — Messages. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: search-messages description: Search messages hints: readOnly: true destructive: false idempotent: true call: symphony-agent-messages.get with: query: tools.query skip: tools.skip limit: tools.limit scope: tools.scope sortDir: tools.sortDir tier: tools.tier sessionToken: tools.sessionToken keyManagerToken: tools.keyManagerToken outputParameters: - type: object mapping: $. - name: search-messages-2 description: Search messages hints: readOnly: true destructive: false idempotent: false call: symphony-agent-messages.post with: skip: tools.skip limit: tools.limit scope: tools.scope sortDir: tools.sortDir tier: tools.tier sessionToken: tools.sessionToken keyManagerToken: tools.keyManagerToken body: tools.body outputParameters: - type: object mapping: $. - name: get-message-id description: Get a message by ID hints: readOnly: true destructive: false idempotent: true call: symphony-agent-messages.get with: sessionToken: tools.sessionToken keyManagerToken: tools.keyManagerToken id: tools.id outputParameters: - type: object mapping: $. - name: post-message-multiple-existing-streams description: Post a message to multiple existing streams. hints: readOnly: false destructive: false idempotent: false call: symphony-agent-messages.post with: sessionToken: tools.sessionToken keyManagerToken: tools.keyManagerToken body: tools.body outputParameters: - type: object mapping: $. - name: import-messages-other-systems-symphony description: Import messages from other systems into Symphony. hints: readOnly: false destructive: false idempotent: false call: symphony-agent-messages.post with: sessionToken: tools.sessionToken keyManagerToken: tools.keyManagerToken body: tools.body outputParameters: - type: object mapping: $. - name: get-messages-existing-stream description: Get messages from an existing stream. hints: readOnly: true destructive: false idempotent: true call: symphony-agent-messages.get with: sid: tools.sid since: tools.since until: tools.until skip: tools.skip limit: tools.limit sessionToken: tools.sessionToken keyManagerToken: tools.keyManagerToken outputParameters: - type: object mapping: $. - name: post-message-one-existing-stream description: Post a message to one existing stream. hints: readOnly: false destructive: false idempotent: false call: symphony-agent-messages.post with: sid: tools.sid sessionToken: tools.sessionToken keyManagerToken: tools.keyManagerToken body: tools.body outputParameters: - type: object mapping: $. - name: update-existing-message description: Update an existing message. hints: readOnly: false destructive: false idempotent: false call: symphony-agent-messages.post with: sid: tools.sid mid: tools.mid sessionToken: tools.sessionToken keyManagerToken: tools.keyManagerToken body: tools.body outputParameters: - type: object mapping: $.