# Tools · Companies

> MCP tools for companies (with the optional coworking block, the offers and the billing details): list, register, edit and close companies, your company with its subscriptions and credits, the team, invite by e-mail, mark the company admin and remove.

[Companies](/membros/empresas) through the assistant: register a company (and, in a coworking, its type, the plans and products it can buy, the billing details and the dates), edit, close, see your company, the team, invite by e-mail, follow, accept and decline invitations, mark the company admin and remove. There are **14 tools**.

> [!NOTE]
> Until 2026-10-18 these tools were called `*_resident_company*` (for example `get_my_resident_company`). The old names no longer exist: an assistant that still calls them gets "unknown tool" and should use the names on this page.

Each tool has 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).

## At a glance

| Tool | What it does | Minimum role | Type |
|---|---|---|---|
| [`list_companies`](#list-companies) | The companies, with type, status and team size | Moderator or finance | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`get_company`](#get-company) | One company | Moderator or finance | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`get_my_company`](#get-my-company) | The company you are on, with the team and what you get through it | Any | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`create_company`](#create-company) | Registers a company, with the optional coworking block | Admin | <span class="tool-kind tool-kind-write">Changes</span> |
| [`update_company`](#update-company) | Edits the name and the coworking block | Admin | <span class="tool-kind tool-kind-write">Changes</span> |
| [`close_company`](#close-company) | Closes the company, with or without the team | Admin | <span class="tool-kind tool-kind-confirm">Asks to confirm</span> |
| [`list_company_members`](#list-company-members) | A company's team | Any (the API checks the link) | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`invite_company_member`](#invite-company-member) | Adds someone to the team by e-mail | Any (the API checks the link) | <span class="tool-kind tool-kind-write">Changes</span> |
| [`update_company_member`](#update-company-member) | Marks or unmarks the company admin | Admin | <span class="tool-kind tool-kind-write">Changes</span> |
| [`remove_company_member`](#remove-company-member) | Takes someone off the team | Any (the API checks the link) | <span class="tool-kind tool-kind-confirm">Asks to confirm</span> |
| [`list_company_invitations`](#list-company-invitations) | The pending invitations the company admin sent | Any (the API checks the link) | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`list_my_company_invitations`](#list-my-company-invitations) | Your company invitations | Any | <span class="tool-kind tool-kind-read">Read-only</span> |
| [`accept_company_invitation`](#accept-company-invitation) | Accepts your invitation and joins the team | Any (their own invitation) | <span class="tool-kind tool-kind-write">Changes</span> |
| [`decline_company_invitation`](#decline-company-invitation) | Declines your invitation, for good | Any (their own invitation) | <span class="tool-kind tool-kind-confirm">Asks to confirm</span> |

The roles are the routes' roles: the assistant never does more than the connected person could do on screen. The owner and the admin see all 14; the moderator and finance, 10 (the two community-team reads and the eight open to any role); the member, 8 (`get_my_company`, `list_company_members`, `invite_company_member`, `remove_company_member`, `list_company_invitations`, `list_my_company_invitations`, `accept_company_invitation` and `decline_company_invitation`).

**Eight tools appear for any role** because a company's admin is usually a regular member, and anyone can receive an invitation. The API decides by the link: the team is read only by the community team or the company's own people, and only the owner, the admin or that company's admin (while it is active) invites and removes. Everyone else gets "no permission".

**The company admin's invite depends on acceptance.** It never links right away, not even someone already in the community: the person receives the invitation by e-mail and joins the team only when they accept (`accept_company_invitation`). The community owner and admin still link directly.

**The coworking block stays with management.** The residence type, the dates, the offers (`offers`), the billing details (`billing`) and the purchase link (`purchaseLink`) go to the owner, the admin and finance; the moderator only learns whether the company has coworking (`coworking`). `get_my_company` brings the offers and the link to the whole team, and billing only to the company admin.

**The company subscribes and pays, but not through the assistant.** Registering the offers and the billing details charges nothing. Buying is up to the company admin, in the app, through the `purchaseLink` (the assistant never takes a card): the assistant hands over the link. After that, the company admin handles billing with the [Subscriptions](/mcp/ferramentas-assinaturas) tools (`list_my_subscriptions` and `list_my_purchases` with `company_id`, `pay_my_subscription_now`, `quote_my_add_on` and `add_my_add_on`, `quote_plan_change` and `change_my_plan`, `manage_my_subscription`), by PIX or boleto, and reads the credit wallet in [Credits](/mcp/ferramentas-creditos) (`get_company_credit_balance`, `list_company_credit_entries`).

**Leaving the team suspends billing.** When you remove someone or close the company with its team, the summary warns that billing for the removed person is suspended; the subscription stays on record until it is canceled, which you do in [Subscriptions](/mcp/ferramentas-assinaturas).

## `list_companies`

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

**The companies**, by name, with `coworking` (whether the coworking block is on), the status (`active`, or `ended` when closed or past the planned exit) and how many people are on the team. Companies are not members and never appear in member lists. The owner, the admin and finance also get the block (residence type, start and exit), the closing date, the offers, the billing details and the `purchaseLink`, all empty with coworking off; the moderator gets only `coworking`. *Minimum role: moderator (or finance).*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `status` | `active` or `ended` | No | Filters by status |
| `search` | text | No | Part of the name |

**Ask like this:** *"Which companies are active today?"*

## `get_company`

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

**One company.** With the coworking block, the offers, the billing details and the `purchaseLink` for the owner, the admin and finance, who also get the company's subscriptions (`subscriptions`) and the credit wallet balance (`credit_balance`); the company's purchases are in `list_purchases` (`buyer.companyId`). The moderator gets only `coworking`. A company from another community: "not found". A company admin uses `get_my_company`. *Minimum role: moderator (or finance).*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `company_id` | id | Yes | The company (from `list_companies`) |

**Ask like this:** *"Is Acme up to date with its plan? How many credits does it have?"*

## `get_my_company`

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

**Your company.** The company the connected person is on whether they are its admin, the team, and `canManageTeam`, true for the admin of an active company (false once it is closed), plus the offers, `canPurchase` and `purchaseLink`. For **anyone on the team** of an active company it returns `benefits`: what they get through the company, with no prices. In `items`, the company's active plans and products (an active subscription or purchase: `title`, `isPlan`, `kind`, `source`, `plan`) with the `spaces` and `contents` each one unlocks; in `credits`, the wallet balance (`balance`) and the next expiry (`expiringSoon`). With the company closed, `benefits` is `null`. For the company admin it also brings the billing details (`billing`), the subscriptions (`subscriptions`, with the pending renewal), the purchases (`purchases`) and the credit balance (`credit_balance`); with an overdue subscription, the suggested next step is `pay_my_subscription_now`. With no company, returns `company: null`; pending invitations are in `list_my_company_invitations`. *Minimum role: any.*

No parameters.

**Ask like this:** *"What do I get through my company?"* · *"Who is on my company's team?"* · *"Is my company's subscription up to date?"*

## `create_company`

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

**Register a company.** Only the name is required: without the coworking fields, the company is just a name and a team. In the coworking block, `offer_product_ids` lists the plans and products the company can buy (digital products only) and `billing` the billing details. Nothing is charged here and it does not ask for confirmation: the answer carries the `purchaseLink`, the page where the company admin buys, and the assistant hands over the link. A product from another community: "not found"; a product that is not digital: refused. The company gets no login; people join with `invite_company_member`. `parcel_notice_admins_only` makes only the company's admins get the [parcel](/espacos/encomendas#parcels-for-a-company) notice (default: every employee with access to the space). *Minimum role: admin (owner or admin).*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `name` | text | Yes | The name, up to 120 characters |
| `coworking` | true/false | No | Turns the coworking block on or off. Omitted, it turns on when any block field is filled |
| `residence_type` | `PRIVATE_OFFICE`, `FIXED_DESK` or `VIRTUAL_OFFICE` | No | Private office, fixed desk or virtual office |
| `offer_product_ids` | list of ids, up to 20 | No | The digital plans and products the company can buy (from `list_plans` or `list_products`) |
| `billing` | `legal_name`, `tax_id` (CNPJ), `email` | No | The billing details; each field is optional and `null` clears it |
| `starts_at` | YYYY-MM-DD | No | The start in the coworking space |
| `ends_at` | YYYY-MM-DD | No | The planned exit, not before the start |
| `parcel_notice_admins_only` | true/false | No | Only the company's admins get the parcel notice (default: false) |

**Ask like this:** *"Register Acme Tecnologia in the coworking space, private office, since 11/1, able to buy the Private office monthly plan. Legal name Acme Tecnologia Ltda, billing e-mail financeiro@memberfy.net."* · *"Register the company Silva Accounting."*

## `update_company`

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

**Edit.** Only what you send: name, `coworking`, type, offers, billing details, start or exit. The `offer_product_ids` list you send replaces the previous one (`[]` or `null` clears it). `null` clears a block field; filling one turns coworking on; `coworking: false` turns it off and clears the whole block. To close now, use `close_company`. *Minimum role: admin (owner or admin).*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `company_id` | id | Yes | The company |
| `name`, `coworking`, `residence_type`, `offer_product_ids`, `billing`, `starts_at`, `ends_at`, `parcel_notice_admins_only` | various | No | Only what changes |

**Ask like this:** *"Acme leaves on 12/31. Update the planned exit."* · *"At Acme, notify only the admins when a parcel arrives."*

## `close_company`

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

**Close the company now.** The company stops accepting invites, giving the team access and being billed; the record and the coworking block stay on file. There is no reopening. With `remove_members` (default: true), everyone leaves the team, and whoever joined the community through the company and is still a member also leaves the community. The summary lists who leaves and warns that their billing is suspended and the subscription stays on record until it is canceled. An already closed company: refused. The first call returns the summary and the confirmation code. *Minimum role: admin (owner or admin).*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `company_id` | id | Yes | The company |
| `remove_members` | true/false | No | Default: true. False keeps the team linked to the closed company |

**Ask like this:** *"Close Acme and take its team off."*

## `list_company_members`

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

**A company's team**, admins first: name, job title, whether they are company admin, whether they joined through the company and, for the community team and the company admin, the e-mail. Readable by the community team or the company's own people. *Minimum role: any (the API checks the link).*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `company_id` | id | Yes | The company (from `list_companies` or `get_my_company`) |

**Ask like this:** *"Show Acme's team."*

## `invite_company_member`

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

**Add to the team by e-mail.** By the **owner or admin**, it links right away: someone already in the community only gets the link, with no e-mail (`linked`); anyone else joins the community as a member and **receives the invite by e-mail** (`invited`): the assistant says so first. By the **company admin**, it never links: the answer is always `invited` with `pending: true` and the `invitation_id`, whoever the person is, and the assistant says *"Invitation sent. They join the team when they accept."*, without claiming whether they were already in the community. Refused if the community is not accepting new members, if the person asked not to take part, if they are already on this team or if the company is closed; for the owner and the admin, also if they are already on another company. The owner, the admin and that company's admin (while it is active) invite; `is_admin` only the owner and the admin. The company admin sends up to 30 invitations an hour (beyond that, 429 with `Retry-After`); the owner and the admin have no such limit. *Minimum role: any (the API checks the link).*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `company_id` | id | Yes | The company |
| `email` | text | Yes | The person's e-mail |
| `name` | text | No | The name, if the account is created now |
| `is_admin` | true/false | No | Joins as company admin right away (owner or admin) |

**Ask like this:** *"Invite joao@memberfy.net to my company's team."*

## `update_company_member`

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

**Mark or unmark the company admin.** The company admin invites and removes their own team. *Minimum role: admin (owner or admin).*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `company_id` | id | Yes | The company |
| `member_id` | id | Yes | The person (from `list_company_members`) |
| `is_admin` | true/false | Yes | True marks; false unmarks |

**Ask like this:** *"Make Maria the admin of Acme."*

## `remove_company_member`

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

**Take someone off the team.** If they joined the community through the company and are still a member, they also leave the community and lose access; if they were already in the community, they only lose the link. The summary says which, and warns that billing for the removed person is suspended and the subscription stays on record until it is canceled. The owner, the admin and that company's admin (while it is active) remove. The first call returns the summary and the confirmation code. *Minimum role: any (the API checks the link).*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `company_id` | id | Yes | The company |
| `member_id` | id | Yes | The person (from `list_company_members`) |

**Ask like this:** *"Take João off Acme's team; he left the company."*

## `list_company_invitations`

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

**The company's pending invitations**: the ones the company admin sent that nobody answered yet, newest first, with the e-mail typed and the date. It never says who the person is or whether they were already in the community. The owner's and the admin's invites link right away and do not show here. Readable by the community team and by that company's admin while it is active. *Minimum role: any (the API checks the link).*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `company_id` | id | Yes | The company |

**Ask like this:** *"Who did I invite to my company that hasn't accepted yet?"*

## `list_my_company_invitations`

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

**Your invitations.** The connected person's pending invitations to join a team (*"you were invited to company X"*), newest first, with the company, who invited and the date. Only active companies of this community; with none, an empty list. *Minimum role: any.*

No parameters.

**Ask like this:** *"Do I have any company invitation?"*

## `accept_company_invitation`

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

**Accept your invitation.** The person joins the team (not as company admin). It does not ask for confirmation. Someone else's invitation, one already answered or from another community: "not found". A company closed after the invite, or a person already on another company's team: refused, with the API message. *Minimum role: any (their own invitation).*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `invitation_id` | id | Yes | The invitation (from `list_my_company_invitations`) |

**Ask like this:** *"Accept the invitation from Acme."*

## `decline_company_invitation`

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

**Decline your invitation.** No link is created and the invitation is gone for good: joining later needs a new invitation. The first call returns the summary and the confirmation code. *Minimum role: any (their own invitation).*

| Parameter | Type | Required | Description |
|---|---|---|---|
| `invitation_id` | id | Yes | The invitation (from `list_my_company_invitations`) |

**Ask like this:** *"Decline the invitation from Acme."*

## Suggested recipes

- **Register a company:** register the company with the offers (`create_company`), hand over the `purchaseLink`, invite the person who will look after it (`invite_company_member`) and mark them as company admin (`update_company_member`, or `is_admin` right in the invite). Step by step in [Recipes](/mcp/receitas#69-register-a-company).
- **The admin invites, the person accepts:** the company admin invites the colleague (`invite_company_member`) and follows it in `list_company_invitations`; the colleague sees the invitation (`list_my_company_invitations`) and accepts it (`accept_company_invitation`). Step by step in [Recipes](/mcp/receitas#70-invite-a-colleague-to-your-company).
- **What I get through the company:** anyone on the team asks, and the assistant answers with the `benefits` of `get_my_company` (the company's plans, content and credits, with no prices). Step by step in [Recipes](/mcp/receitas#72-what-i-get-through-my-company).

## Related

- [Companies](/membros/empresas)
- [Tools](/mcp/ferramentas)
- [Tools · Members](/mcp/ferramentas-membros)
- [Tools · Subscriptions](/mcp/ferramentas-assinaturas)
- [Tools · Credits](/mcp/ferramentas-creditos)
- [Money and confirmation](/mcp/dinheiro-e-confirmacao)
- [Recipes](/mcp/receitas)
