Skip to main content

Browser agent surface

Built to be driven, not just read.

TrendsAGI works with Browser Harness, browser-use, Playwright and any agent that drives Chrome over CDP. The page exposes stable data-agent names, a deterministic agent mode and a readiness marker, so an agent can navigate by contract instead of guessing at layout.

Agent mode changes presentation only. Permissions, sign-in and limits stay the same.

Three ways for an agent to work here.

Use the narrowest interface that fits the agent. Tools in the page are more reliable than pixels; a documented DOM contract is more reliable than a selector guessed from a screenshot.

Browser-native tools

In Chrome 149+ the app registers read-only TrendsAGI tools with WebMCP. The browser's own agent calls them directly, with your session.

How WebMCP works

Browser harness

Browser Harness, browser-use and other CDP agents drive the real page. The data-agent contract and readiness markers below make that predictable.

Jump to selectors

Server-side agents

Agents outside a browser use the hosted MCP server or the REST API, with OAuth or an API key and their own rate limits.

Open the MCP server guide

Wait for ready, not for time.

Append ?agent=1 to any TrendsAGI URL. The page stops decorative motion, exposes its route and sets a readiness marker once the view is interactive. Client-side navigation updates the route and readiness attributes again.

The same markers exist on both hosts, so one wait condition works across the public site and the app. The choice is remembered per origin and tab, and email/password sign-in carries it across to app.trendsagi.com. If you open the app directly, append ?agent=1 yourself.

An accessibility tree is still the first thing to read. These attributes are for the actions and landmarks a tree does not name precisely.

html[data-agent-mode="true"]
Agent mode is active.
body[data-agent-site]
trendsagi-public on trendsagi.com, trendsagi-app on app.trendsagi.com.
body[data-agent-route]
The current path. Updated after every client-side navigation.
body[data-agent-ready="true"]
The shell is hydrated and interactive. A lazy route may still show its own loading status.
[data-agent-shell]
The active app shell on app.trendsagi.com.
await page.waitForSelector('body[data-agent-ready="true"]');
await page.click('[data-agent="login-email"]');

The selector contract.

Names are stable across releases. Responsive variants of the same control share one name, so an agent should prefer the visible match. Every name is also listed in /agent-manifest.json, so an agent can refresh its map without re-reading this page.

trendsagi.com

Public

Every public page

data-agentElementPurpose
site-headernavPrimary site navigation.
home-linkaReturns to the home page.
header-loginaOpens the sign-in form.
header-signupaOpens account registration.
header-dashboardaOpens the app when the browser already has a session.
mobile-menu-togglebuttonOpens the navigation drawer below 1200px.
mobile-menudivThe open navigation drawer.
site-footerfooterFooter navigation, including Browser agents.
footer-browser-agentsaOpens this guide.
nav-researchaPrimary navigation: Research.
nav-use-casesaPrimary navigation: Use Cases.
nav-toolsaPrimary navigation: Tools.
nav-subscriptionaPrimary navigation: Pricing.
nav-api-docsaPrimary navigation: API Docs.
nav-securityaPrimary navigation: Security.
cookie-bannerasideAnalytics consent banner, when consent is unset.
cookie-denybuttonKeeps optional analytics off.
cookie-acceptbuttonTurns optional analytics on.

Home and pricing

data-agentElementPurpose
hero-start-freeaPrimary signup call to action in the hero.
hero-strategy-callaBooks a strategy call, in a new tab.
hero-api-docsaOpens the API documentation.
planssectionThe pricing section on the home or subscription page.
billing-monthlybuttonShows monthly prices.
billing-yearlybuttonShows yearly prices.
plan-developer-ctabuttonStarts the free Developer plan.
plan-advantage-ctabuttonStarts the Advantage plan.
plan-scale-ctabuttonStarts the Scale plan.
agent-api-ctaaOpens the agent API documentation.
agent-harness-ctaaOpens this browser-agent guide from the home page.

Sign in and registration

