{"id":"morningstar_com","version":"1.0","url":"https://www.morningstar.com","host":"morningstar.com","name":"Morningstar","category":"brokerage","generatedAt":"2026-10-15T03:01:02.619Z","durationMs":359186,"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.morningstar.com/robots.txt"},{"label":"Claude User","value":"partly restricted","url":"https://www.morningstar.com/robots.txt"},{"label":"Perplexity User","value":"partly restricted","url":"https://www.morningstar.com/robots.txt"},{"label":"Gemini Deep Research","value":"partly restricted","url":"https://www.morningstar.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":"fail","points":0,"maxPoints":3,"finding":"No JSON LD structured data was found on the home page.","evidence":[],"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":"15812 characters"},{"label":"Text after scripts","value":"13301 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":"partial","points":1,"maxPoints":2,"finding":"Sitemap is published with 13 entries, but help and pricing pages are not visible in it.","evidence":[{"label":"Sitemap","value":"https://www.morningstar.com/sitemap.xml","url":"https://www.morningstar.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://www.morningstar.com/mcp/v1 and lists 15 public tools.","evidence":[{"label":"Endpoint","value":"https://www.morningstar.com/mcp/v1","url":"https://www.morningstar.com/mcp/v1"},{"label":"Server","value":"Morningstar Investor 1.0.0"},{"label":"Protocol version","value":"2025-06-18"},{"label":"Tool","value":"lookup_security"},{"label":"Tool","value":"search_datapoint_catalog"},{"label":"Tool","value":"screen_for_securities"},{"label":"Tool","value":"list_market_movers"},{"label":"Tool","value":"read_company_report"},{"label":"Tool","value":"read_morningstar_articles"}],"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":"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.morningstar.com/.well-known/poppy.json","url":"https://www.morningstar.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 login-prod.morningstar.com.","evidence":[{"label":"Issuer","value":"https://login-prod.morningstar.com/","url":"https://login-prod.morningstar.com/.well-known/openid-configuration"},{"label":"Grant types","value":"client_credentials, authorization_code, refresh_token, password, implicit"},{"label":"Scopes listed","value":"14"}],"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":"partial","points":2,"maxPoints":4,"finding":"Passkeys are mentioned in published pages or sign in code, with no WebAuthn call observed when the page loaded.","evidence":[{"label":"Signal","value":"WebAuthn code present on login-prod.morningstar.com"}],"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":"no"},{"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":"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":"fail","points":0,"maxPoints":3,"finding":"The home page returned 403 to a declared agent.","evidence":[{"label":"Status","value":"403"}],"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":"partial","points":1,"maxPoints":4,"finding":"The sign in page is blocked for a declared agent but loads for a standard browser.","evidence":[{"label":"Declared agent","value":"blocked (request (was )?blocked)"},{"label":"Standard browser","value":"loaded in 10480 ms"},{"label":"Page","value":"https://www.morningstar.com/login?destination=https://www.morningstar.com/","url":"https://www.morningstar.com/login?destination=https://www.morningstar.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":"fail","points":0,"maxPoints":2,"finding":"A declared agent is treated worse than an anonymous browser.","evidence":[{"label":"Declared","value":"blocked"},{"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":"partial","points":2,"maxPoints":4,"finding":"50 percent of 2 fields have labels and 50 percent set autocomplete hints.","evidence":[{"label":"text field","value":"Email address *; autocomplete: email"},{"label":"password field","value":"no label; autocomplete: off"}],"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":"2"},{"label":"Headings","value":"2"},{"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":"…Terms and Conditions Privacy Center Disclosures Member User Agreement Corrections Do Not Sell or Share My Personal Information Accessibility Let’s confirm you aren’t a bot","url":"https://www.morningstar.com/investing-terms"},{"label":"Terms excerpt","value":"…Terms and Conditions Privacy Center Disclosures Member User Agreement Corrections Do Not Sell or Share My Personal Information Accessibility Let’s confirm you aren’t a bot","url":"https://www.morningstar.com/retirement/social-security-is-running-out-time-what-happens-then"}],"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"}],"homeAgentFetch":{"status":403,"ms":1223,"bytes":919,"blocked":true,"thin":false},"login":{"url":"https://www.morningstar.com/login?destination=https://www.morningstar.com/","source":"link on home page","validated":false,"candidates":[{"url":"https://www.morningstar.com/login?destination=https://www.morningstar.com/","source":"link on home page"},{"url":"https://www.morningstar.com/login","source":"common path"},{"url":"https://www.morningstar.com/signin","source":"common path"},{"url":"https://www.morningstar.com/sign-in","source":"common path"},{"url":"https://www.morningstar.com/online-banking/login","source":"common path"},{"url":"https://www.morningstar.com/auth/login","source":"common path"}],"menu":{"clicked":false,"label":null,"navigatedTo":null,"linkCount":0,"hasPasswordField":false},"shots":{"agent":"/data/shots/morningstar_com_login_agent.jpg","browser":"/data/shots/morningstar_com_login_browser.jpg","home":"/data/shots/morningstar_com_home.jpg","menu":null},"agent":{"finalUrl":"https://www.morningstar.com/login?destination=https://www.morningstar.com/","status":403,"title":"ERROR: The request could not be satisfied","ms":3489,"blocked":true,"blockReason":"request (was )?blocked","thin":false,"uaLabel":"declared agent","error":null,"vendors":[],"textPreview":"403 ERROR The request could not be satisfied. Request blocked. We can't connect to the server for this app or website at this time. There might be too much traffic or a configuration error. Try again later, or contact the app or website owner. If you provide c"},"browser":{"finalUrl":"https://login-prod.morningstar.com/u/login/identifier?state=hKFo2SA5LVczb0RfT0ZEcEZsSDl0Q0FiYWJnSy1DOHJaRkEyTqFur3VuaXZlcnNhbC1sb2dpbqN0aWTZIGJ0enMzNXlnMncwMS1ab0F1eFpEUHVhSFNyb1ZoSTVPo2NpZNkgN2xENFprbW1tT2Y3WTZVRDBZNHpzVUc2ZEJuOTUxa1Q","status":200,"title":"Log in | Morningstar","ms":10480,"blocked":false,"blockReason":null,"thin":false,"uaLabel":"browser","error":null,"vendors":[{"name":"Cloudflare","evidence":["header cf-ray","header server"]}],"textPreview":"Sign In to Morningstar Email address * Continue Not a Morningstar Investor subscriber? Get 7 Days Free"},"botDefense":[{"name":"Cloudflare","evidence":["header cf-ray","header server"]}],"passkeys":{"found":true,"runtimeObserved":false,"evidence":["WebAuthn code present on login-prod.morningstar.com"]},"fields":[{"type":"text","label":"Email address *","autocomplete":"email","name":"username"},{"type":"password","label":"","autocomplete":"off","name":""}]},"protocols":{"mcp":{"cards":[],"endpoints":[{"url":"https://www.morningstar.com/mcp/v1","getStatus":405,"contentType":"application/json","confirmed":true,"authRequired":false,"serverInfo":{"name":"Morningstar Investor","version":"1.0.0"},"protocolVersion":"2025-06-18","capabilities":["tools","prompts"],"sessionId":false,"tools":[{"name":"lookup_security","description":"Use this tool if you need to lookup the performanceID of a given security, or want to fetch additional datapoints about the security. Prefe…","readOnly":true},{"name":"search_datapoint_catalog","description":"List the datapoints (\"fields\") that can be requested on securities in other tools. Provide \"matches\" (a regex over the field's identifier, …","readOnly":true},{"name":"screen_for_securities","description":"Screen securities using a query over datapoint fields. Call without a \"query\" to get guidance on how to write one.","readOnly":true},{"name":"list_market_movers","description":"Show the top gainers, losers, and most actively traded US stocks","readOnly":true},{"name":"read_company_report","description":"Fetch the latest company report (business strategy, economic moat, fair value, risk, capital allocation, bulls/bears say, and related analy…","readOnly":true},{"name":"read_morningstar_articles","description":"Discover the latest Morningstar editorial content. Optionally full-text search with \"query\", or fetch a specific article directly with \"art…","readOnly":true},{"name":"get_portfolios","description":"Fetch the user's portfolios. By default returns a concise summary (name, total value, position count) for each portfolio. Set concise to fa…","readOnly":true},{"name":"stock_intersection","description":"Perform a \"look-through\" analysis to identify the underlying stock exposure and allocation weights of a fund, ETF, or portfolio. Provide a …","readOnly":true},{"name":"list_notifications","description":"Fetch the user's investor notifications: such as new analyst reports, upcoming/reported earnings, dividends, capital gains, rating changes,…","readOnly":true},{"name":"add_to_watchlist","description":"Add one or more securities from a watchlist by performanceID. Use the read_watchlist tool first to get the watchlist contents. If you do no…","readOnly":null},{"name":"create_watchlist","description":"Watchlists allow you to manage a named collection of securities","readOnly":false},{"name":"delete_watchlist","description":"Permanently delete a watchlist. Please confirm this action with the user before proceeding.","readOnly":false},{"name":"list_watchlists","description":"Lists all available watchlists for the user","readOnly":true},{"name":"read_watchlist","description":"Read the contents of a watchlist by ID. If you do not know the ID, use \"list_watchlists first.","readOnly":true},{"name":"remove_from_watchlist","description":"Removes one or more securities from a watchlist by performanceID. Use the read_watchlist tool first to get the watchlist contents. If you d…","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.morningstar.com","status":404},{"host":"morningstar.com","status":404}],"url":"https://www.morningstar.com/.well-known/poppy.json"},"llms":{"llmsTxt":{"found":false,"status":404,"url":"https://www.morningstar.com/llms.txt","bytes":0,"links":0,"preview":null},"llmsFull":{"found":false,"status":404,"url":"https://www.morningstar.com/llms-full.txt","bytes":0,"links":0,"preview":null}},"robots":{"found":true,"status":200,"url":"https://www.morningstar.com/robots.txt","bytes":423,"sitemaps":["https://www.morningstar.com/sitemap.xml","https://www.morningstar.com/content/marketing_sitemap.xml"],"managedAI":false,"agents":[{"agent":"ChatGPT-User","vendor":"OpenAI","kind":"assistant","allowed":"partial","rule":"12 disallowed paths","via":"*"},{"agent":"Claude-User","vendor":"Anthropic","kind":"assistant","allowed":"partial","rule":"12 disallowed paths","via":"*"},{"agent":"Perplexity-User","vendor":"Perplexity","kind":"assistant","allowed":"partial","rule":"12 disallowed paths","via":"*"},{"agent":"Gemini-Deep-Research","vendor":"Google","kind":"assistant","allowed":"partial","rule":"12 disallowed paths","via":"*"},{"agent":"GPTBot","vendor":"OpenAI","kind":"crawler","allowed":"partial","rule":"12 disallowed paths","via":"*"},{"agent":"ClaudeBot","vendor":"Anthropic","kind":"crawler","allowed":"partial","rule":"12 disallowed paths","via":"*"},{"agent":"OAI-SearchBot","vendor":"OpenAI","kind":"search","allowed":"partial","rule":"12 disallowed paths","via":"*"},{"agent":"PerplexityBot","vendor":"Perplexity","kind":"search","allowed":"partial","rule":"12 disallowed paths","via":"*"},{"agent":"Google-Extended","vendor":"Google","kind":"crawler","allowed":"partial","rule":"12 disallowed paths","via":"*"},{"agent":"Applebot-Extended","vendor":"Apple","kind":"crawler","allowed":"partial","rule":"12 disallowed paths","via":"*"},{"agent":"CCBot","vendor":"Common Crawl","kind":"crawler","allowed":"partial","rule":"12 disallowed paths","via":"*"},{"agent":"Bytespider","vendor":"ByteDance","kind":"crawler","allowed":"partial","rule":"12 disallowed paths","via":"*"}],"assistantsBlocked":[],"assistantsAllowed":[],"crawlersBlocked":[],"error":null},"sitemap":{"found":true,"url":"https://www.morningstar.com/sitemap.xml","entries":13,"isIndex":true,"hasHelp":false,"hasRates":false,"hasProducts":false},"webmcp":{"found":false,"tools":[],"declarativeForms":0,"markupHint":false},"structuredData":[]},"identity":{"found":true,"servers":[{"issuer":"https://login-prod.morningstar.com/","url":"https://login-prod.morningstar.com/.well-known/openid-configuration","host":"login-prod.morningstar.com","s256":true,"pkceMethods":["S256","plain"],"dcr":true,"cimd":false,"par":false,"parRequired":false,"dpop":true,"mtls":false,"rar":false,"privateKeyJwt":true,"grantTypes":["client_credentials","authorization_code","refresh_token","password","implicit","urn:ietf:params:oauth:grant-type:device_code","urn:ietf:params:oauth:grant-type:token-exchange","http://auth0.com/oauth/grant-type/password-realm","http://auth0.com/oauth/grant-type/passwordless/otp","http://auth0.com/oauth/grant-type/mfa-oob","http://auth0.com/oauth/grant-type/mfa-otp","http://auth0.com/oauth/grant-type/mfa-recovery-code","urn:ietf:params:oauth:grant-type:jwt-bearer"],"scopes":["openid","profile","offline_access","name","given_name","family_name","nickname","email","email_verified","picture","created_at","identities","phone","address"],"acrValues":[],"deviceFlow":true,"tokenExchange":true,"clientCredentials":true,"fapiLike":false}],"checkedHosts":19,"answeredHosts":8,"silentHosts":["media.morningstar.com","secure.morningstar.com","login.morningstar.com","auth.morningstar.com","sso.morningstar.com","id.morningstar.com","signin.morningstar.com","online.morningstar.com","accounts.morningstar.com","digital.morningstar.com","connect.morningstar.com"]},"openBanking":{"pages":[{"url":"https://apicenter.morningstar.com/login","source":"common subdomain","title":"Morningstar Login Page","terms":[],"aggregators":[],"excerpt":"https://uim-session-manager-awsprod.morningstar.com/sso/json/msusers/app-login?prompt=login&source=bus0009&targetUrl=https://apicenter.morningstar.com The Morningstar API Center provides users with d…"}],"portal":null,"fdx":false,"rule1033":false,"openBanking":false,"sandbox":false,"oauth":false,"dataAccessAgreement":false,"aggregators":[],"found":false},"policy":{"stance":"prohibits","documentsRead":5,"termsRead":3,"prohibits":[{"type":"prohibitsAutomation","label":"Restricts automated access","excerpt":"…Terms and Conditions Privacy Center Disclosures Member User Agreement Corrections Do Not Sell or Share My Personal Information Accessibility Let’s confirm you aren’t a bot","url":"https://www.morningstar.com/investing-terms","title":"Investing Terms and Definitions"},{"type":"prohibitsAutomation","label":"Restricts automated access","excerpt":"…Terms and Conditions Privacy Center Disclosures Member User Agreement Corrections Do Not Sell or Share My Personal Information Accessibility Let’s confirm you aren’t a bot","url":"https://www.morningstar.com/retirement/social-security-is-running-out-time-what-happens-then","title":"Social Security Is Running Out of Time. What Happens Then? Mark Miller"}],"delegation":[],"thirdParty":[],"dataSharing":[],"ai":[],"credentialSharing":[],"documents":[{"url":"https://www.morningstar.com/investing-terms","title":"Investing Terms and Definitions","status":403,"textLength":12102,"blockedForAgent":false,"flags":["Restricts automated access"]},{"url":"https://www.morningstar.com/company/terms-and-conditions","title":"Terms and Conditions","status":200,"textLength":5884,"blockedForAgent":false,"flags":[]},{"url":"https://www.morningstar.com/user-agreement","title":"Member User Agreement","status":403,"textLength":19935,"blockedForAgent":false,"flags":[]},{"url":"https://www.morningstar.com/retirement/social-security-is-running-out-time-what-happens-then","title":"Social Security Is Running Out of Time. What Happens Then? Mark Miller","status":403,"textLength":14224,"blockedForAgent":false,"flags":["Restricts automated access"]},{"url":"https://www.morningstar.com/company/privacy-center","title":"privacy center","status":200,"textLength":1960,"blockedForAgent":false,"flags":[]}]},"delegates":[],"voice":{"phone":{"e164":"+18666089567","pretty":"+1 866 608 9567","score":6,"context":"951 BOSRelations@morningstar.comByAllAccounts+1 866 856-4951 byallaccounts-support@morningstar.comData Feeds+ 1 866 608-9567 licensedproducts@morningstar.com https://login-prod.mo…","source":"https://www.morningstar.com/company/contact-us","tollFree":true,"seen":8,"kind":"customer service"},"candidates":[{"e164":"+18666089567","pretty":"+1 866 608 9567","score":6,"context":"951 BOSRelations@morningstar.comByAllAccounts+1 866 856-4951 byallaccounts-support@morningstar.comData Feeds+ 1 866 608-9567 licensedproducts@morningstar.com https://login-prod.mo…","source":"https://www.morningstar.com/company/contact-us","tollFree":true,"seen":8,"kind":"customer service"},{"e164":"+18774090473","pretty":"+1 877 409 0473","score":6,"context":"ningstarDirect@morningstar.com https://login-prod.morningstar.comDirect Advisory Suite / Advisor Workstation+ 1 877 409-0473AdvisorSupport@morningstar.comhttps://login-prod.mornin…","source":"https://www.morningstar.com/company/contact-us","tollFree":true,"seen":6,"kind":"customer service"},{"e164":"+18668564951","pretty":"+1 866 856 4951","score":6,"context":"morningstar.com https://login-prod.morningstar.comBOS+1 866 856-4951 BOSRelations@morningstar.comByAllAccounts+1 866 856-4951 byallaccounts-support@morningstar.comData Feeds+ 1 86…","source":"https://www.morningstar.com/company/contact-us","tollFree":true,"seen":2,"kind":"customer service"},{"e164":"+18662152503","pretty":"+1 866 215 2503","score":6,"context":".com https://login-prod.morningstar.comMorningstar Publishing SystemMPSProfilesSupport@morningstar.comOffice+ 1 866 215-2503 officequestions@morningstar.comSustainalytics+ 1 312 2…","source":"https://www.morningstar.com/company/contact-us","tollFree":true,"seen":1,"kind":"customer service"},{"e164":"+13126966000","pretty":"+1 312 696 6000","score":5,"context":"rom youContact Global HeadquartersGlobal Headquarters22 West Washington Street Chicago, IL 60602United States +1 312 696-6000U.S. Customer Service and Product SalesGeneral Informa…","source":"https://www.morningstar.com/company/contact-us","tollFree":false,"seen":2,"kind":"customer service"},{"e164":"+13123844000","pretty":"+1 312 384 4000","score":5,"context":"reet Chicago, IL 60602United States +1 312 696-6000U.S. Customer Service and Product SalesGeneral Information +1 312 384-4000 productinfo@morningstar.com Mergers and Acquisitions+…","source":"https://www.morningstar.com/company/contact-us","tollFree":false,"seen":1,"kind":"customer service"},{"e164":"+14165977332","pretty":"+1 416 597 7332","score":5,"context":"telligence+ 1 877 409-0473 AdvisorSupport@morningstar.com https://login-prod.morningstar.comMorningstar DBRS+ 1 416 597 7332 nickey.edwards@morningstar.comMorningstar Document Lib…","source":"https://www.morningstar.com/company/contact-us","tollFree":false,"seen":1,"kind":"customer service"},{"e164":"+13122447770","pretty":"+1 312 244 7770","score":5,"context":"SystemMPSProfilesSupport@morningstar.comOffice+ 1 866 215-2503 officequestions@morningstar.comSustainalytics+ 1 312 244-7770 (US) + 1 437 292-1050 (Canada) Sustainalytics.Client.S…","source":"https://www.morningstar.com/company/contact-us","tollFree":false,"seen":1,"kind":"customer service"}],"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":35594,"ok":true},{"step":"robots","label":"Read robots rules for agents, llms.txt and sitemaps","ms":5318,"ok":true},{"step":"cards","label":"Look for agent cards, Poppy files, OpenAPI documents and browser tools","ms":23304,"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":3854,"ok":true},{"step":"login_browser","label":"Load the sign in page as a standard browser","ms":10840,"ok":true},{"step":"openbanking","label":"Check developer portals and data sharing programs","ms":2097,"ok":true},{"step":"policy","label":"Read terms for automated access and delegation","ms":148152,"ok":true},{"step":"mcp","label":"Probe for MCP servers and check the official registry","ms":41127,"ok":true},{"step":"identity","label":"Discover OAuth and OpenID metadata","ms":79017,"ok":true},{"step":"phones","label":"Find published customer service phone numbers","ms":7955,"ok":true}],"previous":null,"history":[{"at":"2026-10-15T03:01:02.619Z","score":59,"level":0,"levelName":"Closed","cal":1,"doors":{"discover":64,"connect":64,"identity":88,"web":46,"policy":0},"pts":{"robots_assistants":2,"llms_txt":0,"structured_data":0,"server_rendered":3,"sitemap_content":1,"mcp_server":8,"a2a_agent_card":0,"openapi_docs":0,"open_banking":0,"webmcp_tools":0,"poppy_discovery":0,"oauth_metadata":5,"pkce_registration":4,"passkeys":2,"high_assurance":2,"delegate_access":0,"declared_agent_homepage":0,"signin_reachable":1,"agent_browser_parity":0,"form_semantics":2,"semantic_markup":1,"terms_stance":0,"third_party_rules":0,"ai_position":0}}],"brand":{"src":"/data/logos/morningstar_com.png?v=57ad6097","kind":"icon","invert":false,"tile":true,"w":160,"h":160,"source":"touch icon","from":"https://www.morningstar.com/apple-touch-icon.png","crisp":true,"v":2},"summary":{"score":59,"measuredWeight":80,"provisional":true,"calibration":1,"level":{"id":0,"name":"Closed","summary":"Declared agents are blocked from the public website.","nextLevel":{"id":1,"name":"Tolerated","need":"The home page must load for a declared agent and robots.txt must not block every agent."}},"doors":[{"id":"discover","name":"Discoverability","weight":15,"measured":true,"score":64,"raw":40,"points":9.6},{"id":"connect","name":"Protocol access","weight":20,"measured":true,"score":64,"raw":40,"points":12.8},{"id":"identity","name":"Identity and delegation","weight":20,"measured":true,"score":88,"raw":65,"points":17.6},{"id":"web","name":"Web experience","weight":15,"measured":true,"score":46,"raw":27,"points":6.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":0,"raw":0,"points":0}],"strengths":["MCP server","OAuth and OpenID metadata","PKCE and client registration"],"gaps":[{"id":"open_banking","title":"Developer and data sharing program","lost":4},{"id":"delegate_access","title":"Documented delegate and data sharing controls","lost":4},{"id":"terms_stance","title":"Terms on automated access","lost":4},{"id":"llms_txt","title":"llms.txt guide for agents","lost":3}],"headline":"Morningstar reaches level 0, Closed. Identity and delegation is the strongest area at 88 out of 100. Policy and governance is the weakest at 0."},"assistantDay":[{"id":"balance","job":"Check my account","outcome":"works","steps":[{"status":"ok","text":"MCP server: the agent connects directly."},{"status":"partial","text":"Website: the page loads only for a standard browser profile.","detail":"The sign in page is blocked for a declared agent but loads for a standard browser."},{"status":"untested","text":"Phone line: not tested yet."}]},{"id":"rates","job":"Find an answer","outcome":"works","steps":[{"status":"ok","text":"Website: public 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."}]}]}