{"name":"SolSEO","version":"1.2.0","status":"planned","docs":"https://solseo.com.au/docs","auth":{"type":"bearer","mint_at":"/app/settings/api","scopes":["sites:read","keywords:read","keywords:write","audits:read","audits:write","reports:read","reports:write","alerts:read"]},"rest":{"base":"/api/v1/my","openapi":"/api/v1/my/openapi.json","status":"planned"},"mcp":{"transport":"streamable-http","endpoint":"/mcp","status":"planned"},"tools":[{"name":"solseo_list_sites","scope":"sites:read","description":"List the sites on your account with keyword and competitor counts, last check and last crawl."},{"name":"solseo_get_site","scope":"sites:read","description":"One site by id: settings, counts, last check and last crawl. Another account's id answers 404."},{"name":"solseo_list_keywords","scope":"keywords:read","description":"Keywords on a site with the latest position, the change against yesterday and 30 days ago, tags and the working-on flag. Paged, 200 at most."},{"name":"solseo_keyword_history","scope":"keywords:read","description":"Daily positions for one keyword, 30 days by default and 365 at most. Reads the rollup, never a raw result page."},{"name":"solseo_add_keywords","scope":"keywords:write","description":"Add up to 200 keywords to a site. Idempotent, and all or nothing against the plan's cap: a batch that would pass it writes nothing and says what the limit is."},{"name":"solseo_remove_keyword","scope":"keywords:write","description":"Stop tracking one keyword. Soft: every position ever recorded stays."},{"name":"solseo_update_keyword","scope":"keywords:write","description":"Change tags, the working-on flag, the target URL or paused on one keyword. Refuses to change the text, country or device."},{"name":"solseo_movers","scope":"keywords:read","description":"The biggest risers and fallers on a site over 7 or 30 days, each with the plain sentence the report uses."},{"name":"solseo_findings","scope":"audits:read","description":"Open audit findings on a site from the latest crawl: code, severity, page count, and the reason and fix text. Muted findings only when asked for."},{"name":"solseo_health","scope":"audits:read","description":"The site's health score, the previous one, and when each crawl ran."},{"name":"solseo_search_console","scope":"sites:read","description":"Clicks, impressions, CTR and average position for 7, 28 or 90 days against the previous period, with the top queries and pages. 404 when the site has no property."},{"name":"solseo_alerts","scope":"alerts:read","description":"The last alert events on the account: rank drops, downtime, indexation loss, audit regressions and finished reports."},{"name":"solseo_reports","scope":"reports:read","description":"Reports on the account or one site, with period, status and the share URL when a share link exists. The PDF is fetched by that URL, not here."},{"name":"solseo_run_audit","scope":"audits:write","description":"Queue one on-demand crawl of a site. Refused on a plan without on-demand crawls, and when one is already queued."},{"name":"solseo_create_report","scope":"reports:write","description":"Queue an on-demand report for a site and a period. Answers the report id; the report arrives in the reports list when the worker finishes it."}],"rate_limits":{"per_key":{"reads_per_minute":60,"writes_per_minute":10},"per_account_paid":{"reads_per_minute":120,"writes_per_minute":20,"calls_per_day":5000},"per_account_free":{"reads_per_minute":30,"writes_per_minute":0,"calls_per_day":500},"on_limit":"429 rate_limited with Retry-After","not_counted":["initialize","tools/list","ping"]},"contact":"https://solseo.com.au/docs"}