API & MCP
A read-only public API and a Model Context Protocol server your AI agent can run on its own machine, with your own API key. No write access. No shared credentials. Nothing to trust but the key you generate.
What this is built on
Read-only, always
Every operation in this spec is a GET. There is no write endpoint published here, and none is generated — not a configuration mistake to avoid, a class of request that does not exist.
Your key, your machine
The MCP server runs where you run it — your laptop, your CI, your agent's sandbox — authenticated with a key you generated and can revoke. EternalEngine never sees your AI agent's traffic.
Open source, auditable
packages/ee-mcp-public is a small TypeScript package generated directly from this spec — every tool it exposes is traceable to one GET operation. Read it before you trust it.
Get your API key
Keys are scoped per app. Mint one from the app you want to read data from.
PostFrame
Email delivery, contacts, audiences, analytics — pf_live_* / pf_test_*
PayGate
Transactions, disputes, customers, payouts — pg_live_* / pg_test_*
Minting a key requires signing in to app.eternalengineos.io.
Run the MCP server
Works with Claude Desktop, Claude Code, and any MCP-compatible client. One env var, one key.
1. Run it
EE_API_KEY=pf_live_your_key npx ee-mcp-public2. Or add it to Claude Desktop / Claude Code config
{
"mcpServers": {
"eternalengine": {
"command": "npx",
"args": ["ee-mcp-public"],
"env": { "EE_API_KEY": "pf_live_your_key" }
}
}
}Full install instructions, config snippets for every client, and the threat model are in packages/ee-mcp-public/README.md.
Open source & developers
EternalEngine the product is closed-source. The pieces that let you read your own data with your own tools are not — the API spec and the MCP server are public, MIT-licensed, and readable end to end.
ee-mcp-public
The MCP server itself — read-only tools, no shared credentials, runs on your machine with your own API key. MIT licensed.
npx ee-mcp-publicopenapi
The OpenAPI 3 specification for the public read-only API at app.eternalengineos.io/api/v1 — the same file the operations table below is rendered from.
.github
The EternalEngineOS organization profile — where the two repos above live, alongside what else we publish.
43 GET operations
Base URL https://app.eternalengineos.io/api/v1. Every request needs Authorization: Bearer <your key>. Full machine-readable spec: openapi.public.yaml · openapi.public.json.
API Keys
/paygate/api-keysList API keys for the tenant
/postframe/api-keysList API keys
Connect
/paygate/connect/accountGet the tenant's Stripe Connect account status
/paygate/connect/balanceGet the connected account's Stripe balance
/paygate/connect/checkout/sessionsList recent Checkout sessions
/paygate/connect/couponsList Stripe coupons on the connected account
/paygate/connect/payoutsList Stripe Connect payouts
/paygate/connect/productsList Stripe products/plans on the connected account
/paygate/connect/subscriptionsList Stripe subscriptions on the connected account
Customers
/paygate/customersList customers (aggregated from transaction history)
/paygate/customers/{email}Get a customer's transaction history
Me
/paygate/me/invoices/{invoiceId}/pdfDownload a branded PDF of the tenant's own platform subscription invoice
/paygate/me/volumeGet the tenant's month-to-date processing volume
Settings
/paygate/settingsGet merchant settings and fraud rules
/postframe/settingsGet tenant settings
/postframe/settings/onboardingGet onboarding status
Status
/paygate/statusno authService health (public, no auth)
Transactions
/paygate/transactionsList transactions
/paygate/transactions/{id}Get transaction by ID
/paygate/transactions/statsPayment stats
Disputes
/paygate/transactions/disputesList disputes
/paygate/transactions/disputes/{id}Get a dispute by ID
Providers
/paygate/transactions/providersList configured payment providers
/postframe/providersList providers
Routing
/paygate/transactions/routingList routing rules
Webhooks
/paygate/webhooks/eventsList webhook delivery events
/postframe/webhooksList webhooks
Analytics
/postframe/analytics/overviewGet delivery overview
/postframe/analytics/timeseriesGet time series metrics
Audiences
/postframe/audiencesList audiences
/postframe/audiences/{id}Get audience details
Broadcasts
/postframe/audiences/{audienceId}/broadcastsList broadcasts for an audience
Billing
/postframe/billing/subscriptionGet subscription status
Contacts
/postframe/contactsList contacts
/postframe/contacts/{id}Get a contact
Domains
/postframe/domainsList domains
/postframe/domains/{id}Get domain details
Emails
/postframe/emailsList emails
/postframe/emails/{id}Get email details
Suppressions
/postframe/suppressionsList suppressions
Templates
/postframe/templatesList templates
/postframe/templates/{id}Get a template
Usage
/postframe/usage/quotaGet usage quota
Developer questions
Is the API read-only?
Yes — every endpoint is GET-only. There is no write access, and no shared credentials; you authenticate with your own API key.
How do I authenticate?
Every request needs an Authorization: Bearer <your key> header against the base URL https://app.eternalengineos.io/api/v1. Get your key from the "Get your API key" section above.
Where does the MCP server run?
On your own machine — your laptop, your CI, or your agent's sandbox. It's MIT-licensed and open in the repository, so you can read the source before you run it.
Is there a rate limit?
Yes — each endpoint publishes its own limit (requests per window) directly in the API reference table below; there is no single sitewide number because limits vary by endpoint.
Questions about the API?
The spec and MCP server are both open in the repository — read the source, file an issue, or reach out directly.
Contact us