tavus-cli 0.3.0__tar.gz → 0.3.2__tar.gz

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.
Files changed (78) hide show
  1. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/.github/workflows/deploy-cloudflare-worker.yml +21 -18
  2. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/PKG-INFO +24 -11
  3. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/README.md +23 -10
  4. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/docs/gemini-enterprise/README.md +10 -7
  5. tavus_cli-0.3.2/docs/usage-observability.md +65 -0
  6. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/pyproject.toml +1 -1
  7. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/src/tavus_mcp/__init__.py +1 -1
  8. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/src/tavus_mcp/cli/main.py +78 -78
  9. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/src/tavus_mcp/sdk/client/http.py +39 -3
  10. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/src/tavus_mcp/server.py +182 -83
  11. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/tests/integration/test_client.py +13 -1
  12. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/tests/integration/test_mcp_server.py +24 -1
  13. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/uv.lock +1 -1
  14. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/workers/tavus-mcp/src/tavus.ts +146 -4
  15. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/workers/tavus-mcp/test/tavus.test.ts +55 -0
  16. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/workers/tavus-mcp/wrangler.jsonc +6 -4
  17. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/.env.example +0 -0
  18. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/.github/workflows/ci.yml +0 -0
  19. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/.github/workflows/pr-reviews.yml +0 -0
  20. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/.github/workflows/pypi-cli.yml +0 -0
  21. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/.gitignore +0 -0
  22. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/docs/gemini-enterprise/listing.md +0 -0
  23. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/docs/gemini-enterprise/test-queries.md +0 -0
  24. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/skills/tavus-agentic-pals/SKILL.md +0 -0
  25. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/skills/tavus-agentic-pals/agents/openai.yaml +0 -0
  26. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/skills/tavus-agentic-pals/references/build-and-verify.md +0 -0
  27. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/skills/tavus-agentic-pals/references/builder-workflow.md +0 -0
  28. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/skills/tavus-agentic-pals/references/chat-mode.md +0 -0
  29. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/skills/tavus-agentic-pals/references/examples.md +0 -0
  30. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/src/tavus_mcp/cli/__init__.py +0 -0
  31. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/src/tavus_mcp/sdk/__init__.py +0 -0
  32. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/src/tavus_mcp/sdk/auth/__init__.py +0 -0
  33. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/src/tavus_mcp/sdk/auth/keyring_store.py +0 -0
  34. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/src/tavus_mcp/sdk/auth/oauth.py +0 -0
  35. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/src/tavus_mcp/sdk/auth/session.py +0 -0
  36. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/src/tavus_mcp/sdk/client/__init__.py +0 -0
  37. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/src/tavus_mcp/sdk/env.py +0 -0
  38. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/src/tavus_mcp/sdk/errors.py +0 -0
  39. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/src/tavus_mcp/sdk/patch.py +0 -0
  40. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/src/tavus_mcp/sdk/recipes/__init__.py +0 -0
  41. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/src/tavus_mcp/sdk/recipes/build_and_verify.py +0 -0
  42. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/src/tavus_mcp/sdk/recipes/capabilities.py +0 -0
  43. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/src/tavus_mcp/sdk/recipes/knowledge.py +0 -0
  44. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/src/tavus_mcp/sdk/recipes/options.py +0 -0
  45. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/src/tavus_mcp/sdk/recipes/quickstart.py +0 -0
  46. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/src/tavus_mcp/sdk/recipes/scaffold_embed.py +0 -0
  47. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/src/tavus_mcp/sdk/recipes/templates.py +0 -0
  48. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/src/tavus_mcp/sdk/recipes/tool_reuse.py +0 -0
  49. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/src/tavus_mcp/sdk/schemas/__init__.py +0 -0
  50. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/src/tavus_mcp/sdk/schemas/file_manifest.py +0 -0
  51. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/src/tavus_mcp/sdk/schemas/guardrail.py +0 -0
  52. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/src/tavus_mcp/sdk/schemas/objective.py +0 -0
  53. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/src/tavus_mcp/sdk/schemas/pal.py +0 -0
  54. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/src/tavus_mcp/sdk/schemas/pronunciation.py +0 -0
  55. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/src/tavus_mcp/sdk/schemas/tool.py +0 -0
  56. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/tests/conftest.py +0 -0
  57. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/tests/integration/test_cli.py +0 -0
  58. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/tests/integration/test_oauth.py +0 -0
  59. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/tests/unit/test_auth.py +0 -0
  60. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/tests/unit/test_build_and_verify.py +0 -0
  61. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/tests/unit/test_builder.py +0 -0
  62. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/tests/unit/test_capabilities.py +0 -0
  63. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/tests/unit/test_conversation_chat.py +0 -0
  64. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/tests/unit/test_env.py +0 -0
  65. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/tests/unit/test_guardrail_schema.py +0 -0
  66. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/tests/unit/test_objective_schema.py +0 -0
  67. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/tests/unit/test_pal_schema.py +0 -0
  68. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/tests/unit/test_patch.py +0 -0
  69. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/tests/unit/test_pronunciation_schema.py +0 -0
  70. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/tests/unit/test_scaffold_embed.py +0 -0
  71. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/tests/unit/test_tool_reuse.py +0 -0
  72. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/tests/unit/test_tool_schema.py +0 -0
  73. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/workers/tavus-mcp/.dev.vars.example +0 -0
  74. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/workers/tavus-mcp/package-lock.json +0 -0
  75. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/workers/tavus-mcp/package.json +0 -0
  76. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/workers/tavus-mcp/src/index.ts +0 -0
  77. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/workers/tavus-mcp/src/oauth.ts +0 -0
  78. {tavus_cli-0.3.0 → tavus_cli-0.3.2}/workers/tavus-mcp/tsconfig.json +0 -0
