naftiko: 1.0.0-alpha2 info: label: Bluesky Social API — Feeds description: 'Bluesky Social API — Feeds. 18 operations. Lead operation: Bluesky Get information about a feed generator, including policies and offered feed URIs.. Self-contained Naftiko capability covering one Bluesky business surface.' tags: - Bluesky - Feeds created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: BLUESKY_API_KEY: BLUESKY_API_KEY capability: consumes: - type: http namespace: bluesky-feeds baseUri: https://bsky.social/xrpc description: Bluesky Social API — Feeds business capability. Self-contained, no shared references. resources: - name: xrpc-app.bsky.feed.describeFeedGenerator path: /xrpc/app.bsky.feed.describeFeedGenerator operations: - name: feeddescribefeedgenerator method: GET description: Bluesky Get information about a feed generator, including policies and offered feed URIs. outputRawFormat: json outputParameters: - name: result type: object value: $. - name: xrpc-app.bsky.feed.getActorFeeds path: /xrpc/app.bsky.feed.getActorFeeds operations: - name: feedgetactorfeeds method: GET description: Bluesky Get a list of feeds (feed generator records) created by the actor (in the actor's repo). outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: actor in: query type: string required: true - name: limit in: query type: integer - name: cursor in: query type: string - name: xrpc-app.bsky.feed.getActorLikes path: /xrpc/app.bsky.feed.getActorLikes operations: - name: feedgetactorlikes method: GET description: Bluesky Get a list of posts liked by an actor. outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: actor in: query type: string required: true - name: limit in: query type: integer - name: cursor in: query type: string - name: xrpc-app.bsky.feed.getAuthorFeed path: /xrpc/app.bsky.feed.getAuthorFeed operations: - name: feedgetauthorfeed method: GET description: Bluesky Get a view of an actor's 'author feed' (post and reposts by the author). outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: actor in: query type: string required: true - name: limit in: query type: integer - name: cursor in: query type: string - name: filter in: query type: string description: Combinations of post/repost types to include in response. - name: includePins in: query type: boolean - name: xrpc-app.bsky.feed.getFeed path: /xrpc/app.bsky.feed.getFeed operations: - name: feedgetfeed method: GET description: Bluesky Get a hydrated feed from an actor's selected feed generator. outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: feed in: query type: string required: true - name: limit in: query type: integer - name: cursor in: query type: string - name: xrpc-app.bsky.feed.getFeedGenerator path: /xrpc/app.bsky.feed.getFeedGenerator operations: - name: feedgetfeedgenerator method: GET description: Bluesky Get information about a feed generator. outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: feed in: query type: string description: AT-URI of the feed generator record. required: true - name: xrpc-app.bsky.feed.getFeedGenerators path: /xrpc/app.bsky.feed.getFeedGenerators operations: - name: feedgetfeedgenerators method: GET description: Bluesky Get information about a list of feed generators. outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: feeds in: query type: array required: true - name: xrpc-app.bsky.feed.getFeedSkeleton path: /xrpc/app.bsky.feed.getFeedSkeleton operations: - name: feedgetfeedskeleton method: GET description: Bluesky Get a skeleton of a feed provided by a feed generator. outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: feed in: query type: string description: Reference to feed generator record describing the specific feed being requested. required: true - name: limit in: query type: integer - name: cursor in: query type: string - name: xrpc-app.bsky.feed.getLikes path: /xrpc/app.bsky.feed.getLikes operations: - name: feedgetlikes method: GET description: Bluesky Get like records which reference a subject (by AT-URI and CID). outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: uri in: query type: string description: AT-URI of the subject (eg, a post record). required: true - name: cid in: query type: string description: CID of the subject record (aka, specific version of record), to filter likes. - name: limit in: query type: integer - name: cursor in: query type: string - name: xrpc-app.bsky.feed.getListFeed path: /xrpc/app.bsky.feed.getListFeed operations: - name: feedgetlistfeed method: GET description: Bluesky Get a feed of recent posts from a list (posts and reposts from any actors on the list). outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: list in: query type: string description: Reference (AT-URI) to the list record. required: true - name: limit in: query type: integer - name: cursor in: query type: string - name: xrpc-app.bsky.feed.getPostThread path: /xrpc/app.bsky.feed.getPostThread operations: - name: feedgetpostthread method: GET description: Bluesky Get posts in a thread. outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: uri in: query type: string description: Reference (AT-URI) to post record. required: true - name: depth in: query type: integer description: How many levels of reply depth should be included in response. - name: parentHeight in: query type: integer description: How many levels of parent (and grandparent, etc) post to include. - name: xrpc-app.bsky.feed.getPosts path: /xrpc/app.bsky.feed.getPosts operations: - name: feedgetposts method: GET description: Bluesky Gets post views for a specified list of posts (by AT-URI). outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: uris in: query type: array description: List of post AT-URIs to return hydrated views for. required: true - name: xrpc-app.bsky.feed.getQuotes path: /xrpc/app.bsky.feed.getQuotes operations: - name: feedgetquotes method: GET description: Bluesky Get a list of quotes for a given post. outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: uri in: query type: string description: Reference (AT-URI) of post record required: true - name: cid in: query type: string description: If supplied, filters to quotes of specific version (by CID) of the post record. - name: limit in: query type: integer - name: cursor in: query type: string - name: xrpc-app.bsky.feed.getRepostedBy path: /xrpc/app.bsky.feed.getRepostedBy operations: - name: feedgetrepostedby method: GET description: Bluesky Get a list of reposts for a given post. outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: uri in: query type: string description: Reference (AT-URI) of post record required: true - name: cid in: query type: string description: If supplied, filters to reposts of specific version (by CID) of the post record. - name: limit in: query type: integer - name: cursor in: query type: string - name: xrpc-app.bsky.feed.getSuggestedFeeds path: /xrpc/app.bsky.feed.getSuggestedFeeds operations: - name: feedgetsuggestedfeeds method: GET description: Bluesky Get a list of suggested feeds (feed generators) for the requesting account. outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: limit in: query type: integer - name: cursor in: query type: string - name: xrpc-app.bsky.feed.getTimeline path: /xrpc/app.bsky.feed.getTimeline operations: - name: feedgettimeline method: GET description: Bluesky Get a view of the requesting account's home timeline. outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: algorithm in: query type: string description: 'Variant ''algorithm'' for timeline. Implementation-specific. NOTE: most feed flexibility has been moved to feed generator mechanism.' - name: limit in: query type: integer - name: cursor in: query type: string - name: xrpc-app.bsky.feed.searchPosts path: /xrpc/app.bsky.feed.searchPosts operations: - name: feedsearchposts method: GET description: Bluesky Find posts matching search criteria, returning views of those posts. outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: q in: query type: string description: Search query string; syntax, phrase, boolean, and faceting is unspecified, but Lucene query syntax is recommended. required: true - name: sort in: query type: string description: Specifies the ranking order of results. - name: since in: query type: string description: Filter results for posts after the indicated datetime (inclusive). Expected to use 'sortAt' timestamp, which may not match 'createdAt'. Can be a datetime, or ju - name: until in: query type: string description: 'Filter results for posts before the indicated datetime (not inclusive). Expected to use ''sortAt'' timestamp, which may not match ''createdAt''. Can be a datetime, ' - name: mentions in: query type: string description: Filter to posts which mention the given account. Handles are resolved to DID before query-time. Only matches rich-text facet mentions. - name: author in: query type: string description: Filter to posts by the given account. Handles are resolved to DID before query-time. - name: lang in: query type: string description: Filter to posts in the given language. Expected to be based on post language field, though server may override language detection. - name: domain in: query type: string description: Filter to posts with URLs (facet links or embeds) linking to the given domain (hostname). Server may apply hostname normalization. - name: url in: query type: string description: Filter to posts with links (facet links or embeds) pointing to this URL. Server may apply URL normalization or fuzzy matching. - name: tag in: query type: array description: Filter to posts with the given tag (hashtag), based on rich-text facet or tag field. Do not include the hash (#) prefix. Multiple tags can be specified, with 'A - name: limit in: query type: integer - name: cursor in: query type: string description: Optional pagination mechanism; may not necessarily allow scrolling through entire result set. - name: xrpc-app.bsky.feed.sendInteractions path: /xrpc/app.bsky.feed.sendInteractions operations: - name: feedsendinteractions method: POST description: Bluesky Send information about interactions with feed items back to the feed generator that served them. outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true authentication: type: bearer token: '{{env.BLUESKY_API_KEY}}' exposes: - type: rest namespace: bluesky-feeds-rest port: 8080 description: REST adapter for Bluesky Social API — Feeds. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/xrpc/app-bsky-feed-describefeedgenerator name: xrpc-app-bsky-feed-describefeedgenerator description: REST surface for xrpc-app.bsky.feed.describeFeedGenerator. operations: - method: GET name: feeddescribefeedgenerator description: Bluesky Get information about a feed generator, including policies and offered feed URIs. call: bluesky-feeds.feeddescribefeedgenerator outputParameters: - type: object mapping: $. - path: /v1/xrpc/app-bsky-feed-getactorfeeds name: xrpc-app-bsky-feed-getactorfeeds description: REST surface for xrpc-app.bsky.feed.getActorFeeds. operations: - method: GET name: feedgetactorfeeds description: Bluesky Get a list of feeds (feed generator records) created by the actor (in the actor's repo). call: bluesky-feeds.feedgetactorfeeds with: actor: rest.actor limit: rest.limit cursor: rest.cursor outputParameters: - type: object mapping: $. - path: /v1/xrpc/app-bsky-feed-getactorlikes name: xrpc-app-bsky-feed-getactorlikes description: REST surface for xrpc-app.bsky.feed.getActorLikes. operations: - method: GET name: feedgetactorlikes description: Bluesky Get a list of posts liked by an actor. call: bluesky-feeds.feedgetactorlikes with: actor: rest.actor limit: rest.limit cursor: rest.cursor outputParameters: - type: object mapping: $. - path: /v1/xrpc/app-bsky-feed-getauthorfeed name: xrpc-app-bsky-feed-getauthorfeed description: REST surface for xrpc-app.bsky.feed.getAuthorFeed. operations: - method: GET name: feedgetauthorfeed description: Bluesky Get a view of an actor's 'author feed' (post and reposts by the author). call: bluesky-feeds.feedgetauthorfeed with: actor: rest.actor limit: rest.limit cursor: rest.cursor filter: rest.filter includePins: rest.includePins outputParameters: - type: object mapping: $. - path: /v1/xrpc/app-bsky-feed-getfeed name: xrpc-app-bsky-feed-getfeed description: REST surface for xrpc-app.bsky.feed.getFeed. operations: - method: GET name: feedgetfeed description: Bluesky Get a hydrated feed from an actor's selected feed generator. call: bluesky-feeds.feedgetfeed with: feed: rest.feed limit: rest.limit cursor: rest.cursor outputParameters: - type: object mapping: $. - path: /v1/xrpc/app-bsky-feed-getfeedgenerator name: xrpc-app-bsky-feed-getfeedgenerator description: REST surface for xrpc-app.bsky.feed.getFeedGenerator. operations: - method: GET name: feedgetfeedgenerator description: Bluesky Get information about a feed generator. call: bluesky-feeds.feedgetfeedgenerator with: feed: rest.feed outputParameters: - type: object mapping: $. - path: /v1/xrpc/app-bsky-feed-getfeedgenerators name: xrpc-app-bsky-feed-getfeedgenerators description: REST surface for xrpc-app.bsky.feed.getFeedGenerators. operations: - method: GET name: feedgetfeedgenerators description: Bluesky Get information about a list of feed generators. call: bluesky-feeds.feedgetfeedgenerators with: feeds: rest.feeds outputParameters: - type: object mapping: $. - path: /v1/xrpc/app-bsky-feed-getfeedskeleton name: xrpc-app-bsky-feed-getfeedskeleton description: REST surface for xrpc-app.bsky.feed.getFeedSkeleton. operations: - method: GET name: feedgetfeedskeleton description: Bluesky Get a skeleton of a feed provided by a feed generator. call: bluesky-feeds.feedgetfeedskeleton with: feed: rest.feed limit: rest.limit cursor: rest.cursor outputParameters: - type: object mapping: $. - path: /v1/xrpc/app-bsky-feed-getlikes name: xrpc-app-bsky-feed-getlikes description: REST surface for xrpc-app.bsky.feed.getLikes. operations: - method: GET name: feedgetlikes description: Bluesky Get like records which reference a subject (by AT-URI and CID). call: bluesky-feeds.feedgetlikes with: uri: rest.uri cid: rest.cid limit: rest.limit cursor: rest.cursor outputParameters: - type: object mapping: $. - path: /v1/xrpc/app-bsky-feed-getlistfeed name: xrpc-app-bsky-feed-getlistfeed description: REST surface for xrpc-app.bsky.feed.getListFeed. operations: - method: GET name: feedgetlistfeed description: Bluesky Get a feed of recent posts from a list (posts and reposts from any actors on the list). call: bluesky-feeds.feedgetlistfeed with: list: rest.list limit: rest.limit cursor: rest.cursor outputParameters: - type: object mapping: $. - path: /v1/xrpc/app-bsky-feed-getpostthread name: xrpc-app-bsky-feed-getpostthread description: REST surface for xrpc-app.bsky.feed.getPostThread. operations: - method: GET name: feedgetpostthread description: Bluesky Get posts in a thread. call: bluesky-feeds.feedgetpostthread with: uri: rest.uri depth: rest.depth parentHeight: rest.parentHeight outputParameters: - type: object mapping: $. - path: /v1/xrpc/app-bsky-feed-getposts name: xrpc-app-bsky-feed-getposts description: REST surface for xrpc-app.bsky.feed.getPosts. operations: - method: GET name: feedgetposts description: Bluesky Gets post views for a specified list of posts (by AT-URI). call: bluesky-feeds.feedgetposts with: uris: rest.uris outputParameters: - type: object mapping: $. - path: /v1/xrpc/app-bsky-feed-getquotes name: xrpc-app-bsky-feed-getquotes description: REST surface for xrpc-app.bsky.feed.getQuotes. operations: - method: GET name: feedgetquotes description: Bluesky Get a list of quotes for a given post. call: bluesky-feeds.feedgetquotes with: uri: rest.uri cid: rest.cid limit: rest.limit cursor: rest.cursor outputParameters: - type: object mapping: $. - path: /v1/xrpc/app-bsky-feed-getrepostedby name: xrpc-app-bsky-feed-getrepostedby description: REST surface for xrpc-app.bsky.feed.getRepostedBy. operations: - method: GET name: feedgetrepostedby description: Bluesky Get a list of reposts for a given post. call: bluesky-feeds.feedgetrepostedby with: uri: rest.uri cid: rest.cid limit: rest.limit cursor: rest.cursor outputParameters: - type: object mapping: $. - path: /v1/xrpc/app-bsky-feed-getsuggestedfeeds name: xrpc-app-bsky-feed-getsuggestedfeeds description: REST surface for xrpc-app.bsky.feed.getSuggestedFeeds. operations: - method: GET name: feedgetsuggestedfeeds description: Bluesky Get a list of suggested feeds (feed generators) for the requesting account. call: bluesky-feeds.feedgetsuggestedfeeds with: limit: rest.limit cursor: rest.cursor outputParameters: - type: object mapping: $. - path: /v1/xrpc/app-bsky-feed-gettimeline name: xrpc-app-bsky-feed-gettimeline description: REST surface for xrpc-app.bsky.feed.getTimeline. operations: - method: GET name: feedgettimeline description: Bluesky Get a view of the requesting account's home timeline. call: bluesky-feeds.feedgettimeline with: algorithm: rest.algorithm limit: rest.limit cursor: rest.cursor outputParameters: - type: object mapping: $. - path: /v1/xrpc/app-bsky-feed-searchposts name: xrpc-app-bsky-feed-searchposts description: REST surface for xrpc-app.bsky.feed.searchPosts. operations: - method: GET name: feedsearchposts description: Bluesky Find posts matching search criteria, returning views of those posts. call: bluesky-feeds.feedsearchposts with: q: rest.q sort: rest.sort since: rest.since until: rest.until mentions: rest.mentions author: rest.author lang: rest.lang domain: rest.domain url: rest.url tag: rest.tag limit: rest.limit cursor: rest.cursor outputParameters: - type: object mapping: $. - path: /v1/xrpc/app-bsky-feed-sendinteractions name: xrpc-app-bsky-feed-sendinteractions description: REST surface for xrpc-app.bsky.feed.sendInteractions. operations: - method: POST name: feedsendinteractions description: Bluesky Send information about interactions with feed items back to the feed generator that served them. call: bluesky-feeds.feedsendinteractions with: body: rest.body outputParameters: - type: object mapping: $. - type: mcp namespace: bluesky-feeds-mcp port: 9090 transport: http description: MCP adapter for Bluesky Social API — Feeds. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: bluesky-get-information-about-feed description: Bluesky Get information about a feed generator, including policies and offered feed URIs. hints: readOnly: true destructive: false idempotent: true call: bluesky-feeds.feeddescribefeedgenerator outputParameters: - type: object mapping: $. - name: bluesky-get-list-feeds-feed description: Bluesky Get a list of feeds (feed generator records) created by the actor (in the actor's repo). hints: readOnly: true destructive: false idempotent: true call: bluesky-feeds.feedgetactorfeeds with: actor: tools.actor limit: tools.limit cursor: tools.cursor outputParameters: - type: object mapping: $. - name: bluesky-get-list-posts-liked description: Bluesky Get a list of posts liked by an actor. hints: readOnly: true destructive: false idempotent: true call: bluesky-feeds.feedgetactorlikes with: actor: tools.actor limit: tools.limit cursor: tools.cursor outputParameters: - type: object mapping: $. - name: bluesky-get-view-actor-s-author description: Bluesky Get a view of an actor's 'author feed' (post and reposts by the author). hints: readOnly: true destructive: false idempotent: true call: bluesky-feeds.feedgetauthorfeed with: actor: tools.actor limit: tools.limit cursor: tools.cursor filter: tools.filter includePins: tools.includePins outputParameters: - type: object mapping: $. - name: bluesky-get-hydrated-feed-actor-s description: Bluesky Get a hydrated feed from an actor's selected feed generator. hints: readOnly: true destructive: false idempotent: true call: bluesky-feeds.feedgetfeed with: feed: tools.feed limit: tools.limit cursor: tools.cursor outputParameters: - type: object mapping: $. - name: bluesky-get-information-about-feed-2 description: Bluesky Get information about a feed generator. hints: readOnly: true destructive: false idempotent: true call: bluesky-feeds.feedgetfeedgenerator with: feed: tools.feed outputParameters: - type: object mapping: $. - name: bluesky-get-information-about-list description: Bluesky Get information about a list of feed generators. hints: readOnly: true destructive: false idempotent: true call: bluesky-feeds.feedgetfeedgenerators with: feeds: tools.feeds outputParameters: - type: object mapping: $. - name: bluesky-get-skeleton-feed-provided description: Bluesky Get a skeleton of a feed provided by a feed generator. hints: readOnly: true destructive: false idempotent: true call: bluesky-feeds.feedgetfeedskeleton with: feed: tools.feed limit: tools.limit cursor: tools.cursor outputParameters: - type: object mapping: $. - name: bluesky-get-like-records-which description: Bluesky Get like records which reference a subject (by AT-URI and CID). hints: readOnly: true destructive: false idempotent: true call: bluesky-feeds.feedgetlikes with: uri: tools.uri cid: tools.cid limit: tools.limit cursor: tools.cursor outputParameters: - type: object mapping: $. - name: bluesky-get-feed-recent-posts description: Bluesky Get a feed of recent posts from a list (posts and reposts from any actors on the list). hints: readOnly: true destructive: false idempotent: true call: bluesky-feeds.feedgetlistfeed with: list: tools.list limit: tools.limit cursor: tools.cursor outputParameters: - type: object mapping: $. - name: bluesky-get-posts-thread description: Bluesky Get posts in a thread. hints: readOnly: true destructive: false idempotent: true call: bluesky-feeds.feedgetpostthread with: uri: tools.uri depth: tools.depth parentHeight: tools.parentHeight outputParameters: - type: object mapping: $. - name: bluesky-gets-post-views-specified description: Bluesky Gets post views for a specified list of posts (by AT-URI). hints: readOnly: true destructive: false idempotent: true call: bluesky-feeds.feedgetposts with: uris: tools.uris outputParameters: - type: object mapping: $. - name: bluesky-get-list-quotes-given description: Bluesky Get a list of quotes for a given post. hints: readOnly: true destructive: false idempotent: true call: bluesky-feeds.feedgetquotes with: uri: tools.uri cid: tools.cid limit: tools.limit cursor: tools.cursor outputParameters: - type: object mapping: $. - name: bluesky-get-list-reposts-given description: Bluesky Get a list of reposts for a given post. hints: readOnly: true destructive: false idempotent: true call: bluesky-feeds.feedgetrepostedby with: uri: tools.uri cid: tools.cid limit: tools.limit cursor: tools.cursor outputParameters: - type: object mapping: $. - name: bluesky-get-list-suggested-feeds description: Bluesky Get a list of suggested feeds (feed generators) for the requesting account. hints: readOnly: true destructive: false idempotent: true call: bluesky-feeds.feedgetsuggestedfeeds with: limit: tools.limit cursor: tools.cursor outputParameters: - type: object mapping: $. - name: bluesky-get-view-requesting-account-s description: Bluesky Get a view of the requesting account's home timeline. hints: readOnly: true destructive: false idempotent: true call: bluesky-feeds.feedgettimeline with: algorithm: tools.algorithm limit: tools.limit cursor: tools.cursor outputParameters: - type: object mapping: $. - name: bluesky-find-posts-matching-search description: Bluesky Find posts matching search criteria, returning views of those posts. hints: readOnly: true destructive: false idempotent: true call: bluesky-feeds.feedsearchposts with: q: tools.q sort: tools.sort since: tools.since until: tools.until mentions: tools.mentions author: tools.author lang: tools.lang domain: tools.domain url: tools.url tag: tools.tag limit: tools.limit cursor: tools.cursor outputParameters: - type: object mapping: $. - name: bluesky-send-information-about-interactions description: Bluesky Send information about interactions with feed items back to the feed generator that served them. hints: readOnly: false destructive: false idempotent: false call: bluesky-feeds.feedsendinteractions with: body: tools.body outputParameters: - type: object mapping: $.