Skip to main content
Twenty-nine tools, grouped by the job they do. Every tool works on the one workspace you picked when you connected, so none of them takes a workspace id. The any-site tools — analyze_any_domain, check_google_results, audit_any_page, analyze_any_youtube_channel, research_youtube and build_backlinks — also work on any domain, URL, channel or keyword you pass them, not only your own site; their credits still come from the connected workspace. Anything long-running returns a jobId that check_job_status reports on. Ready-made playbooks that drive these tools are published as agent skills at github.com/UXMagicai/seosorted-skills.

get_site_overview

The workspace in one call, and the natural first call: business profile, brand-voice excerpt, voice and image-style presets; every integration with whether it is usable, the default publishing destination, and whether Search Console, GA4, YouTube and bot tracking are connected; articles by status, keywords by opportunity bucket and how many have no article yet; the next five scheduled articles; the latest audit score; competitor count and AI-visibility scan state; any generation run in progress; and the credits left for every metered feature. A Gaps list names what is missing. No parameters. Free — it reads stored data only.

get_search_traffic

Search Console and Google Analytics 4 data for the workspace, compared with the previous window of the same length. Search Console views cover the articles the workspace has published; GA4 views need GA4 connected; the dashboard views combine both with AI-visibility, bot-traffic and backlink data. With no Search Console or GA4 data it says which is missing and links to Integrations. Data is synced, so it reflects up to yesterday. Free.

audit_my_site

Technical and on-page SEO audit, and a tracker for fixing what it finds. start crawls the site in the background; report returns category scores (technical, content, schema, links, backlinks, analytics), the change against the previous audit, issue counts by severity and category, and up to 40 top issues — critical first, then by pages affected — with their ordered fix steps and competitor benchmark scores. issues lists every issue of an audit with its id, its fix-step ids and progress, and the affected URLs. update_issue marks fix steps done or not done and returns the issue’s new progress; the next audit confirms the fix. history lists past audits with their scores, so the trend over time is visible. Only start uses a credit — one audit credit. start and update_issue need Editor access.

research_keywords

Keyword research against live search data for the workspace’s market, plus the saved keyword list. Every keyword is bucketed by volume against difficulty — quick win (real volume, KD ≤29), high, medium, long-term, low — and flagged when it is already saved or already targeted by an article. questions returns the question-form searches around a topic with volume and KD, plus Google’s People-also-ask questions and the forum threads (Reddit, Quora) ranking for it — FAQ and article-angle material. ideas, metrics, questions and save each use one keyword lookup; list, update and delete are free. save, update and delete need Editor access.

check_keyword_overlap

Whether Google treats keywords as the same search, measured by comparing their live top-10 results — with each other and, by default, with every existing article’s primary keyword. Seven or more shared URLs means the same intent: one page should own both. Four to six is borderline: separate pages need clearly different angles. One keyword lookup per results page fetched.

get_content_ideas

What to write next. ideas lists the saved content ideas — title, target keyword, rationale, estimated volume and status, newest first, up to 100 — and with generate: true first writes new ones from the site’s business profile, avoiding the topics of its recent articles; ideas whose keyword is already saved are skipped. topic_opportunities returns the top keyword opportunities found when the site was analysed at onboarding (keyword, intent, volume, difficulty, CPC, priority and the site that ranks best for it). brief writes a content brief for one keyword from the current top search results — title, content type, target length, audience, a section-by-section outline and secondary keywords. The brief is returned, not saved. Free — no credit is used. generate, with_titles and brief run an AI model, take several seconds and need Editor access. Turn an idea or brief into an article with write_articles.

manage_competitors

The workspace’s tracked competitors next to the workspace itself, plus the workspace’s own backlink profile. list gives each competitor’s id, traffic value, ranking keywords and comparison-page count; update changes a competitor’s URL and re-measures it if the domain changed; remove stops tracking it and drops it from AI-visibility share of voice, keeping its comparison pages; score measures competitors with no data yet in the background; backlink_gap gives domains linking to the competitor but not to you, with rank, spam score and link count. backlinks reads the workspace’s own stored backlink profile — total backlinks, referring domains, spam score and domain rank with their 30-day change, the domain-rank trend, and directory-submission progress when the workspace has a directory package. backlink_gap needs a paid plan; everything else is free. add, update, remove and score need Editor access.

