You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
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:
Environment and baseline results.
Completed cross-interface coverage matrix.
Automated and manual test evidence.
Findings grouped by severity.
Links to all issues and draft PRs.
Remaining known risks, intentional exclusions, and untested areas.
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.
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:
login,listen, andconfig), configuration precedence, hosted/self-hosted behavior, forwarding, error output, exit codes, and graceful handling of invalid credentials or connectivity failures.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
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:
Include at least:
3. Test behavior, not only compilation
For each applicable capability, cover:
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:
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:
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
Deliverables
Add a final report to this issue containing:
Commit reusable test tooling and regression coverage through the relevant blocker PRs. Do not commit credentials, production data, or throwaway local artifacts.
Acceptance criteria