{"id":"olo_com","version":"1.0","url":"https://www.olo.com","host":"olo.com","name":"Olo","category":"software","generatedAt":"2026-10-15T00:14:01.196Z","durationMs":208268,"checks":[{"id":"robots_assistants","door":"discover","title":"Robots policy for user triggered agents","status":"partial","points":2,"maxPoints":4,"finding":"Some user triggered agents are restricted in robots.txt.","evidence":[{"label":"ChatGPT User","value":"partly restricted","url":"https://www.olo.com/robots.txt"},{"label":"Claude User","value":"partly restricted","url":"https://www.olo.com/robots.txt"},{"label":"Perplexity User","value":"partly restricted","url":"https://www.olo.com/robots.txt"},{"label":"Gemini Deep Research","value":"partly restricted","url":"https://www.olo.com/robots.txt"}],"why":"When a customer asks an agent to look something up, it fetches the page as a user triggered agent. A site that blocks those agents cannot be consulted.","fix":"Allow the ChatGPT User, Claude User and Perplexity User agents in robots.txt for public product, pricing and help pages.","test":"web"},{"id":"llms_txt","door":"discover","title":"llms.txt guide for agents","status":"fail","points":0,"maxPoints":3,"finding":"No llms.txt file was found at the site root.","evidence":[{"label":"Checked","value":"/llms.txt and /llms-full.txt"}],"why":"An llms.txt file gives an agent a short map of what you offer and where the authoritative pages are.","fix":"Publish /llms.txt with links to product, pricing, support and location pages.","test":"web"},{"id":"structured_data","door":"discover","title":"Structured data on the home page","status":"partial","points":1,"maxPoints":3,"finding":"Only generic structured data is present, with no product, price or question markup.","evidence":[{"label":"Type","value":"VideoObject"},{"label":"Type","value":"Organization"},{"label":"Type","value":"WebSite"},{"label":"Type","value":"WebPage"},{"label":"Type","value":"BreadcrumbList"}],"why":"Schema.org markup lets an agent read products, prices and questions as data instead of guessing from the layout.","fix":"Add JSON LD for your organization type, Product or Service, Offer and FAQPage on the pages customers ask about most.","test":"web"},{"id":"server_rendered","door":"discover","title":"Content available without running scripts","status":"pass","points":3,"maxPoints":3,"finding":"Most of the visible text is in the first HTML response.","evidence":[{"label":"Text in first response","value":"5623 characters"},{"label":"Text after scripts","value":"5891 characters"}],"why":"Many agents read raw HTML and do not run scripts. Text that appears only after scripts run is invisible to them.","fix":"Render product, pricing and help content on the server so the first response contains the text.","test":"web"},{"id":"sitemap_content","door":"discover","title":"Sitemap that includes help and pricing pages","status":"pass","points":2,"maxPoints":2,"finding":"Sitemap lists 583 entries including help, pricing, product pages.","evidence":[{"label":"Sitemap","value":"https://www.olo.com/sitemap.xml","url":"https://www.olo.com/sitemap.xml"}],"why":"A sitemap tells an agent where answers live. That cuts wrong guesses and stale pages.","fix":"Publish a sitemap that includes help center, pricing and product pages.","test":"web"},{"id":"mcp_server","door":"connect","title":"MCP server","status":"pass","points":8,"maxPoints":8,"finding":"A live MCP server answers at https://mcp.olo.com/mcp and lists 17 public tools.","evidence":[{"label":"Endpoint","value":"https://mcp.olo.com/mcp","url":"https://mcp.olo.com/mcp"},{"label":"Server","value":"ordering-mcp-server 1.0.0"},{"label":"Protocol version","value":"2025-06-18"},{"label":"Tool","value":"search_restaurants"},{"label":"Tool","value":"get_restaurant"},{"label":"Tool","value":"search_catalog"},{"label":"Tool","value":"get_product"},{"label":"Tool","value":"lookup_catalog"},{"label":"Tool","value":"create_cart"}],"why":"An MCP server is the native way for an agent to use your services with the customer's approval. It replaces screen scraping and password sharing.","fix":"Publish a remote MCP server with OAuth. Start with read only tools such as account status, orders or location search, and publish a server card at /.well-known/mcp/server-card.","test":"web"},{"id":"a2a_agent_card","door":"connect","title":"Agent card for agent to agent calls","status":"fail","points":0,"maxPoints":2,"finding":"No agent card was found.","evidence":[],"why":"An agent card lets other agents discover what your own agent can do and how to authenticate.","fix":"Publish /.well-known/agent-card.json describing skills and authentication.","test":"web"},{"id":"openapi_docs","door":"connect","title":"Public API documentation","status":"partial","points":2,"maxPoints":3,"finding":"A developer portal exists, but no public OpenAPI document was found.","evidence":[{"label":"Developer portal","value":"https://www.olo.com/api-usage-terms","url":"https://www.olo.com/api-usage-terms"}],"why":"A published OpenAPI document lets developers and agents build against stable, described endpoints.","fix":"Publish an OpenAPI document for customer facing APIs on a developer portal.","test":"web"},{"id":"open_banking","door":"connect","title":"Developer and data sharing program","status":"partial","points":2,"maxPoints":4,"finding":"A developer portal or aggregator connection is mentioned, without a described data sharing program.","evidence":[{"label":"Developer portal","value":"https://www.olo.com/api-usage-terms","url":"https://www.olo.com/api-usage-terms"}],"why":"A data sharing program with a developer portal and standard APIs gives agents a consented path to customer data. Open banking is the best known example.","fix":"Document the program, the standard in use (for example FDX in US banking), the supported partners and a sandbox.","test":"web"},{"id":"webmcp_tools","door":"connect","title":"Browser tools exposed to agents","status":"fail","points":0,"maxPoints":3,"finding":"The sign in and home pages register no browser tools for agents.","evidence":[],"why":"WebMCP lets a page register tools that a browser agent can call directly instead of clicking through the interface.","fix":"Register tools for safe tasks such as location search and price lookup with navigator.modelContext.","test":"web"},{"id":"poppy_discovery","door":"connect","title":"Poppy file for personal agents","status":"fail","points":0,"maxPoints":0,"bonus":0,"bonusMax":3,"finding":"No Poppy file was found on this site.","evidence":[{"label":"Address checked","value":"https://www.olo.com/.well-known/poppy.json","url":"https://www.olo.com/.well-known/poppy.json"}],"why":"Poppy is an open draft standard from Sierra and Meta. A company publishes one small file that tells a customer's personal agent how to find it, how the customer signs in and which route to use: the company's own agent, an API or the website. Eight launch partners and dozens of design partners back it.","fix":"Publish a poppy.json file in the well known folder of your website. It names your organization, your sign in server and at least one route. Then make your sign in server list your domain in poppy_domains. The standard is a draft, so treat this as early work.","test":"web"},{"id":"oauth_metadata","door":"identity","title":"OAuth and OpenID metadata","status":"pass","points":5,"maxPoints":5,"finding":"Authorization server metadata is published at dashboard.oloidp.com.","evidence":[{"label":"Issuer","value":"https://dashboard.oloidp.com","url":"https://dashboard.oloidp.com/.well-known/openid-configuration"},{"label":"Grant types","value":"authorization_code, client_credentials, refresh_token, implicit, password"},{"label":"Scopes listed","value":"20"}],"why":"Published authorization server metadata tells a client where to send a customer to approve access.","fix":"Publish /.well-known/oauth-authorization-server and /.well-known/oauth-protected-resource for the customer facing APIs.","test":"web"},{"id":"pkce_registration","door":"identity","title":"PKCE and client registration","status":"pass","points":4,"maxPoints":4,"finding":"PKCE with S256 and a registration path for new clients are both published.","evidence":[{"label":"PKCE S256","value":"supported"},{"label":"Dynamic registration","value":"supported"},{"label":"Client ID metadata documents","value":"not listed"}],"why":"PKCE protects the approval step. Dynamic registration or client metadata documents let a new agent onboard without a manual review each time.","fix":"Require PKCE with S256 and support client ID metadata documents or dynamic client registration for approved agent clients.","test":"web"},{"id":"passkeys","door":"identity","title":"Passkeys at sign in","status":"unknown","points":0,"maxPoints":4,"finding":"The sign in form was not available in a form the scan can inspect, so passkey support was not measured.","evidence":[],"why":"A passkey lets a customer approve an agent action with a device gesture. It removes the passwords and one time codes that agents cannot handle.","fix":"Offer passkeys with conditional UI on the sign in page and for step up approvals.","test":"login"},{"id":"high_assurance","door":"identity","title":"High assurance authorization profile","status":"partial","points":2,"maxPoints":3,"finding":"Some high assurance features are advertised.","evidence":[{"label":"PAR","value":"yes"},{"label":"DPoP","value":"yes"},{"label":"Mutual TLS","value":"no"},{"label":"Rich authorization requests","value":"no"}],"why":"Pushed authorization requests, sender constrained tokens and rich authorization requests let a provider approve one specific action instead of a blanket login.","fix":"Support PAR with DPoP or mutual TLS, and rich authorization requests for payments and account changes.","test":"web"},{"id":"delegate_access","door":"identity","title":"Documented delegate and data sharing controls","status":"partial","points":2,"maxPoints":4,"finding":"Data sharing controls are described, with no documented route for authorized agents.","evidence":[{"label":"Data sharing","value":"…unlawful; and (vi) comply with the applicable social-media platform’s terms and policies. Olo may revoke permission to share Shared Content at any time, and you will promptly remove Shared Content upon Olo’s written request. 11.…","url":"https://www.olo.com/terms-of-use"}],"why":"Customers need a place to see and revoke what an agent can do. Organizations need a documented route for authorized agents.","fix":"Publish a help page on delegate access and add a connected apps screen where customers revoke access.","test":"web"},{"id":"declared_agent_homepage","door":"web","title":"Home page for a declared agent","status":"pass","points":3,"maxPoints":3,"finding":"The home page loaded normally for a declared agent.","evidence":[{"label":"Status","value":"200"},{"label":"Response time","value":"2092 ms"}],"why":"A declared agent that is challenged or blocked at the first step cannot help the customer at all.","fix":"Allow declared agents through bot management on public pages, and verify them with signed requests.","test":"login"},{"id":"signin_reachable","door":"web","title":"Sign in page loads for a declared agent in a browser","status":"pass","points":4,"maxPoints":4,"finding":"The sign in page loaded in a browser for a declared agent.","evidence":[{"label":"Declared agent","value":"loaded in 18064 ms"},{"label":"Standard browser","value":"loaded in 9762 ms"},{"label":"Page","value":"https://dashboard.oloidp.com/Account/Login?ReturnUrl=%2Fconnect%2Fauthorize%2Fcallback%3Fclient_id%3Ddashboard-user%26redirect_uri%3Dhttps%253A%252F%252Fmy.olo.com%252Fsignin-oidc%26response_type%3Dcode%26scope%3Dopenid%2520profile%2520email%2520wisely%253Aapi%253Adashboard%2520offline_access%2520ai_assist%253Achat%2520token-exchange-email%26code_challenge%3DCnb3XlJdU3Ff2VpVP7JckaEh3XliCDaBFV8ZNtNfM-I%26code_challenge_method%3DS256%26state%3DOpenIdConnect.AuthenticationProperties%253DCfDJ8PtDVSyq2BRFuFpdAaK_5JWES2P6B9olj4Wxj0_pASWLpYIWUZyISsnbDcR-2sRn6kqb0YWT2dRnVq-GPu3aVLOONRxwY3SbPGIZKO83_44DmfnQwbmnh5Nj7Kyrb0cffsCXUgPmTAtnwaDhUoAyfCz5xRTOH0rWjXCiHTqYMl7ilZVFtRpqTkPCQMySObZA-fiDKdiuVWDSZKJrbYEmufikwSvj3Pu-jKv9-we1ckghfzV6FJraIJTKPNv_1DRGiMKKi2XJfkZv6MMJLZDGewxDreYbfTg5Wfk7YnCOc4SXYJ6xrNkb2ySs_xOWKlil2A%26nonce%3D639276198848714701.MzRhMjkzZTMtZDNmMy00N2RjLTk2ZTctMjNjYzkwOGMxMjFmZjcxMDc0N2MtN2RjYS00M2U4LTgwOGYtM2UyNmMyYzdiOWMz%26x-client-SKU%3DID_NET461%26x-client-ver%3D5.3.0.0","url":"https://dashboard.oloidp.com/Account/Login?ReturnUrl=%2Fconnect%2Fauthorize%2Fcallback%3Fclient_id%3Ddashboard-user%26redirect_uri%3Dhttps%253A%252F%252Fmy.olo.com%252Fsignin-oidc%26response_type%3Dcode%26scope%3Dopenid%2520profile%2520email%2520wisely%253Aapi%253Adashboard%2520offline_access%2520ai_assist%253Achat%2520token-exchange-email%26code_challenge%3DCnb3XlJdU3Ff2VpVP7JckaEh3XliCDaBFV8ZNtNfM-I%26code_challenge_method%3DS256%26state%3DOpenIdConnect.AuthenticationProperties%253DCfDJ8PtDVSyq2BRFuFpdAaK_5JWES2P6B9olj4Wxj0_pASWLpYIWUZyISsnbDcR-2sRn6kqb0YWT2dRnVq-GPu3aVLOONRxwY3SbPGIZKO83_44DmfnQwbmnh5Nj7Kyrb0cffsCXUgPmTAtnwaDhUoAyfCz5xRTOH0rWjXCiHTqYMl7ilZVFtRpqTkPCQMySObZA-fiDKdiuVWDSZKJrbYEmufikwSvj3Pu-jKv9-we1ckghfzV6FJraIJTKPNv_1DRGiMKKi2XJfkZv6MMJLZDGewxDreYbfTg5Wfk7YnCOc4SXYJ6xrNkb2ySs_xOWKlil2A%26nonce%3D639276198848714701.MzRhMjkzZTMtZDNmMy00N2RjLTk2ZTctMjNjYzkwOGMxMjFmZjcxMDc0N2MtN2RjYS00M2U4LTgwOGYtM2UyNmMyYzdiOWMz%26x-client-SKU%3DID_NET461%26x-client-ver%3D5.3.0.0"}],"why":"Where a customer must use the website, a browser agent has to reach the sign in page so it can hand control back to the customer.","fix":"Serve the sign in page to verified agent browsers, and use signed agent identity to separate them from attackers.","test":"login"},{"id":"agent_browser_parity","door":"web","title":"Same behavior for a declared agent and a standard browser","status":"pass","points":2,"maxPoints":2,"finding":"A declared agent and a standard browser got the same result.","evidence":[{"label":"Declared","value":"loaded"},{"label":"Browser","value":"loaded"}],"why":"If a declared agent is treated worse than an anonymous browser, honesty is penalized and agents will hide what they are.","fix":"Do not rank declared agents below anonymous browsers in bot management policy.","test":"login"},{"id":"form_semantics","door":"web","title":"Sign in form structure and autofill hints","status":"unknown","points":0,"maxPoints":4,"finding":"No sign in fields were present in the loaded page. The form may open after a click or load from a separate host.","evidence":[],"why":"Labels and autocomplete hints let an agent and a password manager find the right field and hand over to the customer at the right moment.","fix":"Label every field and set autocomplete values for the username, the current password and the one time code.","test":"login"},{"id":"semantic_markup","door":"web","title":"Semantic page structure","status":"partial","points":1,"maxPoints":2,"finding":"The page structure is only partly readable by agents.","evidence":[{"label":"Landmarks","value":"0"},{"label":"Headings","value":"0"},{"label":"Named controls","value":"100 percent"},{"label":"Images with alt text","value":"100 percent"}],"why":"Landmarks, headings and named controls let an agent read the page the way a screen reader does.","fix":"Use landmark elements, headings in order, accessible names on buttons and alt text on images.","test":"login"},{"id":"terms_stance","door":"policy","title":"Terms on automated access","status":"fail","points":0,"maxPoints":4,"finding":"The terms restrict automated access and name no exception for authorized agents.","evidence":[{"label":"Terms excerpt","value":"…incomplete or inaccurate, and should be independently evaluated before you rely on them. Do not submit confidential, sensitive, financial, health, government-identification, or other information that you are not authorized to disclose through the chatbot. 4. Submissions and Feedback Submissions. T…","url":"https://www.olo.com/terms-of-use"},{"label":"Terms excerpt","value":"…gather, copy, index, scrape, crawl, extract, download, or distribute Website content using any robot, bot, spider, scraper, crawler, data-mining tool, automated device, or systematic manual process, except for…","url":"https://www.olo.com/terms-of-use"}],"why":"Terms that prohibit all automated access with no exception make every agent a violation, even when the customer authorized it.","fix":"Add an exception for authorized agents acting for the customer through approved interfaces.","test":"web"},{"id":"third_party_rules","door":"policy","title":"Third party access and data sharing rules","status":"pass","points":3,"maxPoints":3,"finding":"Third party access and data sharing rules are published.","evidence":[{"label":"Excerpt","value":"…persons or use them outside of their intended use case. You may not allow any third party to use your credentials for their own benefit. If you become aware of any unauthorized use of your credentials, contact Olo…","url":"https://www.olo.com/api-usage-terms"},{"label":"Excerpt","value":"…and (vi) comply with the applicable social-media platform’s terms and policies. Olo may revoke permission to share Shared Content at any time, and you will promptly remove Shared Content upon Olo’s written request.…","url":"https://www.olo.com/terms-of-use"}],"why":"Published rules tell customers and developers what is allowed. That keeps agents on approved paths.","fix":"Publish a third party access policy that names the approved interfaces and the consent model.","test":"web"},{"id":"ai_position","door":"policy","title":"Published position on AI agents","status":"partial","points":0.5,"maxPoints":3,"finding":"Documents mention the organization’s own chat or virtual agent. They state no position on agents that act for customers.","evidence":[{"label":"Excerpt","value":"…forms, event and webinar registrations, newsletters, blogs, demonstration requests, chatbot functionality, and other website features made available through those websites (collectively, the…","url":"https://www.olo.com/terms-of-use"}],"why":"A public position tells customers whether an agent acting for them is welcome, and under what conditions.","fix":"Publish a page that states how customer agents are handled and where to connect them.","test":"web"}],"homeAgentFetch":{"status":200,"ms":2092,"bytes":237918,"blocked":false,"thin":false},"login":{"url":"https://dashboard.oloidp.com/Account/Login?ReturnUrl=%2Fconnect%2Fauthorize%2Fcallback%3Fclient_id%3Ddashboard-user%26redirect_uri%3Dhttps%253A%252F%252Fmy.olo.com%252Fsignin-oidc%26response_type%3Dcode%26scope%3Dopenid%2520profile%2520email%2520wisely%253Aapi%253Adashboard%2520offline_access%2520ai_assist%253Achat%2520token-exchange-email%26code_challenge%3DCnb3XlJdU3Ff2VpVP7JckaEh3XliCDaBFV8ZNtNfM-I%26code_challenge_method%3DS256%26state%3DOpenIdConnect.AuthenticationProperties%253DCfDJ8PtDVSyq2BRFuFpdAaK_5JWES2P6B9olj4Wxj0_pASWLpYIWUZyISsnbDcR-2sRn6kqb0YWT2dRnVq-GPu3aVLOONRxwY3SbPGIZKO83_44DmfnQwbmnh5Nj7Kyrb0cffsCXUgPmTAtnwaDhUoAyfCz5xRTOH0rWjXCiHTqYMl7ilZVFtRpqTkPCQMySObZA-fiDKdiuVWDSZKJrbYEmufikwSvj3Pu-jKv9-we1ckghfzV6FJraIJTKPNv_1DRGiMKKi2XJfkZv6MMJLZDGewxDreYbfTg5Wfk7YnCOc4SXYJ6xrNkb2ySs_xOWKlil2A%26nonce%3D639276198848714701.MzRhMjkzZTMtZDNmMy00N2RjLTk2ZTctMjNjYzkwOGMxMjFmZjcxMDc0N2MtN2RjYS00M2U4LTgwOGYtM2UyNmMyYzdiOWMz%26x-client-SKU%3DID_NET461%26x-client-ver%3D5.3.0.0","source":"link on home page","validated":true,"candidates":[{"url":"https://my.olo.com/Account/LogOn","source":"link on home page"},{"url":"https://www.olo.com/login","source":"common path"},{"url":"https://www.olo.com/signin","source":"common path"},{"url":"https://www.olo.com/sign-in","source":"common path"},{"url":"https://www.olo.com/online-banking/login","source":"common path"},{"url":"https://www.olo.com/auth/login","source":"common path"}],"menu":{"clicked":false,"label":null,"navigatedTo":null,"linkCount":0,"hasPasswordField":false},"shots":{"agent":"/data/shots/olo_com_login_agent.jpg","browser":"/data/shots/olo_com_login_browser.jpg","home":"/data/shots/olo_com_home.jpg","menu":null},"agent":{"finalUrl":"https://dashboard.oloidp.com/Account/Login?ReturnUrl=%2Fconnect%2Fauthorize%2Fcallback%3Fclient_id%3Ddashboard-user%26redirect_uri%3Dhttps%253A%252F%252Fmy.olo.com%252Fsignin-oidc%26response_type%3Dcode%26scope%3Dopenid%2520profile%2520email%2520wisely%253Aapi%253Adashboard%2520offline_access%2520ai_assist%253Achat%2520token-exchange-email%26code_challenge%3DCnb3XlJdU3Ff2VpVP7JckaEh3XliCDaBFV8ZNtNfM-I%26code_challenge_method%3DS256%26state%3DOpenIdConnect.AuthenticationProperties%253DCfDJ8PtDVSyq2BRFuFpdAaK_5JWES2P6B9olj4Wxj0_pASWLpYIWUZyISsnbDcR-2sRn6kqb0YWT2dRnVq-GPu3aVLOONRxwY3SbPGIZKO83_44DmfnQwbmnh5Nj7Kyrb0cffsCXUgPmTAtnwaDhUoAyfCz5xRTOH0rWjXCiHTqYMl7ilZVFtRpqTkPCQMySObZA-fiDKdiuVWDSZKJrbYEmufikwSvj3Pu-jKv9-we1ckghfzV6FJraIJTKPNv_1DRGiMKKi2XJfkZv6MMJLZDGewxDreYbfTg5Wfk7YnCOc4SXYJ6xrNkb2ySs_xOWKlil2A%26nonce%3D639276198848714701.MzRhMjkzZTMtZDNmMy00N2RjLTk2ZTctMjNjYzkwOGMxMjFmZjcxMDc0N2MtN2RjYS00M2U4LTgwOGYtM2UyNmMyYzdiOWMz%26x-client-SKU%3DID_NET461%26x-client-ver%3D5.3.0.0","status":200,"title":"Olo Authentication Service","ms":18064,"blocked":false,"blockReason":null,"thin":false,"uaLabel":"declared agent","error":null,"vendors":[{"name":"Cloudflare","evidence":["cookie __cf_bm","header cf-ray","header server"]}],"textPreview":" Dashboard Login Remember My Login By clicking \"Login\" below, you agree to Olo's Security Policy Login Forgot password?"},"browser":{"finalUrl":"https://dashboard.oloidp.com/Account/Login?ReturnUrl=%2Fconnect%2Fauthorize%2Fcallback%3Fclient_id%3Ddashboard-user%26redirect_uri%3Dhttps%253A%252F%252Fmy.olo.com%252Fsignin-oidc%26response_type%3Dcode%26scope%3Dopenid%2520profile%2520email%2520wisely%253Aapi%253Adashboard%2520offline_access%2520ai_assist%253Achat%2520token-exchange-email%26code_challenge%3DhWbe79DA4F0QLTYvDDrYp7i-Odrcu3Gatz1paTQZSQ8%26code_challenge_method%3DS256%26state%3DOpenIdConnect.AuthenticationProperties%253DCfDJ8PtDVSyq2BRFuFpdAaK_5JV9Jr6Kuq6ViuIo71f9GiwUxNTGpxCA6xqSMG7YcTSB8aMlGTTRk9RbLJsAugeNDN1NquC7pKXFeKhJKtT-d9YexPxpgag1WVoncFAM9r3K4GC21J2uK73YNwutoXnmOdTbpTo8_cJLO0dL4TzorJcNu-yTan2BNJv9-lr0bYn3HznAG19VC2sKtd0Gn43mcaTAFhrZfNNTFyxQr4GvMVcqkzGTyzENJys0rv5u8SPVjOdAM6_Yqw64HBhicgRLFUl8lEteuMG4K6LJZDrQFeevtwl3ZA8UXYvmZVTQIuUVpQ%26nonce%3D639276199021698634.MjFhMzcyYWQtOTMxNy00YmNmLTgxMDgtOWQ4MDFiNTg3NmUzYzMyOTYzMjEtMmM2OC00YTM3LTkyYzctMzNlMTYyM2U5ZmFm%26x-client-SKU%3DID_NET461%26x-client-ver%3D5.3.0.0","status":200,"title":"Olo Authentication Service","ms":9762,"blocked":false,"blockReason":null,"thin":false,"uaLabel":"browser","error":null,"vendors":[{"name":"Cloudflare","evidence":["cookie __cf_bm","header cf-ray","header server"]}],"textPreview":" Dashboard Login Remember My Login By clicking \"Login\" below, you agree to Olo's Security Policy Login Forgot password?"},"botDefense":[{"name":"Cloudflare","evidence":["cookie __cf_bm","header cf-ray","header server"]}],"passkeys":{"found":false,"runtimeObserved":false,"evidence":[]},"fields":[]},"protocols":{"mcp":{"cards":[],"endpoints":[{"url":"https://mcp.olo.com/mcp","getStatus":405,"contentType":"application/json; charset=utf-8","confirmed":true,"authRequired":false,"serverInfo":{"name":"ordering-mcp-server","version":"1.0.0"},"protocolVersion":"2025-06-18","capabilities":["tools"],"sessionId":false,"tools":[{"name":"search_restaurants","description":"Find nearby restaurants by proximity to a set of coordinates, across ALL Olo App–enabled brands. Returns slim per-restaurant summaries (eac…","readOnly":null},{"name":"get_restaurant","description":"Get restaurant details by ID","readOnly":null},{"name":"search_catalog","description":"UCP: search the product catalog. Requires meta[\"ucp-agent\"].profile and a catalog object. Network-wide: catalog.query (e.g. \"burrito\") + a …","readOnly":null},{"name":"get_product","description":"UCP: get a single catalog product with its option groups (modifiers). catalog.ids[0] is the product id; supply catalog.restaurant_id to res…","readOnly":null},{"name":"lookup_catalog","description":"UCP: batch-look up catalog products by id. catalog.ids[] (product ids, max 50) and catalog.restaurant_id (Olo product ids are menu-scoped) …","readOnly":null},{"name":"create_cart","description":"UCP: create a shopping cart at a restaurant (pre-checkout basket building). Requires meta[\"ucp-agent\"].profile and a cart object with line_…","readOnly":null},{"name":"update_checkout","description":"UCP: update a checkout session (full replacement). line_items become the exact new set (products are added, re-quantified, or removed to ma…","readOnly":null},{"name":"update_cart","description":"UCP: update a cart (full replacement — send the entire desired cart). line_items become the exact new set. Returns the updated UCP cart.","readOnly":null},{"name":"cancel_cart","description":"UCP: cancel (delete) a cart. Requires meta[\"ucp-agent\"].profile. Returns the final cart state; the underlying basket simply expires server-…","readOnly":null},{"name":"create_checkout","description":"UCP: create a checkout session at a restaurant. Requires meta[\"ucp-agent\"].profile and a checkout object with line_items (item.id = product…","readOnly":null},{"name":"get_checkout","description":"UCP: fetch a checkout session by id (the id returned by create_checkout). Once the session has line items and a handoff mode it is validate…","readOnly":null},{"name":"get_cart","description":"UCP: fetch a cart by id (from create_cart). Requires meta[\"ucp-agent\"].profile. Returns the UCP cart; a missing/expired cart returns a not_…","readOnly":null},{"name":"complete_checkout","description":"UCP: complete a checkout session — PLACES A REAL ORDER and charges the payment credential. Requires meta[\"ucp-agent\"].profile AND meta[\"ide…","readOnly":null},{"name":"cancel_checkout","description":"UCP: cancel an open (un-completed) checkout session. Requires meta[\"ucp-agent\"].profile AND meta[\"idempotency-key\"] (UUID). The session is …","readOnly":null},{"name":"get_order","description":"UCP: fetch a placed order by id (the order.id from complete_checkout). Requires meta[\"ucp-agent\"].profile. Returns the UCP order: line item…","readOnly":null},{"name":"notify_order_arrival","description":"Notify the restaurant that the customer has ARRIVED to pick up a placed order, by its Olo order GUID (from complete_checkout / get_order). …","readOnly":null},{"name":"cancel_order","description":"CANCEL a placed order by its Olo order GUID (from complete_checkout / get_order). This WRITES: it requests cancellation of a real order. Wh…","readOnly":null}]}],"resources":[],"registry":{"checked":true,"matches":[]},"mentions":[],"found":true,"live":true,"protectedByOAuth":false,"registryListed":false,"checkedBases":5},"a2a":{"found":false},"aiPlugin":{"found":false},"agentsJson":{"found":false},"openapi":{"found":false},"poppy":{"found":false,"blocked":false,"unreachable":false,"tried":[{"host":"www.olo.com","status":404},{"host":"olo.com","status":404}],"url":"https://www.olo.com/.well-known/poppy.json"},"llms":{"llmsTxt":{"found":false,"status":404,"url":"https://www.olo.com/llms.txt","bytes":92632,"links":0,"preview":null},"llmsFull":{"found":false,"status":404,"url":"https://www.olo.com/llms-full.txt","bytes":92632,"links":0,"preview":null}},"robots":{"found":true,"status":200,"url":"https://www.olo.com/robots.txt","bytes":306,"sitemaps":["https://www.olo.com/sitemap.xml"],"managedAI":false,"agents":[{"agent":"ChatGPT-User","vendor":"OpenAI","kind":"assistant","allowed":"partial","rule":"9 disallowed paths","via":"*"},{"agent":"Claude-User","vendor":"Anthropic","kind":"assistant","allowed":"partial","rule":"9 disallowed paths","via":"*"},{"agent":"Perplexity-User","vendor":"Perplexity","kind":"assistant","allowed":"partial","rule":"9 disallowed paths","via":"*"},{"agent":"Gemini-Deep-Research","vendor":"Google","kind":"assistant","allowed":"partial","rule":"9 disallowed paths","via":"*"},{"agent":"GPTBot","vendor":"OpenAI","kind":"crawler","allowed":"partial","rule":"9 disallowed paths","via":"*"},{"agent":"ClaudeBot","vendor":"Anthropic","kind":"crawler","allowed":"partial","rule":"9 disallowed paths","via":"*"},{"agent":"OAI-SearchBot","vendor":"OpenAI","kind":"search","allowed":"partial","rule":"9 disallowed paths","via":"*"},{"agent":"PerplexityBot","vendor":"Perplexity","kind":"search","allowed":"partial","rule":"9 disallowed paths","via":"*"},{"agent":"Google-Extended","vendor":"Google","kind":"crawler","allowed":"partial","rule":"9 disallowed paths","via":"*"},{"agent":"Applebot-Extended","vendor":"Apple","kind":"crawler","allowed":"partial","rule":"9 disallowed paths","via":"*"},{"agent":"CCBot","vendor":"Common Crawl","kind":"crawler","allowed":"partial","rule":"9 disallowed paths","via":"*"},{"agent":"Bytespider","vendor":"ByteDance","kind":"crawler","allowed":"partial","rule":"9 disallowed paths","via":"*"}],"assistantsBlocked":[],"assistantsAllowed":[],"crawlersBlocked":[],"error":null},"sitemap":{"found":true,"url":"https://www.olo.com/sitemap.xml","entries":583,"isIndex":false,"hasHelp":true,"hasRates":true,"hasProducts":true},"webmcp":{"found":false,"tools":[],"declarativeForms":0,"markupHint":false},"structuredData":["VideoObject","Organization","WebSite","WebPage","BreadcrumbList"]},"identity":{"found":true,"servers":[{"issuer":"https://dashboard.oloidp.com","url":"https://dashboard.oloidp.com/.well-known/openid-configuration","host":"dashboard.oloidp.com","s256":true,"pkceMethods":["plain","S256"],"dcr":true,"cimd":false,"par":true,"parRequired":false,"dpop":true,"mtls":false,"rar":false,"privateKeyJwt":false,"grantTypes":["authorization_code","client_credentials","refresh_token","implicit","password","urn:ietf:params:oauth:grant-type:token-exchange","urn:olo:params:oauth:grant-type:act-as"],"scopes":["openid","mfa_methods","profile","address","phone","email","system:userReadWrite","system:userRead","system:apiScopeReadWrite","system:apiScopeRead","system:clientReadWrite","system:clientRead","wisely:internal-traffic:basic-all-access","offline_access","wisely:api:dashboard","cs:user:read","cs:user:external-login:write","token-exchange-email","ai_assist:chat","offline_access"],"acrValues":["urn:olo:heimdall:step-up-mfa","urn:olo:heimdall:mfa:sms:2","urn:olo:heimdall:mfa:email:1"],"deviceFlow":false,"tokenExchange":true,"clientCredentials":true,"fapiLike":false}],"checkedHosts":16,"answeredHosts":16,"silentHosts":[]},"openBanking":{"pages":[{"url":"https://www.olo.com/omnivoreapi","source":"site link","title":"Olo | Omnivore API","terms":[],"aggregators":[],"excerpt":"Skip to main content Seamlessly integrate to POS systems Expand your customer base and save time on development with a single integration Talk to partnerships 12 Point-of-sale systems supported 5. 6 …"},{"url":"https://www.olo.com/api-usage-terms","source":"site link","title":"Olo | API Terms","terms":["apiReference"],"aggregators":[],"excerpt":"Skip to main content APIs Terms of Use Last Updated: November 28, 2022 ‍Thank you for using the Olo Inc. (“Olo”) application programming interfaces and API specifications (“Olo APIs”). By accessing o…"},{"url":"https://developer.olo.com/Account/Login?ReturnUrl=%2Fproject","source":"common subdomain","title":"Olo Developer Portal - Login","terms":["apiReference"],"aggregators":[],"excerpt":"Toggle navigation Developer Portal Login Email Password Remember me for this computer Forgot password All content contained within the Olo Developer Portal is bound by the Terms of Service. Click her…"}],"portal":{"url":"https://www.olo.com/api-usage-terms","title":"Olo | API Terms"},"fdx":false,"rule1033":false,"openBanking":false,"sandbox":false,"oauth":false,"dataAccessAgreement":false,"aggregators":[],"found":true},"policy":{"stance":"prohibits","documentsRead":3,"termsRead":2,"prohibits":[{"type":"prohibitsAutomation","label":"Restricts automated access","excerpt":"…incomplete or inaccurate, and should be independently evaluated before you rely on them. Do not submit confidential, sensitive, financial, health, government-identification, or other information that you are not authorized to disclose through the chatbot. 4. Submissions and Feedback Submissions. T…","url":"https://www.olo.com/terms-of-use","title":"Terms of Use"},{"type":"prohibitsAutomation","label":"Restricts automated access","excerpt":"…gather, copy, index, scrape, crawl, extract, download, or distribute Website content using any robot, bot, spider, scraper, crawler, data-mining tool, automated device, or systematic manual process, except for…","url":"https://www.olo.com/terms-of-use","title":"Terms of Use"}],"delegation":[],"thirdParty":[{"type":"thirdPartyAccess","label":"Addresses third party access","excerpt":"…persons or use them outside of their intended use case. You may not allow any third party to use your credentials for their own benefit. If you become aware of any unauthorized use of your credentials, contact Olo…","url":"https://www.olo.com/api-usage-terms","title":"API Terms |"}],"dataSharing":[{"type":"dataSharing","label":"Describes data sharing controls","excerpt":"…and (vi) comply with the applicable social-media platform’s terms and policies. Olo may revoke permission to share Shared Content at any time, and you will promptly remove Shared Content upon Olo’s written request.…","url":"https://www.olo.com/terms-of-use","title":"Terms of Use"}],"ai":[{"type":"ai","label":"Mentions AI or agents","excerpt":"…forms, event and webinar registrations, newsletters, blogs, demonstration requests, chatbot functionality, and other website features made available through those websites (collectively, the…","url":"https://www.olo.com/terms-of-use","title":"Terms of Use"},{"type":"ai","label":"Mentions AI or agents","excerpt":"…forms, event and webinar registrations, newsletters, blogs, demonstration requests, chatbot functionality and other features made available through those websites (collectively, the “Website”). This…","url":"https://www.olo.com/privacy-notice","title":"Privacy Notice."}],"credentialSharing":[{"type":"credentialSharing","label":"Forbids sharing credentials","excerpt":"…behavioral advertising or targeted advertising under applicable privacy laws. We do not disclose credentials, event accessibility information, dietary preferences or other sensitive personal information for these…","url":"https://www.olo.com/privacy-notice","title":"Privacy Notice."}],"documents":[{"url":"https://www.olo.com/terms-of-use","title":"Terms of Use","status":200,"textLength":46470,"blockedForAgent":false,"flags":["Restricts automated access","Restricts automated access","Mentions AI or agents","Describes data sharing controls"]},{"url":"https://www.olo.com/api-usage-terms","title":"API Terms |","status":200,"textLength":25922,"blockedForAgent":false,"flags":["Addresses third party access"]},{"url":"https://www.olo.com/privacy-notice","title":"Privacy Notice.","status":200,"textLength":41500,"blockedForAgent":false,"flags":["Restricts automated access","Forbids sharing credentials","Mentions AI or agents"]}]},"delegates":[{"type":"dataSharing","url":"https://www.olo.com/terms-of-use","snippet":"…unlawful; and (vi) comply with the applicable social-media platform’s terms and policies. Olo may revoke permission to share Shared Content at any time, and you will promptly remove Shared Content upon Olo’s written request. 11.…"}],"voice":{"phone":null,"candidates":[],"status":"not_run","calls":[],"aggregate":null,"startedAt":null,"finishedAt":null,"progress":null,"note":null},"timeline":[{"step":"identify","label":"Identify the organization and load the home page","ms":28411,"ok":true},{"step":"robots","label":"Read robots rules for agents, llms.txt and sitemaps","ms":1717,"ok":true},{"step":"cards","label":"Look for agent cards, Poppy files, OpenAPI documents and browser tools","ms":15948,"ok":true},{"step":"links","label":"Map sign in, terms, help and developer pages","ms":0,"ok":true},{"step":"login_agent","label":"Load the sign in page as a declared agent","ms":18520,"ok":true},{"step":"login_browser","label":"Load the sign in page as a standard browser","ms":10421,"ok":true},{"step":"openbanking","label":"Check developer portals and data sharing programs","ms":20390,"ok":true},{"step":"policy","label":"Read terms for automated access and delegation","ms":3580,"ok":true},{"step":"mcp","label":"Probe for MCP servers and check the official registry","ms":63795,"ok":true},{"step":"identity","label":"Discover OAuth and OpenID metadata","ms":42488,"ok":true},{"step":"phones","label":"Find published customer service phone numbers","ms":2015,"ok":true}],"previous":null,"history":[{"at":"2026-10-15T00:14:01.196Z","score":86,"level":4,"levelName":"Trusted","cal":1,"doors":{"discover":78,"connect":84,"identity":97,"web":99,"policy":58},"pts":{"robots_assistants":2,"llms_txt":0,"structured_data":1,"server_rendered":3,"sitemap_content":2,"mcp_server":8,"a2a_agent_card":0,"openapi_docs":2,"open_banking":2,"webmcp_tools":0,"poppy_discovery":0,"oauth_metadata":5,"pkce_registration":4,"passkeys":0,"high_assurance":2,"delegate_access":2,"declared_agent_homepage":3,"signin_reachable":4,"agent_browser_parity":2,"form_semantics":0,"semantic_markup":1,"terms_stance":0,"third_party_rules":3,"ai_position":0.5}}],"brand":{"src":"/data/logos/olo_com.png?v=fa032e5b","kind":"icon","invert":false,"tile":false,"w":160,"h":99,"source":"structured data","from":"https://www.olo.com/hubfs/2024-Website/assets/logos/logo-Olo-blue.svg","crisp":true,"v":2},"summary":{"score":86,"measuredWeight":80,"provisional":true,"calibration":1,"level":{"id":4,"name":"Trusted","summary":"A customer can authorize an agent with limited, revocable access.","nextLevel":{"id":5,"name":"Native","need":"Support agents on every channel: passkeys, a high assurance profile and a voice line scoring 70 or more."}},"doors":[{"id":"discover","name":"Discoverability","weight":15,"measured":true,"score":78,"raw":53,"points":11.7},{"id":"connect","name":"Protocol access","weight":20,"measured":true,"score":84,"raw":60,"points":16.8},{"id":"identity","name":"Identity and delegation","weight":20,"measured":true,"score":97,"raw":81,"points":19.3},{"id":"web","name":"Web experience","weight":15,"measured":true,"score":99,"raw":91,"points":14.9},{"id":"voice","name":"Voice and IVR","weight":20,"measured":false,"score":null,"points":0,"completed":0,"total":6},{"id":"policy","name":"Policy and governance","weight":10,"measured":true,"score":58,"raw":35,"points":5.8}],"strengths":["MCP server","OAuth and OpenID metadata","PKCE and client registration"],"gaps":[{"id":"terms_stance","title":"Terms on automated access","lost":4},{"id":"llms_txt","title":"llms.txt guide for agents","lost":3},{"id":"webmcp_tools","title":"Browser tools exposed to agents","lost":3},{"id":"ai_position","title":"Published position on AI agents","lost":2.5}],"headline":"Olo reaches level 4, Trusted. Web experience is the strongest area at 99 out of 100. Policy and governance is the weakest at 58."},"assistantDay":[{"id":"balance","job":"Check my account","outcome":"works","steps":[{"status":"ok","text":"MCP server: the agent connects directly."},{"status":"partial","text":"Website: the agent reaches the sign in page, and the terms restrict automated access.","detail":"The terms restrict automated access and name no exception for authorized agents."},{"status":"untested","text":"Phone line: not tested yet."}]},{"id":"rates","job":"Compare plans","outcome":"works","steps":[{"status":"ok","text":"Website: pricing and product pages are readable by agents without signing in."},{"status":"untested","text":"Phone line: not tested yet."}]},{"id":"human","job":"Get me to a person","outcome":"untested","steps":[{"status":"untested","text":"Phone line: not tested yet."}]}]}