manage_articles

Lists, reads, drafts and edits the workspace’s articles. create_draft applies the workspace’s voice, image and length presets and reports when an existing article already targets an overlapping keyword. update saves the previous body as a revision, returns the new word count and SEO score, and says when a published article now differs from its live version — publish_articles republish pushes the change. Free; create_draft and update need Editor access. AI editing is improve_article; deletion is delete_article.

write_articles

Writes articles with the full pipeline: research, outline, draft, humanising pass, internal links, images in the workspace’s preset style, meta tags and FAQ. At most three articles are written at once per workspace (about 4–6 minutes each); the rest queue and start as those finish. cancel leaves the removed articles as drafts; articles already being written finish and are charged. One article credit per finished article, counted on completion — cancelled items use none, and every call shows the allowance left after generations already in flight. start and cancel need Editor access.

improve_article

Quality checks and AI editing for one article. Reads: health returns the content-quality score with every check (pass, warn or fail and why), word count, keyword density, readability grade, SEO score, the performance pillars and, for a published article, 30-day Search Console clicks, impressions and top queries; recommendations returns the top prioritised improvements with concrete bullets; questions returns the author-interview questions used to add first-hand experience, or saves answers when answers is passed. Suggestions change nothing unless asked to: suggest_meta proposes a meta title and description and writes them with apply: true; suggest_links proposes internal links (anchor text already in the body, target URL and why); suggest_keywords proposes related keywords with volume and whether the body already uses them. Content edits: rewrite rewrites one passage by a preset or a free instruction and replaces it in the body; humanise rewrites the whole body to read less machine-written. Both keep the previous body as a revision and say when a published article needs republishing. No operation uses article credits. Saved answers are used the next time the article is generated; they do not change the current body. health, recommendations and reading questions work for Viewers; everything else needs Editor access.

manage_article_images

Images for one article, drawn in the workspace’s image style. list returns the featured image and every stored image with URL, alt text and whether it is featured or placed in the body, plus the image style in effect and the headings available for generate_inline. regenerate_featured makes a new featured image — AI-generated in that style, or an Unsplash photo — and sets it. generate_inline draws an in-article image: with heading it illustrates that section and inserts the image under it, saving the body; with only prompt it stores the image and returns its URL and markdown without placing it. Image generation uses no article credits and takes 10–40 seconds. A published article keeps showing the old images until it is republished. Generating needs Editor access.

write_comparison_page

A “workspace vs competitor” page written through the article pipeline: prose, a comparison table, FAQ and call to action. generate uses one article credit and needs Editor access.

publish_articles

Puts finished articles on the site. The scheduler publishes due articles to the workspace’s default destination within a few minutes of their time. Republish updates the live post in place and is refused when nothing has changed since the article last went live. Scheduling needs a paid plan; every operation needs Editor access.

get_publishing_calendar

A read-only view of where and when articles go live. calendar lists articles scheduled or published in the range with status, date and live URL. destinations lists the connected publishing destinations with their id, status, whether each is ready and which is the default. deliveries lists recent publish, republish and unpublish attempts with their outcome and error, plus webhook delivery attempts. Free.

delete_article

Permanently deletes one article with its revisions and images, takes it out of any generation queue and returns its keyword to the pool. If the article was published, the post on the CMS is deleted or unpublished according to that destination’s on-delete setting, and webhook destinations receive an article.deleted event. This cannot be undone. Free. Needs Editor access. Backlink research, monitoring and outreach for any domain, defaulting to the workspace’s own site. Link data comes from DataForSEO’s backlink index; Domain Rank is DataForSEO’s 0–100 scale. links lists individual live backlinks — source URL, source domain and its Domain Rank, target URL, anchor, dofollow or nofollow, first and last seen — strongest first. anchors gives the anchor-text distribution, with exact- and partial-match share for a keyword; exact match above 10% is flagged as over-optimised. new_lost lists links gained and lost in the window. reclaim finds backlinks pointing at dead URLs on the domain, re-checks each URL live and matches it against the sitemap for a live page to redirect to. intersect finds domains linking to several competitors but not to the domain. draft_pitch writes an outreach email — subject, body and follow-up — for one prospect page, personalised from that page and the workspace’s business profile and brand voice. It only drafts; nothing is sent. One keyword lookup each for links, anchors, new_lost and reclaim; one per competitor domain for intersect; draft_pitch is free. The live re-checks in reclaim and the page fetch in draft_pitch also count against the hourly link- and page-check limits shared with audit_any_page. Works for Viewers. Give it the questions your buyers ask an AI assistant. It reads what the answer engines reply, records every website they cite as a source, and then goes and finds out who to email at each one. The output is an outreach list: the sites the engines already trust on your topic, ranked, with a contact for each.

