# Tools · Call for papers

> The 40 MCP tools for the call for papers, from start to finish: the space's rules, opening and editing a call with tracks, days and banner, publishing, owners and reviewers, inviting speakers, proposals, reviews and scores, the decision, counter-offers, confirming in the program, voting and the proposer's side.

The whole [call for papers](/espacos/chamada-de-trabalhos) from the conversation: opening the call with its guidelines, the tracks and the event days, publishing, setting up the committee, following the reviews, deciding, negotiating terms with the speaker and confirming in the program. Proposers use the assistant too: submitting and editing a proposal, answering a counter-offer, voting.

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).

## Who uses what

All 40 tools show up for **every role**, members included: a call's owner can be a regular member, and so can whoever proposes, reviews or votes. Memberfy checks each call against the module's own rules, just like the screen does:

| Who | What they can do |
|---|---|
| **Team** (owner, admin and moderator) or **the call's owner** | Edit the call, the tracks, the days and the owners; set up the committee; see the progress; decide, negotiate and confirm |
| **Whoever can open a call** in the space | Open a new call. The rule belongs to the space: only the owners, the team or any member ([`get_call_space_settings`](#get-call-space-settings)) |
| **Track reviewer** (who accepted the invitation) | The review queue and the score for each proposal in the track |
| **Whoever the call lets vote** | The ballot and the vote, during the voting window |
| **Any member** | Propose to an open call, edit and withdraw their own proposal, answer a counter-offer |

When the role doesn't allow it, the assistant gets Memberfy's refusal and explains it.

## In short

### The space and the calls

| Tool | What it does | Who | Type |
|---|---|---|---|
| [`list_calls_for_papers`](#list-calls-for-papers) | A space's calls, with status | Any | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`get_call_space_settings`](#get-call-space-settings) | How the space works: one call or several, who opens them | Any | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`update_call_space_settings`](#update-call-space-settings) | Changes the space's mode and who can open a call | Admin | <span class="tool-kind tool-kind-write">Changes</span> |
| [`get_call_for_papers`](#get-call-for-papers) | A call with dates, tracks, days, owners and what you can do | Any | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`create_call_for_papers`](#create-call-for-papers) | Opens a call as a draft, with tracks, days and banner | Whoever can open one | <span class="tool-kind tool-kind-write">Changes</span> |
| [`update_call_for_papers`](#update-call-for-papers) | Edits text, dates, formats, costs, fee and images | Team or owner | <span class="tool-kind tool-kind-write">Changes</span> |
| [`update_call_status`](#update-call-status) | Publishes, unpublishes, closes or reopens | Team or owner | <span class="tool-kind tool-kind-write">Changes</span> |
| [`delete_call_for_papers`](#delete-call-for-papers) | Deletes the call, with tracks and proposals | Team or owner | <span class="tool-kind tool-kind-confirm">Asks to confirm</span> |

### Tracks and event days

| Tool | What it does | Who | Type |
|---|---|---|---|
| [`add_call_track`](#add-call-track) | Adds a track | Team or owner | <span class="tool-kind tool-kind-write">Changes</span> |
| [`update_call_track`](#update-call-track) | Renames a track or changes its purpose | Team or owner | <span class="tool-kind tool-kind-write">Changes</span> |
| [`delete_call_track`](#delete-call-track) | Removes a track | Team or owner | <span class="tool-kind tool-kind-confirm">Asks to confirm</span> |
| [`add_call_event_date`](#add-call-event-date) | Adds a day to the event | Team or owner | <span class="tool-kind tool-kind-write">Changes</span> |
| [`update_call_event_date`](#update-call-event-date) | Changes a day's times | Team or owner | <span class="tool-kind tool-kind-write">Changes</span> |
| [`delete_call_event_date`](#delete-call-event-date) | Removes a day from the event | Team or owner | <span class="tool-kind tool-kind-confirm">Asks to confirm</span> |

### Owners, reviewers and speakers

| Tool | What it does | Who | Type |
|---|---|---|---|
| [`add_call_owner`](#add-call-owner) | Invites someone to be an owner of the call | Team or owner | <span class="tool-kind tool-kind-write">Changes</span> |
| [`remove_call_owner`](#remove-call-owner) | Removes an owner | Team or owner | <span class="tool-kind tool-kind-confirm">Asks to confirm</span> |
| [`list_track_reviewers`](#list-track-reviewers) | A track's reviewers | Team or owner | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`invite_track_reviewer`](#invite-track-reviewer) | Makes someone a reviewer for a track | Team or owner | <span class="tool-kind tool-kind-write">Changes</span> |
| [`remove_track_reviewer`](#remove-track-reviewer) | Removes a reviewer | Team or owner | <span class="tool-kind tool-kind-confirm">Asks to confirm</span> |
| [`list_my_call_invitations`](#list-my-call-invitations) | Your pending invitations, as owner or reviewer | Any | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`respond_to_call_invitation`](#respond-to-call-invitation) | Accepts or declines one of your invitations | Any | <span class="tool-kind tool-kind-write">Changes</span> |
| [`list_speakers`](#list-speakers) | Who has already proposed in the community | Team or owner | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`invite_speaker`](#invite-speaker) | Invites someone to propose | Team or owner | <span class="tool-kind tool-kind-write">Changes</span> |

### Review, decision and program

| Tool | What it does | Who | Type |
|---|---|---|---|
| [`list_proposals`](#list-proposals) | The proposals, with status, track and scores | Depends on your role in the call | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`get_proposal`](#get-proposal) | One proposal, with the reviews and the negotiation | Owners, the track's reviewers and the proposer | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`list_my_reviews`](#list-my-reviews) | Your review queue | Reviewer | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`review_proposal`](#review-proposal) | Scores a proposal from 1 to 5 | The track's reviewer | <span class="tool-kind tool-kind-write">Changes</span> |
| [`get_review_progress`](#get-review-progress) | How the review is going, against the minimum | Team or owner | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`get_proposal_reviews`](#get-proposal-reviews) | A proposal's scores and the consensus | Owners; reviewers after reviewing | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`decide_proposal`](#decide-proposal) | Accepts or rejects a proposal | Team or owner | <span class="tool-kind tool-kind-write">Changes</span> |
| [`negotiate_proposal`](#negotiate-proposal) | Counter-offer, withdraw, accept or end the negotiation | Team or owner | <span class="tool-kind tool-kind-write">Changes</span> |
| [`confirm_proposal`](#confirm-proposal) | Confirms the accepted proposal in the program | Team or owner | <span class="tool-kind tool-kind-write">Changes</span> |

### Voting

| Tool | What it does | Who | Type |
|---|---|---|---|
| [`list_votable_proposals`](#list-votable-proposals) | The ballot: what you can vote on and your vote | Whoever can vote | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`vote_on_proposal`](#vote-on-proposal) | Votes from 1 to 5, or removes the vote | Whoever can vote | <span class="tool-kind tool-kind-write">Changes</span> |
| [`get_vote_results`](#get-vote-results) | The result, as far as the call shows it | Depends on the call | <span class="tool-kind tool-kind-read">Read-only</span> |

### The proposer

| Tool | What it does | Who | Type |
|---|---|---|---|
| [`list_my_proposals`](#list-my-proposals) | Your proposals, with status | Any | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`submit_proposal`](#submit-proposal) | Submits a proposal to an open call | Any member | <span class="tool-kind tool-kind-write">Changes</span> |
| [`update_proposal`](#update-proposal) | Edits the draft proposal and submits it | The proposer | <span class="tool-kind tool-kind-write">Changes</span> |
| [`withdraw_proposal`](#withdraw-proposal) | Withdraws the proposal from the call | The proposer | <span class="tool-kind tool-kind-confirm">Asks to confirm</span> |
| [`respond_to_counter_offer`](#respond-to-counter-offer) | Accepts the counter-offer or answers with another one | The proposer | <span class="tool-kind tool-kind-write">Changes</span> |

## Ids and values

- **Call** (`call`) and **space** (`space`): the id or the link copied from the app. A proposal's link (`?proposal=`) also works as the call.
- **Proposal** (`proposal`): the id or the link with `?proposal=`.
- **Track**, **event day**, **owner** and **reviewer** (`track_id`, `date_id`, `owner_id`, `reviewer_id`): they come from [`get_call_for_papers`](#get-call-for-papers). The `owner_id` is the id of the link in `owner_links`, not the person's id.
- **Person** (`profile_id`): from `list_members` or from [`list_speakers`](#list-speakers).
- **Dates and times**: in the community's time zone. Date and time as `2026-11-30T23:59`; date only as `2026-11-30`; time only as `19:00`.
- **Formats**: `talk`, `lightning_talk`, `keynote`, `workshop`, `tutorial`, `masterclass`, `panel`, `roundtable`, `case_study`, `demo`, `poster` and `other`.
- **Call statuses**: `draft`, `open`, `reviewing` (under review), `deciding`, `closed` and `archived`.
- **Costs** (airfare, ground transport, parking, accommodation, meals): `none` (nobody), `organizer` (the organization) or `speaker` (the speaker).

## `list_calls_for_papers`

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

**List calls for papers.** The calls of a call-for-papers space, with status. *Minimum role: any; a draft only shows up for whoever looks after it.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `space` | id or link | Yes | The call-for-papers space |
| `status` | one of the statuses | No | Filters by status |

**Ask like this:** *"Which calls are open?"*

## `get_call_space_settings`

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

**See call-for-papers space settings.** Whether the space is **one call** or **several**, who can open a call and whether opening one needs approval. *Minimum role: any.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `space` | id or link | Yes | The call-for-papers space |

**Ask like this:** *"Can a member open a call in the Talks space?"*

## `update_call_space_settings`

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

**Change call-for-papers space settings.** Changes the space's mode and who can open a call. *Minimum role: admin.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `space` | id or link | Yes | |
| `mode` | `single`, `multi` | No | One call or several |
| `who_can_open_call` | `owners`, `staff`, `members` | No | Owner and admin; moderators too; or any member |
| `require_approval_to_open` | yes or no | No | A new call waits for approval |

**Ask like this:** *"Let moderators open calls in the Talks space."*

**Notes:** it changes who can do what right away. See [The space: one call or several](/espacos/chamada-de-trabalhos#the-space-one-call-or-several).

## `get_call_for_papers`

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

**See call for papers.** Everything the call's page shows: status, dates, formats, costs and fee, the tracks (with their reviewers), the event days and the owners, plus what you can do in it. *Minimum role: any; a draft only for whoever looks after it.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `call` | id or link | Yes | A proposal's link also works |

**Returns:** the call and, for whoever can edit it, the owners' links (`owner_links`), with the ids that [`remove_call_owner`](#remove-call-owner) asks for.

**Ask like this:** *"Show me the Congress 2027 call: which tracks are there and who reviews each one?"*

## `create_call_for_papers`

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

**Open call for papers.** Opens a call in a call-for-papers space, **as a draft**. Whoever creates it becomes the call's owner. *Role: whoever the space's rule allows to open a call.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `space` | id or link | Yes | The call-for-papers space (`list_spaces` with the `call4papers` module) |
| `title` | text, 3 to 255 | Yes | |
| `slug` | text | No | The address; without it, it comes from the title |
| `description` | Markdown, up to 20,000 | No | The guidelines, in [Markdown](/mcp/ferramentas#markdown-text) (or HTML) |
| `summary` | text, up to 1,000 | No | One or two lines for the cards and the feed |
| `type` | `simple`, `advanced` | No | Simple or advanced. See [The call type](/espacos/chamada-de-trabalhos#the-call-type) |
| `modality` | `in_person`, `online`, `hybrid` | No | In person, online or hybrid |
| `submission_opens_at`, `submission_closes_at` | date and time | No | The period for proposing |
| `review_opens_at`, `review_closes_at`, `results_announced_at` | date and time | No | The review and the announcement |
| `voting_opens_at`, `voting_closes_at` | date and time | No | The voting window |
| `evaluation_mode` | `none`, `committee`, `community` | No | No review, committee per track or community vote |
| `blind_review` | yes or no | No | The reviewer doesn't see who proposed |
| `min_reviews_per_submission` | number, up to 20 | No | Minimum reviews per proposal |
| `max_submissions_per_speaker` | number, up to 100 | No | Proposals per person |
| `vote_visibility` | `hidden`, `counts`, `full` | No | What the voting result shows |
| `who_can_vote` | `owners`, `staff`, `members` | No | |
| `allow_counter_offer`, `counter_offer_timeout_days` | yes or no; days | No | Advanced only: counter-offers and the deadline to answer |
| `allowed_formats` | list of formats | No | |
| `allowed_durations` | list of minutes | No | For example `[20, 40]` |
| `speaker_benefits` | list of texts | No | For example *Ticket*, *Speakers' dinner* |
| `air_travel_cost`, `ground_transport_cost`, `parking_cost`, `accommodation_cost`, `meal_cost` | `none`, `organizer`, `speaker` | No | Who pays each cost |
| `speaker_fee_mode`, `speaker_fee_amount` | `none`, `fixed`, `speaker_defined`; amount | No | The fee: none, fixed or stated by the proposer |
| `tracks` | list of `name`, `purpose` | No | The tracks, all at once (up to 30). The purpose is the reviewers' yardstick |
| `event_dates` | list of `date`, `start_time`, `end_time` | No | The event days (up to 60) |
| `image_url` or `image_base64` | link or file | No | The banner (16:9) |
| `featured_image_url` | link | No | The square image (1:1) |
| `idempotency_key` | text | No | Repeating with the same key doesn't create it again |

**Returns:** the created call. A bad image doesn't stop the creation; the reason comes in `warnings`.

**Ask like this:** *"Open the call for Congress 2027, in person in São Paulo on March 12 and 13, with the tracks Product, Data and Career. Proposals until November 30. We pay for lodging and meals; travel is on the speaker. Leave it as a draft and show me."*

**Notes:** the call starts as a draft; publish it with [`update_call_status`](#update-call-status). After it's created, the response suggests what's missing: tracks, reviewers, publishing. The fee is recorded in the agreement; payment happens outside the platform.

## `update_call_for_papers`

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

**Edit call for papers.** The same fields as [`create_call_for_papers`](#create-call-for-papers), except tracks and days, which have their own tools. Only what is sent changes. *Role: the team or the call's owner.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `call` | id or link | Yes | |
| the call's fields | | No | Title, text, dates, type, formats, durations, costs, fee, voting, review, banner and square image |

**Ask like this:** *"Extend the Congress 2027 proposal deadline to December 15."*

**Notes:** a call that already has scores or a negotiation can't go back from advanced to simple.

## `update_call_status`

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

**Publish, close or reopen call.** Changes a call's status. *Role: the team or the call's owner.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `call` | id or link | Yes | |
| `action` | `publish`, `unpublish`, `close`, `reopen`, `set_status` | Yes | Publish, go back to draft, close, reopen or set a specific status |
| `status` | one of the statuses | With `set_status` | |

**Ask like this:** *"Publish the Congress 2027 call."* · *"Close the call: the deadline has passed."*

## `delete_call_for_papers`

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

**Delete call for papers.** Deletes the call, with its tracks and proposals. *Role: the team or the call's owner.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `call` | id or link | Yes | |

**Returns:** on the first call, the summary (title, status, how many proposals) and the confirmation code.

## `add_call_track`

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

**Add track to call.** *Role: the team or the call's owner.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `call` | id or link | Yes | |
| `name` | text, up to 255 | Yes | |
| `purpose` | text, up to 5,000 | Yes | What the track is looking for and what it isn't: the reviewers' yardstick |

**Ask like this:** *"Add the Data track, for real data analysis and engineering cases, no tool tutorials."*

## `update_call_track`

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

**Edit track.** Renames a track or changes its purpose. *Role: the team or the call's owner.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `track_id` | id | Yes | From `get_call_for_papers` |
| `name`, `purpose` | text | No | |

## `delete_call_track`

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

**Delete track.** *Role: the team or the call's owner.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `track_id` | id | Yes | From `get_call_for_papers` |

## `add_call_event_date`

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

**Add event day to call.** *Role: the team or the call's owner.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `call` | id or link | Yes | |
| `date` | date (`2027-03-12`) | Yes | |
| `start_time`, `end_time` | time (`09:00`) | Yes | In the community's time zone |

## `update_call_event_date`

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

**Change event day times.** *Role: the team or the call's owner.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `date_id` | id | Yes | From `get_call_for_papers` |
| `start_time`, `end_time` | time | No | At least one |

## `delete_call_event_date`

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

**Remove event day.** *Role: the team or the call's owner.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `date_id` | id | Yes | From `get_call_for_papers` |

## `add_call_owner`

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

**Invite call co-owner.** Invites a member to share the call with you: an owner looks after the call, the tracks, the reviewers and the decisions. The person accepts with [`respond_to_call_invitation`](#respond-to-call-invitation). *Role: the team or the call's owner.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `call` | id or link | Yes | |
| `profile_id` | id | Yes | From `list_members` |

**Notes:** it gives power over the call, and the person gets the invitation by e-mail.

## `remove_call_owner`

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

**Remove call owner.** *Role: the team or the call's owner.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `owner_id` | id | Yes | The id in `owner_links` from `get_call_for_papers`, not the person's id |

## `list_track_reviewers`

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

**List track reviewers.** A track's reviewers and whether each one has accepted. *Role: the team or the call's owner.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `track_id` | id | Yes | From `get_call_for_papers` |

## `invite_track_reviewer`

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

**Add track reviewer.** Makes a member a reviewer for a track: they score every proposal in that track. *Role: the team or the call's owner.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `track_id` | id | Yes | From `get_call_for_papers` |
| `profile_id` | id | Yes | From `list_members` |

**Ask like this:** *"Make Ana and Bruno reviewers for the Data track."*

**Notes:** the person finds out by e-mail, on the first call.

## `remove_track_reviewer`

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

**Remove track reviewer.** *Role: the team or the call's owner.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `reviewer_id` | id | Yes | The id in `trackReviewers` from `get_call_for_papers`, or from `list_track_reviewers` |

## `list_my_call_invitations`

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

**My call invitations.** Your pending invitations to be a call's owner or a track's reviewer. *Minimum role: any.*

Parameters: none.

**Ask like this:** *"Do I have any invitations to review proposals?"*

## `respond_to_call_invitation`

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

**Answer call invitation.** *Minimum role: any, on your own invitations.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `kind` | `owner`, `reviewer` | Yes | Invitation as owner or as reviewer |
| `invitation_id` | id | Yes | From `list_my_call_invitations` |
| `answer` | `accept`, `decline` | Yes | |

**Notes:** accepting a reviewer invitation leads to your review queue ([`list_my_reviews`](#list-my-reviews)).

## `list_speakers`

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

**List speakers.** Everyone who has proposed in the community, grouped by person, so you can invite them again. *Role: the team or a call's owner.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `space` | id or link | No | Only those who proposed in one call-for-papers space |

## `invite_speaker`

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

**Invite speaker to submit.** Invites a member to send a proposal to a call, with an optional note. *Role: the team or the call's owner.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `call` | id or link | Yes | |
| `profile_id` | id | Yes | From `list_speakers` or `list_members` |
| `message` | text, up to 2,000 | No | Goes in the e-mail |

**Ask like this:** *"Invite last year's speakers to propose again for Congress 2027."*

**Notes:** it sends an e-mail on the first call.

## `list_proposals`

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

**List a call's proposals.** The proposals, with status, track and scores. *Role: what shows up depends on your role in the call: owners see all of them, a reviewer those in their track, a proposer their own.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `call` | id or link | Yes | |

**Ask like this:** *"Which proposals in the Product track have the best scores?"*

**Notes:** with proposals waiting for a decision, the response suggests deciding each one.

## `get_proposal`

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

**See proposal.** The text, the track, the status, the reviews you can see and the negotiation rounds. *Role: the call's owners, the track's reviewers and the proposer.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `proposal` | id or link (with `?proposal=`) | Yes | |

## `list_my_reviews`

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

**My review queue.** The proposals in the tracks you review, with your score when you've already given one. *Role: reviewers.*

Parameters: none.

**Ask like this:** *"What do I still have to review?"*

## `review_proposal`

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

**Review proposal.** Scores a proposal in a track you review. *Role: a track reviewer who accepted the invitation.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `proposal` | id or link | Yes | |
| `score` | 1 to 5 | Yes | |
| `recommendation` | `accept`, `reject` | No | |
| `internal_notes` | text | No | Only reviewers and owners see it; the proposer, never |
| `comments_to_speaker` | text | No | The feedback for the proposer |
| `submit` | yes or no | No | Default yes. With no, it stays as a draft to change later; once submitted, the review is locked |

**Ask like this:** *"Give Ana's proposal a 4, recommending acceptance: the topic is great, but the outline needs a real case."*

**Notes:** only during the review period, and never on your own proposal.

## `get_review_progress`

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

**See review progress.** How many reviews each proposal and each reviewer has, against the call's minimum. *Role: the team or the call's owner.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `call` | id or link | Yes | |

**Ask like this:** *"Who on the committee hasn't reviewed yet?"*

## `get_proposal_reviews`

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

**See proposal reviews.** Each score and recommendation, and the consensus. *Role: the call's owners; a reviewer, after sending theirs.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `proposal` | id or link | Yes | |

## `decide_proposal`

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

**Accept or reject proposal.** With an optional message to the proposer. *Role: the team or the call's owner.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `proposal` | id or link (with `?proposal=`) | Yes | |
| `decision` | `accept`, `reject` | Yes | |
| `message` | text | No | Goes in the e-mail, as the organizers' note |

**Ask like this:** *"Accept Ana's proposal and thank her for submitting."*

**Notes:** the person receives an e-mail on the first call, which is why the assistant checks the decision and the message with you first. After accepting, the response suggests confirming in the program. See [Call for papers emails](/notificacoes/emails-da-chamada-de-trabalhos).

## `negotiate_proposal`

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

**Negotiate proposal.** The organizers' side of a negotiation (advanced call, with counter-offers turned on). *Role: the team or the call's owner.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `proposal` | id or link | Yes | |
| `action` | `counter_offer`, `retract`, `accept`, `decline` | Yes | Make a counter-offer, withdraw the open one, accept the speaker's counter-offer or end it, rejecting the proposal |
| `terms` | `format`, `duration_minutes`, `track_id`, `scheduled_at`, `delivery_mode`, the costs, `fee_amount` | No | Only the terms that change |
| `message` | text | No | |

**Ask like this:** *"Propose to Ana that she runs the workshop in 90 minutes instead of 3 hours, with lodging on us."*

**Notes:** each step e-mails the proposer, on the first call.

## `confirm_proposal`

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

**Confirm proposal in the program.** The final step of an accepted proposal, with the date and time if there is one already. *Role: the team or the call's owner.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `proposal` | id or link | Yes | |
| `scheduled_at` | date and time | No | In the community's time zone |

## `list_votable_proposals`

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

**See voting ballot.** The proposals you can vote on in a call with a community vote, and your current vote. *Role: whoever the call lets vote.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `call` | id or link | Yes | |

## `vote_on_proposal`

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

**Vote on proposal.** From 1 to 5, within the voting window, or removes the vote. *Role: whoever the call lets vote.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `proposal` | id or link | Yes | |
| `value` | 1 to 5 | No | The vote |
| `remove` | yes or no | No | Removes your vote |

## `get_vote_results`

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

**See voting results.** As far as the call's vote visibility allows. *Role: depends on the call.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `call` | id or link | Yes | |

## `list_my_proposals`

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

**My proposals.** Your proposals in the community, or in one call, with status. *Minimum role: any.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `call` | id or link | No | Only those in this call |

## `submit_proposal`

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

**Submit proposal.** Proposes a session to an open call. The proposal goes out under the name of whoever connected the assistant. *Role: any member, while the call is open.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `call` | id or link | Yes | |
| `title` | text, 3 to 255 | Yes | |
| `description` | Markdown, up to 20,000 | Yes | The proposal, in [Markdown](/mcp/ferramentas#markdown-text) |
| `format` | one of the formats | Yes | |
| `duration_minutes` | minutes | Yes | |
| `level` | `beginner`, `intermediate`, `advanced` | No | |
| `track` | the track's id or name | When the call has tracks | |
| `delivery_mode` | `in_person`, `online`, `either` | In a hybrid call | |
| `format_other`, `language`, `target_audience`, `prerequisites`, `resources_needed` | text | No | |
| `pitch_video_url`, `speaker_video_url` | link | No | |
| `requested_fee_amount` | amount | No | When the call lets the proposer state the fee |
| `send` | yes or no | No | Default yes. With no, it stays as a draft to send later |
| `idempotency_key` | text | No | |

**Ask like this:** *"Submit my talk 'Data without spreadsheets' to Congress 2027, 40 minutes, intermediate level, in the Data track."*

## `update_proposal`

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

**Edit my proposal.** Changes the proposal while it's a draft, and submits it with `send`. Only what is sent changes. *Role: the proposer.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `proposal` | id or link | Yes | |
| the proposal's fields | | No | The same as in `submit_proposal` |
| `send` | yes or no | No | Submits the proposal |

## `withdraw_proposal`

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

**Withdraw my proposal.** With an optional note to the organizers. *Role: the proposer.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `proposal` | id or link | Yes | |
| `message` | text, up to 2,000 | No | |

**Notes:** it can't be undone, which is why it asks for your yes.

## `respond_to_counter_offer`

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

**Answer counter-offer.** The proposer's answer to the organizers' counter-offer: accept (the proposal is accepted on those terms) or answer with their own terms and a note. *Role: the proposer.*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `proposal` | id or link | Yes | |
| `answer` | `accept`, `counter` | Yes | |
| `terms` | the same terms as in `negotiate_proposal` | No | With `counter` |
| `message` | text | No | |

**Notes:** it commits the proposer and notifies the organizers, on the first call.

## Related

- [Call for papers](/espacos/chamada-de-trabalhos)
- [Recipe: create a call for papers](/mcp/receitas#13-create-a-call-for-papers)
- [Tools](/mcp/ferramentas)
- [Money and confirmation](/mcp/dinheiro-e-confirmacao)
