Let Agents In

Agent readiness · savvycal.com

2026-08-12 10:16 UTC · formula v9.2 · 3.2s

Only 503 characters of your documentation survive without JavaScript, and that is the version an agent reads.

https://docs.savvycal.com/category/33-account-management served 503 characters of text to a plain fetch. The check passes at 2,000, which is about one screen of prose.

8/ 16
A · Discovery
3/5
B · Agent entry
2/4
C · Registration
2/2
D · Provisioning
0/3
E · Integration
1/2

of the 16 points that apply to you and we could measure · 1 of 17 were not scored

You 8 · category median 8.5 · best cal.com 10 · 15 deterministic HTTP checks, published formula

Pass it onEmail itLinkedIn

Fix this first

+5points, taking 8/16 to 13/16, past cal.com, nylas.com, calendly.com

This is the whole list: everything we could measure and you do not pass. Another 1 point sits behind checks we could not evaluate on your domain, and each of those lines below says what would make it measurable.

  1. 1
    llms.txt publishedminutes · +1

    Publish /llms.txt: a markdown list linking your quickstart, API reference, pricing and package name. It is the cheapest file on this list.

  2. 2
    Agent entry pointan afternoon · +2

    Publish /agent-signup.md: the path from nothing to a working key, written as steps for a machine rather than a tour for a person. Ours is at /agent-signup.md if you want a worked example, and it says plainly that we have nothing to sign up for.

  3. 3
    Programmatic key provisioningan afternoon · +2

    Document how a key is created without opening a dashboard: management API, service account or CLI. If no such path exists, that gap is the finding, not the docs.

Cheap too, same week

  • Machine-readable API description an afternoon · +1Publish an OpenAPI file at /openapi.json, or serve markdown when a client sends Accept: text/markdown. Either one stops agents guessing your API.

Then, when you have room

  • Docs readable without JavaScript a project · +1Server-render the docs or mirror them as markdown. A plain fetch gets 503 characters, which reads as an empty product.
  • Free tier or no-card trial stated in text a project · +1If you have a free tier or a no-card trial, say so in text on the pricing page rather than in an image or a button. If you are usage-priced with no free tier, this check is one an agent will read as a cost, not a defect.

Take it with you

7 of the checks an agent depends on, savvycal.com does not pass.

Send yourself the list above with the checks that cost the most, and a permanent link. Whoever owns the fix is usually not the person who ran the scan.

One email with the report, and one follow-up asking what you did with it. No newsletter, no sequence. Delete on request at hello@letagentsin.com.

None of this tells you whether an agent picked you

Everything above is a file an agent could read. Whether one actually chose you is a different measurement, and we have not run it on savvycal.com. What we have run it on is a rich text editor vendor: six agents, one brief, six isolated copies of a real codebase. All six picked the same competitor, and the vendor being studied was never named, not even on a rejection list, while the runs named and dismissed ten alternatives between them. In an earlier round, run before we isolated the copies, it was named twice and struck off both times in four words: Fully commercial, licence key required. That study is about them, not about you. It is here because it is the difference between a file and a decision.

Against scheduling and calendar apis

You are 4 of 6 in a category where a developer is trying to book a meeting into a calendar you do not control.

  1. 1
    cal.com
    10/15
  2. 2
    nylas.com
    9/14
  3. 3
    calendly.com
    9/15
  4. 4
    savvycal.comyou
    8/16
  5. 5
    timekit.io
    7/14
  6. 6
    cronofy.com
    6/15

Where competitors pass and savvycal.com does not

  • Docs readable without JavaScriptcal.com · calendly.com · nylas.com · cronofy.com · timekit.io
  • Machine-readable API descriptioncal.com · calendly.com · nylas.com · cronofy.com · timekit.io
  • Free tier or no-card trial stated in textcalendly.com · nylas.com · timekit.io
  • llms.txt publishedcal.com · timekit.io

Only domains we have actually scanned appear here, so the ranking is a floor: a competitor missing from the list has not been measured, not beaten.

By stage