@@ -12,20 +12,26 @@ on:
12
12
  - test
13
13
  - stg
14
14
  - prod
15
+ push:
16
+ branches:
17
+ - main
15
18
 
16
19
  permissions:
17
20
  contents: read
18
21
 
22
+ concurrency:
23
+ group: deploy-tavus-mcp-worker-${{ github.event_name == 'workflow_dispatch' && inputs.environment || 'prod' }}
24
+ cancel-in-progress: true
25
+
19
26
  jobs:
20
27
  deploy:
21
28
  runs-on: ubuntu-latest
22
- environment: ${{ inputs.environment }}
29
+ # Manual dispatch picks the requested environment; merges to main deploy prod.
30
+ environment: ${{ github.event_name == 'workflow_dispatch' && inputs.environment || 'prod' }}
23
31
  env:
24
32
  CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}
25
33
  CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
26
- CLOUDFLARE_ENV: ${{ inputs.environment }}
27
- TAVUS_API_KEY: ${{ secrets.TAVUS_API_KEY }}
28
- MCP_BEARER_TOKEN: ${{ secrets.MCP_BEARER_TOKEN }}
34
+ CLOUDFLARE_ENV: ${{ github.event_name == 'workflow_dispatch' && inputs.environment || 'prod' }}
29
35
  defaults:
30
36
  run:
31
37
  working-directory: workers/tavus-mcp
@@ -41,6 +47,17 @@ jobs:
41
47
  cache: npm
42
48
  cache-dependency-path: workers/tavus-mcp/package-lock.json
43
49
 
50
+ - name: Validate deployment secrets
51
+ run: |
52
+ if [ -z "${CLOUDFLARE_API_TOKEN:-}" ]; then
53
+ echo "::error::Missing CLOUDFLARE_API_TOKEN GitHub secret for environment '$CLOUDFLARE_ENV'."
54
+ exit 1
55
+ fi
56
+ if [ -z "${CLOUDFLARE_ACCOUNT_ID:-}" ]; then
57
+ echo "::error::Missing CLOUDFLARE_ACCOUNT_ID GitHub secret for environment '$CLOUDFLARE_ENV'."
58
+ exit 1
59
+ fi
60
+
44
61
  - name: Install dependencies
