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

# Teams & agents

> Who takes calls, and what a team actually is.

Agents are human or virtual, and they appear in one list distinguished by a
badge — because a caller dialling an extension cannot tell which answered, and
mostly should not need to.

## A team is three things at once

This is the page's one genuine trap. A team is:

1. **A roster.** Who takes a dialler campaign's calls.
2. **A budget.** A team can be cut off while the organisation still has credit.
3. **Part of what a login can see.** A supervisor's scope is their teams.

<Warning>
  Moving an agent between teams therefore moves their **call costs** and their
  colleagues' **visibility**, not only their campaign work. It is the right
  behaviour of the model, and it is not what somebody staffing a campaign
  expects — so the roster dialog says so.
</Warning>

## Staffing a team

Add somebody to a team and give them a **skill level** from 1 to 10. The
level is the team's own rating of that person; it is not the same number as a
queue member's **priority**, which decides who a waiting call is offered to
first and is set on the queue.

Rostering a team needs `teams:write`, which an organisation admin holds and a
[supervisor](/supervisor/queues-and-teams) does not. A supervisor rosters
queues, not people.

Somebody can be on more than one team, and a supervisor who runs several sees
all of them as one scope.

## The budget

A team can carry an amount and a period — daily, weekly or monthly. Type the
amount exactly as you mean it; it is kept as typed, because parsing a budget
to a number and back would round it before it ever reached the ledger.

Where a budget applies, it is a second limit **alongside** the organisation's
balance, and the more restrictive of the two wins. A prepaid call is allowed
only as many seconds as the remaining budget will pay for, and where the team
is what stopped it the refusal says so rather than reporting insufficient
credit against a balance that is plainly healthy.

Calls that cost nothing are outside it entirely: an internal call, or one
over a carrier the organisation owns, is never rated, so no budget applies.

<Warning>
  **A budget does not act on its own yet.** Enforcement reads a budget period
  covering today, and nothing in the product creates one, so an amount typed
  here is stored, shown and not applied. Treat it as a figure you are
  tracking until that changes.
</Warning>

## Presence is declared, not guessed

Three different facts sit behind the word "available", and the
[directory](/agent/directory) shows all three side by side:

|                |                                                               |
| -------------- | ------------------------------------------------------------- |
| **Presence**   | what the person last declared: available, on a break, offline |
| **On a call**  | read live from the phone system, never stored                 |
| **Registered** | whether their handset is connected                            |

Only the person can declare their own presence, and it survives a
disconnection because it is stored. Whether somebody is on a call is never
stored: a saved copy is a lie waiting for a crash. **On a call wins over the
declaration**, because somebody who forgot to come back from a break is still
on the phone.

## Virtual agents

A virtual agent has a profile rather than a handset — see
[virtual agents](/tenant/ai/virtual-agents). It can hold an extension, so a
caller reaches it by dialling; it can also have none at all, which is the shape
a campaign-only agent takes.

Nothing downstream — queues, campaigns, routing, billing, call records — assumes
an agent is a SIP extension.

## PINs

An agent signs in at their extension with a PIN. Set or reset it here; the agent
is required to change one that was set for them at first sign-in.
