# Tools · Content and engagement

> MCP tools for what happens in the feed: searching, reading, publishing, editing, moving and deleting posts, short posts, commenting and replying, editing and deleting comments, reacting, pinning, the gallery (adding, listing, editing, reacting and deleting), the ranking and your points, and moderation.

The community's day to day: the ranking and the moderation queue, finding a post by its title, publishing an announcement with an image, answering the questions from a live session, reacting to introductions, pinning what matters, moving a post to the right space and looking after the gallery's photos. Posts and comments go out under the name of whoever connected the assistant.

Each tool carries a badge: <span class="tool-kind tool-kind-read">Read-only</span> changes nothing, <span class="tool-kind tool-kind-write">Changes</span> creates or changes something right away, and <span class="tool-kind tool-kind-confirm">Asks to confirm</span> only acts after your yes to a summary. See [Money and confirmation](/mcp/dinheiro-e-confirmacao).

## In short

| Tool | What it does | Minimum role | Type |
|---|---|---|---|
| [`list_posts`](#list-posts) | The feed, with comments and reactions | Any | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`search_content`](#search-content) | Finds posts, events, courses, sections, spaces and calls by title | Any | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`list_comments`](#list-comments) | A post's comments | Any | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`create_post`](#create-post) | Publishes a post | Any | <span class="tool-kind tool-kind-write">Changes</span> |
| [`update_post`](#update-post) | Edits a post's title, text, cover or pin | Author, or moderator | <span class="tool-kind tool-kind-write">Changes</span> |
| [`delete_post`](#delete-post) | Deletes a post, with confirmation | Author, or moderator | <span class="tool-kind tool-kind-confirm">Asks to confirm</span> |
| [`move_post`](#move-post) | Moves a post to another Content or Feed space | Moderator | <span class="tool-kind tool-kind-write">Changes</span> |
| [`create_short_post`](#create-short-post) | Publishes a short post, with no title, in a Feed | Member (not finance) | <span class="tool-kind tool-kind-write">Changes</span> |
| [`create_comment`](#create-comment) | Comments or replies | Any | <span class="tool-kind tool-kind-write">Changes</span> |
| [`update_comment`](#update-comment) | Edits a comment's text | Author, or moderator | <span class="tool-kind tool-kind-write">Changes</span> |
| [`delete_comment`](#delete-comment) | Deletes a comment, with confirmation | Author, or moderator | <span class="tool-kind tool-kind-confirm">Asks to confirm</span> |
| [`add_reaction`](#add-reaction) | Reacts with an emoji | Any | <span class="tool-kind tool-kind-write">Changes</span> |
| [`pin_post`](#pin-post) | Pins or unpins in the feed | Moderator | <span class="tool-kind tool-kind-write">Changes</span> |
| [`add_gallery_image`](#add-gallery-image) | Adds an image to a Gallery space | Any | <span class="tool-kind tool-kind-write">Changes</span> |
| [`list_gallery_images`](#list-gallery-images) | A gallery's images, with author and reactions | Any | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`update_gallery_image`](#update-gallery-image) | Changes an image's title or description | Author, or moderator | <span class="tool-kind tool-kind-write">Changes</span> |
| [`react_to_gallery_image`](#react-to-gallery-image) | Reacts to a gallery image | Any | <span class="tool-kind tool-kind-write">Changes</span> |
| [`delete_gallery_image`](#delete-gallery-image) | Deletes a gallery image | Author, or moderator | <span class="tool-kind tool-kind-confirm">Asks to confirm</span> |
| [`get_leaderboard`](#get-leaderboard) | The top of the ranking | Any | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`get_my_points`](#get-my-points) | Your points and your position in the ranking | Any | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`get_ranking_rules`](#get-ranking-rules) | Whether the ranking is on, and the points per action | Admin | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`update_ranking_rules`](#update-ranking-rules) | Turns it on or off and changes the points | Admin | <span class="tool-kind tool-kind-write">Changes</span> |
| [`list_moderation_queue`](#list-moderation-queue) | What is waiting for approval | Moderator | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`moderate_item`](#moderate-item) | Approves or rejects an item in the queue | Moderator | <span class="tool-kind tool-kind-write">Changes</span> |

## `list_posts`

<span class="tool-kind tool-kind-read">Read-only</span>

**List feed posts.** The feed (posts, statuses, events and courses), newest first, with comment and reaction counts. *Minimum role: any.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `space_id` | id | No | Only one space (from `list_spaces`) |
| `type` | `all`, `status`, `content`, `events`, `courses` | No | Only one kind of item |
| `page`, `limit` | number | No | Pagination |

**Returns:** the items, each with the **id** and the **type** that `create_comment`, `add_reaction` and `pin_post` need, the author, the title or text, the counts and whether it's pinned.

**Ask like this:** *"Which posts got the most comments this week?"* · *"What was posted in the Announcements space?"*

## `search_content`

<span class="tool-kind tool-kind-read">Read-only</span>

**Search by title.** Searches the titles of posts, events, courses, sections, spaces and calls for papers, ignoring case and accents, in a single search across the whole community. *Minimum role: any; each person finds what they can see.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `query` | text, 2 to 200 | Yes | Part of the title. For short posts, it searches the text |
| `types` | list: `posts`, `events`, `courses`, `spaces`, `calls` | No | Default: all. `spaces` includes sections |
| `limit` | number, up to 50 | No | Default 20 |

**Returns:** the matches, each with its type, id, title and, when there is one, the space, the section, the module, the date and the status.

**Notes:** people outside the team only find what is published and approved; spaces and sections closed to the person are left out. It's the same search as [`GET /api/search`](/api/referencia/feed/get-search).

**Ask like this:** *"Find the post How the community works."*

## `list_comments`

<span class="tool-kind tool-kind-read">Read-only</span>

**List a post's comments.** The comments on a content post or a status. *Minimum role: any.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `type` | `content`, `status` | Yes | The item type, from `list_posts` |
| `post_id` | id | Yes | The item id, from `list_posts` |

**Returns:** the comments, with the id (which `create_comment` uses in `reply_to`), the author, the text and the date.

**Ask like this:** *"Which comments on the welcome post haven't been answered yet?"*

## `create_post`

<span class="tool-kind tool-kind-write">Changes</span>

**Publish post.** Publishes a text post in a Feed or Content space. *Minimum role: any role that can post in that space.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `space_id` | id | Yes | From `list_spaces` |
| `title` | text | Yes | |
| `text` | Markdown | Yes | The body of the post, in [Markdown](/mcp/ferramentas#markdown-text): bold, italic, lists, links, subheadings, quote and code |
| `image_url` | link | No | The post's cover: a public (`http`/`https`) link to a JPEG, PNG, WebP or GIF image of up to 10 MB. See [Images](/mcp/ferramentas#images) |

**Returns:** the created post, with its id (for `pin_post`) and the cover. The text comes back in Markdown, with `text_format: "markdown"`.

**Ask like this:** *"Post a welcome in the Feed for everyone who joined this week, mentioning each of them by name."*

**Notes:** the post goes out with the name and photo of whoever connected. The space's **Who can post** rule applies: in a staff-only space, a member is refused. The post goes out immediately; scheduling isn't possible yet. If the image can't be used, nothing is published and the assistant gets the reason.

## `update_post`

<span class="tool-kind tool-kind-write">Changes</span>

**Edit a post.** Changes a post's title, text or cover, and pins or unpins it. Only what is sent changes. *Minimum role: the author, or moderator and up.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `post` | id or link | Yes | |
| `type` | `content`, `status` | No | Default: `content`. For a status (a short post), only the text changes |
| `title` | plain text | No | |
| `text` | Markdown | No | In a short post (`status`), only bold, italic, links and line breaks |
| `image_url` or `image_base64` | link or file | No | The new cover. See [Images](/mcp/ferramentas#images) |
| `remove_image` | yes or no | No | Removes the cover |
| `pinned` | yes or no | No | Pins or unpins (moderator and up) |

**Ask like this:** *"In the post How the community works, swap the cover for this image and pin it to the top."*

**Notes:** the post doesn't move to another space.

## `delete_post`

<span class="tool-kind tool-kind-confirm">Asks to confirm</span>

**Delete a post.** Asks for confirmation: the first call shows the post, and only the second deletes it. *Minimum role: the author, or moderator and up.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `post` | id or link | Yes | |
| `type` | `content`, `status` | No | Default: `content` |

## `move_post`

<span class="tool-kind tool-kind-write">Changes</span>

**Move post to another space.** Takes a post to another Content or Feed space in the community; its place in the feed goes with it. *Minimum role: moderator.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `post` | id or link | Yes | |
| `to_space` | id, link, address or name | Yes | A Content or Feed space |

**Ask like this:** *"This job post ended up in Announcements; move it to the Jobs space."*

**Notes:** a space of another module (Courses, Events…) is refused.

## `create_short_post`

<span class="tool-kind tool-kind-write">Changes</span>

**Publish short post.** A short post, up to 500 characters and with no title, in a Feed space, like the app's quick field. For a post with a title and a cover, the assistant uses `create_post`. *Role: owner, admin, moderator or a member who can post in the space.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `space` | id, link, address or name | Yes | A Feed space |
| `text` | text, up to 500 | Yes | Takes only bold, italic, links and line breaks, in [Markdown](/mcp/ferramentas#markdown-text) |
| `visibility` | `public`, `members`, `private` | No | |

**Ask like this:** *"Write in the Feed: 'Live today at 8 p.m., link in the event!'"*

## `create_comment`

<span class="tool-kind tool-kind-write">Changes</span>

**Comment or reply.** Comments on a feed item, or replies to a comment. *Minimum role: any.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `type` | `content`, `status`, `event`, `course` | Yes | The item type, from `list_posts` |
| `item_id` | id | Yes | The item id |
| `text` | plain text, up to 2,000 | Yes | No formatting: Markdown marks are stripped |
| `reply_to` | id | No | The id of the comment to reply to (from `list_comments`). Only on `content` items |

**Returns:** the new comment.

**Ask like this:** *"Reply to every unanswered question on yesterday's live post, thanking them and saying we'll cover it next time."*

## `update_comment`

<span class="tool-kind tool-kind-write">Changes</span>

**Edit a comment.** Changes a comment's text. *Minimum role: the author, or moderator and up.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `type` | `content`, `status` | Yes | |
| `post` | id or link | Yes | The comment's post |
| `comment_id` | id | Yes | From `list_comments` |
| `text` | text, up to 2,000 | Yes | |

## `delete_comment`

<span class="tool-kind tool-kind-confirm">Asks to confirm</span>

**Delete a comment.** With confirmation. *Minimum role: the author, or moderator and up.* Same parameters, without `text`.

## `add_reaction`

<span class="tool-kind tool-kind-write">Changes</span>

**React.** Reacts to a feed item. *Minimum role: any.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `type` | `content`, `status`, `event`, `course` | Yes | |
| `item_id` | id | Yes | |
| `reaction` | 👍 ❤️ 🔥 🙌 😊 👏 🎉 | Yes | One of the seven reactions |

**Returns:** the recorded reaction.

**Ask like this:** *"React with 🎉 to the introductions from people who joined today."*

## `pin_post`

<span class="tool-kind tool-kind-write">Changes</span>

**Pin to the feed.** Pins an item to the top of the feed, or unpins it. *Minimum role: moderator.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `type` | `content`, `status`, `event`, `course` | Yes | |
| `item_id` | id | Yes | |
| `pinned` | yes or no | No | Default: pin. With `false`, unpins |

**Returns:** the item with its new state.

**Ask like this:** *"Pin the community rules post."*

## `add_gallery_image`

<span class="tool-kind tool-kind-write">Changes</span>

**Add an image to a gallery.** Downloads an image from a link and puts it in a Gallery space. *Minimum role: any role that can post in that space.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `space_id` | id | Yes | A Gallery space (`list_spaces` with `module: gallery`) |
| `image_url` | link | Yes | A public (`http`/`https`) link to a JPEG, PNG, WebP or GIF image of up to 10 MB. See [Images](/mcp/ferramentas#images) |
| `title` | text, up to 255 | No | The image's title in the gallery |

**Returns:** the image in the gallery, with its address and thumbnail.

**Ask like this:** *"Put this photo from the meetup in the Meetups gallery: https://…/photo.jpg"*

## `list_gallery_images`

<span class="tool-kind tool-kind-read">Read-only</span>

**List gallery images.** The images of a Gallery space, newest first, with title, author and reactions. *Minimum role: any role that can see the space.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `space` | id, link, address or name | Yes | The Gallery space |
| `page`, `limit` | number | No | `limit` up to 50 |

**Returns:** the images, with the id the other gallery tools ask for.

## `update_gallery_image`

<span class="tool-kind tool-kind-write">Changes</span>

**Edit gallery image.** Changes an image's title or description. *Role: whoever added the image, or moderator and up.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `image_id` | id | Yes | From `list_gallery_images` |
| `title` | text, up to 255 | No | |
| `description` | text | No | |

## `react_to_gallery_image`

<span class="tool-kind tool-kind-write">Changes</span>

**React to gallery image.** With 👍 ❤️ 🔥 👏 😊 or 🙌. The same reaction again removes it. *Minimum role: any.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `image_id` | id | Yes | From `list_gallery_images` |
| `reaction` | one of the six emojis | Yes | |

## `delete_gallery_image`

<span class="tool-kind tool-kind-confirm">Asks to confirm</span>

**Delete gallery image.** *Role: whoever added the image, or moderator and up.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `image_id` | id | Yes | From `list_gallery_images` |

**Returns:** on the first call, the image's title and author, and the confirmation code.

## `get_leaderboard`

<span class="tool-kind tool-kind-read">Read-only</span>

**View ranking.** The top of the community's points ranking. *Minimum role: any.*

Parameters: none.

**Ask like this:** *"Who are the top 10 in the ranking?"*

## `get_my_points`

<span class="tool-kind tool-kind-read">Read-only</span>

**My ranking points.** Your points and your position in the community's ranking. *Minimum role: any.*

Parameters: none.

**Ask like this:** *"How many points do I have, and where do I stand?"*

## `get_ranking_rules`

<span class="tool-kind tool-kind-read">Read-only</span>

**View ranking rules.** Whether the ranking is on and how many points each action is worth. *Minimum role: admin.*

Parameters: none.

**Ask like this:** *"How many points is a comment worth?"*

## `update_ranking_rules`

<span class="tool-kind tool-kind-write">Changes</span>

**Change ranking rules.** Turns the ranking on or off and changes the points per action. *Minimum role: admin.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `enabled` | yes or no | No | |
| `points` | action → points | No | The actions come from `get_ranking_rules`, e.g. `{"comment": 10}` |

**Ask like this:** *"Commenting is now worth 10 points."*

See [Ranking](/espacos/ranking).

## `list_moderation_queue`

<span class="tool-kind tool-kind-read">Read-only</span>

**Moderation queue.** What is waiting for approval, or the moderation numbers. *Minimum role: moderator.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `type` | `summary`, `posts`, `courses`, `events`, `gallery`, `status` | No | Default: `posts`. `summary` returns the numbers |

**Ask like this:** *"Is anything waiting for approval?"*

## `moderate_item`

<span class="tool-kind tool-kind-write">Changes</span>

**Approve or reject.** Approves or rejects an item in the moderation queue. *Minimum role: moderator.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `type` | `posts`, `courses`, `events`, `gallery`, `status` | Yes | |
| `item_id` | id | Yes | From `list_moderation_queue` |
| `decision` | `approve`, `reject` | Yes | Approve or reject |
| `reason` | text | No | Required to reject |

**Ask like this:** *"Approve the posts in the queue that have no external link."*

See [Moderation](/membros/moderacao).

## Related

- [Tools](/mcp/ferramentas)
- [Recipes](/mcp/receitas)
- [Money and confirmation](/mcp/dinheiro-e-confirmacao)
