Developers and agents
Espres resources for developers and AI agents
Everything an integrator or an automated agent needs to read, understand and evaluate Espres: machine-readable files, Markdown content negotiation, the permission model, and the route to programmatic access.
Machine-readable files
All of them are served from the canonical domain https://www.espres.app and require no authentication.
- /llms.txt
- A plain-text index of every public page with its description, the product's key facts, and an explicit section on when to use Espres and when not to. This is the recommended entry point for an agent.
- /sitemap.xml
- The complete set of public URLs with reciprocal Spanish/English hreflang.
- /robots.txt
- Crawl rules. The authenticated application routes are excluded: they are not reachable without a session.
Markdown content negotiation
Every public page returns clean Markdown when the request sends the Accept: text/markdown header, and the response carries Vary: Accept so no intermediate cache can mix the two representations. A client that accepts neither text/html nor text/markdown gets 406 Not Acceptable. Quality values are honoured, including q=0 as an explicit rejection.
- Example
- curl -H "Accept: text/markdown" https://www.espres.app/en/pricing
- The .md suffix
- Appending .md to a path returns the same Markdown representation with no Accept header at all, for example https://www.espres.app/en/pricing.md.
- Paths that do not exist
- A nonexistent path answers with a real 404, never a 200 carrying the application shell, and the body includes the site index so an agent can recover without guessing more paths.
Permission model
Access is decided per organization, role and module. It is not only a check in the interface: every table carries its organization and a restrictive row-level policy in the database, and every server action re-checks the permission.
- Organization isolation
- Each organization is an independent tenant. No session can read or write another organization's rows, even if the application asked it to.
- admin role
- Full access: customers, sales, inventories, products and organization administration, including subscription billing.
- supervisor role
- Customers, sales, inventories and products, without the administration module. Can additionally be scoped to a specific team of sellers.
- vendedor (seller) role
- Route selling. Creates and edits customers only from the sales flow; sees no inventories, products or administration.
- Per-user module grants
- Payroll, CFDI invoicing and production are granted per user from the administration screen, on top of the base role.
Programmatic access
Espres does not publish a public REST API or an OAuth 2.0 authorization server for third-party applications today, and this page does not advertise endpoints that do not exist. The supported ways to move data are the web application, the Android field app, the built-in CSV import and export, and the WhatsApp order channel.
- Need an integration?
- Write to hola@espres.app with the use case, the data you need to read or write, and the expected volume. We reply with the options available.
- CSV import and export
- Customers, products and price lists import and export as CSV from the application. Import never deletes: a blank cell preserves the existing value.
Building something on top of Espres?
Tell us what you need and what you are integrating.
Create a free accountWrite to us hola@espres.app