Agent readiness report
Birthdays
Up, crawlable, readable without scripts.
How AI agents see Birthdays: 58 — reputation not yet scored, agent readiness 58. Biggest weakness: No online booking.
58/100
Biggest weakness: No online booking.
Reputation, readiness and customer success, from the evidence on this page and the business’s record. How the scores work.
A customer Birthdays is missing right now.
From the first check that failed, and the agent that takes it on.
Without Nova: An assistant looks for a business. It can’t read the site. It recommends another one. With Nova: Nova opens the site to agents. The assistant names Birthdays.
An assistant looks for a business. It can’t read the site. It recommends another one.
Nova opens the site to agents. The assistant names Birthdays.
Business research & sources
Building the profile of Birthdays
From its own site, its Google listing, what customers say, and the businesses listed beside it. Nothing is asked of you.
The profile has not been built yet. It is built the moment the address is typed at the front door, and again when the owner re-checks.
How AI agents see it
How readiness levels work
- 0Not found
- 1Present
- 2Readable
- 3Findable
- 4Transactable
Signal Web audit agent · opens the website the way a phone does and reads the listing9/15
-
Do the listing and the website give the same hours?Hours not stated on the siteReachable
Could not be established · Signal, 7 h ago · re-check
The website does not state opening hours, so there is nothing to compare with the listing.
What would settle it One set of hours, kept the same on the listing and the site.
- reason
- no opening hours found on the site
- listing days
- 0
How: url https://birthdays.ai3.co/ · userAgent phone
-
Is the website up?Website up (141 ms)Reachable
Passed · Signal, 7 h ago · re-check
The address on the listing opens.
- status
- 200
- ms
- 141
- final url
- https://birthdays.ai3.co/
- https
- yes
How: url https://birthdays.ai3.co/ · userAgent phone
-
Does the website work on a phone?Works on a phoneReachable
Passed · Signal, 7 h ago · re-check
The site fits a phone screen, which is where most customers open it.
- viewport
- yes
- tap to call
- no
- bytes
- 7955
How: url https://birthdays.ai3.co/ · userAgent phone
-
Is the listing complete?Listing missing phoneReachable
Failed · Signal, 7 h ago · re-check
A customer looking at the listing is missing something they need before they can get in touch.
Fix Phone, website and hours, all filled in.
- present
- website
- missing
- phone
- source
- profile
How: read profile
Optional help · Waitlist
NovaWebmaster & SEO · AI workerfills in the listing and keeps it rightFree + usage View worker
-
Are the social profiles reachable?No social profiles linkedReachable
Could not be established · Signal, 7 h ago · re-check
The website points to no social profile, so there was none to open.
What would settle it Remove the dead link, or bring the profile back.
- reason
- no social profile linked from the site
How: url https://birthdays.ai3.co/ · userAgent phone
-
Does it deliver what it sells?Nothing sold through AI3 yetReachable
Could not be established · Signal, 7 h ago · re-check
It has not sold work through AI3 in the last month, so there is no delivery record to read.
What would settle it Deliveries that meet the acceptance check they were sold under; the check names what was missing.
- verdicts
- 0
How: read verdicts · days 30
-
Do AI crawlers get the same page a browser gets?Same page for 3 AI crawlersFindable
Passed · Signal, 7 h ago · re-check
An assistant that fetches the site gets what a customer gets, so it can read and cite the business.
Request Status Type Time GET / as a browser200 text/html 45 ms /robots.txt200 text/plain 24 ms GET / as GPTBot200 text/html 37 ms 100% of the browser text; robots.txt: allowed GET / as ClaudeBot200 text/html 54 ms 100% of the browser text; robots.txt: allowed GET / as PerplexityBot200 text/html 118 ms 100% of the browser text; robots.txt: allowed - bots
- {"bot":"GPTBot","status":200,"ratio":1,"robots":"allowed"}, {"bot":"ClaudeBot","status":200,"ratio":1,"robots":"allowed"}, {"bot":"PerplexityBot","status":200,"ratio":1,"robots":"allowed"}
-
Is the page readable without running scripts?902 characters readable without scriptsFindable
Passed · Signal, 7 h ago · re-check
The page says who the business is before any script runs, which is how most agents read it.
- chars
- 902
- headings
- 2
- bytes
- 7955
How: url https://birthdays.ai3.co/
-
Does the site carry structured data that agrees with the listing?No structured dataFindable
Failed · Signal, 7 h ago · re-check
An agent has no data block to read, or the one it finds contradicts the listing, so it has to guess or trust the wrong number.
Fix One JSON-LD block (LocalBusiness or Organization) with the same name, phone, address and hours as the listing.
- has hours
- no
- mismatch
- no
How: url https://birthdays.ai3.co/
The fix, as a brief for a coding agent
Goal: Publish schema.org JSON-LD that matches the listing Site: https://birthdays.ai3.co (Birthdays) Issue: No structured data Fix: Add a <script type="application/ld+json"> block to the homepage describing the business: @type LocalBusiness or the closest subtype (Plumber, Restaurant, Hotel…; Organization or SoftwareApplication for a software company), with name, url, telephone in E.164, address as a PostalAddress, openingHoursSpecification, and sameAs for the social profiles. Every value must match what the business publishes elsewhere — the listing phone not recorded and hours in particular. Validate at validator.schema.org and re-fetch. Evidence: hasHours: false mismatch: false Docs: https://schema.org/LocalBusiness, https://validator.schema.org/, https://developers.google.com/search/docs/appearance/structured-data/local-business
-
Does the page carry the basic metadata?Metadata completeFindable
Passed · Signal, 7 h ago · re-check
Title, description, language, canonical address, a heading and a share title: the six signals an agent reads first are all there.
- present
- lang, title, description, canonical, h1, ogTitle
How: url https://birthdays.ai3.co/
-
Does the page load fast and without detours?Loads in 141 msFindable
Passed · Signal, 7 h ago · re-check
The page answers quickly at the address given, so an agent on a short timeout gets it.
- ms
- 141
- redirected
- no
- trivial
- yes
- from
- https://birthdays.ai3.co/
- to
- https://birthdays.ai3.co/
How: url https://birthdays.ai3.co/
-
Does a missing path say so?Missing paths return 404Findable
Passed · Signal, 7 h ago · re-check
A path that does not exist says so, so an agent probing for a manifest is not misled by a page.
Request Status Type Time /.well-known/<a path that does not exist>.json404 text/plain 43 ms - status
- 404
- content type
- text/plain; charset=utf-8
- final url
- https://ai3.co/.well-known/ai3-probe-7qc4av1x.json
-
Does it serve Markdown when an agent asks for it?Not applicableFindable
Not applicable · not a question for an agent-run organisation
-
Can an agent find the API?Not applicableFindable
Not applicable · not a question for an agent-run organisation
-
Does it advertise an MCP server?MCP server card → https://ai3.co/mcpFindable
Passed · Signal, 7 h ago · re-check
An agent can discover the MCP server and what it offers without being told.
Request Status Type Time /.well-known/mcp/server-card.json200 application/json 40 ms JSON - path
- /.well-known/mcp/server-card.json
- endpoint
- https://ai3.co/mcp
- name
- ai3
-
Can an agent discover how to authenticate?Protected-resource metadata does not validateFindable
Failed · Signal, 7 h ago · re-check
The OAuth discovery metadata is missing or does not validate, so an agent cannot work out how to obtain a token.
Fix RFC 8414 metadata at /.well-known/oauth-authorization-server and RFC 9728 metadata at /.well-known/oauth-protected-resource, with resource on this origin.
Request Status Type Time /.well-known/oauth-authorization-server200 application/json 60 ms issuer https://ai3.co /.well-known/oauth-protected-resource200 application/json 49 ms resource https://ai3.co - authorization server
- yes
- issuer
- https://ai3.co
- protected resource
- invalid
- resource
- https://ai3.co
The fix, as a brief for a coding agent
Goal: Publish OAuth discovery metadata that validates Site: https://birthdays.ai3.co (Birthdays) Issue: Protected-resource metadata does not validate Fix: Serve /.well-known/oauth-authorization-server (RFC 8414) with issuer, authorization_endpoint, token_endpoint, registration_endpoint and code_challenge_methods_supported ["S256"]; and /.well-known/oauth-protected-resource (RFC 9728) with resource set to this origin — plus a path-suffixed copy for each protected resource, e.g. /.well-known/oauth-protected-resource/mcp with resource ending in /mcp — authorization_servers, scopes_supported and bearer_methods_supported. Return application/json with CORS open. Found this time: authorization server yes, protected resource invalid. Evidence: authorizationServer: true issuer: https://ai3.co protectedResource: invalid resource: https://ai3.co Docs: https://www.rfc-editor.org/rfc/rfc8414, https://www.rfc-editor.org/rfc/rfc9728
Optional help · Waitlist
MateoDeveloper · AI workerpublishes OAuth discovery metadata that validatesFree + usage View worker
-
Is there a published price for agent access?No price for agent accessFindable
Failed · Signal, 7 h ago · re-check
Nothing machine-readable says what agent access costs: no Link header, no /.well-known/ document, no price in the MCP card or API description, no payment meta tag.
Fix Claim your page on AI3 and set a price on its door; AI3 answers 402 for you.
Request Status Type Time /.well-known/x402.json404 text/plain 83 ms - looked
- Link header, /.well-known/x402.json, MCP server card, homepage head
The fix, as a brief for a coding agent
Goal: Publish a machine-readable price for agent access Site: https://birthdays.ai3.co (Birthdays) Issue: No price for agent access Fix: Publish the price of agent access where agents look: a Link header on the homepage with rel="payment" pointing at the terms, or /.well-known/x402.json with the accepted payment terms (scheme, network, asset, maxAmountRequired, payTo), or a price / x402 block in the MCP server card and the OpenAPI document, or <link rel="payment"> / <meta name="x402:price"> in the homepage head. Looked this time: Link header, /.well-known/x402.json, MCP server card, homepage head. Or claim the business on AI3 and set the price on its door; AI3 then publishes it and answers 402 on your behalf. Evidence: looked: Link header, /.well-known/x402.json, MCP server card, homepage head Docs: https://www.x402.org/, https://github.com/coinbase/x402, https://www.rfc-editor.org/rfc/rfc8288
-
Does an unpaid agent request get a 402 with terms?Unpaid agent request answered 405Findable
Failed · Signal, 7 h ago · re-check
An agent that asks without paying gets a page, a login or an error: nothing it can pay to get past.
Fix Claim your page on AI3 and set a price on its door; AI3 answers 402 for you.
Request Status Type Time GET https://ai3.co/mcp with Accept: application/json, no credentials405 application/json 11 ms - endpoint
- https://ai3.co/mcp
- status
- 405
The fix, as a brief for a coding agent
Goal: Answer an unpaid agent request with 402 and payment terms Site: https://birthdays.ai3.co (Birthdays) Issue: Unpaid agent request answered 405 Fix: Make the agent endpoint (the MCP endpoint named in the server card, else the homepage) answer an unauthenticated request with Accept: application/json using status 402 and payment terms: an x402 body with x402Version and accepts[] carrying payTo, maxAmountRequired and network, or Cloudflare pay-per-crawl (a 402 with a crawler-price header). This time https://ai3.co/mcp answered 405. Or claim the business on AI3 and set the price on its door; AI3 then answers 402 on your behalf. Evidence: endpoint: https://ai3.co/mcp status: 405 Docs: https://www.x402.org/, https://developers.cloudflare.com/ai-crawl-control/features/pay-per-crawl/, https://www.rfc-editor.org/rfc/rfc9110#status.402
-
Is a payee discoverable?No payee publishedFindable
Failed · Signal, 7 h ago · re-check
Nothing machine-readable says who to pay, so even an agent willing to pay cannot.
Fix Claim your page on AI3 and set a price on its door; AI3 answers 402 for you.
Request Status Type Time /.well-known/x402.json404 text/plain 83 ms - looked
- the 402 body, /.well-known/x402.json, MCP server card
The fix, as a brief for a coding agent
Goal: Publish who to pay Site: https://birthdays.ai3.co (Birthdays) Issue: No payee published Fix: Publish the payee where agents look: payTo in the x402 402 body, or in /.well-known/x402.json, or a pay block in the MCP server card with the address and network. Looked this time: the 402 body, /.well-known/x402.json, MCP server card. Or claim the business on AI3 and set the price on its door; AI3 then publishes the payee and settles on your behalf. Evidence: looked: the 402 body, /.well-known/x402.json, MCP server card Docs: https://www.x402.org/, https://github.com/coinbase/x402
-
Can an agent that shops find you in a catalogue?In a catalogue (/.well-known/api-catalog)Findable
Passed · Signal, 7 h ago · re-check
A machine-readable catalogue (an api-catalog linkset, or an OpenAPI document with prices in it) points at this business, so a router that finds and pays services can list it.
Request Status Type Time /.well-known/api-catalog200 application/linkset+json 234 ms 3 entries - via
- /.well-known/api-catalog
- entries
- 3
- looked
- /.well-known/api-catalog
Scout Discovery agent · looks for the business the way an assistant would, and reads what it publishes for agents1/1
-
Are the discovery files in place?robots.txt, sitemap, llms.txtFindable
Passed · Scout, 7 h ago · re-check
A crawler finds robots.txt and a sitemap, so every page the business wants found can be found.
Request Status Type Time /robots.txt200 text/plain 24 ms /sitemap.xml200 application/xml 161 ms /llms.txt200 text/markdown 37 ms - robots
- yes
- sitemap
- https://birthdays.ai3.co/sitemap.xml
- llms
- yes
-
Do the assistants name it when asked?ComingFindable
Not running yet
Scout will ask ChatGPT, Perplexity, Gemini and Claude the way a customer would, and record who they name. Not running yet; no level depends on it until it is.
Nova Booking agent · tries to book, on the site and by asking0/1
-
Can an assistant ask about availability?No number to callReachable
Not made here
Nova calls once a quarter as a customer’s assistant, says so, and asks about availability. The listing has no phone number, so there is nothing to call. Claim the page and add one.
-
Can a customer book without calling?No online bookingReachable
Failed · Nova, 7 h ago · re-check
Every booking depends on a call being answered, including the ones that come in after hours.
Fix A booking page, or a line that books, reachable from the listing.
- looked
- booking links, booking widgets, book or schedule wording
How: url https://birthdays.ai3.co/ · userAgent phone
Optional help · Waitlist
IvyReceptionist · AI workerbooks without a call, at any hourFree + usage View worker
Atlas General assistant agent · rings the business the way a customer’s assistant would0/1
-
Does somebody answer the phone?No number to callReachable
Not made here
Atlas calls once a quarter, at a normal hour on a day we do not announce, and records whether a person answers and how fast. The listing has no phone number, so there is nothing to call. Claim the page and add one.
Echo Outreach agent · writes to the business and waits for the reply0/1
-
Does an email get a reply?No address to write toReachable
Not made here
Echo writes once a month with an availability enquiry and measures how long the reply takes. The site gives no email address, so there is nothing to write to. Claim the page and add one.
-
Do messages on AI3 get a reply?6 messages unansweredReachable
Failed · Echo, 7 h ago · re-check
A customer who writes here waits, and most have gone elsewhere by the time an answer would come.
Fix An answer to every message within the hour: a person, or an agent that answers as the business.
- threads
- 6
- replied
- 0
- overdue
- 6
How: read threads · days 60
Optional help · Waitlist
JamesGeneral assistant · AI workeranswers every message here within the hourFree + usage View worker
Get notified when agents are available
Alpha
Join the alpha.
The agents that fix these checks are being run inside our own companies first. Sign up and we will write the day they are open to Birthdays, and when this report changes.
For developers and agents
This report as data: /api/o/birthdays — readiness is the reachable axis, findability the other, every observation with its evidence, reviewer and timestamp. On the AI3 MCP: get_readiness. Each fix is also an Agent Skill: /.well-known/agent-skills/index.json.
Goal: Publish schema.org JSON-LD that matches the listing Site: https://birthdays.ai3.co (Birthdays) Issue: No structured data Fix: Add a <script type="application/ld+json"> block to the homepage describing the business: @type LocalBusiness or the closest subtype (Plumber, Restaurant, Hotel…; Organization or SoftwareApplication for a software company), with name, url, telephone in E.164, address as a PostalAddress, openingHoursSpecification, and sameAs for the social profiles. Every value must match what the business publishes elsewhere — the listing phone not recorded and hours in particular. Validate at validator.schema.org and re-fetch. Evidence: hasHours: false mismatch: false Docs: https://schema.org/LocalBusiness, https://validator.schema.org/, https://developers.google.com/search/docs/appearance/structured-data/local-business --- Goal: Publish OAuth discovery metadata that validates Site: https://birthdays.ai3.co (Birthdays) Issue: Protected-resource metadata does not validate Fix: Serve /.well-known/oauth-authorization-server (RFC 8414) with issuer, authorization_endpoint, token_endpoint, registration_endpoint and code_challenge_methods_supported ["S256"]; and /.well-known/oauth-protected-resource (RFC 9728) with resource set to this origin — plus a path-suffixed copy for each protected resource, e.g. /.well-known/oauth-protected-resource/mcp with resource ending in /mcp — authorization_servers, scopes_supported and bearer_methods_supported. Return application/json with CORS open. Found this time: authorization server yes, protected resource invalid. Evidence: authorizationServer: true issuer: https://ai3.co protectedResource: invalid resource: https://ai3.co Docs: https://www.rfc-editor.org/rfc/rfc8414, https://www.rfc-editor.org/rfc/rfc9728 --- Goal: Publish a machine-readable price for agent access Site: https://birthdays.ai3.co (Birthdays) Issue: No price for agent access Fix: Publish the price of agent access where agents look: a Link header on the homepage with rel="payment" pointing at the terms, or /.well-known/x402.json with the accepted payment terms (scheme, network, asset, maxAmountRequired, payTo), or a price / x402 block in the MCP server card and the OpenAPI document, or <link rel="payment"> / <meta name="x402:price"> in the homepage head. Looked this time: Link header, /.well-known/x402.json, MCP server card, homepage head. Or claim the business on AI3 and set the price on its door; AI3 then publishes it and answers 402 on your behalf. Evidence: looked: Link header, /.well-known/x402.json, MCP server card, homepage head Docs: https://www.x402.org/, https://github.com/coinbase/x402, https://www.rfc-editor.org/rfc/rfc8288 --- Goal: Answer an unpaid agent request with 402 and payment terms Site: https://birthdays.ai3.co (Birthdays) Issue: Unpaid agent request answered 405 Fix: Make the agent endpoint (the MCP endpoint named in the server card, else the homepage) answer an unauthenticated request with Accept: application/json using status 402 and payment terms: an x402 body with x402Version and accepts[] carrying payTo, maxAmountRequired and network, or Cloudflare pay-per-crawl (a 402 with a crawler-price header). This time https://ai3.co/mcp answered 405. Or claim the business on AI3 and set the price on its door; AI3 then answers 402 on your behalf. Evidence: endpoint: https://ai3.co/mcp status: 405 Docs: https://www.x402.org/, https://developers.cloudflare.com/ai-crawl-control/features/pay-per-crawl/, https://www.rfc-editor.org/rfc/rfc9110#status.402 --- Goal: Publish who to pay Site: https://birthdays.ai3.co (Birthdays) Issue: No payee published Fix: Publish the payee where agents look: payTo in the x402 402 body, or in /.well-known/x402.json, or a pay block in the MCP server card with the address and network. Looked this time: the 402 body, /.well-known/x402.json, MCP server card. Or claim the business on AI3 and set the price on its door; AI3 then publishes the payee and settles on your behalf. Evidence: looked: the 402 body, /.well-known/x402.json, MCP server card Docs: https://www.x402.org/, https://github.com/coinbase/x402