@talqing/mcp 0.3.4 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SKILL.md +127 -60
- package/package.json +1 -1
- package/tools.json +267 -15
package/SKILL.md
CHANGED
|
@@ -42,7 +42,9 @@ An agent is a single object, `config`, plus what you attach to it:
|
|
|
42
42
|
Anam avatar) or `text` (chat). The channel decides which model slots exist.
|
|
43
43
|
- **`prompt`** — the system prompt. This is where the agent's behaviour lives.
|
|
44
44
|
- **`greeting`** — the line spoken on connect, and on the way in from a
|
|
45
|
-
handoff. Voice and video only.
|
|
45
|
+
handoff. Voice and video only. `greeting_interruptible: false` makes the
|
|
46
|
+
caller unable to cut it off (cascade only); a greeting speaking the recording
|
|
47
|
+
notice is always protected.
|
|
46
48
|
|
|
47
49
|
Both are personalized per session: `{{userdata.field}}` is substituted from
|
|
48
50
|
the session's userdata when the agent starts, so *"You are speaking with
|
|
@@ -97,7 +99,7 @@ An agent is a single object, `config`, plus what you attach to it:
|
|
|
97
99
|
|
|
98
100
|
Values arrive on the **request that starts the session** — `vars` on
|
|
99
101
|
`calls_token`, `create_outbound_call`, `create_call_batch` or
|
|
100
|
-
`
|
|
102
|
+
`create_chat` — and override the defaults. One bag per session,
|
|
101
103
|
reaching *every* agent on it: the entry agent, every team member, and a handoff
|
|
102
104
|
target that was never in the plan, each merged over its own declared defaults.
|
|
103
105
|
Nothing inside the session can write it.
|
|
@@ -108,8 +110,8 @@ An agent is a single object, `config`, plus what you attach to it:
|
|
|
108
110
|
repeated back. A credential belongs in a workspace secret, read as
|
|
109
111
|
`{{secrets.NAME}}` from a tool, where the model never sees it.
|
|
110
112
|
- **`required: true` refuses the session** that supplies no value for a
|
|
111
|
-
variable with no `default` — the call token, the dial, the batch and the
|
|
112
|
-
|
|
113
|
+
variable with no `default` — the call token, the dial, the batch and the chat,
|
|
114
|
+
before anything is compiled and before any provider is called.
|
|
113
115
|
An empty string counts as a value; a `default` satisfies it outright. Nothing
|
|
114
116
|
is enforced once a session is connected, so a handoff target that needs a
|
|
115
117
|
value nobody supplied reads it as empty rather than ending the call.
|
|
@@ -169,6 +171,13 @@ An agent is a single object, `config`, plus what you attach to it:
|
|
|
169
171
|
job inside a longer call — taking an address, qualifying a lead — and a
|
|
170
172
|
`handoffs` entry when the caller should belong to someone else from then on.
|
|
171
173
|
|
|
174
|
+
**Start `description` with "Handoff to an agent task responsible for …"**,
|
|
175
|
+
then say when to enter it and when to skip it: "Handoff to an agent task
|
|
176
|
+
responsible for collecting the caller's name and work email, after they've
|
|
177
|
+
agreed to a demo. Skip this if you already have both." It tells the calling
|
|
178
|
+
model this is not a lookup but an agent that takes over the conversation and
|
|
179
|
+
talks to the person until its job is done.
|
|
180
|
+
|
|
172
181
|
`name` is yours, not the task's, so renaming the task never changes the tool
|
|
173
182
|
name a published prompt was written against. The task must be **published**;
|
|
174
183
|
publishing the agent pins the version. An entry may instead carry `{"task":
|
|
@@ -258,22 +267,44 @@ An agent is a single object, `config`, plus what you attach to it:
|
|
|
258
267
|
scoped away. And the summary is written by an LLM the caller has been talking
|
|
259
268
|
to, so it is exactly as trustworthy as anything else the model says. The one
|
|
260
269
|
thing that does hold is that the source agent's raw tool results do not cross.
|
|
261
|
-
- **`
|
|
262
|
-
|
|
263
|
-
|
|
270
|
+
- **`max_steps`** (1–50, `null` = 4 on voice and video, 25 on text) — how many
|
|
271
|
+
LLM → tools → LLM **rounds** one turn may take. Past it the model must answer
|
|
272
|
+
without tools, so the caller gets a thinner answer rather than an error; a
|
|
273
|
+
`tool.step_limit_reached` session event records it. Raise it when a turn
|
|
274
|
+
legitimately chains lookups; on voice every round is dead air. The agent that
|
|
275
|
+
starts the call sets it for the whole call, handoffs included. Realtime models
|
|
276
|
+
ignore it.
|
|
277
|
+
- **`silence`** and **`max_duration_seconds`** — what ends a call nobody hung up.
|
|
278
|
+
Voice and video only; like `max_steps`, the agent that starts the call sets both.
|
|
279
|
+
`silence` (`enabled`, `timeout` 10 s, `max_check_ins` 2): after `timeout` seconds
|
|
280
|
+
of quiet the agent checks the caller is still there, in its own words, and after
|
|
281
|
+
the last unanswered check-in says goodbye and hangs up (close reason
|
|
282
|
+
`silence_timeout`). `max_duration_seconds` (default 1800; `null` = the platform's
|
|
283
|
+
3-hour cap): the agent says goodbye and hangs up at the limit (`max_duration`).
|
|
284
|
+
Raise either rather than turning it off when a caller legitimately goes quiet —
|
|
285
|
+
reading out a long number, or on hold with their bank.
|
|
286
|
+
- **`voicemail_detection`** (`enabled`, off by default; `message`) — on calls the
|
|
287
|
+
agent places, it gets a `voicemail_detected` tool to call when a machine answers.
|
|
288
|
+
It then speaks `message` word for word (same substitutions as the greeting;
|
|
289
|
+
`null` = no message) and hangs up with close reason `voicemail`. A batch retries
|
|
290
|
+
that recipient like a missed call. Voice agents only. Turn it on for any agent
|
|
291
|
+
that makes outbound calls, and keep the message short.
|
|
292
|
+
- **`conversation`** — what a new call or chat knows about earlier ones with the
|
|
293
|
+
same person: `context` is `none` (the default — each starts clean, though
|
|
294
|
+
earlier conversations are still saved against that person), `summary` (the
|
|
264
295
|
agent is told, as background, what happened on recent ones) or `transcript`
|
|
265
|
-
(one long conversation across every call). `summary_limit` bounds how
|
|
266
|
-
recent
|
|
267
|
-
`initialize_userdata` decides whether
|
|
296
|
+
(one long conversation across every call and chat). `summary_limit` bounds how
|
|
297
|
+
many recent ones `summary` describes — leave it out for all of them — and
|
|
298
|
+
`initialize_userdata` decides whether it also starts from what the agent
|
|
268
299
|
learned about this person before.
|
|
269
300
|
|
|
270
301
|
This is the answer whenever someone wants an agent to remember, or to forget,
|
|
271
302
|
earlier calls. **Never write that instruction into the prompt** — a model told
|
|
272
303
|
to ignore what is in its context is being asked to do the impossible, and a
|
|
273
304
|
model told to remember cannot see what was never loaded. Set the field.
|
|
274
|
-
`summary` needs
|
|
275
|
-
|
|
276
|
-
|
|
305
|
+
`summary` needs analysis with its summary switched on, and publish refuses it
|
|
306
|
+
otherwise. All three work on text too, and a WhatsApp call always joins the
|
|
307
|
+
chat's conversation, whatever the agent answering it is set to.
|
|
277
308
|
- **`on_enter`, `on_exit`, `on_user_turn_completed`** — one such tool reference
|
|
278
309
|
each, run as lifecycle hooks.
|
|
279
310
|
|
|
@@ -312,8 +343,10 @@ guessing.
|
|
|
312
343
|
|
|
313
344
|
Some fields are normalized for you. Switching to `text` clears `stt`, `tts`,
|
|
314
345
|
`greeting`, `turn_handling` and `avatar`. Switching to `video` fills in an
|
|
315
|
-
`avatar`, and
|
|
316
|
-
resume a sentence it has already stopped rendering.
|
|
346
|
+
`avatar`, and the call ignores `resume_false_interruption` — the avatar cannot
|
|
347
|
+
resume a sentence it has already stopped rendering. Keypad input is voice-only
|
|
348
|
+
and a text agent cannot watch a screen share, so enabling either off its channel
|
|
349
|
+
is refused: turn it off in the same write that switches the channel.
|
|
317
350
|
|
|
318
351
|
### Choosing models
|
|
319
352
|
|
|
@@ -413,7 +446,7 @@ without you doing anything. Rules worth knowing before you hit them:
|
|
|
413
446
|
`deepgram/nova-3` and both xAI speech-to-text models transcribe as English on
|
|
414
447
|
Auto and will mistranscribe a caller who speaks anything else. For an agent
|
|
415
448
|
taking non-English calls on Auto, pick `deepgram/nova-3-general` (`multi`),
|
|
416
|
-
`deepgram/flux-general-multi`, `sarvam/saaras:
|
|
449
|
+
`deepgram/flux-general-multi`, `sarvam/saaras:v4` (`unknown`), ElevenLabs
|
|
417
450
|
Scribe or OpenAI — all of which detect for real.
|
|
418
451
|
- Models that publish no languages (OpenAI TTS is multilingual, Deepgram encodes
|
|
419
452
|
the language in the voice) simply ignore the setting.
|
|
@@ -823,11 +856,11 @@ before hanging up — logging the outcome, posting a lead — goes **before** th
|
|
|
823
856
|
Each hook points at a **published tool id**, or null.
|
|
824
857
|
|
|
825
858
|
- **`on_enter`** — a session opens. It finishes *before* the greeting, which
|
|
826
|
-
waits for it and reads whatever it published to userdata; on text, when
|
|
827
|
-
|
|
859
|
+
waits for it and reads whatever it published to userdata; on text, once, when
|
|
860
|
+
the chat's first message arrives. A handoff target runs it and then speaks its own
|
|
828
861
|
greeting — or, having none, opens with a generated line instead.
|
|
829
|
-
- **`on_exit`** — the
|
|
830
|
-
|
|
862
|
+
- **`on_exit`** — the call or chat ends, or this agent hands off. On text it
|
|
863
|
+
runs once, when the chat ends; what it says is saved to the chat.
|
|
831
864
|
- **`on_user_turn_completed`** — after every user turn, before the LLM replies.
|
|
832
865
|
Each spoken turn on voice and video, each inbound message on text. The user's
|
|
833
866
|
words arrive as `{{args.user_message}}`. On an agent with
|
|
@@ -902,8 +935,8 @@ message, draft an opening line, take a shipping address mid-call.
|
|
|
902
935
|
- **`max_steps`** (default 25, max 50) — how many LLM → tools → LLM **rounds**
|
|
903
936
|
a STANDALONE run may take. A round, not a tool call: four tools in one reply
|
|
904
937
|
cost one step. This is the runaway-loop guard. Entered by an agent the task
|
|
905
|
-
runs on the calling
|
|
906
|
-
|
|
938
|
+
runs on the calling agent's `max_steps` instead, refreshed on every user
|
|
939
|
+
turn.
|
|
907
940
|
- **`timeout_seconds`** (default 300, max 600) — the real time budget, and the
|
|
908
941
|
one setting that applies both ways. Entered by an agent it is the only bound
|
|
909
942
|
on how long the task may hold the caller: keep it short on a voice agent.
|
|
@@ -942,26 +975,27 @@ fields. Never declare a tool of that name yourself.
|
|
|
942
975
|
|
|
943
976
|
**Nothing is appended to a task's prompt.** `submit_result_description` is the
|
|
944
977
|
whole of what the model is told about how a run ends, so it has to say that
|
|
945
|
-
calling the tool IS the ending — a written answer produces nothing — and
|
|
946
|
-
|
|
947
|
-
non-empty
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
about what belongs there.
|
|
978
|
+
calling the tool IS the ending — a written answer produces nothing — and when the
|
|
979
|
+
job is done enough to call it. It is required and
|
|
980
|
+
non-empty; a new task starts with `"Submit results if you are sure that you have achieved the goal of this task"`. **Make it specific**: what
|
|
981
|
+
"achieved" means for this task (e.g. "once the caller has confirmed the address").
|
|
982
|
+
|
|
983
|
+
Every output field is a **required argument** of that tool — an optional one lets
|
|
984
|
+
the model silently omit the address it failed to find, and "omitted" and "not
|
|
985
|
+
generated yet" then look identical to whoever reads the row. A field's own
|
|
986
|
+
`required` flag (default `true`) decides whether `null` is accepted: turn it off
|
|
987
|
+
for a value the model may legitimately fail to find, and say in that field's
|
|
988
|
+
`description` when to send null — the description is the only instruction the
|
|
989
|
+
model gets about what belongs there.
|
|
957
990
|
|
|
958
991
|
A task an agent enters also gets **`finish_without_result`**, which abandons the
|
|
959
992
|
job and fails the calling agent's tool call.
|
|
960
993
|
`finish_without_result_description` — required and non-empty too, and starting as
|
|
961
|
-
the
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
994
|
+
`"Finish without result only if you have failed to achieve the goal of this task and would like to give up rather than continue."` — is the only thing saying when that is allowed: **a task that gives up on
|
|
995
|
+
work it should have finished is fixed there, not in the prompt.** Narrow it for the
|
|
996
|
+
task (the caller changing their mind, a named number of failed attempts). Giving up
|
|
997
|
+
IS how a task reports failure, so never add a success/failure boolean to `output`;
|
|
998
|
+
a value it may legitimately not find is a field with `required` off. Publishing
|
|
965
999
|
refuses either description blank.
|
|
966
1000
|
|
|
967
1001
|
### Reading a run
|
|
@@ -1041,10 +1075,14 @@ back off the integration, or read `exposed_name` from
|
|
|
1041
1075
|
`allowed_tools` still approves the server's own names. Two attached servers
|
|
1042
1076
|
sharing a namespace fails publish.
|
|
1043
1077
|
|
|
1044
|
-
**Channel integrations** (Telegram) deploy an agent to a messaging
|
|
1078
|
+
**Channel integrations** (Telegram, WhatsApp) deploy an agent to a messaging
|
|
1045
1079
|
channel through *triggers*, not MCP attachment. A trigger binds an inbound event
|
|
1046
1080
|
to a published text agent and decides what happens with the reply.
|
|
1047
1081
|
|
|
1082
|
+
A Twilio WhatsApp number also takes calls: a `whatsapp.call.inbound` trigger puts a
|
|
1083
|
+
published **voice** agent on it, which must use `conversation.context: "transcript"` —
|
|
1084
|
+
the call joins the chat's thread. It cannot transfer to a phone number.
|
|
1085
|
+
|
|
1048
1086
|
`integration_catalog` is the authoritative list of providers and, in
|
|
1049
1087
|
`setup_fields`, exactly what each one needs — read it instead of guessing.
|
|
1050
1088
|
Providers whose `auth_type` is `oauth` must be connected from the dashboard's
|
|
@@ -1055,7 +1093,7 @@ stores it as a workspace secret and wires the reference, or pass an existing
|
|
|
1055
1093
|
|
|
1056
1094
|
## Phone numbers
|
|
1057
1095
|
|
|
1058
|
-
A voice
|
|
1096
|
+
A voice agent answers the phone once a number is pointed at it. Three
|
|
1059
1097
|
things have to line up, in order:
|
|
1060
1098
|
|
|
1061
1099
|
1. **A carrier account** — the credential for a phone network.
|
|
@@ -1068,8 +1106,10 @@ things have to line up, in order:
|
|
|
1068
1106
|
provisions them. Numbers are bought at the carrier, never here. Import
|
|
1069
1107
|
reports per number: read every `ok` rather than trusting the 200.
|
|
1070
1108
|
3. **An agent on the number** — `assign_phone_number` puts a **published**
|
|
1071
|
-
voice
|
|
1072
|
-
automatically; the assignment is not redone.
|
|
1109
|
+
`voice` agent on it. Republishing the agent updates live calls
|
|
1110
|
+
automatically; the assignment is not redone. A publish or rollback that
|
|
1111
|
+
would take it off `voice` is refused while any number, stream connection or
|
|
1112
|
+
running batch uses it.
|
|
1073
1113
|
|
|
1074
1114
|
`readiness` on a number is the honest answer to "does this work": `live`,
|
|
1075
1115
|
`needs_agent`, `needs_carrier_setup`, `setting_up`, `error` or `disabled`.
|
|
@@ -1110,8 +1150,9 @@ window may cross midnight; the days then name the evening it starts on.
|
|
|
1110
1150
|
**Say these two things before creating one**, because a user who discovers
|
|
1111
1151
|
either from an invoice will not forgive us:
|
|
1112
1152
|
|
|
1113
|
-
- **
|
|
1114
|
-
|
|
1153
|
+
- **Voicemail is answered and billed** unless the agent has
|
|
1154
|
+
`voicemail_detection` on — then it hangs up (after its message, if it has one),
|
|
1155
|
+
the call ends as `voicemail`, and the recipient is retried like a missed call.
|
|
1115
1156
|
- **Every call runs the agent's current published version**, so republishing
|
|
1116
1157
|
mid-batch changes every call placed after that moment.
|
|
1117
1158
|
|
|
@@ -1271,10 +1312,36 @@ the review table as drafts and never takes the batch with it; the drafts are
|
|
|
1271
1312
|
still there. In the other direction, pausing or cancelling the *batch* stops
|
|
1272
1313
|
drafting and does not touch a send that is already scheduled or going out.
|
|
1273
1314
|
|
|
1315
|
+
## WhatsApp outbound
|
|
1316
|
+
|
|
1317
|
+
A **WhatsApp batch** sends one *approved* template to every row of a CSV from a
|
|
1318
|
+
connected WhatsApp integration. There is no drafting: Meta approved the wording,
|
|
1319
|
+
and only the template's variables change per row. `list_whatsapp_templates`
|
|
1320
|
+
gives a sender's approved templates — header, body, footer, buttons and variable
|
|
1321
|
+
names; one with `unsupported_reason` cannot be used.
|
|
1322
|
+
`create_whatsapp_batch` maps `to_column` and every variable onto CSV columns. A
|
|
1323
|
+
row with a bad or repeated phone, or a blank mapped cell, is kept and skipped
|
|
1324
|
+
with the reason, so read the returned `counts`.
|
|
1325
|
+
|
|
1326
|
+
**Say these before creating one:**
|
|
1327
|
+
|
|
1328
|
+
- **Only people who opted in to hear from the business on WhatsApp** may be
|
|
1329
|
+
messaged. Cold outreach breaks WhatsApp's policy and risks their number.
|
|
1330
|
+
- **US numbers never receive marketing templates**, and Meta caps the marketing
|
|
1331
|
+
templates any one person receives.
|
|
1332
|
+
- **You cannot send it.** `send_whatsapp_batch` and `resume_whatsapp_batch` are
|
|
1333
|
+
a person's to press, on the batch page. Create the batch, point them at it.
|
|
1334
|
+
|
|
1335
|
+
Replies are answered by the agent on the sender's
|
|
1336
|
+
`whatsapp.message.inbound` trigger, which sees the row's columns as
|
|
1337
|
+
`{{userdata.<column>}}` and the whole template, buttons included, as its own
|
|
1338
|
+
first message — so write that agent's prompt against the CSV's column names.
|
|
1339
|
+
|
|
1274
1340
|
## Knowledge bases
|
|
1275
1341
|
|
|
1276
1342
|
A knowledge base gives an agent grounded answers over crawled content. Attach
|
|
1277
|
-
|
|
1343
|
+
it through the agent's `kb_ids`. A call reads only `ready` ones, so one still
|
|
1344
|
+
building can be attached now and is used once it finishes.
|
|
1278
1345
|
|
|
1279
1346
|
Building one runs in three stages and takes minutes, not seconds:
|
|
1280
1347
|
|
|
@@ -1320,8 +1387,8 @@ Published agents can be run from here, and every run leaves a record.
|
|
|
1320
1387
|
|
|
1321
1388
|
**Starting something.** `create_outbound_call` dials a real phone number from
|
|
1322
1389
|
one of the workspace's numbers and puts a published voice agent on the call.
|
|
1323
|
-
`
|
|
1324
|
-
|
|
1390
|
+
`create_chat` plus `create_chat_message` talks to a published text agent — the
|
|
1391
|
+
fastest way to try one. `calls_token` mints the token a *browser*
|
|
1325
1392
|
needs to join a web call; it starts nothing by itself.
|
|
1326
1393
|
|
|
1327
1394
|
All three take `userdata`, which seeds the session's state and is readable as
|
|
@@ -1337,8 +1404,7 @@ for facts about the person and `vars` for configuration of the session; unlike
|
|
|
1337
1404
|
can change it mid-session. An empty string is a deliberate blank, not a request
|
|
1338
1405
|
for the default. The model can see the values, so credentials stay in workspace
|
|
1339
1406
|
secrets. On a batch it is one bag for the whole campaign, copied onto every call
|
|
1340
|
-
it places — per-person data is what a recipient's `userdata` is for.
|
|
1341
|
-
conversation it is fixed for the life of the thread.
|
|
1407
|
+
it places — per-person data is what a recipient's `userdata` is for.
|
|
1342
1408
|
|
|
1343
1409
|
**Per-call configuration.** All three — and `create_call_batch` — also take four
|
|
1344
1410
|
fields that change what runs on that one call:
|
|
@@ -1371,12 +1437,14 @@ The merged result is validated by the same rules that guard publishing, so a
|
|
|
1371
1437
|
bad override is a 400 at create — naming the problem — rather than a call that
|
|
1372
1438
|
connects and then fails.
|
|
1373
1439
|
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1440
|
+
A chat is one text session, as a call is a voice one. `create_chat_message`
|
|
1441
|
+
takes a `client_message_id` (a UUID you generate) and returns the reply itself:
|
|
1442
|
+
`status`, `items` and `chat_status`. A chat **ends only explicitly** — the
|
|
1443
|
+
agent's `end_call`, or `end_chat` — and only then is it analysed and its
|
|
1444
|
+
`session.completed` sent, so end the chats you start. On Telegram and WhatsApp a
|
|
1445
|
+
person's messages join one chat until it ends; the next starts a new one.
|
|
1378
1446
|
|
|
1379
|
-
|
|
1447
|
+
A message can carry `images`: up to four `{data_url, filename}` entries beside
|
|
1380
1448
|
`message`, each a base64 `data:image/...` URL of a JPEG, PNG or WebP under 10 MB.
|
|
1381
1449
|
The caption and the photo arrive as one turn and one item, so send them together
|
|
1382
1450
|
rather than as two messages. The agent's model must have `vision` (see *Images*
|
|
@@ -1384,17 +1452,16 @@ above) or the call is refused naming the model.
|
|
|
1384
1452
|
|
|
1385
1453
|
**Reading it back.** A *conversation* is the thread with a person, on any
|
|
1386
1454
|
surface; a *call* is one voice or video session. `list_conversations` and
|
|
1387
|
-
`list_conversation_items` are the transcript; `list_conversation_sessions`
|
|
1388
|
-
|
|
1389
|
-
phone and web calls — `get_call` gives the transcript with every tool call and
|
|
1455
|
+
`list_conversation_items` are the transcript; `list_conversation_sessions` lists
|
|
1456
|
+
its calls and chats, and `get_chat` gives one chat's cost and analysis.
|
|
1457
|
+
`list_calls` and `get_call` cover phone and web calls — `get_call` gives the transcript with every tool call and
|
|
1390
1458
|
its output, plus usage, cost and a per-stage latency breakdown, which is where
|
|
1391
1459
|
you find out why an agent did something odd or answered slowly.
|
|
1392
1460
|
`get_observability` is the workspace view: sessions, spend and latency per day.
|
|
1393
1461
|
|
|
1394
1462
|
What a run costs is the provider spend on the workspace's own keys plus
|
|
1395
|
-
Talqing's
|
|
1396
|
-
|
|
1397
|
-
only what its own LLM key was charged.
|
|
1463
|
+
Talqing's platform fee, which `get_catalog` gives: per minute on voice and
|
|
1464
|
+
video, and $0.0001 per answered message on text.
|
|
1398
1465
|
|
|
1399
1466
|
When an agent misbehaves, read the actual run before theorizing. The transcript
|
|
1400
1467
|
and the final `userdata` usually name the cause.
|
package/package.json
CHANGED
package/tools.json
CHANGED
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"role": "write"
|
|
60
60
|
},
|
|
61
61
|
{
|
|
62
|
-
"description": "Delete an agent and its
|
|
62
|
+
"description": "Delete an agent and its versions permanently; 409 while anything still points at it.",
|
|
63
63
|
"method": "DELETE",
|
|
64
64
|
"name": "delete_agent",
|
|
65
65
|
"parameters": {
|
|
@@ -84,7 +84,7 @@
|
|
|
84
84
|
},
|
|
85
85
|
"path": "/v1/agents/{agent_id}/validate",
|
|
86
86
|
"read_only": false,
|
|
87
|
-
"role": "
|
|
87
|
+
"role": "read"
|
|
88
88
|
},
|
|
89
89
|
{
|
|
90
90
|
"description": "Freeze the current draft as a new immutable version and make it live.",
|
|
@@ -210,7 +210,7 @@
|
|
|
210
210
|
},
|
|
211
211
|
"path": "/v1/tools/{tool_id}/validate",
|
|
212
212
|
"read_only": false,
|
|
213
|
-
"role": "
|
|
213
|
+
"role": "read"
|
|
214
214
|
},
|
|
215
215
|
{
|
|
216
216
|
"description": "Run the draft tool once with arguments you supply and see every step.",
|
|
@@ -350,7 +350,7 @@
|
|
|
350
350
|
},
|
|
351
351
|
"path": "/v1/tasks/{task_id}/validate",
|
|
352
352
|
"read_only": false,
|
|
353
|
-
"role": "
|
|
353
|
+
"role": "read"
|
|
354
354
|
},
|
|
355
355
|
{
|
|
356
356
|
"description": "Freeze the current draft as a new immutable version and make it live.",
|
|
@@ -1151,7 +1151,7 @@
|
|
|
1151
1151
|
"role": "write"
|
|
1152
1152
|
},
|
|
1153
1153
|
{
|
|
1154
|
-
"description": "Stop a batch for good. There is no undo
|
|
1154
|
+
"description": "Stop a batch for good. There is no undo.",
|
|
1155
1155
|
"method": "POST",
|
|
1156
1156
|
"name": "cancel_call_batch",
|
|
1157
1157
|
"parameters": {
|
|
@@ -1263,7 +1263,7 @@
|
|
|
1263
1263
|
"role": "write"
|
|
1264
1264
|
},
|
|
1265
1265
|
{
|
|
1266
|
-
"description": "Stop drafting for good.
|
|
1266
|
+
"description": "Stop drafting for good.",
|
|
1267
1267
|
"method": "POST",
|
|
1268
1268
|
"name": "cancel_email_batch",
|
|
1269
1269
|
"parameters": {
|
|
@@ -1444,6 +1444,160 @@
|
|
|
1444
1444
|
"read_only": false,
|
|
1445
1445
|
"role": "write"
|
|
1446
1446
|
},
|
|
1447
|
+
{
|
|
1448
|
+
"description": "List a WhatsApp sender's approved templates, read live from its BSP.",
|
|
1449
|
+
"method": "GET",
|
|
1450
|
+
"name": "list_whatsapp_templates",
|
|
1451
|
+
"parameters": {
|
|
1452
|
+
"additionalProperties": true,
|
|
1453
|
+
"description": "Arguments not inlined: call describe_function('list_whatsapp_templates').",
|
|
1454
|
+
"properties": {},
|
|
1455
|
+
"type": "object"
|
|
1456
|
+
},
|
|
1457
|
+
"path": "/v1/whatsapp/templates",
|
|
1458
|
+
"read_only": true,
|
|
1459
|
+
"role": "read"
|
|
1460
|
+
},
|
|
1461
|
+
{
|
|
1462
|
+
"description": "Create a WhatsApp batch: one approved template, sent once per CSV row. Sends nothing yet.",
|
|
1463
|
+
"method": "POST",
|
|
1464
|
+
"name": "create_whatsapp_batch",
|
|
1465
|
+
"parameters": {
|
|
1466
|
+
"additionalProperties": true,
|
|
1467
|
+
"description": "Arguments not inlined: call describe_function('create_whatsapp_batch').",
|
|
1468
|
+
"properties": {},
|
|
1469
|
+
"type": "object"
|
|
1470
|
+
},
|
|
1471
|
+
"path": "/v1/whatsapp/batches",
|
|
1472
|
+
"read_only": false,
|
|
1473
|
+
"role": "write"
|
|
1474
|
+
},
|
|
1475
|
+
{
|
|
1476
|
+
"description": "List WhatsApp batches, newest first.",
|
|
1477
|
+
"method": "GET",
|
|
1478
|
+
"name": "list_whatsapp_batches",
|
|
1479
|
+
"parameters": {
|
|
1480
|
+
"additionalProperties": true,
|
|
1481
|
+
"description": "Arguments not inlined: call describe_function('list_whatsapp_batches').",
|
|
1482
|
+
"properties": {},
|
|
1483
|
+
"type": "object"
|
|
1484
|
+
},
|
|
1485
|
+
"path": "/v1/whatsapp/batches",
|
|
1486
|
+
"read_only": true,
|
|
1487
|
+
"role": "read"
|
|
1488
|
+
},
|
|
1489
|
+
{
|
|
1490
|
+
"description": "One batch: its template, schedule and per-status counts, `replied` included.",
|
|
1491
|
+
"method": "GET",
|
|
1492
|
+
"name": "get_whatsapp_batch",
|
|
1493
|
+
"parameters": {
|
|
1494
|
+
"additionalProperties": true,
|
|
1495
|
+
"description": "Arguments not inlined: call describe_function('get_whatsapp_batch').",
|
|
1496
|
+
"properties": {},
|
|
1497
|
+
"type": "object"
|
|
1498
|
+
},
|
|
1499
|
+
"path": "/v1/whatsapp/batches/{batch_id}",
|
|
1500
|
+
"read_only": true,
|
|
1501
|
+
"role": "read"
|
|
1502
|
+
},
|
|
1503
|
+
{
|
|
1504
|
+
"description": "Edit a batch. Pacing and the window reach a live send within minutes.",
|
|
1505
|
+
"method": "PATCH",
|
|
1506
|
+
"name": "patch_whatsapp_batch",
|
|
1507
|
+
"parameters": {
|
|
1508
|
+
"additionalProperties": true,
|
|
1509
|
+
"description": "Arguments not inlined: call describe_function('patch_whatsapp_batch').",
|
|
1510
|
+
"properties": {},
|
|
1511
|
+
"type": "object"
|
|
1512
|
+
},
|
|
1513
|
+
"path": "/v1/whatsapp/batches/{batch_id}",
|
|
1514
|
+
"read_only": false,
|
|
1515
|
+
"role": "write"
|
|
1516
|
+
},
|
|
1517
|
+
{
|
|
1518
|
+
"description": "Stop sending before the next message. Nothing is lost.",
|
|
1519
|
+
"method": "POST",
|
|
1520
|
+
"name": "pause_whatsapp_batch",
|
|
1521
|
+
"parameters": {
|
|
1522
|
+
"additionalProperties": true,
|
|
1523
|
+
"description": "Arguments not inlined: call describe_function('pause_whatsapp_batch').",
|
|
1524
|
+
"properties": {},
|
|
1525
|
+
"type": "object"
|
|
1526
|
+
},
|
|
1527
|
+
"path": "/v1/whatsapp/batches/{batch_id}/pause",
|
|
1528
|
+
"read_only": false,
|
|
1529
|
+
"role": "write"
|
|
1530
|
+
},
|
|
1531
|
+
{
|
|
1532
|
+
"description": "Stop for good. Messages already sent stay sent, and replies are still answered.",
|
|
1533
|
+
"method": "POST",
|
|
1534
|
+
"name": "cancel_whatsapp_batch",
|
|
1535
|
+
"parameters": {
|
|
1536
|
+
"additionalProperties": true,
|
|
1537
|
+
"description": "Arguments not inlined: call describe_function('cancel_whatsapp_batch').",
|
|
1538
|
+
"properties": {},
|
|
1539
|
+
"type": "object"
|
|
1540
|
+
},
|
|
1541
|
+
"path": "/v1/whatsapp/batches/{batch_id}/cancel",
|
|
1542
|
+
"read_only": false,
|
|
1543
|
+
"role": "write"
|
|
1544
|
+
},
|
|
1545
|
+
{
|
|
1546
|
+
"description": "A batch's rows in upload order, each with its rendered message.",
|
|
1547
|
+
"method": "GET",
|
|
1548
|
+
"name": "list_whatsapp_batch_recipients",
|
|
1549
|
+
"parameters": {
|
|
1550
|
+
"additionalProperties": true,
|
|
1551
|
+
"description": "Arguments not inlined: call describe_function('list_whatsapp_batch_recipients').",
|
|
1552
|
+
"properties": {},
|
|
1553
|
+
"type": "object"
|
|
1554
|
+
},
|
|
1555
|
+
"path": "/v1/whatsapp/batches/{batch_id}/recipients",
|
|
1556
|
+
"read_only": true,
|
|
1557
|
+
"role": "read"
|
|
1558
|
+
},
|
|
1559
|
+
{
|
|
1560
|
+
"description": "Edit cells on a row not yet sent, its phone included. An empty value clears the edit.",
|
|
1561
|
+
"method": "PATCH",
|
|
1562
|
+
"name": "patch_whatsapp_batch_recipient",
|
|
1563
|
+
"parameters": {
|
|
1564
|
+
"additionalProperties": true,
|
|
1565
|
+
"description": "Arguments not inlined: call describe_function('patch_whatsapp_batch_recipient').",
|
|
1566
|
+
"properties": {},
|
|
1567
|
+
"type": "object"
|
|
1568
|
+
},
|
|
1569
|
+
"path": "/v1/whatsapp/batches/{batch_id}/recipients/{recipient_id}",
|
|
1570
|
+
"read_only": false,
|
|
1571
|
+
"role": "write"
|
|
1572
|
+
},
|
|
1573
|
+
{
|
|
1574
|
+
"description": "Take ready rows out of the send. Reversible with restore.",
|
|
1575
|
+
"method": "POST",
|
|
1576
|
+
"name": "skip_whatsapp_batch_recipients",
|
|
1577
|
+
"parameters": {
|
|
1578
|
+
"additionalProperties": true,
|
|
1579
|
+
"description": "Arguments not inlined: call describe_function('skip_whatsapp_batch_recipients').",
|
|
1580
|
+
"properties": {},
|
|
1581
|
+
"type": "object"
|
|
1582
|
+
},
|
|
1583
|
+
"path": "/v1/whatsapp/batches/{batch_id}/recipients/skip",
|
|
1584
|
+
"read_only": false,
|
|
1585
|
+
"role": "write"
|
|
1586
|
+
},
|
|
1587
|
+
{
|
|
1588
|
+
"description": "Put rows a person skipped back. A row skipped for its cells returns when they are fixed.",
|
|
1589
|
+
"method": "POST",
|
|
1590
|
+
"name": "restore_whatsapp_batch_recipients",
|
|
1591
|
+
"parameters": {
|
|
1592
|
+
"additionalProperties": true,
|
|
1593
|
+
"description": "Arguments not inlined: call describe_function('restore_whatsapp_batch_recipients').",
|
|
1594
|
+
"properties": {},
|
|
1595
|
+
"type": "object"
|
|
1596
|
+
},
|
|
1597
|
+
"path": "/v1/whatsapp/batches/{batch_id}/recipients/restore",
|
|
1598
|
+
"read_only": false,
|
|
1599
|
+
"role": "write"
|
|
1600
|
+
},
|
|
1447
1601
|
{
|
|
1448
1602
|
"description": "Mint a LiveKit token for a browser to open a web call with an agent.",
|
|
1449
1603
|
"method": "POST",
|
|
@@ -1459,30 +1613,128 @@
|
|
|
1459
1613
|
"role": "write"
|
|
1460
1614
|
},
|
|
1461
1615
|
{
|
|
1462
|
-
"description": "
|
|
1616
|
+
"description": "Start a chat with a text agent. Send it messages with `create_chat_message`.",
|
|
1463
1617
|
"method": "POST",
|
|
1464
|
-
"name": "
|
|
1618
|
+
"name": "create_chat",
|
|
1465
1619
|
"parameters": {
|
|
1466
1620
|
"additionalProperties": true,
|
|
1467
|
-
"description": "Arguments not inlined: call describe_function('
|
|
1621
|
+
"description": "Arguments not inlined: call describe_function('create_chat').",
|
|
1468
1622
|
"properties": {},
|
|
1469
1623
|
"type": "object"
|
|
1470
1624
|
},
|
|
1471
|
-
"path": "/v1/
|
|
1625
|
+
"path": "/v1/chats",
|
|
1626
|
+
"read_only": false,
|
|
1627
|
+
"role": "write"
|
|
1628
|
+
},
|
|
1629
|
+
{
|
|
1630
|
+
"description": "List chats, newest first.",
|
|
1631
|
+
"method": "GET",
|
|
1632
|
+
"name": "list_chats",
|
|
1633
|
+
"parameters": {
|
|
1634
|
+
"additionalProperties": true,
|
|
1635
|
+
"description": "Arguments not inlined: call describe_function('list_chats').",
|
|
1636
|
+
"properties": {},
|
|
1637
|
+
"type": "object"
|
|
1638
|
+
},
|
|
1639
|
+
"path": "/v1/chats",
|
|
1640
|
+
"read_only": true,
|
|
1641
|
+
"role": "read"
|
|
1642
|
+
},
|
|
1643
|
+
{
|
|
1644
|
+
"description": "Read one chat: its status, cost so far and, once ended, its analysis.",
|
|
1645
|
+
"method": "GET",
|
|
1646
|
+
"name": "get_chat",
|
|
1647
|
+
"parameters": {
|
|
1648
|
+
"additionalProperties": true,
|
|
1649
|
+
"description": "Arguments not inlined: call describe_function('get_chat').",
|
|
1650
|
+
"properties": {},
|
|
1651
|
+
"type": "object"
|
|
1652
|
+
},
|
|
1653
|
+
"path": "/v1/chats/{chat_id}",
|
|
1654
|
+
"read_only": true,
|
|
1655
|
+
"role": "read"
|
|
1656
|
+
},
|
|
1657
|
+
{
|
|
1658
|
+
"description": "One chat with its health snapshot, cost lines, vars and event trace.",
|
|
1659
|
+
"method": "GET",
|
|
1660
|
+
"name": "get_chat_detail",
|
|
1661
|
+
"parameters": {
|
|
1662
|
+
"additionalProperties": true,
|
|
1663
|
+
"description": "Arguments not inlined: call describe_function('get_chat_detail').",
|
|
1664
|
+
"properties": {},
|
|
1665
|
+
"type": "object"
|
|
1666
|
+
},
|
|
1667
|
+
"path": "/v1/chats/{chat_id}/detail",
|
|
1668
|
+
"read_only": true,
|
|
1669
|
+
"role": "read"
|
|
1670
|
+
},
|
|
1671
|
+
{
|
|
1672
|
+
"description": "Analyse an ended chat again with its agent's saved definition.",
|
|
1673
|
+
"method": "POST",
|
|
1674
|
+
"name": "rerun_chat_analysis",
|
|
1675
|
+
"parameters": {
|
|
1676
|
+
"additionalProperties": true,
|
|
1677
|
+
"description": "Arguments not inlined: call describe_function('rerun_chat_analysis').",
|
|
1678
|
+
"properties": {},
|
|
1679
|
+
"type": "object"
|
|
1680
|
+
},
|
|
1681
|
+
"path": "/v1/chats/{chat_id}/analysis",
|
|
1682
|
+
"read_only": false,
|
|
1683
|
+
"role": "write"
|
|
1684
|
+
},
|
|
1685
|
+
{
|
|
1686
|
+
"description": "Try an analysis definition against an ended chat. Nothing is saved; costs one model call.",
|
|
1687
|
+
"method": "POST",
|
|
1688
|
+
"name": "preview_chat_analysis",
|
|
1689
|
+
"parameters": {
|
|
1690
|
+
"additionalProperties": true,
|
|
1691
|
+
"description": "Arguments not inlined: call describe_function('preview_chat_analysis').",
|
|
1692
|
+
"properties": {},
|
|
1693
|
+
"type": "object"
|
|
1694
|
+
},
|
|
1695
|
+
"path": "/v1/chats/{chat_id}/analysis/preview",
|
|
1696
|
+
"read_only": false,
|
|
1697
|
+
"role": "write"
|
|
1698
|
+
},
|
|
1699
|
+
{
|
|
1700
|
+
"description": "The messages, tool calls and handoffs of one chat.",
|
|
1701
|
+
"method": "GET",
|
|
1702
|
+
"name": "list_chat_items",
|
|
1703
|
+
"parameters": {
|
|
1704
|
+
"additionalProperties": true,
|
|
1705
|
+
"description": "Arguments not inlined: call describe_function('list_chat_items').",
|
|
1706
|
+
"properties": {},
|
|
1707
|
+
"type": "object"
|
|
1708
|
+
},
|
|
1709
|
+
"path": "/v1/chats/{chat_id}/items",
|
|
1710
|
+
"read_only": true,
|
|
1711
|
+
"role": "read"
|
|
1712
|
+
},
|
|
1713
|
+
{
|
|
1714
|
+
"description": "Send a message and get the agent's reply back on this request.",
|
|
1715
|
+
"method": "POST",
|
|
1716
|
+
"name": "create_chat_message",
|
|
1717
|
+
"parameters": {
|
|
1718
|
+
"additionalProperties": true,
|
|
1719
|
+
"description": "Arguments not inlined: call describe_function('create_chat_message').",
|
|
1720
|
+
"properties": {},
|
|
1721
|
+
"type": "object"
|
|
1722
|
+
},
|
|
1723
|
+
"path": "/v1/chats/{chat_id}/messages",
|
|
1472
1724
|
"read_only": false,
|
|
1473
1725
|
"role": "write"
|
|
1474
1726
|
},
|
|
1475
1727
|
{
|
|
1476
|
-
"description": "
|
|
1728
|
+
"description": "End a chat. Its analysis and `session.completed` webhook follow.",
|
|
1477
1729
|
"method": "POST",
|
|
1478
|
-
"name": "
|
|
1730
|
+
"name": "end_chat",
|
|
1479
1731
|
"parameters": {
|
|
1480
1732
|
"additionalProperties": true,
|
|
1481
|
-
"description": "Arguments not inlined: call describe_function('
|
|
1733
|
+
"description": "Arguments not inlined: call describe_function('end_chat').",
|
|
1482
1734
|
"properties": {},
|
|
1483
1735
|
"type": "object"
|
|
1484
1736
|
},
|
|
1485
|
-
"path": "/v1/
|
|
1737
|
+
"path": "/v1/chats/{chat_id}/end",
|
|
1486
1738
|
"read_only": false,
|
|
1487
1739
|
"role": "write"
|
|
1488
1740
|
},
|
|
@@ -1683,7 +1935,7 @@
|
|
|
1683
1935
|
"role": "admin"
|
|
1684
1936
|
},
|
|
1685
1937
|
{
|
|
1686
|
-
"description": "Delete a secret permanently.
|
|
1938
|
+
"description": "Delete a secret permanently. Refused with 409 while a tool, integration or carrier account references it. Organization admins only.",
|
|
1687
1939
|
"method": "DELETE",
|
|
1688
1940
|
"name": "delete_secret",
|
|
1689
1941
|
"parameters": {
|