Three steps, one call

  1. Prompts. Pass your own, or pass none and the tool writes up to ten brand-agnostic buyer prompts from the workspace’s business type, segment, persona and known competitors.
  2. Citations. Every selected surface is asked each prompt, and every source it cites is recorded with the passage that was quoted from it.
  3. Contacts. Each shortlisted site’s cited page is read for a byline, an address and social profiles; if the page carries none, one contact page on the same site is followed.
Step 3 is the part that turns a visibility report into work you can actually do. Knowing that onelittleweb.com is cited for your category is interesting; knowing the article is by Sujan Sarkar and the inbox is hello@onelittleweb.com is an email you can send this afternoon.

Parameters

What comes back

Below the table, §n sections list every citation per site — each surface, country and prompt, with the passage the engine quoted — alongside that site’s full contact block. Each prospect carries domain, every citation (with url, title, quote, prompt, surface and country), the distinct prompts it was cited for, the surfaces it appeared on, and a contact block: emails, foundOn, source, author, contactPages, twitter and linkedin.

Ranking is by breadth, not volume

Sites are ordered by how many distinct prompts they are cited for, not how many times. A site cited once each for three different questions is one the engines treat as authoritative on the whole topic; three citations for one question is one lucky article. Breadth is the better predictor of whether a mention there will keep paying.

Sites you cannot pitch are reported, not hidden

YouTube, Reddit, Wikipedia, Quora, LinkedIn, G2 and the other platforms have no editor to write to, so they are kept out of the outreach list. They are not dropped: the result names them and how many prompts each was cited for. That is a finding in its own right. If YouTube out-cites every publisher on your questions, the engines are telling you the answer wants a video, not an email — and a link-building campaign aimed at that query was never going to work.

Your own domain is separated out

A prompt you are already cited for is a position to defend, not a target to pitch. The workspace’s own domain is excluded from the prospect list and those prompts are reported separately, so a pitch never goes to your own site.

What contact discovery will and will not do

It reads the cited page, and at most one further page on the same domain. It does not crawl the site. A prospect list is worth a page per domain; walking every /about and /team link is how a polite crawler stops being one. The byline and the address are only presented as the same person when both came off the cited page. When the address came from a contact page instead, the result says careers@eesel.ai (article by Kenneth Pangan) rather than implying that is his address. Addresses in the recruiting, billing and legal inboxes sort last. They are deliverable, but a pitch that lands in careers@ is a pitch nobody reads.
This returns contact details so you can write one specific, relevant email. It is not a list to mass-mail. These are editorial contacts at sites that have already covered your topic; a generic sequence burns the relationship and your sending domain with it.

Nothing is cached

Every call is a live reading, for the same reason as find_youtube_videos_cited_by_ai.

analyze_any_domain

Organic search and backlink metrics for any domain on the web, not only the workspace’s site, from DataForSEO’s Google and backlink indexes plus Ahrefs’ free Domain Rating where it is configured. Authority is reported both as Domain Rating (Ahrefs DR, 0–100) and as Domain Rank (DataForSEO, 0–100). Traffic and keyword figures are modelled estimates for one Google market. overview gives authority, estimated monthly organic traffic and its value, ranking keyword counts (top 3 and top 10, new and lost), a backlink summary and the 10 highest-volume ranking keywords. keywords lists ranking keywords with position, volume, KD, estimated traffic and ranking URL; pages lists top pages by estimated traffic. backlinks gives the full backlink profile, new and lost referring domains and backlinks by month, and the strongest referring domains. authority gives DR, Domain Rank and referring domains for many domains at once — link prospects or competitors — and compare sets 2–5 domains side by side. Keyword lookup credits: one per call for overview, keywords, pages, backlinks and keyword_gap; one per domain for compare; one per 10 domains for authority. Works for Viewers.

