Skip to content

GA launch: comprehensive API, SDK, CLI, and MCP audit and blocker remediation #493

Description

@jiashuoz

Objective

Perform a comprehensive GA-readiness audit of e2a's public developer interfaces and prepare focused draft PRs for every confirmed critical launch blocker.

The goal is to verify that the REST API, TypeScript SDK, Python SDK, CLI, and MCP interfaces are correct, internally consistent, documented, and safe to freeze for GA. This is an end-to-end quality assignment: audit the interfaces, reproduce and classify defects, file findings, and prepare fixes for critical blockers.

Start here

Read these before testing:

Treat the generated OpenAPI 3.1 document and the accepted decisions in the GA readiness log as the source of truth. If they disagree, flag the discrepancy rather than guessing.

Scope

Audit all user-facing behavior in these surfaces:

  • REST API: routes, methods, request/response schemas, required and nullable fields, status codes, error codes, authentication and scopes, pagination, filtering, idempotency, rate/quota behavior, WebSocket behavior, and OpenAPI accuracy.
  • TypeScript SDK: generated and hand-written layers, method coverage, parameter and return types, error mapping, pagination helpers, webhook verification, WebSocket/listen behavior, and runtime behavior.
  • Python SDK: the same coverage as TypeScript, including async behavior and parity with the TypeScript SDK where intended.
  • CLI: supported GA commands (login, listen, and config), configuration precedence, hosted/self-hosted behavior, forwarding, error output, exit codes, and graceful handling of invalid credentials or connectivity failures.
  • MCP: tool inventory, names/descriptions/input schemas, account- versus agent-scoped auth, tool-to-API mapping, pagination, returned content, validation, error translation, and hosted Streamable HTTP behavior.
  • Cross-interface consistency: naming, required fields, enum values, defaults, IDs, pagination, auth semantics, errors, and documented examples must agree across every surface that exposes the capability.

The CLI is intentionally slim and does not need parity with every API operation. MCP also intentionally excludes some operations. Verify intentional exclusions against the GA decisions log; do not add surface area solely for symmetry.

Required testing

1. Establish a clean baseline

  • Set up the project from the documented instructions.
  • Record the commit SHA, OS/runtime versions, dependency versions, and configuration used.
  • Run the full existing test suite and record results before changing code.
  • Confirm generated artifacts are current using the repository's generation/freshness checks.

2. Build a coverage matrix

Create a matrix of all GA capabilities and mark whether each is exposed through the API, TypeScript SDK, Python SDK, CLI, and MCP. For every applicable cell, record:

  • implementation location;
  • documentation/example location;
  • automated test coverage;
  • manual or end-to-end verification result;
  • linked finding, issue, or PR.

Include at least:

  • deployment info/version discovery;
  • agents and domains;
  • API keys and authentication scopes;
  • inbound message list/get and attachments;
  • send, reply, and forward;
  • conversations, labels, and read state;
  • webhooks and signature verification;
  • reviews/HITL approve, reject, and expiry behavior;
  • templates, suppressions, and events;
  • account export/deletion;
  • pagination and filters;
  • rate limits versus quota limits;
  • WebSocket connection, reconnect, fatal auth failure, and replacement behavior;
  • CLI login/config/listen/forward flows;
  • MCP initialization, auth modes, tool discovery, tool invocation, and errors.

3. Test behavior, not only compilation

For each applicable capability, cover:

  • happy path;
  • missing, malformed, boundary-size, and conflicting inputs;
  • unauthenticated, wrong-scope, and cross-account access;
  • not-found and conflict cases;
  • pagination with more than one page, cursor propagation, empty results, and invalid cursors;
  • documented error type/code/status mapping;
  • retryable versus non-retryable failures;
  • unknown enum/event values where forward compatibility is promised;
  • hosted URL defaults and self-hosted base URLs;
  • examples copied exactly from current documentation.

Add automated regression tests for every confirmed blocker. Prefer contract or end-to-end tests where an interface mismatch could otherwise compile successfully.

4. Exercise real cross-surface workflows

Run and document complete workflows that combine interfaces, including:

  • create/configure through the API, then read and act through both SDKs;
  • receive a message and verify it through REST, SDK, and MCP;
  • send/reply/forward and verify threading and attachments;
  • hold a message for review, list it, then approve/reject it through another supported surface;
  • webhook delivery plus TypeScript and Python signature verification;
  • WebSocket/listen delivery, reconnect, invalid credentials, and connection replacement;
  • CLI forwarding to a local handler;
  • MCP over the deployed Streamable HTTP transport, not only direct in-process tool calls.

Use synthetic accounts and non-sensitive test data. Do not run destructive account deletion against a shared or production account.

Finding severity

Classify each confirmed finding:

  • Critical / GA blocker: data loss or corruption; auth/security boundary failure; documented core workflow unusable; incompatible public contract across interfaces; release/install failure; crash or infinite retry in a normal flow; or behavior likely to require a breaking post-GA change.
  • High: major capability is incorrect or unreliable, but a practical workaround exists and the GA contract need not break.
  • Medium: localized functional, consistency, documentation, or usability defect.
  • Low: polish, maintainability, or minor documentation issue.

Include impact, exact reproduction steps, expected versus actual behavior, affected interfaces, evidence, suspected source, and severity rationale. Do not label something critical solely because a test fails; connect it to user or launch impact.

Issues and PRs

  • Track confirmed findings clearly from this umbrella ticket.
  • For each critical blocker, prepare a small, focused draft PR with:
    • the root-cause fix;
    • a regression test that fails before the fix and passes after it;
    • updates to every affected public interface;
    • regenerated OpenAPI/SDK artifacts when required;
    • documentation updates when behavior or examples change;
    • completed cross-interface checklist and a link back to this ticket.
  • Separate unrelated blockers into separate PRs. Avoid opportunistic refactors.
  • Do not merge or publish releases without maintainer approval.
  • Record high/medium/low findings as follow-up issues or a clearly actionable findings section; do not expand blocker PRs to absorb them.

Deliverables

Add a final report to this issue containing:

  1. Environment and baseline results.
  2. Completed cross-interface coverage matrix.
  3. Automated and manual test evidence.
  4. Findings grouped by severity.
  5. Links to all issues and draft PRs.
  6. Remaining known risks, intentional exclusions, and untested areas.
  7. A clear recommendation: ready for GA, ready with accepted follow-ups, or not ready, with rationale.

Commit reusable test tooling and regression coverage through the relevant blocker PRs. Do not commit credentials, production data, or throwaway local artifacts.

Acceptance criteria

  • Every GA API operation has been checked against OpenAPI, implementation, documentation, and applicable client interfaces.
  • TypeScript and Python SDK public methods, error behavior, pagination, webhook verification, and WebSocket behavior have been tested.
  • All supported CLI commands and forwarding modes have been tested on documented configuration paths.
  • Every MCP tool has been checked for schema, auth, API mapping, output, and error behavior over Streamable HTTP.
  • Cross-interface naming, required fields, enums, defaults, pagination, status/error semantics, and examples have been compared.
  • Core end-to-end workflows have evidence from a clean environment.
  • Every confirmed critical blocker has a focused draft PR with regression coverage and cross-interface updates.
  • Non-critical findings are recorded with enough detail to schedule independently.
  • Full relevant test suites and generation/freshness checks pass after each blocker fix.
  • The final report and GA readiness recommendation are posted on this issue.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions