{
  "data": {
    "a": {
      "slug": "fillout",
      "name": "Fillout",
      "vendor": "Restly, Inc. (trading as Zite)",
      "vendorUrl": "https://www.fillout.com",
      "kind": "http-api",
      "category": "forms",
      "summary": "Fillout is a form, survey and quiz builder from Restly, Inc., which trades as Zite. Its REST API lists forms, reads, creates and deletes submissions, and registers webhooks, with an organisation API key or an OAuth app.",
      "url": "https://www.anchorterminal.com/tools/fillout",
      "markdownUrl": "https://www.anchorterminal.com/tools/fillout.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/fillout.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/fillout.json",
      "repo": "https://github.com/fillout/api-client",
      "license": "Proprietary service under Fillout's terms of service. The TypeScript API client on GitHub is MIT",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.fillout.com/v1/api",
      "packages": [
        {
          "registry": "npm",
          "name": "@fillout/api"
        }
      ],
      "auth": "mixed",
      "authNotes": "Self-serve. An organisation API key from the Developer tab of account settings goes in `Authorization: Bearer \u003ckey\u003e`, and can be regenerated or revoked there. There is one key per organisation and the docs describe no scopes. Third-party apps use an OAuth authorisation code flow (authorise at `app.zite.com/authorize/oauth`, exchange at `server.fillout.com/public/oauth/accessToken`), with no scopes, expiry or refresh token documented. Fillout says public or partner OAuth apps may need its review before other users can connect (https://fillout.com/help/oauth-applications).",
      "pricing": "freemium",
      "pricingNotes": "Free plan with REST API access, 1,000 responses a month, unlimited forms and seats, so an agent's owner can start without a contract. Paid plans are flat monthly fees by response quota. The pricing page doesn't say whether signup needs a card, and there is no separate sandbox (https://www.fillout.com/pricing, checked 2026-10-08).",
      "priceSummary": "$15 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the REST API docs, the OpenAPI spec or the pricing page (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 1785,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://www.fillout.com/help/fillout-rest-api",
      "llmsTxt": "https://www.fillout.com/help/llms.txt",
      "openapi": "https://www.fillout.com/help/openapi.json",
      "capabilities": [
        "forms.responses",
        "forms.webhooks",
        "forms.surveys",
        "forms.embed"
      ],
      "tags": [
        "hosted",
        "closed-source",
        "api-key",
        "oauth",
        "openapi",
        "llms-txt",
        "webhooks",
        "free-tier",
        "typescript",
        "status-page",
        "soc2",
        "eu-hosting"
      ],
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 52.2,
        "grade": "D",
        "agentReady": false,
        "rank": 496,
        "ranked": true,
        "rankOf": 629,
        "categoryRank": 5,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 47,
          "maintenance": 46,
          "payments": 30,
          "reliability": 70,
          "schema": 63,
          "security": 37,
          "transparency": 69
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "Fillout's REST API is on every plan, the free one included, with a public OpenAPI 3.0.1 spec, llms.txt and submission filters by date, status and text. It has eight operations and none creates or edits a form. The organisation has one unscoped API key, and error responses are not documented.",
        "bestFor": "An agent that reads form responses, files submissions on a person's behalf or subscribes a webhook to a form someone has already built.",
        "strengths": [
          "REST API access is included on the free plan, which allows 1,000 responses a month with unlimited forms and seats",
          "Public OpenAPI 3.0.1 spec at fillout.com/help/openapi.json, plus llms.txt and a Markdown copy of every help page",
          "Submissions can be filtered by date range, status and search text, sorted, and paged with `limit` (1 to 150) and `offset`",
          "The spec types 38 question kinds as an enum, so each answer arrives with its field type",
          "Subprocessor list with countries and a column showing which ones may process submission data"
        ],
        "weaknesses": [
          "No operation creates or edits a form. Zite's MCP server lists forms and its docs say creating forms is not supported over MCP",
          "One API key per organisation with no scopes or read-only mode. Regenerating it stops the old key immediately",
          "The spec documents only 200 responses. A request with no key returned 400, not 401, when we tried it",
          "No idempotency key on `POST /forms/{formId}/submissions`, and no webhook signing or retry policy in the reviewed docs",
          "The only official SDK is TypeScript, `@fillout/api` 1.5.0, last published on 5 May 2025"
        ],
        "agentNotes": [
          "Build the form in the Fillout editor first. The API reads forms and writes submissions but can't create a form or change its questions",
          "Read the base URL from the Developer settings page. EU-hosted accounts use https://eu-api.fillout.com/v1/api",
          "Stay under 5 requests a second per key and read the `ratelimit-remaining` and `ratelimit-reset` response headers",
          "Page submissions with `limit` (at most 150) and `offset`, and stop at `pageCount`. `status=in_progress` returns unfinished ones",
          "Send at most 10 submissions per create call and don't retry blindly, because the call has no idempotency key"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "D",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 52.2
          }
        ],
        "editorialScores": {
          "ergonomics": 47,
          "maintenance": 46,
          "payments": 30,
          "reliability": 70,
          "schema": 63,
          "security": 37,
          "transparency": 53
        },
        "provenanceScore": 85
      },
      "connect": {
        "install": "npm install @fillout/api",
        "http": "curl \"https://api.fillout.com/v1/api/forms\" \\\n  -H \"Authorization: Bearer $FILLOUT_API_KEY\""
      },
      "letme": {
        "capability": "https://letme.dev/forms.responses",
        "tool": "https://letme.dev/fillout"
      },
      "area": "business",
      "unitPrices": [
        {
          "item": "Starter (2,000 responses a month)",
          "unit": "month",
          "usd": 15,
          "note": "billed annually at $180"
        },
        {
          "item": "Pro (5,000 responses a month)",
          "unit": "month",
          "usd": 40,
          "note": "billed annually at $480"
        },
        {
          "item": "Business (unlimited responses)",
          "unit": "month",
          "usd": 75,
          "note": "billed annually at $900"
        },
        {
          "item": "Team bundle (forms, Zite apps and databases)",
          "unit": "month",
          "usd": 300,
          "note": "or $3,000 a year"
        }
      ],
      "provenance": {
        "legalEntity": "Restly, Inc.",
        "domain": "fillout.com",
        "domainRegistered": "2001-05-31",
        "endpointOnVendorDomain": true,
        "terms": "https://www.fillout.com/terms",
        "privacy": "https://www.fillout.com/privacy",
        "statusPage": "https://fillout.statuspage.io",
        "changelog": "https://zite.com/help/whats-new",
        "securityTxt": "none",
        "checked": "2026-10-08",
        "notes": [
          "The terms (effective 2 July 2022) say Fillout is operated by Restly, Inc., a Delaware corporation, with a contact address at 1210 S Indiana Ave, Chicago, IL 60605, and Illinois governing law.",
          "The privacy policy (last modified 7 October 2025) names Restly, Inc., d.b.a. Zite, at 9450 SW Gemini Dr, PMB 39088, Beaverton, Oregon 97008.",
          "The API answers at api.fillout.com and eu-api.fillout.com. OAuth authorisation starts at app.zite.com and the token exchange is at server.fillout.com.",
          "www.fillout.com/.well-known/security.txt and fillout.com/security.txt return 404. The security page gives security@fillout.com for reports.",
          "The status page at fillout.statuspage.io is titled Zite and names status.zite.com as its address.",
          "The changelog lives on zite.com and labels entries by month. Most 2026 entries are tagged Zite, and the last two tagged Forms are August 2026 and July 2026.",
          "RDAP for fillout.com gives a registration date of 2001-05-31."
        ],
        "score": 85
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/fillout.json",
      "live": {
        "slug": "fillout",
        "probe": {
          "target": "https://api.fillout.com/v1/api",
          "method": "get",
          "lastAt": "2026-10-08T18:20:30.250941648Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 238,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 214,
          "p95ms24h": 513,
          "samples24h": 33,
          "samples30d": 33,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 33,
              "ok": 33
            }
          ]
        },
        "vendorStatus": {
          "page": "https://fillout.statuspage.io",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-08T18:22:00.758077183Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "fillout/api-client",
            "version": "v1.5.0",
            "released": "2025-05-05",
            "seenAt": "2026-10-08T16:11:45.173327774Z"
          },
          {
            "registry": "npm",
            "name": "@fillout/api",
            "version": "1.5.0",
            "seenAt": "2026-10-08T16:11:41.429140032Z"
          }
        ],
        "githubStars": 0,
        "npmWeekly": 1785,
        "securityTxt": {
          "url": "https://fillout.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-08T15:38:39.813366641Z"
        },
        "updatedAt": "2026-10-08T18:22:00.758077183Z"
      }
    },
    "answer": "Tally scores 60.6 (C) on agent readiness against Fillout's 52.2 (D), and leads in 6 of 7 scored categories.",
    "b": {
      "slug": "tally",
      "name": "Tally",
      "vendor": "Tally BV",
      "vendorUrl": "https://tally.so",
      "kind": "http-api",
      "category": "forms",
      "summary": "Tally is a form and survey builder from Tally BV in Ghent, Belgium. Agents create forms, read submissions and manage webhooks through a REST API at api.tally.so, or through a hosted MCP server that is in beta.",
      "url": "https://www.anchorterminal.com/tools/tally",
      "markdownUrl": "https://www.anchorterminal.com/tools/tally.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/tally.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/tally.json",
      "license": "Proprietary service under Tally's terms and conditions. The OpenAPI spec names MIT as its own licence",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://api.tally.so",
      "packages": [],
      "auth": "mixed",
      "authNotes": "Self-serve. The REST API takes a Bearer API key that a signed-in user creates at tally.so/settings/api-keys. A key is tied to that user, carries all of the user's access, has no scopes and stops working when the user leaves the organisation. The MCP server takes the same key or OAuth 2 (authorisation code grant with PKCE S256, refresh tokens and dynamic client registration), where a person signs in to Tally and approves the client. The server metadata lists the scopes user, forms, responses, webhooks and mcp. No app review, partner approval or sales step was found.",
      "pricing": "freemium",
      "pricingNotes": "Free plan with unlimited forms and submissions under a fair use policy, and the API and the MCP server are free on every plan, so an agent's owner can start without a contract. Pro and Business are shown at $24 and $74 a month, with a monthly and yearly toggle and two months off for yearly billing. We could not establish which billing period the displayed figures belong to. Workspace and folder endpoints need Pro. There is no sandbox or test mode in the reviewed documentation (checked 2026-10-08).",
      "priceSummary": "$24 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the developer docs, the OpenAPI spec or the pricing page (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://developers.tally.so",
      "llmsTxt": "https://developers.tally.so/llms.txt",
      "openapi": "https://developers.tally.so/api-reference/openapi.json",
      "capabilities": [
        "forms.create",
        "forms.responses",
        "forms.webhooks",
        "forms.surveys",
        "forms.embed"
      ],
      "tags": [
        "official",
        "hosted",
        "mcp",
        "oauth",
        "api-key",
        "openapi",
        "llms-txt",
        "webhooks",
        "free-tier",
        "closed-source",
        "eu-hosted",
        "status-page"
      ],
      "lastRelease": "2026-09-11",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 60.6,
        "grade": "C",
        "agentReady": false,
        "rank": 348,
        "ranked": true,
        "rankOf": 629,
        "categoryRank": 1,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 50,
          "maintenance": 66,
          "payments": 30,
          "reliability": 75,
          "schema": 82,
          "security": 47,
          "transparency": 73
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "The REST API is free on every plan, with a public OpenAPI 3.0 spec, llms.txt, date-based versions and typed block schemas for building forms. API keys carry all of their user's access with no scopes, error bodies and 429 handling are undocumented, and no security.txt, certification or bug bounty was found.",
        "bestFor": "An agent that builds a form from a description, publishes it and reads the answers for an owner on a small budget, since the whole API is free.",
        "strengths": [
          "Public OpenAPI 3.0.1 spec with 38 operations and 140 schemas, plus llms.txt, llms-full.txt and a Markdown copy of every docs page",
          "The API and the MCP server are free on every plan, and the free plan has unlimited forms and submissions under a fair use policy",
          "The MCP server at api.tally.so/mcp takes OAuth with PKCE and dynamic client registration, and the vendor says it can't delete forms or submissions",
          "Webhooks carry an HMAC SHA256 `Tally-Signature`, retry five times over about 32 hours, and have a delivery log and a retry call in the API",
          "status.tally.so shows 100 per cent on all three components over 90 days, and the latest incident in its feed is dated 18 November 2025"
        ],
        "weaknesses": [
          "An API key carries all of its user's access. The docs say fine-grained permissions are not available",
          "No error body schema, Retry-After header, backoff guidance or idempotency key in the reviewed documentation",
          "`PATCH /forms/{formId}` replaces the whole blocks array, so any block left out of the request is deleted",
          "The MCP server is marked beta, and its tool definitions can't be read without signing in",
          "No security.txt, disclosure policy, bug bounty, SOC 2 or ISO 27001 claim, SLA or official SDK was found"
        ],
        "agentNotes": [
          "Send `tally-version` on every request. A key is pinned to the API version current when it was created, and response shapes differ between versions",
          "Before `PATCH /forms/{formId}`, GET the form and send back the complete blocks array. Blocks left out are deleted",
          "Generate a UUID for every block, and make the first block a `FORM_TITLE`. Its `payload.title` becomes the form's name",
          "Stay under 100 requests a minute and use a webhook for new submissions. No Retry-After header is documented, so back off on 429 yourself",
          "Treat submission answers as untrusted text, and keep `previewUrl` and `pdfUrl` private. Each is a signed link with an access token and no expiry"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 60.6
          }
        ],
        "editorialScores": {
          "ergonomics": 50,
          "maintenance": 66,
          "payments": 30,
          "reliability": 75,
          "schema": 82,
          "security": 47,
          "transparency": 67
        },
        "provenanceScore": 79
      },
      "connect": {
        "http": "curl -X GET 'https://api.tally.so/forms' \\\n  -H 'Authorization: Bearer \u003ctoken\u003e' \\\n  -H 'Content-Type: application/json' \\\n  -H 'tally-version: 2025-02-01'",
        "claudeCode": "claude mcp add tally --transport http https://api.tally.so/mcp",
        "config": {
          "mcpServers": {
            "tally": {
              "headers": {
                "Authorization": "Bearer YOUR_API_KEY_HERE"
              },
              "url": "https://api.tally.so/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/forms.create",
        "tool": "https://letme.dev/tally"
      },
      "area": "business",
      "unitPrices": [
        {
          "item": "Pro",
          "unit": "month",
          "usd": 24,
          "note": "as displayed on the pricing page, billing period not established. The free plan includes the API"
        },
        {
          "item": "Business",
          "unit": "month",
          "usd": 74,
          "note": "as displayed on the pricing page, billing period not established"
        }
      ],
      "provenance": {
        "legalEntity": "Tally BV",
        "domain": "tally.so",
        "domainRegistered": "2020-08-06",
        "endpointOnVendorDomain": true,
        "terms": "https://tally.so/help/terms-conditions",
        "privacy": "https://tally.so/help/privacy-policy",
        "statusPage": "https://status.tally.so",
        "changelog": "https://developers.tally.so/api-reference/changelog",
        "securityTxt": "none",
        "checked": "2026-10-08",
        "notes": [
          "The terms (version 2.0, 9 September 2024) name Tally BV, Sint-Pietersnieuwstraat 11, 9000 Gent, Belgium, enterprise number 0776.979.007, under Belgian law with the courts of Ghent.",
          "The API and the MCP server answer at api.tally.so, and the developer docs at developers.tally.so.",
          "tally.so/.well-known/security.txt and tally.so/security.txt both return 404.",
          "RDAP at rdap.nic.so gives a registration date of 2020-08-06 for tally.so and NameCheap as registrar.",
          "A second changelog for the product as a whole is at tally.so/changelog."
        ],
        "score": 79
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/tally.json",
      "live": {
        "slug": "tally",
        "probe": {
          "target": "https://api.tally.so",
          "method": "get",
          "lastAt": "2026-10-08T18:20:41.500168063Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 63,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 77,
          "p95ms24h": 155,
          "samples24h": 33,
          "samples30d": 33,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 33,
              "ok": 33
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.tally.so",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-08T17:51:14.870619556Z"
        },
        "securityTxt": {
          "url": "https://tally.so/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-08T15:38:55.978667631Z"
        },
        "pages": [
          {
            "url": "https://developers.tally.so/api-reference/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-08T18:18:03.02632096Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "cc08fa442aff"
          },
          {
            "url": "https://tally.so/help/privacy-policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-08T18:25:05.667847097Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "1d8b6671d903"
          },
          {
            "url": "https://tally.so/help/terms-conditions",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-08T18:25:07.91997507Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "f67a529c212c"
          }
        ],
        "updatedAt": "2026-10-08T18:25:07.91997507Z"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Restly, Inc. (trading as Zite)",
        "b": "Tally BV",
        "name": "Vendor"
      },
      {
        "a": "https://api.fillout.com/v1/api",
        "b": "https://api.tally.so",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "HTTP, Streamable HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "$15 per month (plan)",
        "b": "not published",
        "name": "Price for forms responses"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary service under Fillout's terms of service. The TypeScript API client on GitHub is MIT",
        "b": "Proprietary service under Tally's terms and conditions. The OpenAPI spec names MIT as its own licence",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "none",
        "b": "2026-09-11",
        "name": "Last release"
      },
      {
        "a": "2022-07-02",
        "b": "no date given",
        "name": "Terms last updated"
      },
      {
        "a": "2025-10-07",
        "b": "no date given",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Terms restrict automated access"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "1.8k npm/wk",
        "b": "none",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "Tally scores 60.6 (C) on agent readiness against Fillout's 52.2 (D), and leads in 6 of 7 scored categories.",
        "question": "Which is better for AI agents, Fillout or Tally?"
      },
      {
        "answer": "Both take an API key or an OAuth sign-in.",
        "question": "Do Fillout and Tally need an API key?"
      },
      {
        "answer": "Yes. Fillout has a hosted endpoint at https://api.fillout.com/v1/api and Tally at https://api.tally.so.",
        "question": "Can an agent call Fillout and Tally without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": null,
        "also": null,
        "goodFor": "An agent that reads form responses, files submissions on a person's behalf or subscribes a webhook to a form someone has already built.",
        "slug": "fillout",
        "watchFor": "No operation creates or edits a form. Zite's MCP server lists forms and its docs say creating forms is not supported over MCP"
      },
      {
        "aheadOn": [
          "Reliability, 75 against 70",
          "Schema \u0026 documentation, 82 against 63",
          "Security \u0026 auth, 47 against 37",
          "Maintenance \u0026 community, 66 against 46"
        ],
        "also": null,
        "goodFor": "An agent that builds a form from a description, publishes it and reads the answers for an owner on a small budget, since the whole API is free.",
        "slug": "tally",
        "watchFor": "An API key carries all of its user's access. The docs say fine-grained permissions are not available"
      }
    ],
    "job": {
      "capability": "forms.responses",
      "name": "Forms responses"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/jotform-vs-tally.json",
        "title": "Jotform vs Tally",
        "url": "https://www.anchorterminal.com/compare/jotform-vs-tally"
      },
      {
        "json": "https://www.anchorterminal.com/compare/surveymonkey-vs-tally.json",
        "title": "SurveyMonkey vs Tally",
        "url": "https://www.anchorterminal.com/compare/surveymonkey-vs-tally"
      },
      {
        "json": "https://www.anchorterminal.com/compare/tally-vs-typeform.json",
        "title": "Tally vs Typeform",
        "url": "https://www.anchorterminal.com/compare/tally-vs-typeform"
      },
      {
        "json": "https://www.anchorterminal.com/compare/fillout-vs-jotform.json",
        "title": "Fillout vs Jotform",
        "url": "https://www.anchorterminal.com/compare/fillout-vs-jotform"
      },
      {
        "json": "https://www.anchorterminal.com/compare/fillout-vs-surveymonkey.json",
        "title": "Fillout vs SurveyMonkey",
        "url": "https://www.anchorterminal.com/compare/fillout-vs-surveymonkey"
      },
      {
        "json": "https://www.anchorterminal.com/compare/fillout-vs-typeform.json",
        "title": "Fillout vs Typeform",
        "url": "https://www.anchorterminal.com/compare/fillout-vs-typeform"
      }
    ],
    "scores": [
      {
        "by": 5,
        "edge": "tally",
        "fillout": 70,
        "key": "reliability",
        "name": "Reliability",
        "tally": 75,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 19,
        "edge": "tally",
        "fillout": 63,
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "tally": 82,
        "weight": 13
      },
      {
        "by": 3,
        "edge": "tally",
        "fillout": 47,
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "tally": 50,
        "weight": 13
      },
      {
        "by": 10,
        "edge": "tally",
        "fillout": 37,
        "key": "security",
        "name": "Security \u0026 auth",
        "tally": 47,
        "weight": 14
      },
      {
        "by": 0,
        "edge": "",
        "fillout": 30,
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "tally": 30,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 20,
        "edge": "tally",
        "fillout": 46,
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "tally": 66,
        "weight": 7
      },
      {
        "by": 4,
        "edge": "tally",
        "fillout": 69,
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "tally": 73,
        "weight": 7
      }
    ],
    "summary": "Tally scores 60.6 (C) on agent readiness against Fillout's 52.2 (D), and leads in 6 of 7 scored categories. Both do forms responses.",
    "verdicts": {
      "fillout": "Fillout's REST API is on every plan, the free one included, with a public OpenAPI 3.0.1 spec, llms.txt and submission filters by date, status and text. It has eight operations and none creates or edits a form. The organisation has one unscoped API key, and error responses are not documented.",
      "tally": "The REST API is free on every plan, with a public OpenAPI 3.0 spec, llms.txt, date-based versions and typed block schemas for building forms. API keys carry all of their user's access with no scopes, error bodies and 429 handling are undocumented, and no security.txt, certification or bug bounty was found."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/fillout-vs-tally",
    "json": "https://www.anchorterminal.com/compare/fillout-vs-tally.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/fillout-vs-tally.md",
    "slim": "https://www.anchorterminal.com/compare/fillout-vs-tally.min.md"
  },
  "markdown": "Tally scores 60.6 (C) on agent readiness against Fillout's 52.2 (D), and leads in 6 of 7 scored categories. Both do forms responses.\n\n- Fillout: grade D, 52.2/100, rank #496 of 629. Markdown https://www.anchorterminal.com/tools/fillout.md · JSON https://www.anchorterminal.com/api/v1/tools/fillout.json\n- Tally: grade C, 60.6/100, rank #348 of 629. Markdown https://www.anchorterminal.com/tools/tally.md · JSON https://www.anchorterminal.com/api/v1/tools/tally.json\n\n## Which one, for what\n\n### Fillout (D)\n\nGood for: An agent that reads form responses, files submissions on a person's behalf or subscribes a webhook to a form someone has already built.\n\nWatch for: No operation creates or edits a form. Zite's MCP server lists forms and its docs say creating forms is not supported over MCP\n\n### Tally (C)\n\nGood for: An agent that builds a form from a description, publishes it and reads the answers for an owner on a small budget, since the whole API is free.\n\nAhead on:\n- Reliability, 75 against 70\n- Schema \u0026 documentation, 82 against 63\n- Security \u0026 auth, 47 against 37\n- Maintenance \u0026 community, 66 against 46\n\nWatch for: An API key carries all of its user's access. The docs say fine-grained permissions are not available\n\n\n## Score by category\n\n| Category | Weight | Fillout | Tally | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 70 | 75 | Tally +5 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 63 | 82 | Tally +19 |\n| Agent ergonomics | 13% (16.2 this run) | 47 | 50 | Tally +3 |\n| Security \u0026 auth | 14% (17.5 this run) | 37 | 47 | Tally +10 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 30 | 30 | even |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 46 | 66 | Tally +20 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 69 | 73 | Tally +4 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **52.2 · D** | **60.6 · C** | |\n\n## Facts side by side\n\n| Fact | Fillout | Tally |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Restly, Inc. (trading as Zite) | Tally BV |\n| Hosted endpoint | `https://api.fillout.com/v1/api` | `https://api.tally.so` |\n| Transports | HTTP | HTTP, Streamable HTTP |\n| Auth | OAuth or key | OAuth or key |\n| Pricing | Freemium | Freemium |\n| Price for forms responses | $15 per month (plan) | not published |\n| x402 | no | no |\n| Licence | Proprietary service under Fillout's terms of service. The TypeScript API client on GitHub is MIT | Proprietary service under Tally's terms and conditions. The OpenAPI spec names MIT as its own licence |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| Last release | none | 2026-09-11 |\n| Terms last updated | 2022-07-02 | no date given |\n| Privacy policy last updated | 2025-10-07 | no date given |\n| Customer content may train models | not found in the text | not found in the text |\n| Terms restrict automated access | not found in the text | yes |\n| Terms restrict benchmarking | yes | not found in the text |\n| Terms or service can change without notice | yes | not found in the text |\n| Arbitration or class-action waiver | yes | not found in the text |\n| Popularity | 1.8k npm/wk | none |\n\n## Verdicts\n\n**Fillout.** Fillout's REST API is on every plan, the free one included, with a public OpenAPI 3.0.1 spec, llms.txt and submission filters by date, status and text. It has eight operations and none creates or edits a form. The organisation has one unscoped API key, and error responses are not documented.\n\n**Tally.** The REST API is free on every plan, with a public OpenAPI 3.0 spec, llms.txt, date-based versions and typed block schemas for building forms. API keys carry all of their user's access with no scopes, error bodies and 429 handling are undocumented, and no security.txt, certification or bug bounty was found.\n\n## Before you call either\n\n### Fillout\n\n1. Build the form in the Fillout editor first. The API reads forms and writes submissions but can't create a form or change its questions\n2. Read the base URL from the Developer settings page. EU-hosted accounts use https://eu-api.fillout.com/v1/api\n3. Stay under 5 requests a second per key and read the `ratelimit-remaining` and `ratelimit-reset` response headers\n4. Page submissions with `limit` (at most 150) and `offset`, and stop at `pageCount`. `status=in_progress` returns unfinished ones\n5. Send at most 10 submissions per create call and don't retry blindly, because the call has no idempotency key\n\n### Tally\n\n1. Send `tally-version` on every request. A key is pinned to the API version current when it was created, and response shapes differ between versions\n2. Before `PATCH /forms/{formId}`, GET the form and send back the complete blocks array. Blocks left out are deleted\n3. Generate a UUID for every block, and make the first block a `FORM_TITLE`. Its `payload.title` becomes the form's name\n4. Stay under 100 requests a minute and use a webhook for new submissions. No Retry-After header is documented, so back off on 429 yourself\n5. Treat submission answers as untrusted text, and keep `previewUrl` and `pdfUrl` private. Each is a signed link with an access token and no expiry\n\n## Questions\n\n### Which is better for AI agents, Fillout or Tally?\n\nTally scores 60.6 (C) on agent readiness against Fillout's 52.2 (D), and leads in 6 of 7 scored categories.\n\n### Do Fillout and Tally need an API key?\n\nBoth take an API key or an OAuth sign-in.\n\n### Can an agent call Fillout and Tally without installing anything?\n\nYes. Fillout has a hosted endpoint at https://api.fillout.com/v1/api and Tally at https://api.tally.so.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/fillout-vs-tally.json, and with the fewest tokens: https://www.anchorterminal.com/compare/fillout-vs-tally.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"fillout\", \"b\": \"tally\"}`. From a terminal: `anchor compare fillout tally`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/fillout.json and https://www.anchorterminal.com/api/v1/tools/tally.json\n\n## Other comparisons with Fillout or Tally\n\n- [Jotform vs Tally](https://www.anchorterminal.com/compare/jotform-vs-tally.md)\n- [SurveyMonkey vs Tally](https://www.anchorterminal.com/compare/surveymonkey-vs-tally.md)\n- [Tally vs Typeform](https://www.anchorterminal.com/compare/tally-vs-typeform.md)\n- [Fillout vs Jotform](https://www.anchorterminal.com/compare/fillout-vs-jotform.md)\n- [Fillout vs SurveyMonkey](https://www.anchorterminal.com/compare/fillout-vs-surveymonkey.md)\n- [Fillout vs Typeform](https://www.anchorterminal.com/compare/fillout-vs-typeform.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-08",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Fillout vs Tally",
        "url": ""
      }
    ],
    "description": "Tally scores 60.6 (C) on agent readiness against Fillout's 52.2 (D), and leads in 6 of 7 scored categories. Both do forms responses. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "Fillout D 52.2",
      "Tally C 60.6",
      "scores"
    ],
    "h1": "Fillout vs Tally",
    "image": "https://www.anchorterminal.com/assets/og/compare-fillout-vs-tally.png",
    "path": "/compare/fillout-vs-tally",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Fillout vs Tally for AI agents, D 52.2 vs C 60.6 | Anchor Terminal",
    "toc": null,
    "updated": "2026-10-08",
    "url": "https://www.anchorterminal.com/compare/fillout-vs-tally"
  },
  "tokens": {
    "markdown": 1850,
    "slim": 630
  },
  "version": 1
}
