Onboard a client
From a domain to rank tracking, a site audit, analytics, a scheduled report and a portal link — every step as a tool call.
The whole onboarding of one client, in order. It needs an admin credential for the steps marked admin; the rest work with less. Keep the ids each step returns — later steps need them.
- Create the client (admin)
create_client {name, domain, keywords?, monthlyBudgetUsd?}makes the client, a project, its site and a rank tracker in one call, and starts tracking anykeywordsgiven. It returnsclientId,projectId,siteIdandtrackerId. Every tracked keyword is a paid lookup on every run, so setmonthlyBudgetUsdif the client has a budget. - Connect Google — ideally without a sign-in
The quickest route an agent can finish itself:
get_google_service_accountreturns the agency's own service account email. Ask your person to have the client's property owner add it — Search Console: Settings → Users and permissions, Restricted; GA4: Admin → Property access management, Viewer. Then callconnect_search_console_service_account {clientId}(the site is tried as a Domain property, thenhttps://andhttps://www.) andconnect_google_analytics_service_account {clientId, propertyId}. Each checks with Google first; if access isn't granted yet, the refusal says exactly what the owner must do. - Or ask a person to sign in
Search Console and Google Analytics can only be connected by someone who can sign in to the client's Google account.
get_connection_link {clientId, service}withservicesearch_console(pass the property aspropertyUrl) orgoogle_analytics(passga4PropertyId, the numeric property id, not aG-measurement id) returns the link, what the person will approve, the steps, and what is connected now. Send the link to your person and carry on; check later withget_client_integrations {clientId}. Also available:search_console_sitemaps,yandex_webmaster,google_business_profile. For Yandex,get_connection_linkalso returns the steps for a person to make a token, andconnect_yandex_with_token {clientId, token}connects what they hand you. - Install analytics without Google
For a site with no GA4,
set_up_web_analytics {clientId, hostnames?}turns on Seolyticize's own cookieless analytics and returns the snippet to put in the site's<head>. Read the results later withget_web_analytics_summary {clientId}. - Set up rank tracking
create_clientmade one tracker. Add keywords withadd_tracked_keywords {clientId, trackerId, terms}, competitors withadd_competitors {clientId, trackerId, domains}, and change device or frequency withupdate_rank_tracker. More trackers (another engine, location or device) come fromcreate_rank_tracker {clientId, name, engine?, device?, frequency?, locationCode?, languageCode?}. To find keywords worth tracking:keyword_explorer {clientId, seed}(paid),get_keyword_gap/get_content_gap {clientId, competitorDomains}, andfind_serp_competitors {clientId, keywords}(paid) to find who else ranks. - Audit the site (admin)
start_crawl {clientId}crawls the site with 129 checks. Pollget_crawl_status {clientId, crawlId}until it iscomplete, then readget_audit_summary {clientId, crawlId}andlist_crawl_issues {clientId, crawlId}— each issue says how to fix it and how to check the fix. - Track AI visibility
save_ai_visibility_setup {clientId, addBrands, addPrompts}names the brand (and competitors) and the questions a buyer would ask;suggest_ai_prompts {clientId}(paid) drafts questions.estimate_ai_visibility_cost {clientId}quotes a run,run_ai_visibility_check {clientId, maxCostMicros}runs one, andset_ai_visibility_schedule {clientId, cadence, engines}repeats it. Which assistants are measured depends on the provider keys the agency has connected. - Build and schedule the report (admin)
create_report {clientId, title, sections}saves a report fromrank-summary,share-of-voice,keyword-movers,backlink-summary,traffic,core-web-vitals,site-health,audit-summary.schedule_report {clientId, reportId, recipients, cadence}sends it monthly or weekly. A report goes only to its schedules' recipients:send_report {clientId, reportId}sends one now to all of them, so schedule before sending. - Give the client a portal link (admin)
create_portal_link {clientId, label}returns an address that shows the client their own dashboard under the agency's name, with no account. It is in that response once; send it to the client and keep it out of logs.revoke_portal_link {clientId, linkId}ends it. - Set alerts
create_alert_rule {clientId, kind, threshold, channel, …}—kindisrank-drop,traffic-drop,new-critical-issues,backlinks-lostorsite-unreachable;channelisemail(withemailRecipients),slackorwebhook(withwebhookUrl) ortelegram(withtelegramChatId). - Write down what you learned
update_client_brief {clientId, overview, goal, positioning, audience, voice}keeps the client's context where every teammate and agent reads it first (get_client_brief).draft_client_brief {clientId}(paid) drafts one from the site.