45
62
  run: npm ci
46
63
 
@@ -50,19 +67,5 @@ jobs:
50
67
  - name: Test
51
68
  run: npm run test
52
69
 
53
- - name: Configure legacy shared-token fallback secrets
54
- run: |
55
- if [ -n "${TAVUS_API_KEY:-}" ]; then
56
- printf '%s' "$TAVUS_API_KEY" | npx wrangler secret put TAVUS_API_KEY --env "$CLOUDFLARE_ENV"
57
- else
58
- echo "Skipping TAVUS_API_KEY; OAuth user bearer tokens do not require the legacy fallback."
59
- fi
60
-
61
- if [ -n "${MCP_BEARER_TOKEN:-}" ]; then
62
- printf '%s' "$MCP_BEARER_TOKEN" | npx wrangler secret put MCP_BEARER_TOKEN --env "$CLOUDFLARE_ENV"
63
- else
64
- echo "Skipping MCP_BEARER_TOKEN; OAuth user bearer tokens do not require the legacy fallback."
65
- fi
66
-
67
70
  - name: Deploy Worker
68
71
  run: npx wrangler deploy --env "$CLOUDFLARE_ENV"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tavus-cli
3
- Version: 0.3.0
3
+ Version: 0.3.2
4
4
  Summary: Tavus CLI and MCP server for agentic PAL creation and editing.
5
5
  Requires-Python: >=3.11
6
6
  Requires-Dist: fastmcp>=2.0.0
@@ -156,7 +156,7 @@ endpoints so MCP clients can authenticate through Tavus browser auth.
156
156
  Claude Code example:
157
157
 
158
158
  ```bash
159
- claude mcp add -s user --transport http tavus https://mcp.tavus-preview.io/mcp
159
+ claude mcp add -s user --transport http tavus https://mcp.tavus.io/mcp
160
160
  ```
161
161
 
162
162
  The OAuth authorize step redirects to Tavus developer portal
@@ -181,25 +181,38 @@ Keep the Worker environment aligned with the portal environment that minted the
181
181
  key. For example, a TEST key from a local or dev portal must hit a Worker running
182
182
  with `--env test`, otherwise downstream Tavus API calls will return 401.
183
183
 
184
- For Tavus deployment, configure these Cloudflare/GitHub environment secrets:
184
+ For Tavus deployment, configure these GitHub environment secrets for each
185
+ deployable environment (`test`, `stg`, `prod`):
185
186
 
186
187
  - `CLOUDFLARE_API_TOKEN`
187
188
  - `CLOUDFLARE_ACCOUNT_ID`
188
- - `TAVUS_API_KEY` and `MCP_BEARER_TOKEN` only if you need the legacy shared-token fallback
189
189
 
190
- Then run the `Deploy Tavus MCP Worker` workflow for `test`, `stg`, or `prod`.
191
- The `prod` Wrangler route is configured as a custom domain on `mcp.tavus.io`;
192
- use `https://mcp.tavus-preview.io/mcp` as the Cloudflare-owned endpoint until
193
- `mcp.tavus.io` DNS resolves.
190
+ Worker runtime secrets, such as the legacy `TAVUS_API_KEY` or
191
+ `MCP_BEARER_TOKEN` fallback, should be set in Cloudflare with
192
+ `wrangler secret put <NAME> --env <environment>`. They persist across deploys;
193
+ the GitHub workflow does not read or overwrite them.
194
+
195
+ Merges to `main` automatically run the `Deploy Tavus MCP Worker` workflow for
196
+ `prod`. You can also run the workflow manually for `test`, `stg`, or `prod`.
197
+ The public MCP endpoint is always `https://mcp.tavus.io/mcp`. The
198
+ `mcp.tavus-preview.io` custom domain belongs only to the `stg` Worker and must
199
+ not be published as a production fallback.
200
+
201
+ | Deployment | Worker | Hosted endpoint | Tavus API |
202
+ | --- | --- | --- | --- |
203
+ | `test` | `tavus-mcp-test` | Workers.dev URL | `https://test.rqh.tavusapi.com/v2` |
204
+ | `stg` | `tavus-mcp-stg` | `https://mcp.tavus-preview.io/mcp` | `https://stg.rqh.tavusapi.com/v2` |
205
+ | `prod` | `tavus-mcp-prod` | `https://mcp.tavus.io/mcp` | `https://tavusapi.com/v2` |
206
+
194
207
  For direct Wrangler usage, the default config targets production; use
