@talqing/mcp 0.1.0 → 0.3.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/README.md CHANGED
@@ -9,13 +9,13 @@ the CoPilot can build, your coding agent can build.
9
9
 
10
10
  ## What you get
11
11
 
12
- One operation for everything the Talqing dashboard can do. Agents, tools and
13
- their operation trees, integrations and triggers, knowledge bases from crawl to
14
- ready, carrier accounts and phone numbers, secrets, provider keys, webhooks and
15
- tokens; then placing outbound calls, talking to text agents, and reading back
16
- transcripts, cost and latency. Each one maps to a Talqing API endpoint, and its
17
- arguments mirror that HTTP call: path and query parameters at the top level,
18
- request body under `body`.
12
+ One operation for everything a workspace is built out of. Agents and agent
13
+ tasks, tools and their operation trees, integrations and triggers, knowledge
14
+ bases from crawl to ready, carrier accounts and phone numbers, secrets, provider
15
+ keys and webhooks; then placing outbound calls, running call and email batches,
16
+ talking to text agents, and reading back transcripts, cost and latency. Each one
17
+ maps to a Talqing API endpoint, and its arguments mirror that HTTP call: path and
18
+ query parameters at the top level, request body under `body`.
19
19
 
20
20
  A few request types are large enough that carrying them in every tool that
21
21
  accepts one would cost more context than the whole rest of the server — an
@@ -34,11 +34,19 @@ ready-to-paste command for each client — the snippets below are what it shows.
34
34
  The token authenticates as you, acts with your current role, and reaches only
35
35
  your workspace.
36
36
 
37
+ **`TALQING_BASE_URL` names a region** — `https://api.in.talqing.com`,
38
+ `https://api.us.talqing.com` — and everything this server can reach belongs to
39
+ that one: an agent, its calls, its phone numbers and its credit balance are all
40
+ the region's. One token reaches every region — it names your workspace, not a
41
+ place — so working in another region is the same token and a different base URL.
42
+ The dashboard's snippet always carries the region you are currently looking at;
43
+ switch region there and copy it again.
44
+
37
45
  **Claude Code**
38
46
 
39
47
  ```bash
40
48
  claude mcp add talqing \
41
- -e TALQING_BASE_URL=https://api.your-talqing-host.com \
49
+ -e TALQING_BASE_URL=https://api.in.talqing.com \
42
50
  -e TALQING_API_KEY=tq_your_token \
43
51
  -- npx -y @talqing/mcp
44
52
  ```
@@ -47,7 +55,7 @@ claude mcp add talqing \
47
55
 
48
56
  ```bash
49
57
  codex mcp add talqing \
50
- --env TALQING_BASE_URL=https://api.your-talqing-host.com \
58
+ --env TALQING_BASE_URL=https://api.in.talqing.com \
51
59
  --env TALQING_API_KEY=tq_your_token \
52
60
  -- npx -y @talqing/mcp
53
61
  ```
@@ -59,7 +67,7 @@ codex mcp add talqing \
59
67
  [mcp_servers.talqing]
60
68
  command = "npx"
61
69
  args = ["-y", "@talqing/mcp"]
