# eCMR Hub > eCMR Hub lets a company and its AI agents issue e-CMR consignment notes, collect signatures and check eFTI data gaps through an API, a CLI and a remote MCP server. A person approves in the dashboard what cannot be undone. Every page is Markdown at its URL plus `.md` (the links below already are). All pages in one file: https://docs-ecmrhub-v2.lucaspiera.com/llms-full.txt. OpenAPI contract: https://docs-ecmrhub-v2.lucaspiera.com/openapi.json. Operation catalog with input schemas: https://docs-ecmrhub-v2.lucaspiera.com/operations.json. > Documentation for companies and their AI agents. - [Overview](https://docs-ecmrhub-v2.lucaspiera.com/docs.md): What eCMR Hub is, who uses it, and how a company and its agents work with it. - [Quickstart for agents](https://docs-ecmrhub-v2.lucaspiera.com/docs/quickstart.md): Sign in, learn the fields, create a draft and issue it after a person approves. Written for an AI agent working for one company. - **Connect** - [Authentication](https://docs-ecmrhub-v2.lucaspiera.com/docs/authentication.md): How an agent or program connects to a company account, with OAuth or an API key, and what each permission allows. - [Human approvals](https://docs-ecmrhub-v2.lucaspiera.com/docs/approvals.md): Which calls need a person's approval, what Hub answers (428), where the person approves, and how the agent repeats the call. - [MCP & connectors](https://docs-ecmrhub-v2.lucaspiera.com/docs/mcp.md): Connect Claude, ChatGPT or another MCP client to a company account through the Hub remote MCP server, and how its tools behave. - CLI - [CLI reference](https://docs-ecmrhub-v2.lucaspiera.com/docs/cli.md): The ecmrhub command line for terminals, coding agents and CI. Sign-in, commands, JSON output, exit codes and approvals. - [Operation catalog](https://docs-ecmrhub-v2.lucaspiera.com/docs/cli/operations.md): Every operation of the Hub catalog with its permission, approval rule and who may call it. Generated from @ecmrhub/sdk. - **Reference** - API reference - [API reference](https://docs-ecmrhub-v2.lucaspiera.com/docs/api.md): The Hub HTTP API from its OpenAPI contract. Base URL, headers, conventions, and one page per endpoint. - Approvals - [Approve (a person only)](https://docs-ecmrhub-v2.lucaspiera.com/docs/api/approvals/approveApproval.md): A person of the company approves the call. Connections, API keys and the assistant are refused. - [Read an approval](https://docs-ecmrhub-v2.lucaspiera.com/docs/api/approvals/getApproval.md): One approval with its status (pending, approved, rejected, consumed, expired). Poll it after 428 APPROVAL_REQUIRED, then repeat the call with the x-ecmr-approval header. - [List approvals](https://docs-ecmrhub-v2.lucaspiera.com/docs/api/approvals/listApprovals.md): Approvals newest first, optionally by status. A person sees the whole company's; an OAuth connection or an API key sees only its own. - [Reject (a person only)](https://docs-ecmrhub-v2.lucaspiera.com/docs/api/approvals/rejectApproval.md): A person of the company rejects the call. Connections, API keys and the assistant are refused. - Connections - [List connections (a person only)](https://docs-ecmrhub-v2.lucaspiera.com/docs/api/connections/listConnections.md): OAuth agents and programs and API keys of the company, on one list. - [Disconnect (owner only)](https://docs-ecmrhub-v2.lucaspiera.com/docs/api/connections/revokeConnection.md): Revokes an API key, or disconnects an OAuth connection with its sessions and grant. Its pending approvals expire. - [Change a connection (owner only)](https://docs-ecmrhub-v2.lucaspiera.com/docs/api/connections/updateConnection.md): Changes the permissions of a connection or whether its writes wait for a person's approval. - [Who am I](https://docs-ecmrhub-v2.lucaspiera.com/docs/api/connections/whoami.md): The kind of caller (user, apikey or connection), its company, permissions and, for a connection or an API key, whether its writes wait for a person's approval. - Documents - [Download the document PDF](https://docs-ecmrhub-v2.lucaspiera.com/docs/api/documents/getDocumentPdf.md): Presentation PDF of the current issued version, with its SHA-256. - [Read document evidence](https://docs-ecmrhub-v2.lucaspiera.com/docs/api/documents/getEvidence.md): Canonical evidence of a document: versions, events, signatures and the digest chain. - [List documents](https://docs-ecmrhub-v2.lucaspiera.com/docs/api/documents/readDocuments.md): Issued documents of the company. Returns an array; an id you cannot see returns an empty array. - [Read document types](https://docs-ecmrhub-v2.lucaspiera.com/docs/api/documents/readTypeDefinitions.md): Definitions of document types by name and version. - [Read document versions](https://docs-ecmrhub-v2.lucaspiera.com/docs/api/documents/readVersions.md): Immutable versions of a document. Returns an array; an id you cannot see returns an empty array. - Drafts - [Delete a draft](https://docs-ecmrhub-v2.lucaspiera.com/docs/api/drafts/delete_draft.md): Deletes a draft that was not issued. An issued document cannot be deleted (409 DRAFT_ISSUED). May need a person's approval. - [List drafts](https://docs-ecmrhub-v2.lucaspiera.com/docs/api/drafts/list_drafts.md): Drafts of the company, newest first, one cursor page at a time. - [Issue a draft](https://docs-ecmrhub-v2.lucaspiera.com/docs/api/drafts/publishDraft.md): Issues one immutable document from a complete draft revision. Issuing the same draft again returns the same document. May need a person's approval. - [Save a draft](https://docs-ecmrhub-v2.lucaspiera.com/docs/api/drafts/save_draft.md): Creates a draft or saves a new revision. Send the revision you started from; a newer one on the server answers 409 VERSION_CONFLICT. The operation id makes a retry safe. - Signer - [Signer: read the document](https://docs-ecmrhub-v2.lucaspiera.com/docs/api/signer/getSignEvidence.md): Called by the person who opened a signing link, with its token. Expired or revoked links answer 410. - [Signer: download the PDF](https://docs-ecmrhub-v2.lucaspiera.com/docs/api/signer/getSignPdf.md): The PDF the signer must be shown, read with the signing link token. - [Signer: sign](https://docs-ecmrhub-v2.lucaspiera.com/docs/api/signer/submitSignConsent.md): The signer's consent for one role and document digest, sent with the signing link token. - Signing links - [Create a signing link](https://docs-ecmrhub-v2.lucaspiera.com/docs/api/signing-links/create_sign_grant.md): Creates a signing link for one party of an issued document, valid for 7 days. Reuse the idempotency key on retry. May need a person's approval. - [Revoke a signing link](https://docs-ecmrhub-v2.lucaspiera.com/docs/api/signing-links/revoke_sign_grant.md): Revokes one signing link. May need a person's approval. - [Revoke the signing links of a document](https://docs-ecmrhub-v2.lucaspiera.com/docs/api/signing-links/revoke_sign_grants.md): Revokes the signing links of a document. May need a person's approval. - [Errors](https://docs-ecmrhub-v2.lucaspiera.com/docs/errors.md): Error format, status codes and the codes an agent should handle, with what to do for each. - [eFTI readiness](https://docs-ecmrhub-v2.lucaspiera.com/docs/efti.md): What Hub does with eFTI data today (validation and a list of gaps) and what it does not do. - [Changelog](https://docs-ecmrhub-v2.lucaspiera.com/docs/changelog.md): Changes to eCMR Hub that affect agents and integrations, newest first.