data-agentElementPurpose
login-formformEmail and password sign-in.
login-emailinputAccount email address.
login-passwordinputAccount password.
login-rememberinputRemember-me checkbox.
login-submitbuttonSubmits the sign-in form.
login-errordivForm-level sign-in error, role=alert.
login-googledivGoogle Identity button container, when configured.
login-microsoftbuttonStarts Microsoft single sign-on.
login-forgotaOpens password recovery.
login-registeraSwitches to registration.
register-formformAccount registration.
register-first-nameinputFirst name.
register-last-nameinputLast name.
register-emailinputAccount email address.
register-passwordinputNew password, at least 8 characters.
register-confirm-passwordinputPassword confirmation.
register-termsinputTerms and privacy agreement checkbox.
register-submitbuttonCreates the account.
register-errordivForm-level registration error, role=alert.
register-loginaSwitches to sign-in.

Contact

data-agentElementPurpose
contact-formformContact form.
contact-nameinputSender's name.
contact-emailinputSender's email address.
contact-messagetextareaMessage body.
contact-submitbuttonSends the message.

This guide

data-agentElementPurpose
browser-agent-guidedivThis page.
agent-mode-linkaOpens the current page with agent mode on.
manifest-linkaOpens the machine-readable manifest.

app.trendsagi.com

Signed in

App shell

data-agentElementPurpose
app-rootdivTop-level app container, with the active shell as data-agent-shell.
app-navnavSigned-in navigation.
app-homeaReturns to the dashboard when signed in.
app-searchbuttonOpens the command palette.
app-notificationsbuttonOpens recent notifications.
app-notifications-panelsectionThe open notifications panel.
app-accountbuttonOpens the account menu.
app-logoutbuttonSigns out.
app-mobile-menu-togglebuttonOpens the navigation drawer below 1280px.
app-mobile-menuasideThe open navigation drawer.
app-loginaOpens the public sign-in page.
app-signupaOpens public registration.

App navigation

data-agentElementPurpose
app-nav-dashboardaDashboard.
app-nav-trendsaLive trends.
app-nav-watchlistsaWatchlists.
app-nav-insightsaAI insights.
app-nav-integrationsaConnected ad platforms.
app-nav-morebuttonOpens the workspace menu.
app-more-menudivThe open workspace menu.

Command palette

data-agentElementPurpose
app-command-palettesectionKeyboard-driven navigation dialog.
app-command-inputinputCommand search field.
app-command-closebuttonCloses the palette.

Workspace pages

data-agentElementPurpose
app-dashboarddivSignal desk overview.
app-trendsdivTrend discovery page.
app-trends-searchinputFilters trends by phrase.
app-trends-categoryselectFilters trends by category.
app-trends-timeframeselectFilters trends by time window.
app-watchlistsdivWatchlist coverage page.
app-watchlist-addbuttonOpens the add-watchlist form.
app-watchlist-modaldivThe add-watchlist dialog.
app-watchlist-formformThe add-watchlist form.
app-watchlist-keywordinputKeyword or phrase to track.
app-watchlist-thresholdinputVolume threshold for the alert.
app-watchlist-submitbuttonAdds the watchlist stream.
app-watchlist-closebuttonCloses the dialog without adding.
app-exportdivData export page.
app-export-runbuttonStarts the selected export.
data-agentElementPurpose
app-cookie-bannersectionAnalytics consent panel, when consent is unset.
app-cookie-denybuttonKeeps optional analytics off.
app-cookie-acceptbuttonTurns optional analytics on.

Task recipes.

Each recipe starts at a canonical URL, names the steps in order and states what success looks like. The same list is in the manifest.

read-public

Read public trend intelligence

https://trendsagi.com/trending

  1. Open the trending page, or /blog for editorial reports.
  2. Read the page h1 and the article links; no account or consent choice is required to read them.
  3. Follow a report to /blog/trends/<slug> for its measured velocity and evidence.

Success: A report page with a dated headline and its measurement notes is visible.

compare-plans

Compare plans and prices

