AI Assistant (MCP)
Connect an AI assistant to an Easy2257 account over the Model Context Protocol. Read-only, no performer identity data, included with every producer plan.
Easy2257 runs a Model Context Protocol server at https://easy2257.com/api/mcp. It lets a producer's AI assistant read that producer's compliance state and answer in plain language: which scenes still need something, what expires next, whether a production is ready to finalize, whether a certificate someone sent them is genuine. It works with Claude, ChatGPT, Gemini, Copilot, Cursor, and any other client that speaks MCP.
It is read-only by design. Nothing reachable through it can create, change, sign, or delete a record, activate a scene, or spend money, and it never returns performer identity data.
This is not the Partner API. The Partner API (/api/v1, ez_live_ keys from the partner portal) is for platforms and can write records. The MCP connection (/api/mcp, ez_mcp_ keys from a producer's account, or sign-in) is for producers and can only read. A producer who wants to ask their assistant about their records wants this page. A platform integrating Easy2257 wants the Quickstart.
| Partner API | MCP connection | |
|---|---|---|
| Who uses it | Platforms integrating Easy2257 | Producers and solo creators, through an AI assistant |
| Can it write | Yes: provisions creators, opens scenes, delivers certificates | No. Sixteen read-only tools |
| Credential | ez_live_ key, created at partner.easy2257.com/api-keys | ez_mcp_ key, created at Account, then MCP Keys, or OAuth 2.1 sign-in |
| Base URL | https://easy2257.com/api/v1 | https://easy2257.com/api/mcp |
| Reference | The rest of this site | This page, plus the producer-facing guide at easy2257.com/ai-assistant |
Endpoint and discovery
- Transport: Streamable HTTP, stateless. Clients POST JSON-RPC to the endpoint; there is no session to hold between calls.
- Server card:
/.well-known/mcp/server.json - OAuth discovery:
/.well-known/oauth-authorization-serverand/.well-known/oauth-protected-resource - Unauthenticated requests answer
401with a bearer challenge whoseresource_metadatapoints at the protected-resource document, which is what an MCP client needs to start a sign-in on its own.
Authentication
Two credentials, one authorization story. A pasted key and a sign-in token resolve to the same account, the same tools, and the same scoping; nothing downstream can tell them apart.
MCP keys
- Created by the producer at Account, then MCP Keys. Prefix
ez_mcp_. Up to ten active keys per account. - The secret is shown once at creation and stored only as a hash. Rotate or revoke any key at any time. Every key on the account is revoked automatically when the password is reset.
- Send it as a bearer token:
Authorization: Bearer ez_mcp_...- Keys are live only. They need an active subscription; every plan includes MCP access.
Sign-in (OAuth 2.1)
For clients that connect by sign-in instead of a pasted key (ChatGPT, Claude on the web and desktop, and others with a connectors screen).
| Grant | Authorization code with PKCE, S256 only. No implicit, password, or client-credentials grants. |
| Scope | mcp:read, the only scope. It is read-only access to the signed-in producer's own records. |
| Client identification | Client ID Metadata Documents: client_id is an https URL that serves the client's own metadata (name, redirect URIs). There is no dynamic registration endpoint. Public clients only (token_endpoint_auth_methods_supported: ["none"]). |
| Authorize | https://easy2257.com/oauth/authorize |
| Token | https://easy2257.com/api/oauth/token |
| Revoke | https://easy2257.com/api/oauth/revoke |
| Lifetimes | Access token 1 hour. Refresh token 30 days idle, rotated on every use. |
The producer approves the connection on an Easy2257 consent screen that names the client and states what it can and cannot read. Connected clients are listed under Account, then MCP Keys with a one-click disconnect, which revokes the grant immediately.
Refusals
| Response | Meaning | What a client should do |
|---|---|---|
401 with WWW-Authenticate: Bearer | No credential, or one that is unknown, revoked, or expired | Re-authenticate |
403 ACCOUNT_LOCKED | The account is temporarily locked | Stop. Re-authenticating will not help |
403 SUBSCRIPTION_REQUIRED | No active subscription entitles the connection | Stop and tell the producer; billing is fixed on the site, not by the agent |
Neither response reveals whether a given key exists. Locked and unentitled accounts deliberately answer 403 rather than 401, so an agent refused over billing does not loop on re-authentication.
Connecting a client
claude mcp add --transport http easy2257 https://easy2257.com/api/mcp \
--header "Authorization: Bearer ez_mcp_..."Cursor, VS Code, Windsurf, Gemini CLI, Codex CLI, and most editor assistants take a block like this in their MCP config:
{
"mcpServers": {
"easy2257": {
"type": "http",
"url": "https://easy2257.com/api/mcp",
"headers": {
"Authorization": "Bearer ez_mcp_..."
}
}
}
}In the assistant's connector or integration settings, add a custom connector with the URL https://easy2257.com/api/mcp. The client reads the discovery documents, sends the producer to Easy2257 to sign in and approve, and holds a token no one copied. There is no key to paste.
Tools
Sixteen tools, all read-only. Results are always scoped to the authenticated account; a record that belongs to someone else comes back as found: false, the same as one that does not exist.
Productions and scenes
| Tool | Returns |
|---|---|
list_productions | The account's productions, newest first, with documentation status, scene counts by status, and the state of the latest compliance certificate. Paginated with nextCursor. |
get_production | One production with its scenes, each carrying its status and a count of what is still outstanding (pending invites, unverified identities, unsigned forms and documents, missing releases). |
get_scene_compliance | Per-participant compliance state for one scene, by id or SCENE- code: invite state, identity verification state and freshness, form and document counts, model release. |
list_compliance_gaps | Scenes with outstanding work and what is outstanding on each. Filter by attestationSource to see every scene carrying a given provenance. |
list_expiring_documents | Assigned documents expiring within a number of days, across the account's scenes. |
Certificates and archives
| Tool | Returns |
|---|---|
get_certificate | Every compliance certificate issued for one production with its lifecycle state (CURRENT, SUPERSEDED with supersededBy, REVOKED). Delivery state is included when the caller owns the linked partner registration. |
verify_certificate | Checks a certificate belonging to any account: pass the full JWT to verify its signature, or a code to check its state. Lookups of certificates you do not own are rate limited. |
get_archive_status | The sealed archive for a finalized production: when it was sealed, whether it is locked, headline counts, and the SHA-256 hashes of the package and report. |
Account
| Tool | Returns |
|---|---|
get_account_status | Plan, subscription state, scene allowance for the current period, whether the 2257 custodian statement is published, and the most recent acquirer report period. |
get_removal_requests_summary | Removal requests linked to the account's own productions or scenes: counts by status and legal basis, plus open items with deadlines. |
list_notifications | Notification types and timestamps with the record each concerns. Titles and bodies are not returned. |
list_webhook_deliveries | Delivery attempts for the webhook endpoints registered under the account's own partner registration: event type, HTTP status, attempts, outcome. Payloads are not returned. |
get_compliance_requirements | What a complete record looks like: document tiers, participant roles, the checks that produce a gap, and the document templates this account can use. |
Solo creators and public codes
| Tool | Returns |
|---|---|
list_content_logs | A solo creator's own content logs: code, title, type, platform, date, depiction count, and the public lookup URL. Requires a solo creator plan. |
get_content_log | One content log by LOG- code or id, with its attestation state and public lookup URL. |
verify_record | Any Easy2257 record by its public code (SCENE-, a project code, or LOG-) and the evidence state behind it: complete or not, how many participants are satisfied, outstanding, or awaiting an undecided identity. Lookups of records you do not own are rate limited. |
Resources
The server also publishes six easy2257:// resources (data-model, closed-scenes, certificates, provenance, removals, solo). They explain the parts of the data model that surprise people: how a person maps to a record, what can and cannot change after a scene closes, when certificates are delivered, why an imported record never upgrades to a verified one, and what happens to a record after it is removed. An assistant that reads them before explaining an odd-looking result will explain it correctly.
What comes back, and what never does
Every tool returns compliance state: ids, public codes (PROD-, SCENE-, LOG-), statuses, counts, timestamps, SHA-256 hashes, and short labels of the caller's own records (a production title, a key name).
No tool returns performer names, dates of birth, ID numbers, images, file paths, document contents, IP addresses, notification bodies, webhook payloads, or anything about a removal-request claimant. Those fields are not filtered out of responses; they are never selected in the first place, and an automated sweep calls every tool against poisoned rows on every build to keep it that way. This is why the connection is safe to point at a shared assistant: there is no identity data in it to leak.
Limits
- One account per credential. A key or token sees the account that issued it and nothing else.
- Foreign lookups are budgeted.
verify_recordandverify_certificateon records the caller does not own are rate limited per credential. Once the budget is spent, the tool answers the same way whether or not the code exists. Lookups of your own records are not budgeted. - No paid or attesting path. Scene activation, checkout, attestations, and signatures happen at easy2257.com, by a person, on purpose. An assistant asked to do any of those should point the producer at the site.
- Every call is logged against the credential that made it, and a producer can see when each key or connection was last used.
Producer-facing setup guide: easy2257.com/ai-assistant.
Listed in the official MCP registry as io.github.Agaveis/easy2257-mcp. The registry entry, the connector's privacy statement, and example prompts are at github.com/Agaveis/easy2257-mcp.