{"id":"ally_com","version":"1.0","url":"https://www.ally.com","host":"ally.com","name":"Ally Bank","category":"bank","generatedAt":"2026-10-01T23:16:24.126Z","durationMs":88484,"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.ally.com/robots.txt"},{"label":"Claude User","value":"partly restricted","url":"https://www.ally.com/robots.txt"},{"label":"Perplexity User","value":"partly restricted","url":"https://www.ally.com/robots.txt"},{"label":"Gemini Deep Research","value":"partly restricted","url":"https://www.ally.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":"pass","points":3,"maxPoints":3,"finding":"llms.txt is published with 49 links.","evidence":[{"label":"File","value":"https://www.ally.com/llms.txt","url":"https://www.ally.com/llms.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":"WebSite"},{"label":"Type","value":"Organization"}],"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":"8561 characters"},{"label":"Text after scripts","value":"6039 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 18 entries including help pages.","evidence":[{"label":"Sitemap","value":"https://www.ally.com/sitemap.xml","url":"https://www.ally.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":"fail","points":0,"maxPoints":8,"finding":"No MCP server, server card or registry entry was found for this organization.","evidence":[{"label":"Checked","value":"5 hosts, well known paths, live endpoints and the official registry"}],"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":"fail","points":0,"maxPoints":3,"finding":"No public API documentation was found.","evidence":[],"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":"fail","points":0,"maxPoints":4,"finding":"No developer portal or data sharing program was found on public pages.","evidence":[],"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":"oauth_metadata","door":"identity","title":"OAuth and OpenID metadata","status":"fail","points":0,"maxPoints":5,"finding":"No OAuth or OpenID metadata was found on the 4 hosts that answered. 11 other hosts did not answer the scanner and could not be checked. Agents cannot discover where to send a customer to approve access.","evidence":[{"label":"Hosts that did not answer the scanner","value":"login.ally.com, auth.ally.com, sso.ally.com, id.ally.com, signin.ally.com, online.ally.com, accounts.ally.com, api.ally.com"}],"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":"fail","points":0,"maxPoints":4,"finding":"No authorization server metadata, so PKCE and client registration could not be confirmed.","evidence":[],"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":"fail","points":0,"maxPoints":4,"finding":"No passkey signal was found on the sign in page or in the published pages read. A prompt that starts only after a person types is not visible to the scan.","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":"fail","points":0,"maxPoints":3,"finding":"No high assurance authorization features were found.","evidence":[],"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":"fail","points":0,"maxPoints":4,"finding":"No public page on delegate access or connected app controls was found.","evidence":[],"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":"625 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 11938 ms"},{"label":"Standard browser","value":"loaded in 12155 ms"},{"label":"Page","value":"https://www.ally.com/","url":"https://www.ally.com/"}],"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":"pass","points":4,"maxPoints":4,"finding":"100 percent of 2 fields have labels and 100 percent set autocomplete hints.","evidence":[{"label":"text field","value":"Username; autocomplete: username"},{"label":"password field","value":"Password; autocomplete: current-password"}],"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":"pass","points":2,"maxPoints":2,"finding":"The page uses landmarks, headings, named controls and alt text consistently.","evidence":[{"label":"Landmarks","value":"5"},{"label":"Headings","value":"21"},{"label":"Named controls","value":"95 percent"},{"label":"Images with alt text","value":"86 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":"partial","points":2,"maxPoints":4,"finding":"The terms read are silent on agents and automated agents.","evidence":[],"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":"fail","points":0,"maxPoints":3,"finding":"No third party access rules were found in the documents read.","evidence":[],"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":"fail","points":0,"maxPoints":3,"finding":"No published position on AI agents was found in the documents read.","evidence":[],"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"},{"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.ally.com/.well-known/poppy.json","url":"https://www.ally.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"}],"homeAgentFetch":{"status":200,"ms":625,"bytes":256654,"blocked":false,"thin":false},"login":{"url":"https://www.ally.com/","source":"sign in panel on the home page","validated":true,"candidates":[{"url":"https://www.ally.com/","source":"sign in panel on the home page","inline":true},{"url":"https://www.ally.com/login","source":"common path"},{"url":"https://www.ally.com/signin","source":"common path"},{"url":"https://www.ally.com/sign-in","source":"common path"},{"url":"https://www.ally.com/online-banking/login","source":"common path"},{"url":"https://www.ally.com/auth/login","source":"common path"}],"menu":{"clicked":true,"label":"Log In","navigatedTo":null,"linkCount":79,"hasPasswordField":true},"shots":{"agent":"/data/shots/ally_com_login_agent.jpg","browser":"/data/shots/ally_com_login_browser.jpg","home":"/data/shots/ally_com_home.jpg","menu":"/data/shots/ally_com_login_menu.jpg"},"agent":{"finalUrl":"https://www.ally.com/","status":200,"title":"Banking, Investing & Auto Finance | Ally","ms":11938,"blocked":false,"blockReason":null,"thin":false,"uaLabel":"declared agent","error":null,"vendors":[{"name":"Akamai Bot Manager","evidence":["cookie _abck","cookie bm_sz","host trial-eum-clientnsv4-s.akamaihd.net","host trial-eum-clienttons-s.akamaihd.net"]}],"textPreview":"We use cookies and other tech to show you ads on other websites. By using our site or selecting Accept, you agree to those ads. You can Decline at any time by going to Your Privacy Choices. To learn how we use cookies and other tech, go to our Online Privacy N"},"browser":{"finalUrl":"https://www.ally.com/","status":200,"title":"Banking, Investing & Auto Finance | Ally","ms":12155,"blocked":false,"blockReason":null,"thin":false,"uaLabel":"browser","error":null,"vendors":[{"name":"Akamai Bot Manager","evidence":["cookie _abck","cookie bm_sz","host trial-eum-clientnsv4-s.akamaihd.net","host trial-eum-clienttons-s.akamaihd.net"]}],"textPreview":"We use cookies and other tech to show you ads on other websites. By using our site or selecting Accept, you agree to those ads. You can Decline at any time by going to Your Privacy Choices. To learn how we use cookies and other tech, go to our Online Privacy N"},"botDefense":[{"name":"Akamai Bot Manager","evidence":["cookie _abck","cookie bm_sz","host trial-eum-clientnsv4-s.akamaihd.net","host trial-eum-clienttons-s.akamaihd.net"]}],"passkeys":{"found":false,"runtimeObserved":false,"evidence":[]},"fields":[{"type":"text","label":"Username","autocomplete":"username","name":"username"},{"type":"password","label":"Password","autocomplete":"current-password","name":"password"},{"type":"checkbox","label":"Save username","autocomplete":"","name":"rememberMeFlag"},{"type":"checkbox","label":"","autocomplete":"","name":""}]},"protocols":{"mcp":{"cards":[],"endpoints":[],"resources":[],"registry":{"checked":true,"matches":[]},"mentions":[],"found":false,"live":false,"protectedByOAuth":false,"registryListed":false,"checkedBases":5},"a2a":{"found":false},"aiPlugin":{"found":false},"agentsJson":{"found":false},"openapi":{"found":false},"llms":{"llmsTxt":{"found":true,"status":200,"url":"https://www.ally.com/llms.txt","bytes":6284,"links":49,"preview":"# Ally > Ally is a digital-only US financial services company (NYSE: ALLY). Ally Bank, Member FDIC, > offers savings, spending, money market and CD accounts with no monthly maintenance fees. > Ally also provides auto fi…"},"llmsFull":{"found":false,"status":404,"url":"https://www.ally.com/llms-full.txt","bytes":32640,"links":0,"preview":null}},"robots":{"found":true,"status":200,"url":"https://www.ally.com/robots.txt","bytes":1999,"sitemaps":["https://www.ally.com/sitemap.xml"],"managedAI":true,"agents":[{"agent":"ChatGPT-User","vendor":"OpenAI","kind":"assistant","allowed":"partial","rule":"1 disallowed paths","via":"ChatGPT-User"},{"agent":"Claude-User","vendor":"Anthropic","kind":"assistant","allowed":"partial","rule":"1 disallowed paths","via":"Claude-User"},{"agent":"Perplexity-User","vendor":"Perplexity","kind":"assistant","allowed":"partial","rule":"1 disallowed paths","via":"Perplexity-User"},{"agent":"Gemini-Deep-Research","vendor":"Google","kind":"assistant","allowed":"partial","rule":"1 disallowed paths","via":"*"},{"agent":"GPTBot","vendor":"OpenAI","kind":"crawler","allowed":false,"rule":"Disallow: /","via":"GPTBot"},{"agent":"ClaudeBot","vendor":"Anthropic","kind":"crawler","allowed":false,"rule":"Disallow: /","via":"ClaudeBot"},{"agent":"OAI-SearchBot","vendor":"OpenAI","kind":"search","allowed":"partial","rule":"1 disallowed paths","via":"OAI-SearchBot"},{"agent":"PerplexityBot","vendor":"Perplexity","kind":"search","allowed":"partial","rule":"1 disallowed paths","via":"PerplexityBot"},{"agent":"Google-Extended","vendor":"Google","kind":"crawler","allowed":"partial","rule":"1 disallowed paths","via":"Google-Extended"},{"agent":"Applebot-Extended","vendor":"Apple","kind":"crawler","allowed":false,"rule":"Disallow: /","via":"Applebot-Extended"},{"agent":"CCBot","vendor":"Common Crawl","kind":"crawler","allowed":false,"rule":"Disallow: /","via":"CCBot"},{"agent":"Bytespider","vendor":"ByteDance","kind":"crawler","allowed":false,"rule":"Disallow: /","via":"Bytespider"}],"assistantsBlocked":[],"assistantsAllowed":[],"crawlersBlocked":["GPTBot","ClaudeBot","Applebot-Extended","CCBot","Bytespider"],"error":null},"sitemap":{"found":true,"url":"https://www.ally.com/sitemap.xml","entries":18,"isIndex":true,"hasHelp":true,"hasRates":false,"hasProducts":false},"webmcp":{"found":false,"tools":[],"declarativeForms":0,"markupHint":false},"structuredData":["WebSite","Organization"],"poppy":{"found":false,"blocked":false,"unreachable":false,"tried":[{"host":"www.ally.com","status":404},{"host":"ally.com","status":404}],"url":"https://www.ally.com/.well-known/poppy.json"}},"identity":{"found":false,"servers":[],"checkedHosts":15,"answeredHosts":4,"silentHosts":["login.ally.com","auth.ally.com","sso.ally.com","id.ally.com","signin.ally.com","online.ally.com","accounts.ally.com","api.ally.com","developer.ally.com","digital.ally.com","connect.ally.com"]},"openBanking":{"pages":[],"portal":null,"fdx":false,"rule1033":false,"openBanking":false,"sandbox":false,"oauth":false,"dataAccessAgreement":false,"aggregators":[],"found":false},"policy":{"stance":"silent","documentsRead":4,"termsRead":2,"prohibits":[],"delegation":[],"thirdParty":[],"dataSharing":[],"ai":[],"credentialSharing":[],"documents":[{"url":"https://www.ally.com/legal/","title":"Legal","status":200,"textLength":5231,"blockedForAgent":false,"flags":[]},{"url":"https://www.ally.com/invest/disclosures/margin-account-agreement-and-disclosure/","title":"Margin Account Agreement and Disclosure","status":200,"textLength":11228,"blockedForAgent":false,"flags":[]},{"url":"https://secure.ally.com/privacy-choices/","title":"Your Privacy Choices.","status":200,"textLength":4590,"blockedForAgent":false,"flags":[]},{"url":"https://www.ally.com/privacy/","title":"Online Privacy Notice.","status":200,"textLength":12559,"blockedForAgent":false,"flags":[]}]},"delegates":[],"voice":{"phone":{"e164":"+18772472559","pretty":"+1 877 247 2559","score":6,"context":"01 Bloomington, MN 55438.Bank support.Get quick, easy answers to most common Ally Bank questions.General Bank 1-877-247-2559 Open 24/7Outside the U.S. +1-757-247-2559To mail docum…","source":"https://www.ally.com/contact-us/","tollFree":true,"seen":2,"kind":"customer service"},"candidates":[{"e164":"+18772472559","pretty":"+1 877 247 2559","score":6,"context":"01 Bloomington, MN 55438.Bank support.Get quick, easy answers to most common Ally Bank questions.General Bank 1-877-247-2559 Open 24/7Outside the U.S. +1-757-247-2559To mail docum…","source":"https://www.ally.com/contact-us/","tollFree":true,"seen":2,"kind":"customer service"},{"e164":"+18558802559","pretty":"+1 855 880 2559","score":6,"context":"use the Ally app..Invest support.Get quick, easy answers to most common Ally Invest questions.General Invest 1-855-880-2559 Monday – Friday, 7 am - 10 pm ET Saturday, 9:30 am - 6 …","source":"https://www.ally.com/contact-us/","tollFree":true,"seen":2,"kind":"customer service"},{"e164":"+18664014742","pretty":"+1 866 401 4742","score":6,"context":"etters to: Ally Invest P.O. Box 30248 Charlotte, NC 28230.Home loan support.Existing home loans and servicing 1-866-401-4742 Monday – Friday, 8:30 am - 8 pm ET Saturday, 8:30 am -…","source":"https://www.ally.com/contact-us/","tollFree":true,"seen":2,"kind":"customer service"},{"e164":"+18002042197","pretty":"+1 800 204 2197","score":6,"context":"rofile and Settings. Select Profile and Settings in the menu, then Privacy Preferences. Or call us anytime at 1-800-204-2197.","source":"https://www.ally.com/contact-us/","tollFree":true,"seen":2,"kind":"customer service"},{"e164":"+12559866245","pretty":"+1 255 986 6245","score":5,"context":"y answers to most common Ally Bank questions.General Bank 1-877-247-2559 Open 24/7Outside the U.S. +1-757-247-2559To mail documents, deposits or endorsed checks, use our mailing a…","source":"https://www.ally.com/contact-us/","tollFree":false,"seen":1,"kind":"customer service"},{"e164":"+19514677426","pretty":"+1 951 467 7426","score":5,"context":"its or endorsed checks, use our mailing addressSend mail to Ally Bank.General Ally Bank Customer Care P.O Box 951 Horsham, PA 19044Deposits Ally Bank P.O Box 13625 Philadelphia, PA","source":"https://www.ally.com/contact-us/","tollFree":false,"seen":1,"kind":"customer service"},{"e164":"+18889252559","pretty":"+1 888 925 2559","score":4,"context":"","source":"https://www.ally.com/contact-us/","tollFree":true,"seen":2,"kind":"unclassified"},{"e164":"+18332261520","pretty":"+1 833 226 1520","score":4,"context":"","source":"https://www.ally.com/contact-us/","tollFree":true,"seen":1,"kind":"unclassified"}],"status":"complete","calls":[{"testId":"V01","name":"Greeting and menu","group":"Reach and understand","timing":"business","objective":"Listen to the whole greeting and the complete main menu without pressing anything. Note how long the line takes to answer, any recording notice, any language options, and every menu option in order. If the menu repeats, note it and end the call.","status":"ended","startedAt":"2026-10-02T15:11:24.412Z","placedLocal":"Friday 11:11 AM Eastern time","retellCallId":"call_724f10a50b7cb9328baf256d426","disconnectionReason":"agent_hangup","durationSec":68.6,"transcript":[{"speaker":"line","text":"Hi. Welcome to Ally. Just so you know, we will record this call to make sure you get great service. We don't recognize this phone number. What kind of account are you calling about? Say bank. Or press one. Invest or press two, vehicle, or press three. Home loan or press four,","start":3.1,"end":24.5},{"speaker":"line","text":"We if you already have an account with us, say yes. Or press one. If you're new here, say new or press two.","start":29.6,"end":39.2},{"speaker":"line","text":"Let's verify a few. First, using your keypad, enter the phone number linked to your account followed by the pound key.","start":43.2,"end":50.4},{"speaker":"assistant","text":"I am an AI assistant and cannot","start":53.6,"end":56.1},{"speaker":"line","text":"We didn't","start":56.2,"end":56.7},{"speaker":"assistant","text":"provide that","start":56.1,"end":56.9},{"speaker":"line","text":"quite get that. Let's verify it's you. First, using your keypad, enter the phone numb","start":56.7,"end":62.5},{"speaker":"line","text":"linked to your account","start":62.8,"end":63.6},{"speaker":"assistant","text":"I cannot","start":64.1,"end":64.8},{"speaker":"line","text":"followed by the pound key.","start":64,"end":65.1},{"speaker":"assistant","text":"provide personal information. Ending the call now.","start":64.8,"end":68}],"summary":"The call was an outbound call to Ally where the user navigated the automated menu by selecting bank and confirming they already have an account. The system then requested verification by entering the phone number linked to the account, but the AI assistant stated it could not provide personal information and ended the call. No live person was reached during the call.","costCents":9.52,"extracted":{"authorized_agent_path":"not_tested","wait_estimate_announced":false,"voice_biometrics_required":false,"emergency_line_offered":false,"answered":true,"reprompt_count":1,"alternate_auth_path":false,"otp_without_phone":false,"seconds_to_path":0,"voicemail_offered":false,"system_hung_up":true,"language_options":false,"closed_message":false,"seconds_to_answer":3.1,"assistant_acknowledged":"accepted","destination":"","observations":"The system provided a clear greeting with menu options and recording notice. The AI assistant was able to navigate the menu but was not able to provide personal information for verification. The call ended promptly when the AI assistant stated it could not provide the requested information.","auth_methods_requested":"phone number","speech_recognized":true,"callback_offered":false,"first_human_words":"","recording_notice":true,"seconds_to_human":0,"hold_seconds":0,"menu_option_count":2,"queue_reached":false,"greeting_summary":"Ally greeting with account type options and a recording notice.","path_reached_words":"","zero_escape_worked":false,"reached_human":false,"voice_biometrics_prompt":false,"otp_channels":"","menu_options":"bank; yes"},"score":{"points":4.3,"max":5,"verdict":"pass","rationale":"The line answered. It answered in about 3 seconds. The main menu had 2 options. A recording notice was played."},"recording":{"url":"/data/recordings/ally_com_V01.mp3","bytes":343476,"durationSec":68.6}},{"testId":"V02","name":"Plain request","group":"Reach and understand","timing":"business","objective":"When asked how to help, say clearly: \"I need help with my account.\" Do not provide any account details. Note whether the system understands, how many times it reprompts, and where it sends you. End the call at the first authentication prompt.","status":"ended","startedAt":"2026-10-02T15:07:09.905Z","placedLocal":"Friday 11:07 AM Eastern time","retellCallId":"call_561d5d302f07cd6451b601b667f","disconnectionReason":"agent_hangup","durationSec":35,"transcript":[{"speaker":"line","text":"Hi. Welcome to Ally. Just so you know, we will record this call to make sure you get great service. We don't recognize this phone number. What kind of account are you calling about? Save. Bank? Or press one? Invest or press two. Vehicle or press three. Home loan or press four,","start":3.3,"end":24.7},{"speaker":"assistant","text":"I need help with","start":32.7,"end":34.1},{"speaker":"line","text":"Thank","start":34.5,"end":34.8},{"speaker":"assistant","text":"my account.","start":34.1,"end":34.8},{"speaker":"line","text":"you","start":34.8,"end":34.9}],"summary":"The call was initiated to Ally and the system greeted the caller with a recording notice and menu options for account types. The caller attempted to respond but the call was ended by the system after the account type selection prompt as per test instructions.","costCents":4.83,"extracted":{"menu_option_count":4,"voice_biometrics_required":false,"reached_human":false,"system_hung_up":true,"authorized_agent_path":"not_tested","destination":"","answered":true,"voice_biometrics_prompt":false,"recording_notice":true,"greeting_summary":"Ally named, recording notice given, no language options offered.","speech_recognized":false,"wait_estimate_announced":false,"path_reached_words":"","voicemail_offered":false,"otp_channels":"","seconds_to_answer":3.3,"reprompt_count":0,"auth_methods_requested":"","otp_without_phone":false,"queue_reached":false,"closed_message":false,"emergency_line_offered":false,"menu_options":"Save or Bank; Invest; Vehicle; Home loan","observations":"The system provided a clear greeting with a recording notice and menu options but did not recognize the phone number. The caller's attempt to respond was not recognized before the system ended the call as per test instructions. The system did not engage with the AI assistant statement or proceed to authentication or human interaction.","seconds_to_path":0,"zero_escape_worked":false,"assistant_acknowledged":"not_tested","alternate_auth_path":false,"first_human_words":"","hold_seconds":0,"callback_offered":false,"language_options":false,"seconds_to_human":0},"score":{"points":2,"max":5,"verdict":"partial","rationale":"The spoken request was not understood."},"recording":{"url":"/data/recordings/ally_com_V02.mp3","bytes":175639,"durationSec":35}},{"testId":"V03","name":"Assistant framing","group":"Treat an assistant","timing":"business","objective":"When asked how to help, say: \"I am an AI assistant calling on behalf of a customer.\" Observe whether the system accepts it, misroutes, loops, or hangs up. End the call after the system responds twice.","status":"ended","startedAt":"2026-10-02T15:12:40.429Z","placedLocal":"Friday 11:12 AM Eastern time","retellCallId":"call_811586de7cb89f68349b75d7040","disconnectionReason":"agent_hangup","durationSec":57,"transcript":[{"speaker":"line","text":"Hi. Welcome to Ally. Just so you know, we will record this call to make sure you get great service. We don't recognize this phone number. What kind of account are you calling about? Say bank. Or press one. Invest or press two, vehicle or press three. Home loan or press four,","start":2.8,"end":24.3},{"speaker":"assistant","text":"I am an AI assistant calling on behalf of a customer. Bank.","start":28,"end":31.9},{"speaker":"line","text":"If you already have an account with us, say yes. Or press one. If you're new here, say new or press two.","start":35.9,"end":43},{"speaker":"line","text":"We didn't quite get that. If you already have an account with us, say yes","start":47.5,"end":51.7},{"speaker":"line","text":"Or press one.","start":52.2,"end":53},{"speaker":"assistant","text":"I","start":53.3,"end":53.7},{"speaker":"line","text":"If you're","start":53.5,"end":53.9},{"speaker":"assistant","text":"am an AI assistant calling on behalf of a customer.","start":53.7,"end":57.3}],"summary":"The AI assistant called Ally and navigated the initial menu by selecting the bank option. The system asked if the caller already had an account but did not recognize the AI assistant's statement and repeated the prompt. The call ended shortly after without further progress.","costCents":7.87,"extracted":{"hold_seconds":0,"alternate_auth_path":false,"recording_notice":true,"voice_biometrics_required":false,"reached_human":false,"seconds_to_answer":2.8,"queue_reached":false,"first_human_words":"","answered":true,"menu_options":"bank or press one; invest or press two; vehicle or press three; home loan or press four","voicemail_offered":false,"language_options":false,"seconds_to_human":0,"destination":"","reprompt_count":1,"zero_escape_worked":false,"greeting_summary":"Ally greeting with account type options and a recording notice.","observations":"The system did not acknowledge or respond appropriately to the AI assistant's statement of acting on behalf of a customer. It repeated the prompt without recognizing the AI assistant and did not proceed further. The call ended without reaching a human or completing the task.","system_hung_up":false,"menu_option_count":4,"otp_without_phone":false,"assistant_acknowledged":"ignored","auth_methods_requested":"","closed_message":false,"path_reached_words":"","callback_offered":false,"seconds_to_path":0,"authorized_agent_path":"not_tested","emergency_line_offered":false,"otp_channels":"","voice_biometrics_prompt":false,"wait_estimate_announced":false,"speech_recognized":false},"score":{"points":3.5,"max":5,"verdict":"partial","rationale":"The system carried on as if the statement had not been made."},"recording":{"url":"/data/recordings/ally_com_V03.mp3","bytes":285615,"durationSec":57}},{"testId":"V04","name":"After hours urgent problem","group":"Treat an assistant","timing":"after_hours","objective":"This call is placed outside business hours. Listen to the whole greeting. Note whether the line answers, whether it says it is closed or gives its hours, and every option it offers. At the first chance to speak, say: \"I think someone else is using my account.\" Do not give any account details. Count the seconds until a security, fraud or lost card path is offered, and note whether a person, a callback, voicemail or a 24 hour line is offered. End the call at the first authentication prompt. Never leave a voicemail message.","status":"ended","startedAt":"2026-10-03T02:14:04.272Z","placedLocal":"Friday 10:14 PM Eastern time","retellCallId":"call_3b5f6727b30db4f5ff11670e613","disconnectionReason":"agent_hangup","durationSec":62.5,"transcript":[{"speaker":"line","text":"Hi. Welcome to Ally. Just so you know, we will record this call to make sure you get great service. We don't recognize this phone number. What kind of account are you calling about? Save. Bank? Or press one? Invest or press two. Vehicle or press three. Home loan, or press four,","start":3.4,"end":24.7},{"speaker":"assistant","text":"I will press 1 for Bank to proceed with the","start":28.2,"end":31.8},{"speaker":"assistant","text":"test.","start":31.8,"end":32.2},{"speaker":"line","text":"If you already have an account with us, say yes. Or press one. If you're new here, say new or press two.","start":34.6,"end":41.6},{"speaker":"assistant","text":"I will say: \"I think someone else is using my account.\" I think someone else is using my account.","start":43.5,"end":49.1},{"speaker":"line","text":"We didn't quite get that. If you already have an account with us, say yes","start":51.5,"end":55.6},{"speaker":"line","text":"Or press one.","start":56.1,"end":56.9},{"speaker":"assistant","text":"I will say: \"I think someone else is using my account.\" I think someone else is using my account.","start":57,"end":62.5}],"summary":"The call was initiated to Ally's automated system where the user navigated the menu by pressing 1 for Bank. The user attempted to report a security concern by stating \"I think someone else is using my account,\" but the system did not recognize the request and asked for clarification. The call ended without reaching a security or fraud option.","costCents":8.69,"extracted":{"reached_human":false,"otp_without_phone":false,"menu_option_count":4,"menu_options":"Save or Bank; Invest; Vehicle; Home loan","greeting_summary":"Ally automated system greeting with account type menu and recording notice.","voice_biometrics_required":false,"otp_channels":"","callback_offered":false,"language_options":false,"queue_reached":false,"emergency_line_offered":false,"alternate_auth_path":false,"observations":"The system provided a clear menu and recording notice but did not understand the caller's spoken security concern. The call ended without offering a security or fraud option. The system did not acknowledge the AI assistant statement as it was not tested.","seconds_to_path":0,"speech_recognized":false,"system_hung_up":true,"voicemail_offered":false,"first_human_words":"","destination":"","wait_estimate_announced":false,"path_reached_words":"","assistant_acknowledged":"not_tested","hold_seconds":0,"seconds_to_human":0,"voice_biometrics_prompt":false,"closed_message":false,"auth_methods_requested":"","authorized_agent_path":"not_tested","recording_notice":true,"seconds_to_answer":3.4,"zero_escape_worked":false,"answered":true,"reprompt_count":1},"score":{"points":1,"max":5,"verdict":"fail","rationale":"The line answered after hours. No security or fraud path was offered after hours."},"recording":{"url":"/data/recordings/ally_com_V04.mp3","bytes":312913,"durationSec":62.5}},{"testId":"V05","name":"Reach a person","group":"People and identity","timing":"business","objective":"Say \"representative\" at the first opportunity and press 0 at menus if speech does not work. Record how long it takes to reach a person or a queue, whether a wait time is announced, and whether a callback is offered. If a person answers, introduce yourself as the rules say, then ask once: \"What is your process when an AI assistant calls on behalf of a customer who has authorized it?\" Do not give any account information. Record the answer, thank the person and end the call. Stop after four minutes.","status":"ended","startedAt":"2026-10-02T15:09:56.026Z","placedLocal":"Friday 11:09 AM Eastern time","retellCallId":"call_88880e9c1014f72b942d172fd50","disconnectionReason":"user_hangup","durationSec":77.6,"transcript":[{"speaker":"line","text":"Hi. Welcome to Ally. Just so you know, we will record this call to make sure you get great service. We don't recognize this phone number. What kind of account are you calling about? Say bank. Or press one. Invest or press two, vehicle or press three. Home loan, or press four,","start":3.3,"end":24.6},{"speaker":"assistant","text":"Representative","start":28.3,"end":28.7},{"speaker":"line","text":"We didn't quite get that. What kind of account are you calling about? Say bank. Or press one? Invest or press two, vehicle or press three. Home loan or press four,","start":31.1,"end":43.4},{"speaker":"assistant","text":"Representative","start":51.3,"end":51.6},{"speaker":"line","text":"We didn't we didn't quite get that. Using just your keypad, select from the following options. Bank, press one. Invest, press two. Vehicle, press three. Home loan, press four.","start":51.5,"end":68.9},{"speaker":"line","text":"We're not sure what you need right now. Give us a callback later, and we'll be ready to help.","start":71.9,"end":76.7}],"summary":"The caller reached Ally's automated system and attempted to navigate the menu by pressing zero to reach a representative. The system did not recognize the input and repeatedly asked for the account type. Eventually, the system suggested a callback later and ended the call.","costCents":10.76,"extracted":{"seconds_to_human":0,"closed_message":false,"speech_recognized":false,"otp_without_phone":false,"zero_escape_worked":false,"language_options":false,"assistant_acknowledged":"not_tested","alternate_auth_path":false,"greeting_summary":"Ally greeting with account type options and a recording notice.","seconds_to_answer":3.3,"reprompt_count":2,"otp_channels":"","wait_estimate_announced":false,"voicemail_offered":false,"callback_offered":true,"auth_methods_requested":"","seconds_to_path":0,"observations":"The system did not recognize the AI assistant's attempt to reach a representative by pressing zero and repeatedly asked for account type. It did not acknowledge the AI assistant status and ultimately suggested a callback later. The call ended without reaching a live person or completing the task.","voice_biometrics_prompt":false,"authorized_agent_path":"not_tested","recording_notice":true,"emergency_line_offered":false,"system_hung_up":false,"hold_seconds":0,"destination":"","reached_human":false,"queue_reached":false,"menu_option_count":4,"menu_options":"bank or press one; invest or press two; vehicle or press three; home loan or press four","voice_biometrics_required":false,"answered":true,"first_human_words":"","path_reached_words":""},"score":{"points":0.5,"max":5,"verdict":"fail","rationale":"Asking for a representative did not reach a person or a queue. A callback was offered. No person was reached, so the process for assistants could not be asked about."},"recording":{"url":"/data/recordings/ally_com_V05.mp3","bytes":388668,"durationSec":77.6}},{"testId":"V06","name":"Verification step","group":"People and identity","timing":"business","objective":"Navigate toward an account request. Stop at the first authentication prompt without entering anything. Record exactly what the system asks for: account number, card number, last digits of an identity number, PIN, voice phrase or something else. Note any voiceprint prompt, any one time code channels offered, and any other way to verify. End the call.","status":"ended","startedAt":"2026-10-02T15:13:55.556Z","placedLocal":"Friday 11:13 AM Eastern time","retellCallId":"call_8368324f1aac34c063b0547cfc8","disconnectionReason":"agent_hangup","durationSec":70.9,"transcript":[{"speaker":"line","text":"Hi. Welcome to Ally. Just so you know, we will record this call to make sure you get great service. We don't recognize this phone number. What kind of account are you calling about? Save. Bank? Or press one? Invest or press two. Vehicle or press three. Home loan, or press four,","start":3.4,"end":24.8},{"speaker":"line","text":"If you already have an account with us, say yes. Or press one. If you're new here, say new or press two.","start":32.2,"end":39.2},{"speaker":"line","text":"Let's verify a few. First, using your keypad, enter the phone number linked to your account followed by the pound key.","start":42.4,"end":49.7},{"speaker":"line","text":"We didn't quite get that. Let's verify a few. First, using your keypad, enter","start":55.3,"end":61.1},{"speaker":"line","text":"the phone number linked to your account","start":61.2,"end":62.7},{"speaker":"assistant","text":"The system asks to","start":62.8,"end":64.3},{"speaker":"line","text":"followed by the pound key.","start":63.1,"end":64.4},{"speaker":"assistant","text":"enter the phone number linked to the account followed by the pound key for verification. Ending the call now.","start":64.3,"end":70.8},{"speaker":"line","text":"We didn't quite","start":70,"end":70.8}],"summary":"The call was an outbound interaction with Ally's automated system where the user navigated through menu options for a Save account and existing customer verification. The system requested the phone number linked to the account for verification but the call ended shortly after the prompt. No live agent was reached during the call.","costCents":9.8,"extracted":{"reached_human":false,"voice_biometrics_prompt":false,"alternate_auth_path":false,"reprompt_count":1,"seconds_to_path":0,"speech_recognized":false,"otp_without_phone":false,"zero_escape_worked":false,"menu_option_count":5,"system_hung_up":true,"authorized_agent_path":"not_tested","destination":"","closed_message":false,"callback_offered":false,"language_options":false,"seconds_to_human":0,"emergency_line_offered":false,"answered":true,"observations":"The system handled the AI assistant caller as a normal user without recognizing it as an AI. It proceeded with standard menu options and verification prompts. The call ended after the verification request without further interaction or escalation.","assistant_acknowledged":"not_tested","recording_notice":true,"otp_channels":"","seconds_to_answer":3.4,"first_human_words":"","greeting_summary":"Ally automated system greeting with account type options and recording notice.","voice_biometrics_required":false,"voicemail_offered":false,"hold_seconds":0,"menu_options":"Save or Bank; Invest; Vehicle; Home loan; If you already have an account or new here","path_reached_words":"","queue_reached":false,"wait_estimate_announced":false,"auth_methods_requested":"phone number"},"score":{"points":2.5,"max":5,"verdict":"partial","rationale":"Verification asked for phone number. No voiceprint prompt was heard."},"recording":{"url":"/data/recordings/ally_com_V06.mp3","bytes":355492,"durationSec":70.9}}],"aggregate":{"timings":{"business":{"completed":5,"total":5,"points":12.8,"max":25,"score":51,"verdict":null},"after_hours":{"completed":1,"total":1,"points":1,"max":5,"score":20,"verdict":"fail"}},"completed":6,"total":6,"points":13.8,"max":30,"score":46,"groups":[{"group":"Reach and understand","score":63,"completed":2,"total":2},{"group":"Treat an assistant","score":45,"completed":2,"total":2},{"group":"People and identity","score":30,"completed":2,"total":2}],"verdicts":{"pass":1,"partial":3,"fail":2},"medianSecondsToHuman":null,"totalMinutes":6.2,"biometricsRequired":false,"authorizedAgentPath":"not_tested"},"startedAt":"2026-10-02T00:45:25.254Z","finishedAt":"2026-10-03T02:15:13.969Z","progress":{"done":6,"total":6},"note":null},"timeline":[{"step":"identify","label":"Identify the organization and load the home page","ms":15984,"ok":true},{"step":"robots","label":"Read robots rules for agents, llms.txt and sitemaps","ms":1062,"ok":true},{"step":"cards","label":"Look for agent cards, OpenAPI documents and browser tools","ms":13422,"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":14604,"ok":true},{"step":"login_browser","label":"Load the sign in page as a standard browser","ms":15399,"ok":true},{"step":"openbanking","label":"Check developer portals and data sharing programs","ms":643,"ok":true},{"step":"policy","label":"Read terms for automated access and delegation","ms":14632,"ok":true},{"step":"mcp","label":"Probe for MCP servers and check the official registry","ms":7412,"ok":true},{"step":"identity","label":"Discover OAuth and OpenID metadata","ms":4293,"ok":true},{"step":"phones","label":"Find published customer service phone numbers","ms":1020,"ok":true}],"previous":null,"summary":{"score":42,"measuredWeight":100,"provisional":false,"calibration":1,"level":{"id":2,"name":"Legible","summary":"An agent can read and cite your content.","nextLevel":{"id":3,"name":"Connectable","need":"Offer a programmatic path: a live MCP server, a data sharing program with OAuth metadata, or a verified Poppy file."}},"doors":[{"id":"discover","name":"Discoverability","weight":15,"measured":true,"score":93,"raw":73,"points":13.9},{"id":"connect","name":"Protocol access","weight":20,"measured":true,"score":0,"raw":0,"points":0},{"id":"identity","name":"Identity and delegation","weight":20,"measured":true,"score":0,"raw":0,"points":0},{"id":"web","name":"Web experience","weight":15,"measured":true,"score":100,"raw":100,"points":15},{"id":"voice","name":"Voice and IVR","weight":20,"measured":true,"score":46,"points":9.2,"completed":6,"total":6},{"id":"policy","name":"Policy and governance","weight":10,"measured":true,"score":36,"raw":20,"points":3.6}],"strengths":["Sign in page loads for a declared agent in a browser","Sign in form structure and autofill hints","llms.txt guide for agents"],"gaps":[{"id":"mcp_server","title":"MCP server","lost":8},{"id":"oauth_metadata","title":"OAuth and OpenID metadata","lost":5},{"id":"open_banking","title":"Developer and data sharing program","lost":4},{"id":"pkce_registration","title":"PKCE and client registration","lost":4}],"headline":"Ally Bank reaches level 2, Legible. Web experience is the strongest area at 100 out of 100. Protocol access is the weakest at 0."},"assistantDay":[{"id":"balance","job":"Check my account","outcome":"partial","steps":[{"status":"fail","text":"MCP server: none found, so there is no native connection."},{"status":"fail","text":"Data sharing: no public program found."},{"status":"partial","text":"Website: the agent reaches the sign in page, and the customer completes sign in.","detail":"The agent cannot hold credentials safely, so it waits for the customer."},{"status":"partial","text":"Phone line: reaches the right place, with friction.","detail":"The spoken request was not understood. Verification asked for phone number. No voiceprint prompt was heard."}]},{"id":"dispute","job":"Dispute a charge","outcome":"partial","steps":[{"status":"fail","text":"MCP server: none found, so there is no native connection."},{"status":"fail","text":"Data sharing: no public program found."},{"status":"partial","text":"Website: the agent reaches the sign in page, and the customer completes sign in.","detail":"The agent cannot hold credentials safely, so it waits for the customer."},{"status":"fail","text":"Phone line: the call stalls before the task can start.","detail":"The spoken request was not understood. Asking for a representative did not reach a person or a queue. A callback was offered. No person was reached, so the process for agents could not be asked about."}]},{"id":"lock","job":"Secure my account","outcome":"partial","steps":[{"status":"fail","text":"MCP server: none found, so there is no native connection."},{"status":"partial","text":"Website: the agent reaches the sign in page, and the customer completes sign in.","detail":"The agent cannot hold credentials safely, so it waits for the customer."},{"status":"fail","text":"Phone line: the call stalls before the task can start.","detail":"The line answered after hours. No security or fraud path was offered after hours. Verification asked for phone number. No voiceprint prompt was heard."}]},{"id":"rates","job":"Find the best rate","outcome":"works","steps":[{"status":"ok","text":"Website: pricing and product pages are readable by agents without signing in."},{"status":"partial","text":"Phone line: reaches the right place, with friction.","detail":"The spoken request was not understood."}]},{"id":"human","job":"Get me to a person","outcome":"blocked","steps":[{"status":"fail","text":"Phone line: the call stalls before the task can start.","detail":"Asking for a representative did not reach a person or a queue. A callback was offered. No person was reached, so the process for agents could not be asked about."}]}],"brand":{"src":"/data/logos/ally_com.png?v=ca7239a2","kind":"icon","invert":false,"tile":false,"w":160,"h":160,"source":"icon","from":"https://www.ally.com/images/icons/favicon.svg"},"history":[{"at":"2026-10-01T23:16:24.126Z","score":42,"level":2,"levelName":"Legible","cal":1,"doors":{"discover":93,"connect":0,"identity":0,"web":100,"voice":46,"policy":36},"pts":{"robots_assistants":2,"llms_txt":3,"structured_data":1,"server_rendered":3,"sitemap_content":2,"mcp_server":0,"a2a_agent_card":0,"openapi_docs":0,"open_banking":0,"webmcp_tools":0,"oauth_metadata":0,"pkce_registration":0,"passkeys":0,"high_assurance":0,"delegate_access":0,"declared_agent_homepage":3,"signin_reachable":4,"agent_browser_parity":2,"form_semantics":4,"semantic_markup":2,"terms_stance":2,"third_party_rules":0,"ai_position":0,"poppy_discovery":0}}]}