For Agents
Call Python server functions, query data table rows, and hit HTTP endpoints in any deployed Anvil app using a per-app bearer token.
Get started with Anvil Works API in minutes using your preferred integration method.
# Add to your MCP client config (Claude Desktop, Cursor, Windsurf)
{
"jentic": {
"url": "https://api.jentic.com/mcp",
"auth": "oauth"
}
}
# Then ask your agent:
"call an Anvil server function"
# → Jentic returns the GET /events tool with parameter schema, agent executes.What an agent can do with Anvil Works API API.
Invoke a named Python server function in a deployed Anvil app and receive its return value
Read, filter, and write rows in an Anvil data table without writing custom server code
Call user-defined HTTP endpoints registered inside an Anvil app from external systems
Look up the Anvil runtime version to confirm an app is reachable before issuing a call
GET STARTED
Use for: I need to call an Anvil server function from my agent, I want to read rows from an Anvil data table, Insert a new row into an Anvil data table, Check whether an Anvil app is online and which runtime version it uses
Not supported: Does not handle UI rendering, app deployment, or user authentication flows - use for invoking server functions, data table rows, and custom HTTP endpoints in already-deployed Anvil apps only.
Jentic publishes the only available OpenAPI document for Anvil Works API, keeping it validated and agent-ready.
Jentic publishes the only available OpenAPI specification for Anvil Works API, keeping it validated and agent-ready. Anvil is a platform for building full-stack web applications in Python, and its HTTP API exposes server functions, data tables, and HTTP endpoints to outside callers. Agents can invoke a deployed Anvil server function by name, read or write rows in an Anvil data table, and call user-defined HTTP endpoints exposed by an Anvil app. The API is lightweight (five endpoints) and authenticated with a per-app bearer token issued from the Anvil editor.
Authenticate per-app with a bearer token scoped to a single Anvil application
Patterns agents use Anvil Works API API for, with concrete tasks.
★ Internal tool back end
Use Anvil as the back end for an internal Python tool and let an external agent invoke its server functions over HTTPS. The agent calls /api/{app_id}/call/{function_name} with arguments, and Anvil runs the corresponding Python function in the cloud and returns the result. This avoids standing up a separate API service for small Python utilities.
POST to /api/{app_id}/call/send_report with {"args": ["q3"], "kwargs": {}} and return the function's response payload
Lightweight data table operations
Use Anvil data tables as a hosted Postgres-backed store and read or write rows directly through the HTTP API. Agents can list rows in /api/{app_id}/tables/{table_name}/rows, fetch a specific row by id, or post a new row, without writing any server-side Python. Useful for prototypes and small apps that do not need a dedicated database service.
GET /api/{app_id}/tables/customers/rows with a filter on email, then POST a new row if no match is found
Custom HTTP endpoints in an Anvil app
Anvil apps can expose user-defined HTTP endpoints under /http/{app_id}/{path}. Agents call these to trigger arbitrary logic inside the app, for example webhooks from third-party services or internal automation hooks. Anvil handles auth, routing, and Python execution server-side.
POST a Stripe webhook payload to /http/{app_id}/stripe-webhook and confirm a 200 response
AI agent integration via Jentic
An agent that needs to interact with a deployed Anvil application can search Jentic for the right Anvil operation, load the input schema, and execute the call without ever handling the raw bearer token. Jentic stores the per-app token and injects it server-side, so the agent only sees the function name and arguments.
Search Jentic for 'call an Anvil server function', load the schema for /api/{app_id}/call/{function_name}, and invoke it with the user's arguments
5 endpoints — jentic publishes the only available openapi specification for anvil works api, keeping it validated and agent-ready.
METHOD
PATH
DESCRIPTION
/api/{app_id}/call/{function_name}
Invoke a deployed Python server function by name
/api/{app_id}/tables/{table_name}/rows
List rows in an Anvil data table
/api/{app_id}/tables/{table_name}/rows/{row_id}
Fetch a single data table row by id
/http/{app_id}/{path}
Call a user-defined HTTP endpoint inside an Anvil app
/api/version
Return the Anvil runtime version for diagnostics
/api/{app_id}/call/{function_name}
Invoke a deployed Python server function by name
/api/{app_id}/tables/{table_name}/rows
List rows in an Anvil data table
/api/{app_id}/tables/{table_name}/rows/{row_id}
Fetch a single data table row by id
/http/{app_id}/{path}
Call a user-defined HTTP endpoint inside an Anvil app
/api/version
Return the Anvil runtime version for diagnostics
Three things that make agents converge on Jentic-routed access.
Credential isolation
Anvil per-app bearer tokens are stored encrypted in the Jentic vault (MAXsystem) and never enter the agent context. Jentic injects the right token for the right app id at call time.
Intent-based discovery
Agents search Jentic by intent (for example, 'call an Anvil server function' or 'read rows from an Anvil table') and Jentic returns the matching operation with its argument schema, so the agent does not need to read the Anvil HTTP API docs.
Time to first call
Direct integration: 1-2 days to wire up auth, request signing, and table row pagination. Through Jentic: under 30 minutes - search, load, execute.
Alternatives and complements available in the Jentic catalogue.
Airtable API
Hosted relational store with REST CRUD on tables, similar feel to Anvil data tables.
Pick Airtable when the workflow is data-first and does not need server-side Python execution; pick Anvil when the agent must call Python logic alongside the table reads.
GitHub API
Source control for the Python repo behind the Anvil app.
Use GitHub to manage the source of an Anvil app's git-linked repo while using Anvil to invoke the deployed runtime.
Stripe API
Accept payments inside an Anvil-built web app via webhooks routed through /http/{app_id}/{path}.
Pair with Anvil when the deployed app needs payment processing and Stripe webhooks need to land on Anvil HTTP endpoints.
Specific to using Anvil Works API API through Jentic.
Why is there no official OpenAPI spec for Anvil Works API?
Anvil Works does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call Anvil Works API via structured tooling. It is validated against the live API and kept up to date. Get started at https://app.jentic.com/sign-up.
What authentication does the Anvil Works API use?
Anvil uses HTTP bearer authentication with a per-app token issued from the Anvil editor. Through Jentic the token is stored in the encrypted MAXsystem vault and injected at call time, so the agent context never sees the raw bearer value.
Can I read and write data table rows with the Anvil Works API?
Yes. GET /api/{app_id}/tables/{table_name}/rows lists rows, GET /api/{app_id}/tables/{table_name}/rows/{row_id} fetches one row, and POSTs to the same collection insert new rows. Filters are passed as query parameters.
How do I call an Anvil server function through Jentic?
Search Jentic for 'call an Anvil server function', load the schema for /api/{app_id}/call/{function_name}, and execute it with the function name and arguments. Jentic returns the function's serialised return value to the agent.
What are the rate limits for the Anvil Works API?
Limits depend on the plan attached to the Anvil app and are not declared in the OpenAPI spec. Hobby plans have lower per-minute caps than paid plans. Check the dashboard of the specific app for its current quota.
Can the API trigger arbitrary Python code in an Anvil app?
Only Python functions registered in the app as @anvil.server.callable can be invoked, and only HTTP endpoints decorated with @anvil.server.http_endpoint are reachable under /http/{app_id}/{path}. The API does not execute arbitrary code outside those decorators.