62
- env = { TALQING_BASE_URL = "https://api.your-talqing-host.com", TALQING_API_KEY = "tq_your_token" }
70
+ env = { TALQING_BASE_URL = "https://api.in.talqing.com", TALQING_API_KEY = "tq_your_token" }
63
71
  ```
64
72
 
65
73
  **Any other MCP client** — a stdio server, configured the usual way:
@@ -71,7 +79,7 @@ env = { TALQING_BASE_URL = "https://api.your-talqing-host.com", TALQING_API_KEY
71
79
  "command": "npx",
72
80
  "args": ["-y", "@talqing/mcp"],
73
81
  "env": {
74
- "TALQING_BASE_URL": "https://api.your-talqing-host.com",
82
+ "TALQING_BASE_URL": "https://api.in.talqing.com",
75
83
  "TALQING_API_KEY": "tq_your_token"
76
84
  }
77
85
  }
@@ -91,9 +99,20 @@ the rest, exactly as they would through the dashboard.
91
99
  Operations are annotated so clients can tell reads from writes — `readOnlyHint`
92
100
  on every GET, `destructiveHint` on every delete.
93
101
 
94
- Two things are deliberately out of reach: streaming endpoints — their polling
95
- equivalents are here, so nothing is unreachable — and user management, which
96
- stays in the dashboard where a human is in the loop.
102
+ Four things are deliberately out of reach:
103
+
104
+ - **Sign-in, organizations, members and roles, and personal access tokens.**
105
+ Those live on a separate control API that this server holds no URL for, so an
106
+ AI builder cannot mint itself a credential, and who is in the workspace stays
107
+ where a human is in the loop.
108
+ - **Buying credits.** Reading the balance would be harmless; starting a payment
109
+ spends the workspace's money, and neither belongs on a coding agent's surface.
110
+ - **Streaming endpoints**, which are not tool-shaped. Every one has a polling
111
+ equivalent here — `list_conversation_items` for a conversation, `get_kb` for a
112
+ knowledge build — so nothing is unreachable.
113
+ - **Deleting a call or its recording.** Every other `delete_*` removes
114
+ configuration you could write again; this one destroys the record of something
115
+ that happened, and can take a contact's memory of past calls with it.
97
116
 
98
117
  Some operations act on the real world. `create_outbound_call` rings a phone and
99
118
  costs money, and a message to a connected channel is one somebody receives.
@@ -116,7 +135,7 @@ cd mcp && npm install && npm run build
116
135
  "command": "node",
117
136
  "args": ["/absolute/path/to/talqing/mcp/dist/index.js"],
118
137
  "env": {
119
- "TALQING_BASE_URL": "https://api.your-talqing-host.com",
138
+ "TALQING_BASE_URL": "https://api.in.talqing.com",
120
139
  "TALQING_API_KEY": "tq_your_token"
121
140
  }
122
141
  }
@@ -135,8 +154,8 @@ cannot drift from the product:
135
154
  PYTHONPATH=backend python openapi/export.py
136
155
  ```
137
156
 
138
- `tools.json` comes from `backend/api/operations.py`, the same registry the
139
- CoPilot binds its tools from; `SKILL.md` comes from
157
+ `tools.json` comes from `backend/api/dataplane/operations.py`, the same registry
158
+ the CoPilot binds its tools from; `SKILL.md` comes from
140
159
  `backend/services/copilot/skill.md`, the same text the CoPilot is prompted with.
141
160
  Edit those, re-run the export, and both surfaces move together.
142
161
 
package/SKILL.md CHANGED
@@ -27,6 +27,12 @@ request body under `body`. Every operation acts as the signed-in user, inside
27
27
  their workspace only, with their role's permissions. Managing who is in the
28
28
  workspace is the one thing that stays in the dashboard.
29
29
 
30
+ **Everything here belongs to one region.** A workspace exists in every region and
31
+ its resources do not: an agent, its calls, its phone numbers and its credit
32
+ balance all live in the region whose API you are pointed at. One token reaches
33
+ every region — it names the workspace, not a place — so working in another one is
34
+ the same token and a different base URL.
35
+
30
36
  ## What an agent is
31
37
 
32
38
  An agent is a single object, `config`, plus what you attach to it:
@@ -35,7 +41,8 @@ An agent is a single object, `config`, plus what you attach to it:
35
41
  - **`channel`** — `voice` (phone/web call), `video` (a voice agent wearing an
36
42
  Anam avatar) or `text` (chat). The channel decides which model slots exist.
37
43
  - **`prompt`** — the system prompt. This is where the agent's behaviour lives.
38
- - **`greeting`** — the line spoken on connect. Voice and video only.
44
+ - **`greeting`** — the line spoken on connect, and on the way in from a
45
+ handoff. Voice and video only.
39
46
 
40
47
  Both are personalized per session: `{{userdata.field}}` is substituted from
41
48
  the session's userdata when the agent starts, so *"You are speaking with
@@ -152,8 +159,8 @@ An agent is a single object, `config`, plus what you attach to it:
152
159
  `{"integration_id": "..."}` naming an active, MCP-capable integration. Which
153
160
  of a server's tools may be called is the integration's own `allowed_tools`,
