scanned 2026-08-21 06:26 UTC · cached · refresh in 0h · rubric 2026.11.0
○Unverified public scan
Needs work
AgentSpeed tests how easily automated agents can discover, understand, and act on nordea.com. The score weights five categories of machine-readability; the ticks on the arc are the 37 individual checks behind it.
Send this to whoever edits the site. The link shows the score and grade as a preview card, and it stays current: it re-reads the latest scan rather than freezing today’s number.
Top fixes
warnSitemap present+1 ptDiscoverability
sitemap.xml reachable but not referenced from robots.txt, so agents may miss it.
Show me exactly what to do
What this means
A sitemap is a machine-readable list (sitemap.xml) of every page on your site. It is how crawlers find pages that aren’t linked from your homepage.
Why it matters
Agents discovering your site crawl outward from the pages they know. Without a sitemap, anything not linked from a top-level page (docs, older articles, product variants) may simply never be read, so it can’t be quoted or recommended.
Do this
Most platforms generate one automatically: Next.js (app/sitemap.ts), WordPress (Yoast/Rank Math), Shopify and Wix (built in). Turn it on rather than hand-writing.
Add a "Sitemap: https://yoursite.com/sitemap.xml" line to robots.txt so crawlers find it.
Submit it once in Google Search Console and Bing Webmaster Tools for the search side.
Don’t lose this report
Get it in your inbox now, plus a heads-up whenever nordea.com’s agent-readiness score changes. Free, unsubscribe anytime.
Prefer we just watch it for you? Monitor rescans weekly and emails what changed, $29/mo. Start monitoring →
Fix it
Generated, ready-to-ship files for the gaps above. Copy them, or download and drop them into your repo.
Reference a sitemap
Publish /sitemap.xml and add this line to robots.txt.
Sitemap: https://nordea.com/sitemap.xml
This scan graded one page. Your site is more than one page.
Weakest on this scan: discoverability, 46/100 — the signals agents use to find and navigate this site are thin or missing.
This graded your homepage. Your pricing, docs, and checkout live on other pages: the ones assistants actually quote when they recommend you. A 71/100 here means agents are already missing things on the page you polish most. The $29 Deep Scan grades your homepage plus up to 10 more pages we discover, against all 37 checks, then emails a PDF with every failing check and its exact fix, ranked by what costs you the most visibility. One-time, delivered in minutes, no subscription.
Right now, only you know this score. Your buyers ask AI before they buy, and certification is how you show them, and anyone comparing you to a competitor, that assistants can actually read, quote, and use your site.
A public verification URL you can drop into a sales deck, a procurement questionnaire, or a partner review. Anyone can check it, dated and signed.
An embeddable badge for your site, the visible version of a property competitors can’t claim without earning the score.
Weekly re-checks for a full year. A deploy that breaks agent access gets caught before it costs you recommendations, and before the certificate would lapse.
Sites under 70 can’t buy this at any price. That’s what makes displaying it mean something.
Skip to main content English Dansk Norsk Suomi Svenska Locations Find us here Map of offices Bank branches Corporate branches Our markets Customer websites Denmark Finland Norway Sweden Other Nordea websites Nordea Asset Management Nordea Funds All Nordea websites More locations Contact Personal banking in Denmark Finland Norway Sweden Business banking in Denmark Finland Norway Sweden Contact details for Press contacts Investor relations Customer service Feedback & complaints More contact options Log in Log on to personal netbank Denmark Finland Norway Sweden Log on to Business netbank Denmark Finland Norway Sweden Log on to the corporate netbank Nordea corporate Corporate netbank More log in options Enable light mode Enable dark mode Dark Light Select site theme As every website has a carbon footprint we want to make you able to contribute to a more sustainable experience by viewing ours in dark mode. It will reduce the screen power and carbon emissions generated by your visit.More about our work to lower emission here en English Dansk Norsk Suomi Svenska Search Menu Locations Main menu Locations Find us here Map of offices Bank branches Corporate branches Our markets Customer websites Denmark Finland Norway Sweden Other Nordea websites Nordea Asset Management Nordea Funds All Nordea websites More locations Contact Main menu Contact Personal banking in Denmark Finland Norway Sweden Business banking in Denmark Finland Norway Sweden Contact details for Press contacts Investor relations Customer service Feedback & complaints More contact options Log in Main menu Log in Log on to personal netbank Denmark Finland Norway Sweden Log on to Business netbank Denmark Finland Norway Sweden Log on to the corporate netbank Nordea corporate Corporate netbank More log in options Enable light mode Enable dark mode Dark Light Menu About us Main menu About us Who we are Main menu About us Who we are Our strategy Our organisation Our leadership Our markets Our stakeholders Our purpose and values Our history Nordea in society Main menu About us Nordea in society Community engagement Donations Nordea art foundation Finland Main menu About us Nordea in society Nordea art foundation Finland Foundation Collection Exhibitions Events Art prize Preventing financial crime Main menu About us Nordea in society Preventing financial crime Our financial crime prevention policies and practices Three lines of defence Why we ask questions Sanctions Monitoring customers and transactions Security for your money Whistleblowing Corporate governance Main menu About us Corporate governance Corporate governance structure Corporate governance framework Nordea's legal structure Main menu About us Corporate governance Nordea's legal structure Nordea's re-domiciliation of the parent company (2017-2018) Nordea's simplification of its legal structure (2016-2017) Deposit guarantee scheme Investor compensation scheme Articles of association Annual General Meeting Main menu About us Corporate governance Annual General Meeting Nordea's General Meeting 2026 Previous General Meetings About General Meetings Shareholders’ Nomination Board Board of Directors Main menu About us Corporate governance Board of Directors Composition and diversity policy Members of the Board Independence Board work Board committees Meetings and attendance CEO and leadership team Finnish Public Insider Registry Remuneration Main menu About us Corporate governance Remuneration Remuneration Policy for governing bodies Nordea’s Remuneration Policy Remuneration to Board of Directors Remuneration to CEO Remuneration to GLT Disclosures Internal control and audit Main menu About us Corporate governance Internal control and audit Audit and control framework Corporate Governance Reports Insider administration Related party transactions Conflicts of interest Supplier portal Main menu About us Supplier portal Become a supplier Sustainable procurement Sourcing and contracting Purchasing and invoicing FAQ Contact Awards and recognitions Interested in a partnership? Contact us Main menu About us Contact us Find us here Websites Bank holidays Business Identifier Code (BIC) Common Reporting Standard (CRS) Foreign Account Tax Compliance Act (FATCA) Legal Entity Identifier (LEI) US transparency in coverage rule Value Added Tax (VAT) registration number close Investors Main menu Investors Latest interim results Latest annual report Nordea as an investment Main menu Investors Nordea as an investment Our investment case Priorities & financial target Capital Markets Days Main menu Investors Nordea as an investment Capital Markets Days Capital Markets Day 2025 Previous Capital Markets Days Key figures Fact sheet Disclosure Policy All reports and documents Reports & presentations Main menu Investors Reports & presentations Group interim reports Group annual reports Subsidiary reports Main menu Investors Reports & presentations Subsidiary reports Danish subsidiary reports Finnish subsidiary reports Norwegian subsidiary reports Swedish subsidiary reports Polish subsidiary reports Historical subsidiary reports Additional financial reports Main menu Investors Reports & presentations Additional financial reports Information regarding the re-domiciliation to Finland Presentations & webcasts Main menu Investors Reports & presentations Presentations & webcasts Presentations Webcasts Capital and risk reports (Pillar 3) Other regulatory disclosures Main menu Investors Reports & presentations Other regulatory disclosures Country-by-country reporting G-SIB/G-SII: Systematic importance indicators Individual solvency need Interim disclosure Intragroup exemptions from margin requirements Nordea Bank engagement policy Nordea Bank London Pension Plan Nordea Bank Sveriges Pensionsstiftelse Nordean eläkesäätiö(Nordea's Finnish Pension Foundation) Solvency and Financial Condition Report Shareholders Main menu Investors Shareholders Share information Main menu Investors Shareholders Share information Share price graph Historical share price Investment calculator Share alerts Share data American Depositary Receipts (ADR) Analyst coverage Main menu Investors Shareholders Analyst coverage Analysts covering Nordea Recommendation overview Consensus estimates Largest shareholders Management shareholding Dividend Flaggings Share buy-backs Debt & rating Main menu Investors Debt & rating Current rating Investor presentations Prospectuses and documents Main menu Investors Debt & rating Prospectuses and documents Nordea Bank Abp Nordea Bank AB (publ) Nordea Eiendomskreditt AS Nordea Hypotek AB (publ) Nordea Kredit Realkreditaktieselskab Nordea Mortgage Bank Plc Bonds Main menu Investors Debt & rating Bonds Nordea Eiendomskreditt covered bonds Nordea Hypotek covered bonds Nordea Kredit covered bonds Nordea Mortgage Bank covered bonds Structured bonds Sustainable funding Capital instruments Main menu Investors Debt & rating Capital instruments Main features Terms and conditions Archive Financial calendar Contact Investor Relations close News & insights Main menu News & insights All news stories Press room Main menu News & insights Press room Press releases Stock exchange releases Managers’ transactions Flaggings Share buy-backs Press contacts Nordea’s experts Press photos - download centre Main menu News & insights Press room Press photos - download centre Nordea master brand Board of Directors Group CEO Group Leadership Team Nordea’s experts Main menu News & insights Press room Press photos - download centre Nordea’s experts Denmark Norway Finland Sweden Headquarters Themes Main menu News & insights Themes Economic Outlook Tech and AI Corporate Insights Sustainable perspectives Blogs Podcasts Subscribe & follow close Careers Main menu Careers Open jobs Life at Nordea Main menu Careers Life at Nordea Benefits A diverse community People & culture Grow with us Meet our experts Meet our talents Blog Career paths Main menu Careers Career paths Finance and banking Technology Operations Stud
Show your score
Embed this badge on your site. It links back to this live scan and updates on every rescan.
Get this report by email, then a heads-up when nordea.com’s agent-readiness actually changes: a check regressing, or the composite dropping.
Two things never trigger an email: a score change caused by us publishing a new rubric, because that is a different instrument rather than a change to your site, and movement explained only by timing-derived checks, which shift run to run on a site nobody touched.
Want it on your own schedule, with Slack or a webhook instead of email? Score-drift monitoring is on every paid plan.
This score says whether an AI agent could read nordea.com. AI traffic analytics says whether one actually came, and which pages turned it away.
Full breakdown
18 pass3 warn13 fail3 skip
Discoverability
pass
robots.txt present
A robots.txt is reachable at the site root.
100/100
pass
robots.txt allows AI agents
All 9 answer-time access agents allowed.
100/100
fail
Content-Signal directivesemerging
No Content-Signal directives. Add e.g. `Content-Signal: ai-train=no, ai-summarize=yes` to declare granular AI usage policy beyond binary allow/disallow.
0/100
pass
llms.txt present
Found /llms.txt but missing H1 header and markdown links. Not scored.
100/100
warn
Sitemap present
sitemap.xml reachable but not referenced from robots.txt, so agents may miss it.
70/100
fail
Link response headers
No HTTP Link: response headers. Emit canonical/alternate/describedby relations so HEAD-only or stream-rendering agents get them without parsing HTML.
0/100
pass
Canonical URL
Canonical points to self: https://www.nordea.com/en.
100/100
fail
MCP server cardemerging
No valid MCP Server Card at /.well-known/mcp/server-card.json. Publish one so agents can discover your tools without HTML scraping.
0/100
fail
OAuth authorization metadataemerging
No RFC 8414 metadata at /.well-known/oauth-authorization-server. Agents that act on behalf of users need this to discover your authorization endpoints.
0/100
fail
OAuth resource metadataemerging
No RFC 9728 metadata at /.well-known/oauth-protected-resource. Publish it so agents can discover required scopes without hand-coded credentials.
0/100
fail
API catalog / OpenAPIemerging
No /.well-known/api-catalog (RFC 9727) and no /openapi.json|yaml. Publish one so agents that integrate with APIs can discover your endpoints.
0/100
fail
Web Bot Authemerging
No Web Bot Auth JWKS at /.well-known/http-message-signatures-directory.json. Publish one to allow trusted agents while keeping a default-deny posture for the rest.
0/100
Readability
fail
Markdown negotiationemerging
Accept: text/markdown returns HTML, not markdown. Serve a markdown variant of primary content when requested; agents summarize and cite it more reliably.
0/100
fail
Text-to-markup ratio
Visible text is 3.3% of HTML weight (15890/477592 bytes). 7% of the document is inline script, 90% is markup.
25/100
pass
Content without JavaScript
Primary content is present in the initial HTML — agents without JS can read it. (Measured statically; a rendered comparison was not run because the static reading sufficed.)
90/100
pass
Heading hierarchy
Hierarchy is well-formed (1 H1, no skipped levels, 128 headings total).
100/100
pass
Cookie wall blocks content
No common consent-modal markers detected.
100/100
pass
Declared language
Declared lang="en" with 5 well-formed hreflang alternate(s).
100/100
pass
Page title
A concise <title> is present (47 chars).
100/100
warn
Meta description
Meta description is 216 characters; aim for 50–200 so it's neither thin nor truncated.
60/100
Structured data
pass
JSON-LD present
Found 1 JSON-LD block.
100/100
pass
Structured data validates
1/1 checkable block(s) validated cleanly against schema.org.
No price declared in JSON-LD, so there is nothing to cross-check. (Whether a price SHOULD be declared is the structured-data checks’ question.)
—
pass
JSON-LD name appears on the pageemerging
Declared entity name "Nordea" appears on the visible page.
100/100
pass
Declared language matches the contentemerging
Declared lang="en" matches the detected content language (en).
100/100
Actionability
pass
Paywall / login wall
No paywall or login-wall detected on the landing URL.
100/100
fail
Agent Skills manifestemerging
No Agent Skills manifest at /.well-known/agent-skills.json. Enumerate the tasks agents can perform (search, add-to-cart, contact-support) so they pick the right one without scraping.
0/100
fail
WebMCP actionsemerging
No WebMCP detected. On pages with first-class actions (cart, support, account), embed a WebMCP server so on-page agents invoke tools directly.
0/100
fail
Commerce protocol manifestemerging
No agentic-commerce discovery manifest (x402 at /.well-known/x402.json, UCP at /.well-known/ucp, or ACP at /.well-known/acp.json). Agents that buy pre-flight these before attempting a transaction; publishing the one for your commerce protocol is how they learn you accept agent-initiated purchases.
0/100
pass
Primary action reachable
A primary offering and a price or call to action were both identifiable from the served HTML, so an agent can tell what this page sells and what it costs without running scripts.
100/100
pass
Reachability
HTTP 200 after 1 redirect.
100/100
pass
Primary action is clickableemerging
6 clickable element(s) carry an action an agent can take: <a> announcing "download", <a> announcing "download", <a> announcing "download". An agent driving the page has something real to click.
100/100
skip
Filters reachable by URLemerging
This page does not offer to filter or sort a list, so there is nothing to address by URL. Pages without facets are not penalised here.
—
Performance
warn
Time to first byte
TTFB 828ms. Acceptable.
60/100
skip
Full render time
Full-render time unavailable (browser pass skipped or failed).
—
pass
Page weight
Initial document is a lean 466 KB.
100/100
Beyond the scan
Running AI agents of your own? AgentSpeed also monitors them in production: every run, its latency, cost, and failures, with alerts when something breaks. Free for 10,000 events a month, no credit card.
Run reports like this for every client: white-label PDFs and weekly monitoring for up to 15 domains, $149/mo. AgentSpeed for Agencies →
Methodology & limitations
This score is a measurement of machine-readability for automated agents under the published rubric 2026.11.0. AgentSpeed does not assess security, legitimacy, privacy, or financial trust.
→ https://nordea.com/sitemap.xml
Paste into Claude Code, Cursor, or any assistant with your repository open. It carries this finding, the steps, and the shortcuts to avoid.
Or copy it written for your tool:
What to check
Open yoursite.com/sitemap.xml. It should list real page URLs, not error.
Re-scan: "Sitemap present" flips to PASS.
What to avoid
Don’t list URLs that redirect or 404. A sitemap full of dead links teaches crawlers to distrust it.
Don’t include private or staging URLs; a sitemap is a public document.
No HTTP Link: response headers. Emit canonical/alternate/describedby relations so HEAD-only or stream-rendering agents get them without parsing HTML.
Show me exactly what to do
What this means
HTTP responses can carry a Link header: the same canonical and alternate-language information your HTML declares, but delivered in the response envelope itself. Agents that only send a HEAD request, or that decide what to do while the page is still streaming, read the header without parsing any HTML. Yours is missing (or carries none of the relations agents use: canonical, alternate, describedby).
Why it matters
An agent triaging fifty URLs doesn’t want to download and parse fifty pages to learn which are duplicates of which. The Link header answers at the cheapest possible layer. Sites that provide it get correctly de-duplicated and correctly language-routed even by the most minimal fetchers.
Do this
Emit a Link header alongside each page, mirroring what your HTML head already declares. Example: Link: <https://yoursite.com/page>; rel="canonical".
Most stacks set this in one place: Next.js headers() config, an nginx add_header line, or a CDN response-header rule.
If you serve translations, add rel="alternate" entries with hreflang, matching your HTML.
Paste into Claude Code, Cursor, or any assistant with your repository open. It carries this finding, the steps, and the shortcuts to avoid.
Or copy it written for your tool:
What to check
Run: curl -sI https://yoursite.com | grep -i "^link:" and confirm the relations appear.
Hit Re-scan above: "Link response headers" flips to PASS.
What to avoid
The header must AGREE with the HTML. A Link header pointing one place while the in-page canonical points another gives machines two contradictory answers, which is worse than one missing answer.
Don’t inject the same site-wide canonical on every page via a blanket CDN rule; each page names its own clean URL, exactly as in the HTML tag.
Visible text is 3.3% of HTML weight (15890/477592 bytes). 7% of the document is inline script, 90% is markup.
Show me exactly what to do
What this means
Of everything your server sends for this page, very little is actual readable text. The rest is code, styling, and markup wrapper. Agents fetched a lot of bytes and found few words.
Why it matters
Agents work with retrieval budgets. A page that is 2% text either gets skimmed (and mis-summarised) or skipped. More signal per byte means more of your actual message survives into the agent’s summary.
Do this
Confirm your real copy is server-rendered. See the JavaScript check; these two usually fail together.
Cut boilerplate wrappers: deeply nested divs, inline SVG logos repeated per section, base64 images inlined into HTML.
Move large inline styles and scripts into external files.
Check how much of the document is inline script: your report now says. If most of it is, that is your framework serializing state for hydration, often a second copy of text already in the HTML. Send only the props a component cannot recompute, and render statically where a page does not need to hydrate.
Paste into Claude Code, Cursor, or any assistant with your repository open. It carries this finding, the steps, and the shortcuts to avoid.
Or copy it written for your tool:
What to check
Re-scan: "Text-to-markup ratio" improves, and "Page weight" often improves alongside.
What to avoid
Don’t pad the page with keyword text to inflate the ratio. The ratio is a proxy for substance, and stuffing is the opposite of substance.
Meta description is 216 characters; aim for 50–200 so it's neither thin nor truncated.
Show me exactly what to do
What this means
The meta description is a one-sentence summary of the page that you control, embedded in the HTML head. Without it, machines compose their own summary from whatever text appears first, often cookie-notice or navigation boilerplate.
Why it matters
This is the sentence you get to write about yourself. Pages without one are summarised by autopilot, and the autopilot frequently leads with the least representative text on the page.
Do this
Write one honest sentence per page (120–160 characters) saying what the page offers.
Add it as <meta name="description" content="…"> per page via your framework or SEO plugin.
→ <head>
Paste into Claude Code, Cursor, or any assistant with your repository open. It carries this finding, the steps, and the shortcuts to avoid.
Or copy it written for your tool:
What to check
Re-scan: "Meta description" flips to PASS.
What to avoid
Don’t reuse one description site-wide. A shared summary describes none of the pages.
Describe the page, not your aspirations. Agents compare the description against the content and discount pages where they diverge.
Your structured data exists but only covers the basics (say, Organization) while the page is really a product page, an article, or an FAQ. The machine-readable caption is missing the part that describes what this page actually is.
Why it matters
An agent looking for "running shoes under $100" matches against Product markup with offers. A product page carrying only Organization markup is invisible to that query shape: the agent knows who you are but not what this page sells.
Do this
Identify the page’s real type: Product (with offers), Article, FAQPage, HowTo, LocalBusiness, Event.
Add that type’s JSON-LD alongside the Organization block, filled from the page’s actual content.
For Product: include name, price, priceCurrency, and availability. Those are the fields agents actually query.
Paste into Claude Code, Cursor, or any assistant with your repository open. It carries this finding, the steps, and the shortcuts to avoid.
Or copy it written for your tool:
What to check
Re-scan: "Schema type coverage" improves. Keep "Structured data validates" green while you add.
The coherence checks below compare your declared price and name to the visible page; they should stay (or flip to) PASS.
What to avoid
Only declare types the page genuinely is. A blog post marked up as a Product to appear in shopping queries is the exact incoherence assistants are getting better at detecting.
Keep declared values synced with the page. If a sale changes the visible price, the JSON-LD price must change in the same deploy.
Time to first byte is how long your server thinks before it starts answering: the gap between an agent asking for the page and the first byte of HTML arriving. Yours crossed our threshold (under 200ms scores full marks, over 2 seconds fails).
Why it matters
Agents fetch with tight timeouts and many pages in parallel. A server that takes seconds to start answering gets cut off mid-queue, and a page that times out is a page that was never read. Speed here is not polish; it decides whether the content gets fetched at all.
Do this
Cache the HTML itself. Marketing and docs pages rarely change per visitor; serve them from a CDN or static cache so no application code runs per request.
If you are on serverless hosting, cold starts are a common cause: keep the function warm or pre-render the page.
Move slow work (database queries, third-party API calls) out of the first response; render the shell fast and fill personalised details after.
Paste into Claude Code, Cursor, or any assistant with your repository open. It carries this finding, the steps, and the shortcuts to avoid.
Or copy it written for your tool:
What to check
Run: curl -o /dev/null -s -w "%{time_starttransfer}\n" https://yoursite.com and watch the number drop.
Hit Re-scan above: "Time to first byte" improves a bucket at a time (under 500ms passes).
What to avoid
Don’t answer fast with an empty shell that loads content by JavaScript. That trades this warning for the much worse "content requires JavaScript" failure, since most agents never run your scripts.
Don’t special-case known crawler user agents onto a faster path. Serving different performance to different audiences is the pattern crawlers penalise when they detect it.