195
208
  `wrangler deploy --env test` or `wrangler dev --env test` to point at TEST.
196
209
 
197
210
  Useful production checks:
198
211
 
199
212
  ```bash
200
- curl https://mcp.tavus-preview.io/.well-known/oauth-protected-resource/mcp
201
- curl https://mcp.tavus-preview.io/.well-known/oauth-authorization-server
202
- curl -i https://mcp.tavus-preview.io/mcp
213
+ curl https://mcp.tavus.io/.well-known/oauth-protected-resource/mcp
214
+ curl https://mcp.tavus.io/.well-known/oauth-authorization-server
215
+ curl -i https://mcp.tavus.io/mcp
203
216
  ```
204
217
 
205
218
  Unauthenticated `/mcp` should return `401` with a `WWW-Authenticate` header that
@@ -136,7 +136,7 @@ endpoints so MCP clients can authenticate through Tavus browser auth.
136
136
  Claude Code example:
137
137
 
138
138
  ```bash
139
- claude mcp add -s user --transport http tavus https://mcp.tavus-preview.io/mcp
139
+ claude mcp add -s user --transport http tavus https://mcp.tavus.io/mcp
140
140
  ```
141
141
 
142
142
  The OAuth authorize step redirects to Tavus developer portal
@@ -161,25 +161,38 @@ Keep the Worker environment aligned with the portal environment that minted the
161
161
  key. For example, a TEST key from a local or dev portal must hit a Worker running
162
162
  with `--env test`, otherwise downstream Tavus API calls will return 401.
163
163
 
164
- For Tavus deployment, configure these Cloudflare/GitHub environment secrets:
164
+ For Tavus deployment, configure these GitHub environment secrets for each
165
+ deployable environment (`test`, `stg`, `prod`):
165
166
 
166
167
  - `CLOUDFLARE_API_TOKEN`
167
168
  - `CLOUDFLARE_ACCOUNT_ID`
168
- - `TAVUS_API_KEY` and `MCP_BEARER_TOKEN` only if you need the legacy shared-token fallback
169
169
 
170
- Then run the `Deploy Tavus MCP Worker` workflow for `test`, `stg`, or `prod`.
171
- The `prod` Wrangler route is configured as a custom domain on `mcp.tavus.io`;
172
- use `https://mcp.tavus-preview.io/mcp` as the Cloudflare-owned endpoint until
173
- `mcp.tavus.io` DNS resolves.
170
+ Worker runtime secrets, such as the legacy `TAVUS_API_KEY` or
171
+ `MCP_BEARER_TOKEN` fallback, should be set in Cloudflare with
172
+ `wrangler secret put <NAME> --env <environment>`. They persist across deploys;
173
+ the GitHub workflow does not read or overwrite them.
174
+
175
+ Merges to `main` automatically run the `Deploy Tavus MCP Worker` workflow for
176
+ `prod`. You can also run the workflow manually for `test`, `stg`, or `prod`.
177
+ The public MCP endpoint is always `https://mcp.tavus.io/mcp`. The
178
+ `mcp.tavus-preview.io` custom domain belongs only to the `stg` Worker and must
179
+ not be published as a production fallback.
180
+
181
+ | Deployment | Worker | Hosted endpoint | Tavus API |
182
+ | --- | --- | --- | --- |
183
+ | `test` | `tavus-mcp-test` | Workers.dev URL | `https://test.rqh.tavusapi.com/v2` |
184
+ | `stg` | `tavus-mcp-stg` | `https://mcp.tavus-preview.io/mcp` | `https://stg.rqh.tavusapi.com/v2` |
185
+ | `prod` | `tavus-mcp-prod` | `https://mcp.tavus.io/mcp` | `https://tavusapi.com/v2` |
186
+
174
187
  For direct Wrangler usage, the default config targets production; use
