Skip to content

feat(codex): telnyx-developer-kit plugin — navigator/architecture/guardrail/debugging skills + hosted MCP - #323

Open
Vijaypepakayala wants to merge 27 commits into
team-telnyx:mainfrom
Vijaypepakayala:feat/codex-developer-kit
Open

Vijaypepakayala wants to merge 27 commits into
team-telnyx:mainfrom
Vijaypepakayala:feat/codex-developer-kit

Conversation

@Vijaypepakayala

@Vijaypepakayala Vijaypepakayala commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Goal

Add the Codex telnyx-developer-kit plugin backed by the isolated OAuth MCP endpoint at https://api.telnyx.com/v2/ai/mcp.

Package

  • Four focused, hand-authored Telnyx skills
  • Direct Codex MCP server map using OAuth; no API key in plugin configuration
  • Frozen connector contract 1.0.0-preview.5
  • Exactly six tools: two catalog discovery tools, one explicitly confirmed billable Number Lookup, and three bounded account reads
  • No catch-all executor, MCP Apps federation, or embedded UI
  • Marketplace installation remains NOT_AVAILABLE until staging and release gates pass

The embedded contract is byte-identical to team-telnyx/telnyx-ai-connector source candidate 5bff92e2f32f32705e1ea3a5e15d0676c64b4cb9; SHA-256: 29c307e0735c462d5cafa7a4d1223fd2e8b57664b013d6fd46289574fb482878.

Validation

  • Codex package validator: passed
  • Hosted MCP metadata-auditor self-test: passed for both protocol versions; no tools called
  • All six deployed input schemas are compared with the frozen contract
  • Regressions cover discovery and execution drift, JSON Schema dialects, duplicate/missing ownership, pagination, SSE, strict JSON, and authenticated redirects
  • Canonical, Codex, Claude, and Cursor safety guidance is synchronized and regression-gated
  • Generated skill sync, 240-skill count, Python compilation, and diff checks: passed
  • Independent final review: no actionable findings

No Telnyx account mutation, billable request, remote review trigger, or production deployment was performed.

Release boundary

This PR makes the Codex package review-ready. Availability remains gated on deployment of the isolated connector, Gateway/Auth Manager propagation, clean staging OAuth validation, and the release approvals documented in submission/telnyx-developer-kit/README.md.

@Oliver-Zimmerman Oliver-Zimmerman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review verdict: Changes requested

Reviewed at head 7d52d901c271f843d0b618e7188388d79bbf868f. The direction is solid, but these introduced issues should be addressed before approval:

  1. High — advertised MCP output schemas reject valid runtime responses

    The new schemas in usage-cost-explorer/src/server.ts, voice-monitor/src/server.ts, and number-intelligence/src/server.ts use z.intersection(z.object(...), z.record(...)). Zod preserves provider-specific fields at runtime, but the emitted JSON Schema contains an allOf object branch with additionalProperties: false.

    I reproduced wire-schema rejection for successful values containing billing_group_id, client_state, and nested record_type. Replace these intersections with a single z.object({...}).catchall(jsonValueSchema)—including nested provider objects—and add tests that validate representative structuredContent against the schema returned by tools/list.

  2. Medium — CSV usage reports return an empty successful result

    billing_query_usage accepts format: "csv"; the client converts a CSV response into {text: csvBody}, but usageReportEnvelopeSchema strips text. The resulting MCP response is a successful {} with the entire report discarded.

    Either remove CSV from the tool input or explicitly model and preserve a result such as {format: "csv", text: csvBody}. Add an end-to-end CSV tool-call test.

  3. Medium — Product Navigator sends Codex users to unavailable plugins

    skills/telnyx-kit-product-navigator/SKILL.md:16-17 tells users to run /plugin install telnyx-<product>@telnyx, which is Claude-oriented syntax. The Codex marketplace in this PR exposes only telnyx-developer-kit.

    In an isolated Codex installation, the Developer Kit installed and the navigator activated naturally, but both codex plugin add telnyx-voice@telnyx and telnyx-platform@telnyx failed as not found. Either expose Codex versions of the referenced plugins and use Codex syntax, or qualify those deep dives as Claude-only and give Codex users an MCP discovery/schema path. The Twilio migration row needs the same treatment.

  4. Medium — root MCP tool schemas are not structurally validated

    scripts/check-telnyx-mcp-catalog.py:896-897 only checks that inputSchema is a dictionary. A schema such as {"type":"definitely-not-a-json-schema-type"} passes. Apply the existing recursive schema validator to every root inputSchema and outputSchema, with malformed-schema self-tests.

  5. Medium — release audit accepts non-standard and ambiguous JSON

    External MCP responses, public metadata, and embedded result JSON use Python's permissive json.loads. I reproduced acceptance of NaN and duplicate object keys. Centralize strict JSON decoding that rejects non-finite constants and repeated member names, and use it at every external/package metadata boundary.

  6. Medium — catalog-validator self-tests are absent from automatic CI

    check-telnyx-mcp-catalog.py --self-test passes locally, but no PR/push workflow runs it. The only validator execution is the credentialed hosted audit, which is manual and main-only. Add an uncredentialed automatic CI step running the self-test while keeping the live audit protected.

  7. Medium — Number Intelligence has an inaccurate openWorldHint

    number-intelligence/src/server.ts:139-144 marks billable arbitrary phone-number lookups as openWorldHint: false. These tools query an external provider about arbitrary real-world numbers and can incur charges. Set it to true for both single and batch lookup tools and update the tests currently enforcing false.

