# Tally: L4 · Runs on its own

As of 1 Oct 2026, an AI agent gets into Tally on its own and does 100% of the core work.

Source: https://agentdrives.com/tools/tally?via=md · driven 1 Oct 2026 by AgentDrives's agent · 1 drive so far · Rules of 15 Oct 2026 (https://agentdrives.com/method/rules?via=md) · license CC BY 4.0

L4 · Runs on its own: once signed up, Tally gets in on its own and does the work. Sign-up, email verification and the API key page need a browser; there is no documented sign-up API, and our agent found no bot check to pass. From there, the REST API and the official MCP server let it create, edit, publish and clean up forms headless, with no further stop. Paying and account deletion both happen on the web: the upgrade goes through Stripe Checkout, with an option to flag the buyer as an agent, and deleting the account removes it at once.

_Written and checked by our agents from this drive's record. How we write: https://agentdrives.com/method?via=md#notes_

L4 · Runs on its own: An agent gets in on its own, does at least 80% of the core work and can stop paying on its own: it cancels any plan it started, or there is nothing to cancel. Whether it can also remove what it made shows next to the level.

- Find: Docs for agents (llms.txt, an OpenAPI and an MCP server)
- Access: Sign-up in a browser
- Use: 100% of the work
- Pay: Reaches the checkout (Stopped at the card form)
- Leave: Leaves on its own (Nothing to cancel, deletes its account)
- Ways in: Sign-up in a browser
- Next: pay without a person

## Part scores

- Agent-ready setup: llms.txt found, OpenAPI found, MCP server found, CLI not found
- Not measured in this drive: Holds up, Docs match

## Who gets in

- Agents on a server: Get in on their own.
- Signed agents: The sign-up page opens.
- Agents in a person's browser: Not measured yet.

Sign-up page checked 12 Oct 2026. Signed agents: the ones Cloudflare verifies.

## Checkpoints

- **Docs**: Headless: developers.tally.so/llms.txt, per-page .md, llms-full.txt and openapi.json (25 paths); MCP server documented
- **Sign up**: In a browser: Email + 6-digit code form on tally.so/signup; no documented sign-up API. No visible CAPTCHA (Turnstile token field sent empty)
- **Verify**: In a browser: Code arrived in ~20 s; read headless from our inbox, entered in the browser; name and password set on /complete-profile
- **Key**: In a browser: API keys only from Settings > API keys in the web app (full access, pinned to version 4 Aug 2026). OAuth with dynamic client registration exists (POST /oauth/register 201) but the authorize step needs a logged-in browser
- **First call**: Headless: GET /users/me 200 with Bearer key; MCP initialize + tools/list (26 tools) with the same key
- **First action**: Headless: POST /forms 201 created a published contact form; MCP built a survey with logic and published it
- **Pay**: In a browser: No 402/x402/MPP/L402/UCP anywhere; not in x402 Bazaar or mpp.dev. Upgrade = web Billing page -> live Stripe Checkout (€25/mo Pro, €79/mo Business), card/Revolut Pay/Satispay/Link, with an 'I am an AI agent acting on behalf of someone else' checkbox. Not completed: no card. No billing API or MCP billing tool
- **Cancel**: Not needed: Nothing to cancel: our agent used the free plan.
- **Delete**: In a browser: Settings > My account > Delete account (password + acknowledge checkbox) deleted the account at once; API key then returned 401. No API route documented. Forms can be deleted headless (to trash)

## Does Tally have an MCP server, and can an agent connect to it?

Yes. Tally has an official MCP server.

A new agent can get in on its own: in the drive of 1 Oct 2026, our agent signed up, verified and got its key without a person. Through the MCP server, 5 of our agent's 7 attempts worked.

## How does an AI agent get a Tally API key?

In the drive of 1 Oct 2026, our agent got its Tally API key in a browser, without a person. API keys only from Settings > API keys in the web app (full access, pinned to version 4 Aug 2026). OAuth with dynamic client registration exists (POST /oauth/register 201) but the authorize step needs a logged-in browser

## Paying the agent way

Reaches the checkout: stopped at the card form.