check_google_results

Live Google results for any keyword, in any supported country and language, fetched at call time and cached for up to six hours. results returns the top 10 organic results (position, title, URL, domain), the SERP features present — AI Overview with its cited sources, featured snippet, People Also Ask questions, videos, local pack, top stories, images, shopping, knowledge graph, ads, related searches — and the keyword’s monthly volume, KD and CPC. rank finds where a domain ranks in the top 100 for a list of keywords, with the ranking URL and the current #1 domain. It works for any domain, not only the workspace’s. One keyword lookup credit per keyword checked. Works for Viewers.

audit_any_page

Technical and on-page SEO checks for any public URL, fetched live. Only the HTML is fetched — JavaScript is not executed — and private or internal addresses are refused.
  • audit — title, meta description, canonical, meta robots, lang, viewport, H1s and heading outline, word count, images missing alt text or dimensions, internal, external and nofollow link counts, JSON-LD and microdata types with parse errors, Open Graph and Twitter tags, hreflang, HTTPS and mixed content, plus the issues the site-audit rules raise for a single page, each with a fix.
  • links — the HTTP status of up to 50 links found on the page, or of the URLs passed, flagging broken ones.
  • robots — robots.txt user agents, sitemaps, crawl-delay and rules for all bots, and whether Googlebot, Bingbot and the AI crawlers (GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-SearchBot, PerplexityBot, Google-Extended, CCBot and others) may fetch the URL’s path.
  • sitemap — finds the XML sitemap or reads the one given: URL count, child sitemaps of an index, latest lastmod and off-host URLs.
  • speed — Google PageSpeed Insights on mobile: the performance score and Core Web Vitals LCP, CLS and INP, from real-user field data when Google has it, otherwise a lab run.
No credits are used. Calls are rate-limited per workspace per hour: 120 page fetches (audit, robots, sitemap), 30 link-check runs and 20 speed tests. Works for Viewers.

track_ai_search_visibility

How often ChatGPT, Gemini, Claude and Perplexity name the brand for tracked buyer prompts, compared with competitors, and what stands between the site and AI answers. Every tracked prompt is asked in every saved region, so a scan grows with the region count. summary gives the visibility score, share of voice per competitor, distribution across engines and per-prompt results with the brands each answer named and the web sources it used. readiness is the AI-readiness score out of 100 — whether robots.txt lets AI crawlers in, whether key pages render their text without JavaScript, backlink strength and JSON-LD schema on key pages — with what costs points and a fix brief for a coding agent. citations lists the third-party pages AI answers cited that were fetched and verified to name the brand, with the evidence sentence and whether they link to the site. crawler_misses lists pages AI crawlers asked for that do not exist, split into moved pages with a suggested redirect and expected pages worth creating; it needs bot tracking installed (see get_ai_bot_traffic). scan uses one AI-visibility scan credit, runs at most once every 7 days after the last one finished, and reuses a scan already running. Everything else, including the refresh checks, is free. Changing prompts or regions, scan and any refresh need Editor access.

get_ai_bot_traffic

Bot traffic recorded by SEOsorted’s tracking snippet. summary splits hits by purpose (AI assistant, AI training, search indexing, SEO tools) and by vendor; missing_pages ranks paths that returned 404 to bots by how many AI vendors asked for them. If the snippet is not installed it says so. Free.

find_youtube_videos_cited_by_ai

Give it a list of search intents. For each one it reads Google’s AI Overview, pulls out the YouTube videos the overview cited, and returns them with their transcripts.

Division of labour

The agent writes the intents; the tool only reports what Google actually showed. That split is deliberate — an agent that knows your business can generate forty relevant intents far better than a fixed keyword rule could, and keeping generation out of the tool means the tool never invents a query you did not ask for.

Parameters

Ten intents per call is a context limit, not a rate limit. Forty full transcripts in one response would not fit in the conversation, so the cap forces the agent to triage: sweep wide on "summary", then re-call with "full" for the handful of videos that matter.

What comes back

A numbered table — search intent, video, summary, transcript — and then every full transcript printed below it: The §n in the transcript column points at the matching section underneath, where the whole transcript is printed with its channel, publish date, caption language and the intent it was cited for. Transcripts live below the table rather than inside it because a markdown cell cannot hold a newline: a full transcript in one renders as an unreadable smear and takes the other columns with it. Each video also carries url, videoId, title, channel, publishedAt, citedIn, transcript, transcriptStatus, transcriptChars, transcriptTruncated and coverage as structured data for the agent.