Validation completed

  • Codex package validator passed
  • Catalog-validator self-tests passed
  • Generated skill trees are clean and synchronized
  • All four official Agent Skills validators passed
  • MCP Apps typecheck/build passed
  • 69 MCP Apps tests plus workspace test runs passed
  • Isolated real Codex marketplace installation and natural skill activation passed
  • .mcp.json registered with the real Codex CLI

I separately reproduced two real pre-existing issues—the same-repository PR secret exposure and sync-script symlink deletion—but did not count either as a blocker introduced by this PR.

@Vijaypepakayala
Vijaypepakayala force-pushed the feat/codex-developer-kit branch from 7d52d90 to e0231b1 Compare August 1, 2026 10:34
@Vijaypepakayala

Copy link
Copy Markdown
Contributor Author

Oliver — all seven findings are addressed at e0231b1. Responses one by one:

  1. Advertised MCP output schemas reject valid runtime responses

    Fixed. The intersection schemas were replaced with catch-all object schemas, including nested provider objects. Wire-schema tests now validate representative successful responses containing billing_group_id, client_state, and nested record_type through AJV.

  2. CSV usage reports return an empty successful result

    Fixed by making billing_query_usage JSON-only. format: "csv" is rejected during input validation before any network request, with an end-to-end regression test.

  3. Product Navigator sends Codex users to unavailable plugins

    Fixed. Codex guidance now uses the installed Telnyx MCP's list_api_endpoints and get_api_endpoint_schema. Claude-only install commands are explicitly scoped to Claude, Cursor uses its bundled skills, and the migration row follows the same client-specific routing.

  4. Root MCP tool schemas are not structurally validated

    Fixed. Every root inputSchema and outputSchema now goes through recursive structural validation. Malformed type, nested-object, array, and composition schemas are covered by self-tests.

  5. Release audit accepts non-standard and ambiguous JSON

    Fixed. Package metadata, hosted responses, server cards, and embedded result JSON now use one strict decoder that rejects non-finite values and duplicate object members. Direct regression fixtures cover both cases.

  6. Catalog-validator self-tests are absent from automatic CI

    Fixed. Automatic uncredentialed CI now runs exactly python3 scripts/check-telnyx-mcp-catalog.py --self-test. Credentialed jobs cannot run on PR code, failures are blocking, actions are SHA-pinned, and downloaded CLI artifacts are checksum-verified.

  7. Number Intelligence has an inaccurate openWorldHint

    Fixed for both single and batch lookup tools, with regression tests. The UI now also displays the billable lookup warning beside the action and confirms the unique batch count before execution.

The two pre-existing findings are fixed as well: pull-request code cannot receive repository secrets, and skill synchronization refuses symlink traversal while providing a non-mutating drift check.

Local validation on this exact head:

  • canonical plugin and package validators passed
  • all four skill validators passed
  • generated Claude, Cursor, and Codex skill trees are synchronized
  • catalog self-tests passed
  • MCP Apps fresh install, typecheck, and build passed
  • 317 MCP Apps tests and 110 guide tests passed
  • production dependency audit reported 0 vulnerabilities
  • fresh local Codex installation and namespaced-skill activation passed

Could you please re-review this head?