154
161
  not this list. As with `tools`, an entry may instead carry `{"mcp": {name,
155
- url, headers, allowed_tools}}`, which is created as a `custom_mcp` integration
156
- and replaced by its id.
162
+ url, headers, allowed_tools, tools_namespace}}`, which is created as a
163
+ `custom_mcp` integration and replaced by its id.
157
164
  - **`handoffs`** — where this agent may pass the conversation next, each
158
165
  `{"name": "Billing", "agent_id": "...", "description": "...", "context":
159
166
  "transcript" | "summary" | "none", "recent_turns": 2, "summary_prompt": "...",
@@ -617,7 +624,11 @@ instead.
617
624
  `export default async function handler(input)`, where `input` is
618
625
  `{args, tooldata, userdata, system_vars, vars, secrets}`, and return an object.
619
626
  The sandbox has `console` and a guarded `fetch` for public http(s) URLs — no
620
- Node APIs, no imports.
627
+ Node APIs, no imports. **That `fetch` is not how you call an API.** A plain
628
+ request/response call is an `http` operation: it costs no isolate, and the
629
+ person who owns this tool can read and edit it in the editor rather than
630
+ reading your TypeScript. Reach for `fetch` only for what `http` cannot say —
631
+ a second call that depends on the first, or a non-JSON response.
621
632
 
622
633
  That input object is the whole interface: a code operation has **no template
623
634
  syntax**. Write `input.system_vars.now`, never `{{system_vars.now}}` — braces
@@ -770,9 +781,10 @@ before hanging up — logging the outcome, posting a lead — goes **before** th
770
781
 
771
782
  Each hook points at a **published tool id**, or null.
772
783
 
773
- - **`on_enter`** — a session opens. On voice and video it runs alongside the
774
- greeting on first entry; on text, when the conversation window opens. Handoffs
775
- skip the greeting.
784
+ - **`on_enter`** — a session opens. It finishes *before* the greeting, which
785
+ waits for it and reads whatever it published to userdata; on text, when the
786
+ conversation window opens. A handoff target runs it and then speaks its own
787
+ greeting — or, having none, opens with a generated line instead.
776
788
  - **`on_exit`** — the session closes: call end or handoff on voice and video;
777
789
  on text, `end_call`, a closed window, or about a minute idle.
778
790
  - **`on_user_turn_completed`** — after every user turn, before the LLM replies.
@@ -915,6 +927,14 @@ every turn, and a voice agent picking from ninety of them is slower and less
915
927
  accurate than one picking from six. Unlike the attachment, that approval is
916
928
  live: narrowing it reaches every already-published agent on its next turn.
917
929
 
930
+ The model does not see a server's tool names raw. Each is prefixed with the
931
+ integration's `tools_namespace` — `<namespace>_<tool>`, defaulting to the
932
+ provider key for a hosted provider and to nothing for a custom server. Read it
933
+ back off the integration, or read `exposed_name` from
934
+ `list_integration_mcp_tools`, and **write prompts against the exposed name**;
935
+ `allowed_tools` still approves the server's own names. Two attached servers
936
+ sharing a namespace fails publish.
937
+
918
938
  **Channel integrations** (Telegram) deploy an agent to a messaging
919
939
  channel through *triggers*, not MCP attachment. A trigger binds an inbound event
920
940
  to a published text agent and decides what happens with the reply.
@@ -1018,8 +1038,9 @@ afterwards will not forgive us:
1018
1038
  - **Every row runs the task as it stands right now.** Editing it while a batch
1019
1039
  is drafting changes every row generated after that moment, and there is no way
1020
1040
  to get the old wording back.
1021
- - **Bounces and spam complaints are only visible if they point a Resend webhook
1022
- at this workspace.** The URL is on the integration's page.
1041
+ - **Talqing reports what it sent, not what landed.** Deliveries, bounces and
1042
+ spam complaints live in the Resend dashboard, and watching them there is how a
1043
+ sending domain survives.
1023
1044
 
1024
1045
  ### The column space
1025
1046
 
@@ -1091,9 +1112,6 @@ or on the first `configuration` failure (a deleted task, a field map an edit
1091
1112
  broke) or the first account-level send failure (a revoked key, an unverified
1092
1113
  domain) — because those will fail identically for every remaining row.
1093
1114
 
1094
- `delivery_status` on a row is Resend's verdict, separate from ours: `sent` is
1095
- what we did, `delivered` / `bounced` / `complained` is what happened next.
1096
-
1097
1115
  ## Knowledge bases
1098
1116
 
1099
1117
  A knowledge base gives an agent grounded answers over crawled content. Attach
@@ -1244,11 +1262,17 @@ and the final `userdata` usually name the cause.
1244
1262
  against rules you cannot check by reading a draft, so **never report a
1245
1263
  validation result you did not get back from the operation**, and never answer
1246
1264
  a request to validate by reasoning about the config instead of calling it.
1265
+ - **Fetch the shape before you call.** Your tools carry a name and a description
1266
+ but not their arguments: `describe_function('name')` returns the argument
1267
+ schema, and you call it before the first time you use a function. Ask for
1268
+ everything a step needs in one go — these can be called side by side — and
1269
+ once you have a shape it stays good for the rest of the conversation. Two
1270
+ functions carry their own shape because they would otherwise be uncallable:
1271
+ `describe_function` itself, and `describe_schema`.
1247
1272
  - **Do not invent fields.** Author tools and configs through the exact schemas
1248
- the operations declare. A field the schema does not have is rejected. An
1249
- argument whose description ends in `describe_schema('X')` carries a
1250
- placeholder instead of its shape — fetch it before writing one, never
1251
- reconstruct it from memory.
1273
+ you fetched. A field the schema does not have is rejected, and an argument
1274
+ whose description ends in `describe_schema('X')` carries a placeholder instead
1275
+ of its type — fetch that too, never reconstruct it from memory.
1252
1276
  - **Say what the platform does not do.** Decline capabilities that do not exist
1253
1277
  yet rather than approximating them.
1254
1278
 
package/dist/index.d.ts CHANGED
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Talqing MCP server.
4
4
  *
5
- * Serves the platform's agent-building operations to any MCP client and
5
+ * Serves the platform's agent-building functions to any MCP client and
6
6
  * executes each call against the Talqing API with a personal access token. The
7
7
  * tool list is `tools.json` and the instructions are `SKILL.md` — both generated
8
8
  * from the same source as our own CoPilot's tools and prompt, so an agent
package/dist/index.js CHANGED
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * Talqing MCP server.
4
4
  *
5
- * Serves the platform's agent-building operations to any MCP client and
5
+ * Serves the platform's agent-building functions to any MCP client and
6
6
  * executes each call against the Talqing API with a personal access token. The
7
7
  * tool list is `tools.json` and the instructions are `SKILL.md` — both generated
8
8
  * from the same source as our own CoPilot's tools and prompt, so an agent
@@ -28,25 +28,29 @@ function required(name, hint) {
28
28
  throw new Error(`${name} is not set — ${hint}`);
29
29
  return value;
30
30
  }
31
- const BASE_URL = required("TALQING_BASE_URL", "set it to your Talqing API URL, e.g. https://api.your-talqing-host.com").replace(/\/+$/, "");
32
- const API_KEY = required("TALQING_API_KEY", "create a personal access token in the dashboard under Settings → Tokens");
33
- const { tools: operations } = JSON.parse(readPackageFile("tools.json"));
34
- const byName = new Map(operations.map((operation) => [operation.name, operation]));
31
+ const BASE_URL = required("TALQING_BASE_URL", "set it to your region's Talqing API URL, e.g. https://api.in.talqing.com").replace(/\/+$/, "");
32
+ const API_KEY = required("TALQING_API_KEY", "create a personal access token in the dashboard under OrganizationAPI Tokens");
33
+ const { tools: functions } = JSON.parse(readPackageFile("tools.json"));
34
+ const byName = new Map(functions.map((fn) => [fn.name, fn]));
35
+ /* Read, not restated. A client shows this version when it reports the server it
36
+ connected to, and a second copy of the number is one `npm version` away from
37
+ being wrong. */
38
+ const { version: VERSION } = JSON.parse(readPackageFile("package.json"));
35
39
  /** The skill, minus its frontmatter — handed to the client as server instructions. */
36
40
  function instructions() {
37
41
  const markdown = readPackageFile("SKILL.md");
38
42
  const end = markdown.indexOf("\n---", 3);
39
43
  return (markdown.startsWith("---") && end !== -1 ? markdown.slice(end + 4) : markdown).trim();
40
44
  }
41
- function describe(operation) {
45
+ function describe(fn) {
42
46
  return {
43
- name: operation.name,
44
- description: `${operation.method} ${operation.path}\n\n${operation.description}`,
45
- inputSchema: operation.parameters,
47
+ name: fn.name,
48
+ description: `${fn.method} ${fn.path}\n\n${fn.description}`,
49
+ inputSchema: fn.parameters,
46
50
  annotations: {
47
- readOnlyHint: operation.read_only,
48
- destructiveHint: operation.method === "DELETE",
49
- idempotentHint: ["GET", "PUT", "DELETE"].includes(operation.method),
51
+ readOnlyHint: fn.read_only,
52
+ destructiveHint: fn.method === "DELETE",
53
+ idempotentHint: ["GET", "PUT", "DELETE"].includes(fn.method),
50
54
  openWorldHint: false,
51
55
  },
52
56
  };
@@ -56,9 +60,9 @@ function describe(operation) {
56
60
  * placeholders in the path are path parameters, `body` is the JSON body, and
57
61
  * everything else left over is a query parameter.
58
62
  */
59
- function requestFor(operation, args) {
63
+ function requestFor(fn, args) {
60
64
  const remaining = { ...args };
61
- const path = operation.path.replace(/\{([^}]+)\}/g, (_match, name) => {
65
+ const path = fn.path.replace(/\{([^}]+)\}/g, (_match, name) => {
62
66
  const value = remaining[name];
63
67
  if (value === undefined || value === null)
64
68
  throw new Error(`${name} is required`);
@@ -76,7 +80,7 @@ function requestFor(operation, args) {
76
80
  if (body !== undefined)
77
81
  headers["content-type"] = "application/json";
78
82
  return new Request(url, {
79
- method: operation.method,
83
+ method: fn.method,
80
84
  headers,
81
85
  body: body === undefined ? undefined : JSON.stringify(body),
82
86
  });
@@ -88,12 +92,12 @@ function failure(message, errors = []) {
88
92
  };
89
93
  }
90
94
  async function call(name, args) {
91
- const operation = byName.get(name);
92
- if (!operation)
93
- return failure(`unknown operation: ${name}`);
95
+ const fn = byName.get(name);
96
+ if (!fn)
97
+ return failure(`unknown function: ${name}`);
94
98
  let response;
95
99
  try {
96
- response = await fetch(requestFor(operation, args));
100
+ response = await fetch(requestFor(fn, args));
97
101
  }
98
102
  catch (error) {
99
103
  // A bad argument (missing path parameter) and an unreachable API both land
@@ -103,14 +107,14 @@ async function call(name, args) {
103
107
  const text = await response.text();
104
108
  if (!response.ok) {
105
109
  // Errors already carry {detail: {message, errors}} — pass them through so
106
- // one error shape reaches the model whichever operation failed.
110
+ // one error shape reaches the model whichever function failed.
107
111
  return { content: [{ type: "text", text: text || response.statusText }], isError: true };
108
112
  }
109
113
  return { content: [{ type: "text", text: text || "{}" }] };
110
114
  }
111
- const server = new Server({ name: "talqing", version: "0.1.0" }, { capabilities: { tools: {} }, instructions: instructions() });
115
+ const server = new Server({ name: "talqing", version: VERSION }, { capabilities: { tools: {} }, instructions: instructions() });
112
116
  server.setRequestHandler(ListToolsRequestSchema, async () => ({
113
- tools: operations.map(describe),
117
+ tools: functions.map(describe),
114
118
  }));
115
119
  server.setRequestHandler(CallToolRequestSchema, async (request) => call(request.params.name, (request.params.arguments ?? {})));
116
120
  await server.connect(new StdioServerTransport());
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@talqing/mcp",
3
- "version": "0.1.0",
3
+ "version": "0.3.0",
4
4
  "description": "MCP server for building Talqing AI voice, video and text agents from Claude Code, Codex, or any MCP client.",
5
5
  "license": "MIT",
6
6
  "homepage": "https://talqing.com",