Every video gets a summary — but they are not all worth the same

A summary written from the video’s own transcript describes the video. One written without a transcript is inference from Google’s 133-character quote and the uploader’s own copy. coverage.derivedFrom is what tells them apart, and the table marks the second kind “(inferred, not from the video’s words)” in the cell itself. The distinction travels with the summary rather than being left for the reader to work out.

Which market gets searched

With country: "auto" the market is worked out in order: your workspace’s own country, then the country implied by your website’s domain (.in, .co.uk), and only then the US. The result always says which market was used and where that choice came from — workspace, tld, explicit or default. When it lands on default, the result says so and names the parameter to change, because a US search nobody asked for should never pass as one they chose.

Where the search runs

Google has no worldwide search — every query is geo-targeted to one country. So "worldwide" runs one search per country: ten intents across five countries is fifty live searches, not ten, and takes correspondingly longer. The countries sampled are the large English-language markets on purpose, because an intent is one string in one language; running English text against Japan measures how Google handles a foreign-language query there, not whether the topic is covered. The same intent genuinely differs by market. “how to fix a leaking tap” cited 9 YouTube videos in the US, 8 in India and 6 in the UK — different videos each time. Every result carries the country it was observed in, where that choice came from (explicit, workspace or default), and when.

Four outcomes, not a yes/no

An intent that returns no videos is not one finding but four, and the tool names which:
AI Overviews are volatile. The same query can cite ten sources on one check and none fifteen minutes later. Treat a single observation as a sample, not a verdict — especially before concluding that a topic is uncontested.

Transcript language

Transcripts come back in the language of the country searched, so country: "DE" returns German without asking. Pass transcript_lang to override. Each video reports transcriptLang — the language it actually came back in — and transcriptLangsAvailable, every language that video has captions for. If a video has no track in the language you asked for, the tool says which language it returned instead and what else was on offer, rather than handing you a transcript you cannot read and calling it success.

When a transcript is missing

There are two very different reasons, and they are never reported as one:
rate_limited and unavailable are facts about our request, not about the video. An earlier version collapsed them into “unreadable captions” — a claim about somebody else’s video that a serial retry disproved on every one of them. The result now counts the two apart and tells you which ones are worth calling again for.
When a transcript genuinely cannot be read, the video still carries:
  • quote — the passage Google itself quoted from the video, verbatim. Short (about 133 characters) but genuinely spoken.
  • coverage — a summary and topics synthesised from that quote plus the uploader’s own description, with derivedFrom naming the sources used.
A coverage summary without transcript in its derivedFrom is inferred, not spoken. It is never a substitute for the transcript and is never presented as the video’s words. Where the material is too thin, the summary says so instead of guessing — a fabricated account of what a cited video says would corrupt the very decision this tool exists to inform.
Searches that cited nothing are reported by name with which of the four outcomes applied, so “no videos” is never confused with “no overview” or with a failed lookup.

Nothing is cached

Every call is a live reading. A stored AI Overview is a different observation from a fresh one, and a stored failure is worse than none: caching a throttled transcript fetch for six hours was what made repeated runs keep reporting “no readable captions” for videos that had them.

plan_youtube_videos

Plans and writes videos for the connected YouTube channel around the searches where AI answers cite video. Topic operations: strategy (the channel strategy report and ranked video ideas with citation odds); topics (the saved topic list with search volume, format, citation odds and script status); starter_topics (drafts three topics from the website when there are none — it works without a connected channel); generate_topics (researches topics in the background and returns a jobId; a run in flight is reused); add_topic, update_topic and delete_topics; suggest_titles (title ideas for a keyword in the channel’s style, nothing saved); targets and set_targets (the creator channels used as inspiration). Script operations: write_script (drafts a full script for one topic in the background); list_scripts; read_script (the full text, YouTube title, description, tags and citation-readiness checks); export_script (a markdown or plain-text file body); update_script (overwrites fields and recomputes the checks); edit_script (an AI editor applies a plain-language instruction, researching where needed); duplicate_script; delete_script (the topic is kept). write_script uses one YouTube-script credit; edit_script uses at least one AI credit, more when it researches; update_script and every other operation are free. strategy, topic generation, suggest_titles and write_script need a connected YouTube channel; without one the tool says so with the Integrations link. Reads work for Viewers; anything that changes topics, targets or scripts needs Editor access.