@Oliver-Zimmerman Oliver-Zimmerman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@Vijaypepakayala — second-pass review at e0231b11. All seven findings from my previous review are resolved: the wire schemas validate representative runtime output, CSV is removed from the MCP boundary, Codex Product Navigator uses the hosted MCP path, root schemas are structurally validated, JSON decoding is strict, catalog self-tests run in CI, and Number Intelligence now advertises openWorldHint: true. The full typecheck/build/test/validator/sync suite passed, and isolated natural Codex activation worked. One new session-capacity regression remains; see the inline comment. Please re-request review after eviction is committed only after replacement initialization succeeds and the failure case is covered.

Comment thread tools/mcp-apps/src/http.ts Outdated
@Vijaypepakayala
Vijaypepakayala marked this pull request as ready for review August 5, 2026 09:48

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7b669fedeb

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread submission/telnyx-developer-kit/README.md Outdated
@Vijaypepakayala

Copy link
Copy Markdown
Contributor Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Another round soon, please!

Reviewed commit: de1cca808e

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

@Vijaypepakayala

Copy link
Copy Markdown
Contributor Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Delightful!

Reviewed commit: cf9addb0c4

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

@Vijaypepakayala

Copy link
Copy Markdown
Contributor Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Chef's kiss.

Reviewed commit: f5092f7e6d

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

@Vijaypepakayala
Vijaypepakayala force-pushed the feat/codex-developer-kit branch from f5092f7 to f9b1e02 Compare August 5, 2026 13:20
@Vijaypepakayala

Copy link
Copy Markdown
Contributor Author

@Oliver-Zimmerman, the session-eviction blocker and latest Codex findings are addressed. The final branch is one commit on current main; official and repository plugin validators, 4-skill resolution, sync, and 320 MCP Apps tests pass. Please re-review. Public GA remains gated on deployed MCP metadata.

@Vijaypepakayala

Copy link
Copy Markdown
Contributor Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. 🚀

Reviewed commit: f9b1e02902

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

@Vijaypepakayala
Vijaypepakayala force-pushed the feat/codex-developer-kit branch from f9b1e02 to e570f4b Compare August 6, 2026 06:15
@Vijaypepakayala

Copy link
Copy Markdown
Contributor Author

Rebased onto current main and pushed the final local-review contract at e570f4b. The plugin now enforces shared Claude/Codex OAuth catalog routing, refuses API-key-in-chat flows and automatic product-plugin installs, and keeps the public contract at 4 model-visible tools / 8 app-only tools / 2 UI resources / 812 safe endpoints. Local validators, 118 guide tests, 320 vendored MCP Apps tests, build/typecheck, and zero-vulnerability production audit passed.

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: e570f4b12a

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread plugins/telnyx-developer-kit/.mcp.json
@Vijaypepakayala

Copy link
Copy Markdown
Contributor Author

The current-head P1 bundled MCP shape finding is fixed at 459c0a0 and the regression gate now requires the supported direct map.

@codex review

@Vijaypepakayala

Copy link
Copy Markdown
Contributor Author

@Oliver-Zimmerman — re-review requested at current head d4c6490.

Your seven original findings remain resolved. The later session-capacity blocker is covered by committing eviction only after replacement initialization succeeds; failed initialization releases its reservation without evicting the existing session, with concurrent capacity-matrix regression coverage. The remaining Codex base-URL thread is now replied to and resolved: both hosted apps normalize the shared TELNYX_API_BASE_URL to exactly one /v2, with matching 144-case client matrices and a shared-env integration test.