https://trendsagi.com/subscription

  1. Open /subscription. Prices follow the visitor's detected currency.
  2. Use data-agent="billing-monthly" or data-agent="billing-yearly" to switch the cycle.
  3. Read each plan card, or call the public get_trendsagi_plans WebMCP tool when the browser supports it.

Success: Plan names, prices and included capacity are visible without signing in.

create-account

Create an account

https://trendsagi.com/register

  1. Wait for data-agent-ready="true" on the body.
  2. Fill register-first-name, register-last-name, register-email, register-password and register-confirm-password.
  3. Tick register-terms, then press register-submit.
  4. Registration ends on /confirm-email; the account is usable after the email is confirmed.

Success: The confirm-email page names the address that was registered.

sign-in

Sign in to the app

https://trendsagi.com/login

  1. Use email and password with login-email, login-password and login-submit. This is the deterministic path.
  2. Wait for the redirect to app.trendsagi.com and for body[data-agent-ready="true"].
  3. Read body[data-agent-route] to confirm the landing route, usually /dashboard or /onboarding.

Success: The signed-in app shell is visible and app-nav is present.

find-trend

Find a rising trend

https://app.trendsagi.com/trends

  1. Open /trends and wait for the app to be ready.
  2. Type a phrase into app-trends-search, or choose a category with app-trends-category.
  3. Read the result rows and follow a row's link for the trend's insight page.

Success: The trend table shows filtered rows with measured volume and velocity.

add-watchlist

Add a watchlist stream

https://app.trendsagi.com/watchlists

  1. Open /watchlists and press app-watchlist-add.
  2. Enter a phrase in app-watchlist-keyword, or switch the dialog to Category and choose one.
  3. Set the alert threshold with app-watchlist-threshold, then press app-watchlist-submit.
  4. Wait for the dialog to close and the new stream to appear in the coverage list.

Success: The new stream appears in the watchlist coverage list with its alert condition.

export

Read or download an export

https://app.trendsagi.com/export

  1. Open /export and choose a report type.
  2. Press app-export-run, or open a saved configuration and run it.
  3. Wait for the export run to reach a completed state before downloading it.

Success: A completed export run exposes a download link or the configured destination.

webmcp

Use the browser's own tool interface

https://trendsagi.com/webmcp

  1. In Chrome 149+ or another WebMCP browser, sign in at app.trendsagi.com.
  2. The page registers read-only TrendsAGI tools with document.modelContext.
  3. Call the tool directly instead of driving the DOM; see /webmcp for the list.

Success: The browser lists TrendsAGI tools and returns structured trend data.

What agent mode does not do.

  • Agent mode (?agent=1) disables decorative motion. It does not bypass authentication, permissions, paywalls or rate limits.
  • Public pages are readable without an account. Dashboard, watchlist, insight and export routes require a signed-in session.
  • Email and password is the deterministic sign-in path. Google and Microsoft sign-in hand control to the identity provider, which may add its own challenge.
  • One account per operator. Do not create accounts, start trials or run exports in bulk.
  • Read the Terms of Service and the API limits that apply to the account you use.
  • The stable selectors are for navigation and reading. They are not a licence to automate actions a person could not take in the same session.

Harness brief.

Paste this into Browser Harness, browser-use or your own agent before the task. It points at the manifest, so the agent can resolve the rest without a screenshot.

Open https://trendsagi.com/?agent=1 and wait for body[data-agent-ready="true"].
Use the data-agent attributes listed at https://trendsagi.com/browser-agents instead of guessing
selectors. For a signed-in task, sign in at https://trendsagi.com/login with email and password,
then open https://app.trendsagi.com/?agent=1 and wait for body[data-agent-site="trendsagi-app"]
and body[data-agent-ready="true"]. Read https://trendsagi.com/agent-manifest.json for the selector
map and task recipes.

Using the browser's built-in agent instead? WebMCP is the shorter path: the tools are already registered in the page.

Start with the manifest.

One request, every stable selector, flow and constraint.