175
188
  `wrangler deploy --env test` or `wrangler dev --env test` to point at TEST.
176
189
 
177
190
  Useful production checks:
178
191
 
179
192
  ```bash
180
- curl https://mcp.tavus-preview.io/.well-known/oauth-protected-resource/mcp
181
- curl https://mcp.tavus-preview.io/.well-known/oauth-authorization-server
182
- curl -i https://mcp.tavus-preview.io/mcp
193
+ curl https://mcp.tavus.io/.well-known/oauth-protected-resource/mcp
194
+ curl https://mcp.tavus.io/.well-known/oauth-authorization-server
195
+ curl -i https://mcp.tavus.io/mcp
183
196
  ```
184
197
 
185
198
  Unauthenticated `/mcp` should return `401` with a `WWW-Authenticate` header that
@@ -10,9 +10,7 @@ workflow for adding Tavus to a Gemini Enterprise instance.
10
10
  | Field | Value |
11
11
  | --- | --- |
12
12
  | MCP transport | Streamable HTTP (no SSE) |
13
- | Production MCP URL | `https://mcp.tavus.io/mcp` (Cloudflare-owned mirror: `https://mcp.tavus-preview.io/mcp`) |
14
- | Staging MCP URL | `https://tavus-mcp-stg.<workers-dev>/mcp` |
15
- | Test MCP URL | `https://tavus-mcp-test.<workers-dev>/mcp` |
13
+ | Production MCP URL | `https://mcp.tavus.io/mcp` |
16
14
  | Auth | OAuth 2.1 Authorization Code + PKCE (S256), 3LO via Tavus dev portal |
17
15
  | Tool annotations | Every tool declares `readOnlyHint` / `destructiveHint` |
18
16
  | Public spec | This document |
@@ -156,12 +154,17 @@ pal or conversation ID.
156
154
  4. Run any of the queries in [test-queries.md](./test-queries.md) to confirm
157
155
  tools execute end-to-end.
158
156
 
159
- ## Test environments
157
+ ## Review environments
160
158
 
161
- | Env | MCP URL | API base | Dev portal | Test account |
159
+ Public documentation and customer integrations must use only
160
+ `https://mcp.tavus.io/mcp`. Tavus supplies non-production MCP endpoints and
161
+ credentials privately for connector certification; they are not production
162
+ mirrors or customer-facing fallbacks.
163
+
164
+ | Env | MCP access | API base | Dev portal | Test account |
162
165
  | --- | --- | --- | --- | --- |
163
- | Test | `https://tavus-mcp-test.<workers-dev>/mcp` | `https://test.rqh.tavusapi.com/v2` | `https://dev.platform.tavus.io` | provided privately |
164
- | Staging | `https://tavus-mcp-stg.<workers-dev>/mcp` | `https://stg.rqh.tavusapi.com/v2` | `https://stage.platform.tavus.io` | provided privately |
166
+ | Test | provided privately | `https://test.rqh.tavusapi.com/v2` | `https://dev.platform.tavus.io` | provided privately |
167
+ | Staging | provided privately | `https://stg.rqh.tavusapi.com/v2` | `https://stage.platform.tavus.io` | provided privately |
165
168
  | Production | `https://mcp.tavus.io/mcp` | `https://tavusapi.com/v2` | `https://platform.tavus.io` | provided privately |
166
169
 
