The Teleperson Protocol (TPP) 0.1: A Technical Overview
TPP is an open draft that extends the Personal Agent Protocol for customer service: verified agent phone calls, phone menus as data, an authorized-representative grant with limits, company-signed receipts, consented feedback, and a hosted starting point for companies that haven't built anything yet.
Teleperson Team · October 2026 · 8 min read
The Teleperson Protocol (TPP) is an open extension of the Personal Agent Protocol (PAP) for personal agents that handle customer service. This overview describes the roles, the design principles and each tpp.* extension in TPP 0.1. It is a draft: names and fields may change before 1.0. For the announcement and a two-minute video, see Introducing the Teleperson Protocol.
Why an extension
PAP gives a customer's personal agent a standard way to find a business (/.well-known/poppy.json), sign in with the customer's permission, and act for them over web, API or chat. Two things it leaves open matter most in customer service:
- The phone. Most service still happens on calls, behind phone menus and identity checks.
- Companies that haven't built anything. Most companies have no agent or agent endpoint yet, and won't for a while.
TPP fills those gaps and adds the pieces customer service needs around them: limits the customer sets, proof of what the company agreed to, and a way to hear back from customers.
Roles
- Member: the person who wants something done.
- Personal agent: acts for the Member. Atlas is Teleperson's personal agent.
- Company: the business the agent deals with, reached directly or through Teleperson Host when the company hasn't published anything.
Design principles
- PAP first. A TPP agent is a PAP agent. Everything in TPP lives under
tpp.*in theextensionssection ofpoppy.json, and a company can adopt any subset. - The member owns consent. Nothing happens without their permission, and they can revoke it at any time.
- No secrets reach the agent. Passwords, PINs and one-time codes are entered by the member at the company, never through the agent or a model.
- Always disclosed as AI, on every channel, including the phone.
- Signed both ways. Companies can verify the agent; members can verify what the company promised.
- Minimum data. Only what the task needs.
- Works without the company. A member can still get help when the company has published nothing.
The extensions
| Extension | What it adds | Who implements it |
|---|---|---|
tpp.directory | Verified channels for any company: phone numbers and their purpose, a menu map, and the company's poppy.json if it has one | Teleperson (from Vendor Hub data, number verification and menu mapping) |
tpp.host | A guest-only PAP listing for companies that haven't claimed theirs | Teleperson, until the company claims it |
tpp.voice | A single-use call code that ties a phone call to a PAP session | Company intent endpoint + agent |
tpp.menu | The phone menu (IVR) as a JSON tree with named routes | Company, or observed maps from Teleperson |
tpp.rep | An authorized-representative grant with limits | Company sign-in + agent |
tpp.receipt | Company-signed receipts for account actions, with promised follow-ups | Company |
tpp.feedback | Consented post-experience feedback events | Agent, delivered to the company |
tpp.directory and tpp.host
The directory answers "how do I reach this company, and for what?" even when the company publishes nothing. When a company has no poppy.json, Teleperson Host serves a guest-only listing at tpp.teleperson.com/c/{company}/.well-known/poppy.json, clearly marked operator: teleperson and claimed: false. A hosted listing can't sign anyone in or act on an account; for that it hands off to the company's real channel.
A company claims its listing by proving domain ownership with a DNS TXT record (or a file at /.well-known/tpp-claim). It can then point the listing at its own PAP endpoint, or keep Teleperson as the host.
tpp.voice
Before dialing, the agent asks the company's intent endpoint for a call code: 6 digits, single use, valid for 10 minutes. On the call, the agent says it is an AI assistant calling for the member (by first name) and gives the code. The company looks the code up and sees which agent is calling, for whom, why, and what it is allowed to do. From that point the call is part of a PAP session, like a chat or API request.
tpp.menu
Companies can publish their phone menu as a tree of named routes, such as billing_dispute, cancel and reach_person, so an agent can go straight to the right team. Where a company hasn't published one, agents may use menu maps Teleperson has observed. At any step that asks for an account number, PIN or code, the agent hands off to the member.
tpp.rep
The member creates the grant at the company's own sign-in, never through the agent. It states:
| Field | Meaning |
|---|---|
may | Actions the agent may take |
credit_up_to | The most the agent may accept in credits or refunds without asking |
never | Actions the agent must never take |
confirm_each | Actions that need the member's OK every time |
expires_at | When the grant ends |
{
"may": ["dispute_charge", "request_credit"],
"credit_up_to": "25.00 USD",
"never": ["cancel_account"],
"confirm_each": ["accept_offer"],
"expires_at": "2027-10-16T00:00:00Z"
}The values above are illustrative. The grant works the same in chat and on the phone, and the member or the company can revoke it at any time.
tpp.receipt
For every account action (a credit, refund, cancellation, plan change or appointment), the company returns a signed receipt (a JWS) with the reference number, the representative's name and any follow-ups it promised, with due dates. The agent verifies the signature, keeps the receipt and turns each promise into a reminder. If a company doesn't sign, the agent still records what happened, marked signed_by: agent, so it is never mistaken for the company's word.
tpp.feedback
After an experience, the agent can interview the member by voice (Atlas Survey). With the member's consent, the company receives a feedback event with a summary, a rating and highlights, in the customer's language and in English.
How it fits with other protocols
| TPP | PAP (Sierra, Meta) | PACT (Decagon, Instinct) | |
|---|---|---|---|
| Phone calls | Call codes tie a call to a PAP session | Not specified (web, API, chat) | Not specified |
| Companies without an agent | Directory + guest-only hosted listing | Company publishes poppy.json | Not specified |
| Customer-set limits | tpp.rep: what, how much, until when | Not specified | Short-lived delegation tokens |
| Signed outcomes | Company-signed receipts with promised follow-ups | Not specified | Signed receipts |
TPP builds on PAP and is designed to stay compatible with PACT. "Not specified" means we didn't find it in the public materials we've read; PAP and TPP are both early drafts.
Adopting TPP as a company
- Start with zero build. Teleperson already hosts a guest-only listing, so agents can find your verified channels.
- Claim it with one DNS record.
- Turn on only the extensions you want, one at a time. Underneath, it's standard PAP.
Status
TPP 0.1 is an open draft under Apache-2.0. We'd like feedback from companies, agent platforms and contact-center providers. Talk to us about TPP.