# Answer a team invitation

`respond_to_team_invitation`

- Writes
- Needs confirmation

Accepts or declines an invitation to join somebody else’s team application. Accepting can remove this student’s own unstarted application for the same exam, because one exam cannot be sat twice — an application already under way is left alone. The first call answers a summary and a confirmation value and changes nothing. Only answer an invitation the person has actually told you about.

- **For**: Students
- **Needs**: Read and write access (`mcp:write`)
- **What it changes**: **Writes.** The first call only shows what would change and returns a confirmation handle. Nothing changes until the agent calls again with that handle, after you agree.
- **Repeating it**: Not safe: the same call twice can change data twice.

## Inputs

- `brand`string

  Which olympiad this is about. Required unless the connection covers exactly one, in which case that one is used.

  one of`coding``gmath``hilingua``neo``stem`
- `application_id`stringrequired

  The application_id of the invitation, as the person was given it.

  pattern`^[a-f0-9]{24}$`min length`24`max length`24`
- `accept`booleanrequired

  true to join the team, false to decline.
- `confirmation`string

  The `confirmation` value from this tool’s own `confirmation_required` answer. Send it back with exactly the same other arguments to go ahead; never invent one.

  pattern`^cfm_[A-Za-z0-9._-]{1,4000}$`min length`5`max length`4096`

The server refuses a call that carries any field not listed here, and says which one.

## Answers instead of a result

What the tool says when it cannot do what was asked, and what to do about it.

- **`not_connected`**
- **`insufficient_scope`**
- **`rate_limited`**
- **`writes_disabled`**
- **`temporarily_unavailable`**
- **`upstream_error`**
- **`brand_not_allowed`**
- **`role_required`**
- **`tenant_account_missing`**
- **`confirmation_required`**
- **`confirmation_expired`**
- **`not_found`**