manage_my_youtube_channel

Works on the YouTube channel connected to the workspace. analysis returns the stored channel analysis — content-mix scores, tonality, recurring topics, the best-performing video, average views by posting time and weekly subscriber growth. run_analysis re-analyses the channel in the background and returns a jobId. published lists the channel’s public and unlisted videos with views, AI-answer citation counts, target keyword and linked script, plus 30-day views, click-through rate and citations with their change against the prior 30 days. update_video archives or restores a video, sets its target keyword, or links or unlinks the script it was recorded from — in SEOsorted only; nothing is written to YouTube. Free — no metered credits. Needs a connected YouTube channel; run_analysis and update_video need Editor access. analyze_any_youtube_channel works on any public channel.

research_youtube

YouTube research for any keyword, channel or video, from live YouTube data. YouTube’s own search volume is not available; volumes are Google web search volumes. Free operations are capped at 300 YouTube Data API lookups per workspace per hour. Works for Viewers.

analyze_any_youtube_channel

Audits the YouTube SEO of any public channel or video, not only the workspace’s own, from live YouTube data. Pass channel to sample its most recent uploads and get channel stats (subscribers, median and average views, engagement rate, upload cadence, share of short-form videos), the five most-viewed videos in the sample, a per-video metadata audit and pass rates across the channel. Or pass videos to audit those videos individually; with five or fewer, their captions are also read to check caption availability and whether the target keyword is spoken in the opening. Checks: title length, description length, whether the description’s first 150 characters restate the title, tag count, chapter markers for videos over three minutes and, with target_keyword, the keyword in the title, the description opening and the tags. The metadata audit is free; profile: true uses one keyword lookup. Works for Viewers. Compare with find_youtube_videos_cited_by_ai to see what AI answers cite instead.

manage_site_settings

Reads and changes how SEOsorted writes, illustrates and publishes for the workspace. get returns the business profile (description, audience, market, country), brand voice, article defaults (voice preset, tone, perspective, length, model, research depth, style, internal links and toggles), media settings (featured and in-article images, title on the featured image, image styles, brand color, YouTube embeds and channel), publishing defaults (default destination, auto-publish) and the connected integrations. update patches any of those settings; omitted keys stay as they are and null clears a value. image_presets lists the built-in styles and up to 20 custom presets with which are default. preview_image_preset renders one sample image for a style prompt and returns its URL. analyze_brand_voice derives a brand voice guide with an AI model. detect_brand_color reads the brand color from the website. reanalyze_profile re-crawls the site and regenerates the business profile as a background job that check_job_status reports on. No operation uses credits. Creating, updating and previewing image presets need a paid plan, and autoPublishEnabled is left off on Free. get and image_presets work for Viewers; update and set_default_image_preset need Admin access; everything else needs Editor access.

check_job_status

A background job’s kind, status, current step, error and result. Free.

Credits and limits

Tools spend the same monthly credits as the dashboard — see Plans, credits and limits. Metered tools report what is left before and after they spend it, and return your upgrade link instead of running when an allowance is used up. Everything else is free: every read-only view, improve_article, manage_article_images, get_content_ideas, manage_site_settings, manage_my_youtube_channel, find_backlink_prospects, find_youtube_videos_cited_by_ai, and the free operations of the any-site and YouTube tools. Some free operations are rate-limited per workspace per hour because they fetch other people’s servers or YouTube’s API: audit_any_page allows 120 page fetches, 30 link-check runs and 20 speed tests (the build_backlinks reclaim re-checks and draft_pitch page fetch share these); research_youtube allows 300 YouTube Data API lookups, of which at most 20 can be channel searches. Every connection is also capped at 120 calls per minute. Some operations change things outside SEOsorted or cannot be undone, so they need an explicit yes:
  • publish_articles and delete_article are refused unless the call carries confirm: true; dryRun: true describes the change without making it.
  • research_keywords delete and manage_competitors remove only report what would happen until they are called again with confirm: true.
  • manage_site_settings delete_image_preset is refused without confirm: true.