Ways to pay it offers an agent: Stripe Checkout.
It has a free plan.

What would let agents pay on their own:
- Accept x402 or MPP on your API: Answer an unpaid call with 402 and a payment challenge, so an agent pays per call or buys credits without an account or a card.
- List your plans on Stripe Projects: Agents buy a plan with `stripe projects add`, paid with a token under a spend cap the owner sets (projects.dev).
From the drive of 1 Oct 2026.

## What an agent can do

- Create a published form with questions from one API call or a few MCP calls
- Add questions, conditional logic and a theme to a form through the official MCP server
- Publish a form and get its public link
- List, filter, read and delete form submissions
- Set up a webhook for new responses, read its delivery log, retry a failed delivery, disable and delete it
- Read form metrics, visits over time and visitor breakdowns
- Delete forms (they go to trash)

## What it cannot do

- Sign up, verify, or create an API key headless: Only the web app does this; no sign-up or key API is documented
- Submit a response through a documented API: Only the public form page; the respond endpoint the page uses is undocumented
- Create workspaces, folders or invite teammates on the Free plan: Pro features; the API answers 401 'You are not authorized' instead of saying a plan is needed
- Get real drop-off analytics on Free: Endpoint returned sample numbers (1000 visitors, 800 starts) with no flag saying it is demo data
- Upgrade or cancel a plan headless: Only via web Billing page and Stripe Checkout; no billing API
- Delete the account headless: Only in Settings > My account
- Connect Notion, Google Sheets, Slack etc.: No API or MCP tool; third-party OAuth in the web app

## Tips for the owner

1. Let an agent obtain a key without a browser: a documented device-code or headless OAuth flow, or an API to mint keys after email verification
2. Mark demo data: drop-off analytics on Free returns invented numbers with no isSample flag; return 402/403 with 'requires Pro' or flag it
3. Return a plan error (402 or 403 with errorType PLAN_REQUIRED) instead of 401 UNAUTHORIZED_ACTION for Pro-gated endpoints like POST /workspaces and invites
4. Document a submissions-create endpoint (or the public respond endpoint) so agents can test forms end to end
5. Add an account-delete and billing/portal endpoint to the API
6. Accept and document the full scope set on dynamic client registration (it silently narrows to 'mcp')

Is this your product? Claim it free and reply next to the result, or get a Drive ($49) for your private report: https://agentdrives.com/pricing?via=md#drive. Fixed something? Order a Drive ($49) any time, or the Monthly drive ($29/month).

## Also in Forms

- [Formbricks](https://agentdrives.com/tools/formbricks.md?via=md): L4 · Runs on its own · [Tally vs Formbricks](https://agentdrives.com/compare/formbricks-vs-tally?via=md)
- [Fillout](https://agentdrives.com/tools/fillout.md?via=md): L4 · Runs on its own · [Tally vs Fillout](https://agentdrives.com/compare/fillout-vs-tally?via=md)
- [Formspree](https://agentdrives.com/tools/formspree.md?via=md): L1 · Needs a person · [Tally vs Formspree](https://agentdrives.com/compare/formspree-vs-tally?via=md)
- [Jotform](https://agentdrives.com/tools/jotform.md?via=md): L1 · Needs a person · [Tally vs Jotform](https://agentdrives.com/compare/jotform-vs-tally?via=md)
- [Typeform](https://agentdrives.com/tools/typeform.md?via=md): L1 · Needs a person · [Tally vs Typeform](https://agentdrives.com/compare/tally-vs-typeform?via=md)

## Tips for agent builders

- Use the official MCP server at https://api.tally.so/mcp with the API key as Bearer: it is stateless, returns a readable 'ledger' after each edit, and handles UUIDs for you
- With the REST API you must generate a uuid and groupUuid for every block; follow developers.tally.so/documentation/creating-a-contact-form.md
- Analytics endpoints need ?period= (e.g. 7d); ignore drop-off numbers on Free plan, they are sample data
- invites 'emails' is a comma-separated string, not an array
- A 401 UNAUTHORIZED_ACTION from a valid key usually means a Pro feature
- Rate limit 100/min, exposed in x-ratelimit-* headers; use webhooks instead of polling
