> ## Documentation Index
> Fetch the complete documentation index at: https://docs.pinkfish.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# bluesky

> Bluesky Social

**Server path:** `/bluesky` | **Type:** Application | **PCID required:** Yes

## Tools

| Tool                                                        | Description                                                                              |
| ----------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
| [`bluesky_create_record`](#bluesky_create_record)           | Create a record in a user's repository (post, like, follow, repost, block)               |
| [`bluesky_delete_record`](#bluesky_delete_record)           | Delete a record from a user's repository (unlike, unfollow, unblock, delete post/repost) |
| [`bluesky_get_author_feed`](#bluesky_get_author_feed)       | Get posts by a specific user                                                             |
| [`bluesky_get_blocks`](#bluesky_get_blocks)                 | Get the authenticated user's block list                                                  |
| [`bluesky_get_followers`](#bluesky_get_followers)           | Get a user's followers                                                                   |
| [`bluesky_get_follows`](#bluesky_get_follows)               | Get the accounts a user follows                                                          |
| [`bluesky_get_likes`](#bluesky_get_likes)                   | Get the list of users who liked a post                                                   |
| [`bluesky_get_post_thread`](#bluesky_get_post_thread)       | Get a post and its reply thread                                                          |
| [`bluesky_get_profile`](#bluesky_get_profile)               | Get a user's profile by handle or DID                                                    |
| [`bluesky_get_timeline`](#bluesky_get_timeline)             | Get the authenticated user's home timeline                                               |
| [`bluesky_get_unread_count`](#bluesky_get_unread_count)     | Get the count of unread notifications                                                    |
| [`bluesky_list_notifications`](#bluesky_list_notifications) | List the authenticated user's notifications                                              |
| [`bluesky_mute_actor`](#bluesky_mute_actor)                 | Mute a user                                                                              |
| [`bluesky_search_actors`](#bluesky_search_actors)           | Search for Bluesky users by name or handle                                               |
| [`bluesky_search_posts`](#bluesky_search_posts)             | Search for posts on Bluesky                                                              |
| [`bluesky_unmute_actor`](#bluesky_unmute_actor)             | Unmute a user                                                                            |
| [`bluesky_update_seen`](#bluesky_update_seen)               | Mark notifications as seen up to a timestamp                                             |

***

## bluesky\_create\_record

Create a record in a user's repository (post, like, follow, repost, block)

**Parameters:**

| Parameter    | Type    | Required | Default | Description                                                                                                                                                                                               |
| ------------ | ------- | -------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `collection` | string  | Yes      | —       | The NSID of the record collection. Common values: app.bsky.feed.post (posts), app.bsky.feed.like (likes), app.bsky.feed.repost (reposts), app.bsky.graph.follow (follows), app.bsky.graph.block (blocks). |
| `record`     | object  | Yes      | —       | The record to create. Must include \$type matching the collection. Structure depends on the collection type — see the tool description for examples of each record type.                                  |
| `repo`       | string  | Yes      | —       | The handle or DID of the authenticated user (the repo owner). Use the user's own handle or DID.                                                                                                           |
| `rkey`       | string  | No       | —       | Record key (TID). Omit to auto-generate.                                                                                                                                                                  |
| `validate`   | boolean | No       | —       | Whether to validate the record against its lexicon schema                                                                                                                                                 |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "collection": {
        "type": "string",
        "description": "The NSID of the record collection. Common values: app.bsky.feed.post (posts), app.bsky.feed.like (likes), app.bsky.feed.repost (reposts), app.bsky.graph.follow (follows), app.bsky.graph.block (blocks)."
      },
      "record": {
        "type": "object",
        "description": "The record to create. Must include $type matching the collection. Structure depends on the collection type — see the tool description for examples of each record type."
      },
      "repo": {
        "type": "string",
        "description": "The handle or DID of the authenticated user (the repo owner). Use the user's own handle or DID."
      },
      "rkey": {
        "type": "string",
        "description": "Record key (TID). Omit to auto-generate."
      },
      "validate": {
        "type": "boolean",
        "description": "Whether to validate the record against its lexicon schema"
      }
    },
    "required": [
      "PCID",
      "collection",
      "record",
      "repo"
    ]
  }
  ```
</Expandable>

***

## bluesky\_delete\_record

Delete a record from a user's repository (unlike, unfollow, unblock, delete post/repost)

**Parameters:**

| Parameter    | Type   | Required | Default | Description                                                                                                                                                                                                         |
| ------------ | ------ | -------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `collection` | string | Yes      | —       | The NSID of the record collection. Common values: app.bsky.feed.post (delete post), app.bsky.feed.like (unlike), app.bsky.feed.repost (unrepost), app.bsky.graph.follow (unfollow), app.bsky.graph.block (unblock). |
| `repo`       | string | Yes      | —       | The handle or DID of the authenticated user (the repo owner)                                                                                                                                                        |
| `rkey`       | string | Yes      | —       | The record key (TID) to delete — the last segment of the record's AT-URI                                                                                                                                            |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "collection": {
        "type": "string",
        "description": "The NSID of the record collection. Common values: app.bsky.feed.post (delete post), app.bsky.feed.like (unlike), app.bsky.feed.repost (unrepost), app.bsky.graph.follow (unfollow), app.bsky.graph.block (unblock)."
      },
      "repo": {
        "type": "string",
        "description": "The handle or DID of the authenticated user (the repo owner)"
      },
      "rkey": {
        "type": "string",
        "description": "The record key (TID) to delete — the last segment of the record's AT-URI"
      }
    },
    "required": [
      "PCID",
      "collection",
      "repo",
      "rkey"
    ]
  }
  ```
</Expandable>

***

## bluesky\_get\_author\_feed

Get posts by a specific user

**Parameters:**

| Parameter     | Type    | Required | Default | Description                                 |
| ------------- | ------- | -------- | ------- | ------------------------------------------- |
| `actor`       | string  | Yes      | —       | Bluesky handle or DID of the author         |
| `limit`       | integer | No       | —       | Maximum number of posts (1-100, default 50) |
| `cursor`      | string  | No       | —       | Pagination cursor from a previous response  |
| `filter`      | string  | No       | —       | Filter type for the feed                    |
| `includePins` | boolean | No       | —       | Whether to include pinned posts             |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "actor": {
        "type": "string",
        "description": "Bluesky handle or DID of the author"
      },
      "limit": {
        "type": "integer",
        "description": "Maximum number of posts (1-100, default 50)"
      },
      "cursor": {
        "type": "string",
        "description": "Pagination cursor from a previous response"
      },
      "filter": {
        "type": "string",
        "description": "Filter type for the feed",
        "enum": [
          "posts_with_replies",
          "posts_no_replies",
          "posts_with_media",
          "posts_and_author_threads",
          "posts_with_video"
        ]
      },
      "includePins": {
        "type": "boolean",
        "description": "Whether to include pinned posts"
      }
    },
    "required": [
      "PCID",
      "actor"
    ]
  }
  ```
</Expandable>

***

## bluesky\_get\_blocks

Get the authenticated user's block list

**Parameters:**

| Parameter | Type    | Required | Default | Description                                   |
| --------- | ------- | -------- | ------- | --------------------------------------------- |
| `limit`   | integer | No       | —       | Maximum number of results (1-100, default 50) |
| `cursor`  | string  | No       | —       | Pagination cursor from a previous response    |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "limit": {
        "type": "integer",
        "description": "Maximum number of results (1-100, default 50)"
      },
      "cursor": {
        "type": "string",
        "description": "Pagination cursor from a previous response"
      }
    },
    "required": [
      "PCID"
    ]
  }
  ```
</Expandable>

***

## bluesky\_get\_followers

Get a user's followers

**Parameters:**

| Parameter | Type    | Required | Default | Description                                   |
| --------- | ------- | -------- | ------- | --------------------------------------------- |
| `actor`   | string  | Yes      | —       | Bluesky handle or DID of the user             |
| `limit`   | integer | No       | —       | Maximum number of results (1-100, default 50) |
| `cursor`  | string  | No       | —       | Pagination cursor from a previous response    |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "actor": {
        "type": "string",
        "description": "Bluesky handle or DID of the user"
      },
      "limit": {
        "type": "integer",
        "description": "Maximum number of results (1-100, default 50)"
      },
      "cursor": {
        "type": "string",
        "description": "Pagination cursor from a previous response"
      }
    },
    "required": [
      "PCID",
      "actor"
    ]
  }
  ```
</Expandable>

***

## bluesky\_get\_follows

Get the accounts a user follows

**Parameters:**

| Parameter | Type    | Required | Default | Description                                   |
| --------- | ------- | -------- | ------- | --------------------------------------------- |
| `actor`   | string  | Yes      | —       | Bluesky handle or DID of the user             |
| `limit`   | integer | No       | —       | Maximum number of results (1-100, default 50) |
| `cursor`  | string  | No       | —       | Pagination cursor from a previous response    |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "actor": {
        "type": "string",
        "description": "Bluesky handle or DID of the user"
      },
      "limit": {
        "type": "integer",
        "description": "Maximum number of results (1-100, default 50)"
      },
      "cursor": {
        "type": "string",
        "description": "Pagination cursor from a previous response"
      }
    },
    "required": [
      "PCID",
      "actor"
    ]
  }
  ```
</Expandable>

***

## bluesky\_get\_likes

Get the list of users who liked a post

**Parameters:**

| Parameter | Type    | Required | Default | Description                                   |
| --------- | ------- | -------- | ------- | --------------------------------------------- |
| `uri`     | string  | Yes      | —       | AT-URI of the post to get likes for           |
| `cid`     | string  | No       | —       | CID of a specific version of the post         |
| `limit`   | integer | No       | —       | Maximum number of results (1-100, default 50) |
| `cursor`  | string  | No       | —       | Pagination cursor from a previous response    |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "uri": {
        "type": "string",
        "description": "AT-URI of the post to get likes for"
      },
      "cid": {
        "type": "string",
        "description": "CID of a specific version of the post"
      },
      "limit": {
        "type": "integer",
        "description": "Maximum number of results (1-100, default 50)"
      },
      "cursor": {
        "type": "string",
        "description": "Pagination cursor from a previous response"
      }
    },
    "required": [
      "PCID",
      "uri"
    ]
  }
  ```
</Expandable>

***

## bluesky\_get\_post\_thread

Get a post and its reply thread

**Parameters:**

| Parameter      | Type    | Required | Default | Description                                                              |
| -------------- | ------- | -------- | ------- | ------------------------------------------------------------------------ |
| `uri`          | string  | Yes      | —       | AT-URI of the post (e.g. at://did:plc:abc123/app.bsky.feed.post/3abc123) |
| `depth`        | integer | No       | —       | Number of reply levels to include (0-1000, default 6)                    |
| `parentHeight` | integer | No       | —       | Number of parent/ancestor levels to include (0-1000, default 80)         |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "uri": {
        "type": "string",
        "description": "AT-URI of the post (e.g. at://did:plc:abc123/app.bsky.feed.post/3abc123)"
      },
      "depth": {
        "type": "integer",
        "description": "Number of reply levels to include (0-1000, default 6)"
      },
      "parentHeight": {
        "type": "integer",
        "description": "Number of parent/ancestor levels to include (0-1000, default 80)"
      }
    },
    "required": [
      "PCID",
      "uri"
    ]
  }
  ```
</Expandable>

***

## bluesky\_get\_profile

Get a user's profile by handle or DID

**Parameters:**

| Parameter | Type   | Required | Default | Description                                                          |
| --------- | ------ | -------- | ------- | -------------------------------------------------------------------- |
| `actor`   | string | Yes      | —       | Bluesky handle (e.g. alice.bsky.social) or DID (e.g. did:plc:abc123) |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "actor": {
        "type": "string",
        "description": "Bluesky handle (e.g. alice.bsky.social) or DID (e.g. did:plc:abc123)"
      }
    },
    "required": [
      "PCID",
      "actor"
    ]
  }
  ```
</Expandable>

***

## bluesky\_get\_timeline

Get the authenticated user's home timeline

**Parameters:**

| Parameter   | Type    | Required | Default | Description                                                          |
| ----------- | ------- | -------- | ------- | -------------------------------------------------------------------- |
| `algorithm` | string  | No       | —       | Algorithm variant for timeline composition (implementation-specific) |
| `limit`     | integer | No       | —       | Maximum number of posts (1-100, default 50)                          |
| `cursor`    | string  | No       | —       | Pagination cursor from a previous response                           |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "algorithm": {
        "type": "string",
        "description": "Algorithm variant for timeline composition (implementation-specific)"
      },
      "limit": {
        "type": "integer",
        "description": "Maximum number of posts (1-100, default 50)"
      },
      "cursor": {
        "type": "string",
        "description": "Pagination cursor from a previous response"
      }
    },
    "required": [
      "PCID"
    ]
  }
  ```
</Expandable>

***

## bluesky\_get\_unread\_count

Get the count of unread notifications

**Parameters:**

| Parameter  | Type    | Required | Default | Description                                                  |
| ---------- | ------- | -------- | ------- | ------------------------------------------------------------ |
| `priority` | boolean | No       | —       | Count only priority notifications                            |
| `seenAt`   | string  | No       | —       | Override seen-at timestamp for unread calculation (ISO 8601) |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "priority": {
        "type": "boolean",
        "description": "Count only priority notifications"
      },
      "seenAt": {
        "type": "string",
        "description": "Override seen-at timestamp for unread calculation (ISO 8601)"
      }
    },
    "required": [
      "PCID"
    ]
  }
  ```
</Expandable>

***

## bluesky\_list\_notifications

List the authenticated user's notifications

**Parameters:**

| Parameter  | Type    | Required | Default | Description                                            |
| ---------- | ------- | -------- | ------- | ------------------------------------------------------ |
| `limit`    | integer | No       | —       | Maximum number of notifications (1-100, default 50)    |
| `cursor`   | string  | No       | —       | Pagination cursor from a previous response             |
| `seenAt`   | string  | No       | —       | Timestamp to compare for read/unread status (ISO 8601) |
| `priority` | boolean | No       | —       | Filter to priority notifications only                  |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "limit": {
        "type": "integer",
        "description": "Maximum number of notifications (1-100, default 50)"
      },
      "cursor": {
        "type": "string",
        "description": "Pagination cursor from a previous response"
      },
      "seenAt": {
        "type": "string",
        "description": "Timestamp to compare for read/unread status (ISO 8601)"
      },
      "priority": {
        "type": "boolean",
        "description": "Filter to priority notifications only"
      }
    },
    "required": [
      "PCID"
    ]
  }
  ```
</Expandable>

***

## bluesky\_mute\_actor

Mute a user

**Parameters:**

| Parameter | Type   | Required | Default | Description                                  |
| --------- | ------ | -------- | ------- | -------------------------------------------- |
| `actor`   | string | Yes      | —       | Bluesky handle or DID of the account to mute |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "actor": {
        "type": "string",
        "description": "Bluesky handle or DID of the account to mute"
      }
    },
    "required": [
      "PCID",
      "actor"
    ]
  }
  ```
</Expandable>

***

## bluesky\_search\_actors

Search for Bluesky users by name or handle

**Parameters:**

| Parameter | Type    | Required | Default | Description                                   |
| --------- | ------- | -------- | ------- | --------------------------------------------- |
| `q`       | string  | Yes      | —       | Search query string. Lucene syntax supported. |
| `limit`   | integer | No       | —       | Maximum number of results (1-100, default 25) |
| `cursor`  | string  | No       | —       | Pagination cursor from a previous response    |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "q": {
        "type": "string",
        "description": "Search query string. Lucene syntax supported."
      },
      "limit": {
        "type": "integer",
        "description": "Maximum number of results (1-100, default 25)"
      },
      "cursor": {
        "type": "string",
        "description": "Pagination cursor from a previous response"
      }
    },
    "required": [
      "PCID",
      "q"
    ]
  }
  ```
</Expandable>

***

## bluesky\_search\_posts

Search for posts on Bluesky

**Parameters:**

| Parameter  | Type      | Required | Default | Description                                                        |
| ---------- | --------- | -------- | ------- | ------------------------------------------------------------------ |
| `q`        | string    | Yes      | —       | Search query string. Lucene syntax supported.                      |
| `sort`     | string    | No       | —       | Sort order for results                                             |
| `since`    | string    | No       | —       | Filter posts after this datetime (ISO 8601) or date (YYYY-MM-DD)   |
| `until`    | string    | No       | —       | Filter posts before this datetime (ISO 8601) or date (YYYY-MM-DD)  |
| `author`   | string    | No       | —       | Filter to posts by this author (handle or DID)                     |
| `mentions` | string    | No       | —       | Filter to posts mentioning this account (handle or DID)            |
| `lang`     | string    | No       | —       | Filter by language (BCP-47 code, e.g. 'en')                        |
| `domain`   | string    | No       | —       | Filter to posts linking to this hostname                           |
| `url`      | string    | No       | —       | Filter to posts linking to this specific URL                       |
| `tag`      | string\[] | No       | —       | Filter by hashtag (without # prefix). Multiple tags use AND logic. |
| `limit`    | integer   | No       | —       | Maximum number of results (1-100, default 25)                      |
| `cursor`   | string    | No       | —       | Pagination cursor from a previous response                         |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "q": {
        "type": "string",
        "description": "Search query string. Lucene syntax supported."
      },
      "sort": {
        "type": "string",
        "description": "Sort order for results",
        "enum": [
          "top",
          "latest"
        ]
      },
      "since": {
        "type": "string",
        "description": "Filter posts after this datetime (ISO 8601) or date (YYYY-MM-DD)"
      },
      "until": {
        "type": "string",
        "description": "Filter posts before this datetime (ISO 8601) or date (YYYY-MM-DD)"
      },
      "author": {
        "type": "string",
        "description": "Filter to posts by this author (handle or DID)"
      },
      "mentions": {
        "type": "string",
        "description": "Filter to posts mentioning this account (handle or DID)"
      },
      "lang": {
        "type": "string",
        "description": "Filter by language (BCP-47 code, e.g. 'en')"
      },
      "domain": {
        "type": "string",
        "description": "Filter to posts linking to this hostname"
      },
      "url": {
        "type": "string",
        "description": "Filter to posts linking to this specific URL"
      },
      "tag": {
        "type": "array",
        "items": {
          "type": "string"
        },
        "description": "Filter by hashtag (without # prefix). Multiple tags use AND logic."
      },
      "limit": {
        "type": "integer",
        "description": "Maximum number of results (1-100, default 25)"
      },
      "cursor": {
        "type": "string",
        "description": "Pagination cursor from a previous response"
      }
    },
    "required": [
      "PCID",
      "q"
    ]
  }
  ```
</Expandable>

***

## bluesky\_unmute\_actor

Unmute a user

**Parameters:**

| Parameter | Type   | Required | Default | Description                                    |
| --------- | ------ | -------- | ------- | ---------------------------------------------- |
| `actor`   | string | Yes      | —       | Bluesky handle or DID of the account to unmute |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "actor": {
        "type": "string",
        "description": "Bluesky handle or DID of the account to unmute"
      }
    },
    "required": [
      "PCID",
      "actor"
    ]
  }
  ```
</Expandable>

***

## bluesky\_update\_seen

Mark notifications as seen up to a timestamp

**Parameters:**

| Parameter | Type   | Required | Default | Description                                                      |
| --------- | ------ | -------- | ------- | ---------------------------------------------------------------- |
| `seenAt`  | string | Yes      | —       | ISO 8601 datetime marking notifications as seen up to this point |

<Expandable title="inputSchema">
  ```json theme={null}
  {
    "type": "object",
    "properties": {
      "PCID": {
        "type": "string",
        "description": "Pink Connect ID for the authenticated connection"
      },
      "seenAt": {
        "type": "string",
        "description": "ISO 8601 datetime marking notifications as seen up to this point"
      }
    },
    "required": [
      "PCID",
      "seenAt"
    ]
  }
  ```
</Expandable>