A
DiscoveryCan an agent find and read you?
3/5
B
Agent entryIs there a door built for a machine?
2/4
C
RegistrationCan an agent get an account?
2/2
D
ProvisioningCan it get credentials without a human?
0/3
E
IntegrationCan it ship working code?
1/2

Every check

Each line is one HTTP observation with a published rule, so you can rerun any of them yourself. Most are the same tomorrow if you are: the two that are not are the bot gate and the pricing page, which answer inconsistently on their own, which is why those run more than once and say so when the tries disagreed. PASS and PART are counted. UNMEASURED means we could not evaluate it, N/A means it does not apply to a product like yours, and neither is in the score or its denominator. See the formula

A · Discovery

  • PASS
    Answers an agent user-agentAnswered 200 to LetAgentsIn/1.0 (+https://letagentsin.com/methodology)
  • FAIL
    llms.txt publishedNo llms.txt at any of the 6 locations probedA curated map of your docs is the cheapest way to control what an agent reads first. Worth one point and not more: in eighteen isolated agent runs across four categories, not one cited llms.txt among its sources, and an independent ninety-day measurement published by Otterly in February 2026 found it served 84 requests against 62,100 AI-bot visits.
  • FAIL
    Docs readable without JavaScriptOnly 503 characters render without JS, on https://docs.savvycal.com/category/33-account-management rather than on https://docs.savvycal.comMost agents fetch HTML, they do not run your bundle. An empty shell reads as an empty product.
  • PASS
    On-demand agents not blockedExplicitly allowed: ChatGPT-User
  • N/A
    Paths robots.txt points at answerrobots.txt names no concrete path, only patterns or nothing, so there is no claim to check
  • PASS
    No punishing crawl delayNo Crawl-delay applies to the agents we check

B · Agent entry

  • FAIL
    Agent entry pointNone of the 9 known agent entry paths returns a file rather than your page shellA markdown file written for a machine turns a guessing game into a procedure it can follow.
  • PASS
    OAuth dynamic client registrationregistration_endpoint published, but none of the 2 advertised grants (authorization_code, refresh_token) finishes without a person at a browser
  • PASS
    MCP surfaceLive MCP endpoint at https://api.savvycal.com/mcp, answered 401 with an auth challenge

C · Registration

  • PASS
    No CAPTCHA in the signup HTMLNo CAPTCHA vendor in the server HTML. A widget mounted later by JavaScript would not show here.
  • PASS
    Signup reachable without a browserForm renders in server HTML at https://savvycal.com/signup

D · Provisioning

  • FAIL
    Programmatic key provisioningNone of the 7 provisioning phrases appears in the 3 documents we readDocumented key creation is the difference between a two-minute integration and a support ticket.
  • FAIL
    Free tier or no-card trial stated in textThe only free-tier wording at https://savvycal.com/pricing is a question the page asks, "Do you offer a free trial?", and the answer to it is not in the HTML we were servedA free tier is what lets an agent finish the job in the same session it started. Usage-priced products with self-serve signup can fail this honestly, which is why it is one point and not a verdict.Serve the answer to that question in the HTML, or state the tier in the pricing table, and this becomes a pass.

E · Integration

  • PASS
    Typed SDK on the registry@savvycal/appointments-core@2.1.0 ships types, matched from the registry by who publishes it rather than by a link on your site
  • FAIL
    Machine-readable API descriptionNo OpenAPI spec at the 5 usual paths, none declared by https://docs.savvycal.com, and no markdown negotiationAn OpenAPI file or markdown negotiation lets an agent read your API instead of guessing it.Point at your spec from your docs page with rel="service-desc" and an agent finds it without guessing.

What we discovered on the way

Docs
https://docs.savvycal.com · found on a subdomain
Pricing
https://savvycal.com/pricing · linked from the site
Signup
https://savvycal.com/signup · linked from the site
npm package
@savvycal/appointments-core (registry guess)
GitHub
not found
Package licence
MIT
Crawl-delay
none
Content-Signal
ai-train=no, search=yes, ai-input=yes
Blocked on-demand agents
none