167
170
  Each env has a dedicated `gemini-enterprise-test@tavus.io` account pre-seeded
@@ -0,0 +1,65 @@
1
+ # MCP and CLI usage observability
2
+
3
+ The Tavus CLI, local MCP server, and hosted MCP Worker identify their downstream
4
+ Tavus API requests with a source-specific user agent:
5
+
6
+ | Surface | User agent |
7
+ | --- | --- |
8
+ | CLI | `tavus-cli/<version>` |
9
+ | Local MCP server | `tavus-mcp/<version>` |
10
+ | Hosted MCP Worker | `tavus-mcp-worker/0.1.0` |
11
+
12
+ They also send the matching low-cardinality `X-Tavus-Client-Source` header. The
13
+ header is available for future structured attribution; the user agent works with
14
+ request-handler's current access logging today.
15
+
16
+ ## SigNoz data path
17
+
18
+ Request-handler already exports an access-log pair for each authenticated Tavus
19
+ API request. Both records share an OpenTelemetry trace ID:
20
+
21
+ - `log_request_data` records URL, method, request body, and the tagged user agent.
22
+ - `after_request_logging` records route, HTTP status, auth type, and authenticated
23
+ `user_id`.
24
+
25
+ In SigNoz, scope the logs to `service.name = request-handler` and
26
+ `deployment.environment = prod`, select request records whose body contains one
27
+ of the user-agent prefixes above, and join the response record on `trace_id`.
28
+
29
+ That joined dataset supports the usage dashboard:
30
+
31
+ | Question | Signal |
32
+ | --- | --- |
33
+ | How many people use it? | distinct authenticated `user_id`, split by surface |
34
+ | How much is it used? | request count and requests per user over time |
35
+ | How successful is it? | 2xx/3xx share versus 4xx/5xx share |
36
+ | What query types run? | normalized HTTP method and Tavus API route |
37
+ | How large are queries? | byte length of the logged request-body field |
38
+ | Which errors occur? | response status distribution, split by route and surface |
39
+
40
+ The existing [MCP Dashboard](https://tavus.us.signoz.cloud/dashboard/019affed-8fd9-756e-a889-d5da6157c976)
41
+ only contains five legacy `mcp.*` latency panels. Those metrics had no matching
42
+ data in the 30 days checked on July 31, 2026, and the dashboard does not currently
43
+ measure adoption or CLI usage. Replace them with this production-only layout:
44
+
45
+ - KPI row: API requests, unique users, success rate, and requests per user.
46
+ - Hourly trends: requests and unique users, each split by CLI, local MCP, and
47
+ hosted MCP.
48
+ - Tables: method plus normalized route family, request-body size percentiles,
49
+ and HTTP 4xx/5xx codes.
50
+
51
+ The ClickHouse queries for that layout were dry-run against the current
52
+ request-handler log schema. The final `tavus-*` filters are expected to return no
53
+ historical rows until this source tagging is released.
54
+
55
+ ## Boundaries
56
+
57
+ - Collection starts when this change is deployed/released; it does not recreate
58
+ reliable historical surface attribution.
59
+ - Counts are downstream Tavus API requests, not top-level MCP tool calls or CLI
60
+ invocations. Local-only operations such as help, auth status, path listing, and
61
+ embed scaffolding do not generate an API request and are not counted.
62
+ - No API key, prompt, or request body is added to telemetry by this change. The
63
+ source tags contain only the product surface and package version. Request-handler
64
+ continues applying its existing API-key truncation and 64 KiB body-redaction
65
+ policy.
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "tavus-cli"
3
- version = "0.3.0"
3
+ version = "0.3.2"
4
4
  description = "Tavus CLI and MCP server for agentic PAL creation and editing."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -1,4 +1,4 @@
1
1
  """Tavus CLI and MCP server package."""
2
2
 
3
3
  __all__ = ["__version__"]
4
- __version__ = "0.1.1"
4
+ __version__ = "0.3.2"