Repository navigation
Topvisor MCP 0.6.0
-
Upgrade note:
TOPVISOR_TOOLSETS=allnow also enables the new opt-insemantics,analyticsandcompetitors_writetoolsets (paid launches and writes still behind operator approval and the daily budget). Unset ordefaultkeeps the 0.5.0 surface; list toolsets explicitly if you relied onallmeaning the previous set. -
Optional lazy tool loading (
TOPVISOR_TOOL_LOADING=eager|lazy, defaulteager= unchanged): lazy lists a small core plustopvisor_enable_toolsets(toolsets with one-line description and token cost); enabling registers the tools at runtime and sendsnotifications/tools/list_changed. Allowlists, read-only mode and approval gates still apply. Setup wizard asks eager vs lazy. Startup tokens (tools/list + instructions, ≈chars/4): eager ≈5561, lazy ≈1196. Scope: enablement is per MCP session (FastMCP session visibility), so one client's enabled toolsets never appear for another. The HTTP transport here is stateless (every request is its own session), so enabled toolsets do not persist there: for shared HTTP useeagerorTOPVISOR_TOOLSETS. README lazy section lists verifiedtools/list_changedclient support with sources. -
Paid tasks
relevantsandindexing(projects_2/tasks) intopvisor_semantics_price/_launch; every paidtopvisor_semantics_launchnow also needs an operator-accepted, request-bound approval (topvisor-approval). Paid semantics launches reserve their estimate againstTOPVISOR_CHECK_DAILY_BUDGET(shared with paid rank checks; an unknown dispatch outcome stays counted). Approvals are bound to the preparing actor. -
topvisor_competitors_write(opt-in toolsetcompetitors_write): add/del/import, edit name/brand/on/move, approval-gated. -
Security (review fixes): approvals now live in the SQLite state database (durable commit, no shared
topvisor-approvals.json) and are bound toaccount_id, the Topvisor user ID, the caller and the exact request includingproject_id(relevants/indexing payloads did not carry it), so an approval prepared for one account or project cannot authorise another.operator_commandincludes the absolute--pathof the server's state database;topvisor-approvalalso accepts--config. -
Fix: a paid semantics launch uses its approval ID as a stable task ID, consumed in the same transaction as the budget reservation; an unknown dispatch outcome fences further paid tasks for the project until
topvisor-check-reconcile --check-id TASK_ID, and a replay returns the stored receipt.topvisor_competitors_writegoes through the persistent idempotency ledger with a competitor-list readback (new optionalidempotency_key), so a lost reply is never resubmitted by a fresh approval. -
Snapshots no longer send or require
region_index(not in the OpenAPI for snapshots_2); positions summaries still require it. -
Review fixes (topvisor-openapi):
search_updatessends requiredregion_index+date; summary/chart/snapshot reports requiredate1+date2; keyword collection into a group sendsin_one_group=truewithto_group_id. -
API re-check against topvisor-openapi (2026-10): positions summary/chart, snapshots, project competitors, tasks, audit/indexing/watcher summaries, apometr updates, bank history, keyword collection, frequency checks, deduplication and clustering progress were missing.
-
New opt-in toolset
analytics(off by default; default tools and token budget unchanged):topvisor_reportover a fixed read allowlist. -
New opt-in toolset
semantics:topvisor_semantics_tools(free deduplicate, cluster_progress),topvisor_semantics_price(collect / volumes price) andtopvisor_semantics_launch(paid; same operator gate as paid rank checks: write enabled, project allowlisted, cost ≤ TOPVISOR_CHECK_MAX_COST,approved_costequals a fresh price,confirm_cost=true). -
Skill
topvisor-semantic-core(self-contained semantics -> clusters -> positions), guidetopvisor://guide/semantics, promptsemantic_core. -
Router: one line per intent (RU/EN -> first tool; skill; guide) with
topvisor://playbookand the generatedtopvisor://guide/tool-mapas fallbacks;TOPVISOR_TOOLSETS=default|all. -
tests/test_routing_eval.py+tests/evals/routing_cases.json(20 RU/EN requests incl. paraphrases and negative cases): fails if any tool, skill or guide is unreachable.
Source: 85b721d · Changes: v0.5.0...v0.6.0