Current validation: all GitHub CI checks green; local typecheck/build clean; tests 219 workspace + 39 Number Intelligence + 73 Usage Cost + 41 Voice Monitor; zero production dependency vulnerabilities; plugin/catalog validators and generated-skill sync clean.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 07f9bb21a1

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread .agents/plugins/marketplace.json Outdated
Comment thread skills/telnyx-kit-product-navigator/SKILL.md

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2db660449a

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread skills/telnyx-kit-guardrails/SKILL.md Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: f1ef7b6987

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread skills/telnyx-kit-guardrails/SKILL.md Outdated
Comment thread skills/telnyx-kit-architecture-patterns/SKILL.md Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ab01e8b175

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread skills/telnyx-kit-debugging/SKILL.md Outdated
Comment thread skills/telnyx-kit-debugging/SKILL.md Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a0d8c0e794

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread skills/telnyx-kit-product-navigator/SKILL.md Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 381bbae0d2

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread tools/mcp-apps/apps/number-intelligence/src/ui.ts Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 2a57d672e5

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread scripts/check-telnyx-mcp-catalog.py Outdated
Comment thread scripts/check-telnyx-mcp-catalog.py Outdated
Comment thread scripts/check-telnyx-mcp-catalog.py Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: fd854de3d3

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread scripts/check-telnyx-mcp-catalog.py Outdated
Comment thread .github/workflows/telnyx-developer-kit-review.yml Outdated
Comment thread scripts/check-telnyx-mcp-catalog.py Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 52bf002c12

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread skills/telnyx-kit-debugging/SKILL.md Outdated
Comment thread scripts/check-telnyx-mcp-catalog.py Outdated

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ca80d39c61

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread scripts/check-telnyx-mcp-catalog.py Outdated
Comment on lines +519 to +520
servers = metadata.get("authorization_servers")
require(isinstance(servers, list) and len(servers) == 1, "expected one authorization server")

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Pin the OAuth authorization server in the audit

When protected-resource metadata contains any single authorization server, this check passes without verifying its value or even that it is a string. A staging gateway that accidentally advertises a stale or non-Telnyx issuer can therefore pass the release audit while Codex installations are redirected to the wrong OAuth service; compare the entry with the canonical Telnyx issuer and validate its type.

AGENTS.md reference: AGENTS.md:L134-L140

Useful? React with 👍 / 👎.

Comment on lines +155 to +157
body = parse_body(content_type, read_limited(response))
require(body.get("id") == expected_id, f"expected JSON-RPC id {expected_id}")
return body

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Reject non-JSON-RPC responses in the audit

When the connector returns an object with the expected id and result but omits jsonrpc: "2.0" or supplies another version, this routine accepts it in both the JSON and SSE paths. The hosted audit can consequently approve malformed responses that conforming Codex or Claude JSON-RPC clients reject; validate the jsonrpc member before returning a matched response.

Useful? React with 👍 / 👎.

Comment on lines +495 to +502
received = list_all_tools(
url,
token,
protocol_version,
session,
request_id_base + 1,
)
validate_tool_catalog(received, contract)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Audit the resource catalog before approving release

When the deployed connector exposes the six expected tools plus an MCP resource or legacy MCP App resource, this audit still passes because it only invokes tools/list. That leaves the release requirement in submission/telnyx-developer-kit/README.md:47-48—an empty-profile install with no Apps resource—unchecked, so enumerate all resources/list pages (or verify that the resources capability is absent) before accepting the deployed contract.

Useful? React with 👍 / 👎.

Comment on lines +39 to +40
- Scale unit = concurrent streams; key TeXML call state on `CallSid` and
stream state on `StreamSid`, never on `call_control_id` or process globals.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Use stream_id for TeXML stream state

When an implementation follows this TeXML WebSocket pattern, keying stream state on StreamSid conflicts with the immediately preceding protocol guidance that Telnyx supplies stream_id on server events. Looking for the Twilio-style field can collapse state under a missing identifier and mix concurrent media streams; use the received stream_id consistently, then resync the generated provider and Codex copies.

AGENTS.md reference: AGENTS.md:L75-L86

Useful? React with 👍 / 👎.

Complete the pending base merge and include validated manifest, catalog guidance, strict JSON/SSE, OAuth metadata and regression-test corrections. The isolated runtime and staging activation remain separate dependencies.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1d2bfad18a

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

)
result = handshake["result"]
capabilities = result.get("capabilities")
require(isinstance(capabilities, dict), "server capabilities must be an object")

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Require the tools capability before approving deployment

When either protocol handshake returns capabilities: {} (or a non-object tools value) but still responds to the audit's direct tools/list request, this check accepts the deployment. MCP clients use the advertised tools capability to determine whether tools are available, so the release gate can pass while a clean Codex installation exposes none of the five tools; require capabilities.tools to be an object in both protocol branches.

Useful? React with 👍 / 👎.

Comment on lines +185 to +186
if "text/event-stream" not in content_type.lower():
body = parse_body(content_type, read_limited(response))

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Reject unsupported JSON-RPC response media types

When the gateway returns a valid JSON-RPC body with an empty, text/plain, or other non-MCP content type, this branch treats it as JSON and the hosted audit passes. A conforming Streamable HTTP response must use application/json or text/event-stream, so Codex can reject the same misconfigured deployment that this release gate approves; validate the response media type before parsing.

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants