{"name":"Synchronex","description":"AI command center - identity kernel, product state, and decision memory","mcp_endpoint":"https://synchronex.ai/api/mcp","oauth_server":"https://synchronex.ai/.well-known/oauth-authorization-server","tools_endpoint":"https://synchronex.ai/docs/mcp/tools","tool_count":99,"tools":[{"name":"how_to","description":"Find runnable Synchronex recipes from a goal in plain words. Returns tool steps, example arguments, prerequisites, limitations, and completion checks. Does not execute the steps.","scope":"read","inputs":["goal","limit"]},{"name":"register_session","description":"Register this AI session with Synchronex so it appears in the pane picker. Call this at the very start of every session. If you have a remote share URL (Claude Code: /share), pass it as session_url — Synchronex will offer it as a live pane in the terminal grid. Returns a session_id to use in subsequent calls.","scope":"write","inputs":["product_name","session_url","agent_name","label","metadata"]},{"name":"end_session","description":"Signal that this IDE session has ended. Synchronex will summarize decisions made during the session, update the Product State Document, and write a handoff note for the next session. Call this in your IDE teardown hook or at the end of each session. Returns decisions_captured and handoff_note for confirmation.","scope":"write","inputs":["session_id","summary","ended_by"]},{"name":"get_identity_kernel","description":"Returns the user's Identity Kernel — identity, product portfolio, standing constraints, and model preferences. Inject the returned injection_block at the start of every session to restore persistent identity context.","scope":"read","inputs":["session_id","client_type"]},{"name":"get_product_state","description":"Returns the current Product State Document, including session summary, handoff note, what works, blockers, and open questions. Look up by exact product_name in the selected or active workspace (workspace_id), or by product_id, which takes precedence. workspace_id constrains an ID lookup when supplied. Ambiguous names return workspace and product ids.","scope":"read","inputs":["product_name","product_id","workspace_id"]},{"name":"search_decisions","description":"Semantic search over the cross-product decision history. Returns ranked, relevant decisions trimmed to a token budget. Falls back to keyword search if embeddings are unavailable.","scope":"read","inputs":["query","product_name","limit","token_budget"]},{"name":"get_session_handoff","description":"Returns the handoff note (next_session_starts_here) for a product. Use this at the very start of a session to orient before loading full state. The lightest memory call available.","scope":"read","inputs":["product_name"]},{"name":"check_memory_confidence","description":"Audits a session context block for stale data, constraint violations, and overall confidence score. Paste your CLAUDE.md or any injected memory block to validate it before relying on it.","scope":"read","inputs":["context"]},{"name":"log_decision","description":"Writes a new architectural or product decision to the cross-product decision index. Auto-tags, generates an embedding, and calculates temporal weight. Use this when a significant decision is made during a session.","scope":"write","inputs":["decision","reasoning","product_name","affects_products","workspace_id"]},{"name":"log_project_event","description":"Record a project signal or event into the Synchronex command center. Use for deployments, errors, decisions, and any notable state change.","scope":"write","inputs":["project_id","event_type","title","severity","body","occurred_at"]},{"name":"send_message","description":"Send a team message or direct message to a teammate. Use this when the user explicitly asks you to message someone on their team.","scope":"write","first_party_only":true,"inputs":["to","body","entity_reference","workspace_id"]},{"name":"export_kernel","description":"Exports the authenticated user's active kernel into client-specific formats or a registered scaffold template.","scope":"read","inputs":["format","template_id","product_name","budget","session_id","client_type"]},{"name":"memory_kernel_attest","description":"Confirms that the AI agent loaded the Synchronex Identity Kernel for this session. Call once after reading the exported kernel or receiving kernel context.","scope":"read","inputs":["session_id","sentinel_token","kernel_fingerprint"]},{"name":"update_product_state","description":"Updates the Product State Document for a specific product. Accepts partial updates — only provided fields are changed. Creates the state document if it doesn't exist yet.","scope":"write","inputs":["product_name","last_session_summary","next_session_starts_here","status","what_works","what_is_blocked","open_questions"]},{"name":"studio_generate","description":"Queue brand-aware content generation. Video requests use the async studio job pattern; poll with studio_get_job.","scope":"write","inputs":["content_type","brief","format","workspace_id","brand_id","provider","metadata"]},{"name":"studio_plan","description":"Queue a brand-aware content lane plan from a brief.","scope":"write","inputs":["brief","duration_weeks","workspace_id","brand_id"]},{"name":"studio_propose","description":"Queue content variants for approval from an existing generation request.","scope":"write","inputs":["generation_request_id","variant_count"]},{"name":"studio_get_job","description":"Poll a studio generation job or async media job.","scope":"read","inputs":["job_id"]},{"name":"worker_list","description":"List active Synchronex workers and recent run state.","scope":"read","inputs":["status","workspace_id"]},{"name":"worker_run","description":"Trigger an active worker run. Returns immediately with a run id; poll with worker_get_run.","scope":"write","inputs":["worker_type","worker_name","task","workspace_id","brand_id","input"]},{"name":"worker_get_run","description":"Read the status and output of a worker run.","scope":"read","inputs":["run_id"]},{"name":"worker_approve","description":"Approve an escalated worker run and resume execution. Requires full-scope MCP credentials.","scope":"full","first_party_only":true,"inputs":["run_id","decision_reason","edited_action"]},{"name":"pending_approvals","description":"Read worker runs waiting for your decision in Synchronex. Approval happens on the first-party preview.","scope":"read","inputs":["workspace_id"]},{"name":"worker_set_schedule","description":"Set, change, or disable a worker's run schedule. Accepts a cadence preset (daily/weekly/biweekly/monthly) or an arbitrary 5-field cron expression (minimum interval: hourly). Resolves the worker by worker_id, or by worker_type + workspace_id when unambiguous. Returns the resulting schedule with next_fire_at so the companion can confirm it to the user in plain language.","scope":"write","inputs":["worker_id","worker_type","workspace_id","cadence","cron","timezone","disable"]},{"name":"worker_get_schedule","description":"Read a worker's current run schedule (cadence/cron, timezone, next_fire_at, active state). Resolves the worker by worker_id, or by worker_type + workspace_id when unambiguous.","scope":"read","inputs":["worker_id","worker_type","workspace_id"]},{"name":"kernel_get","description":"Read the authenticated user Identity Kernel.","scope":"read","inputs":[]},{"name":"kernel_update_slice","description":"Merge a validated partial update into one Identity Kernel slice.","scope":"write","inputs":["slice_name","updates"]},{"name":"kernel_list_products","description":"List products managed by the authenticated user.","scope":"read","inputs":[]},{"name":"ceo_brief","description":"List pending CEO proposals and escalated worker runs awaiting review.","scope":"read","inputs":["limit"]},{"name":"ceo_approve","description":"Approve a CEO proposal or escalated worker run. Requires full-scope MCP credentials.","scope":"full","first_party_only":true,"inputs":["proposal_id","run_id","notes"]},{"name":"ceo_reject","description":"Reject a CEO proposal or escalated worker run with feedback. Requires full-scope MCP credentials.","scope":"full","first_party_only":true,"inputs":["proposal_id","run_id","feedback"]},{"name":"ceo_ask","description":"Ask the Synchronex crew for a status answer or start a task. Approval remains in Synchronex.","scope":"write","inputs":["text","workspace_id"]},{"name":"list_datasets","description":"Lists normalized business datasets available to the authenticated user.","scope":"read","inputs":["workspace_id"]},{"name":"query_dataset","description":"Queries rows from a normalized business dataset by exact-match filters.","scope":"read","inputs":["name","limit","filters","workspace_id"]},{"name":"codebase_read_file","description":"Read a UTF-8 file from a GitHub-backed registered project. Use before proposing code edits.","scope":"read","inputs":["project_id","path","ref"]},{"name":"codebase_write_file","description":"Create or update one UTF-8 file in a GitHub-backed registered project. Requires full MCP scope.","scope":"full","inputs":["project_id","path","content","branch","message","sha"]},{"name":"codebase_apply_diff","description":"Apply a prepared file-set diff to a GitHub-backed registered project by writing complete file contents. Requires full MCP scope.","scope":"full","inputs":["project_id","branch","message","files"]},{"name":"codebase_open_pull_request","description":"Open a GitHub pull request for a registered project and track it in Synchronex. Requires full MCP scope.","scope":"full","inputs":["project_id","title","head","base","body","draft","product_id","worker_run_id","workstream_brief_id"]},{"name":"codebase_list_pull_requests","description":"List Synchronex-tracked pull requests for a GitHub-backed registered project.","scope":"read","inputs":["project_id","state","limit"]},{"name":"memory_kernel_read","description":"Returns the authenticated user Identity Kernel as structured JSON.","scope":"read","inputs":[]},{"name":"memory_kernel_update","description":"Merges a partial update into the authenticated user Identity Kernel.","scope":"write","inputs":["updates"]},{"name":"memory_search","description":"Searches memory layers (kernel, product state, decisions, free-form memories); decisions and free-form memories use semantic pgvector search.","scope":"read","inputs":["query","limit","layer"]},{"name":"memory_product_state_read","description":"Returns the current state document for a product by name.","scope":"read","inputs":["product"]},{"name":"memory_product_state_write","description":"Applies partial updates to a product state document.","scope":"write","inputs":["product","updates"]},{"name":"memory_decision_log","description":"Appends a cross-product decision to the decision index.","scope":"write","inputs":["decision","context","products_affected"]},{"name":"memory_session_summary","description":"Stores a cross-AI session summary with attribution.","scope":"write","inputs":["summary","topics","ai_tool"]},{"name":"remember_free_form","description":"Stores a free-form note in cloud memory with optional tags and workspace scope.","scope":"write","inputs":["title","content","tags","workspace_id","is_pinned"]},{"name":"recall_free_form","description":"Searches free-form cloud memories by semantic or keyword match.","scope":"read","inputs":["query","limit","workspace_id"]},{"name":"list_registered_workspaces","description":"Lists registered Synchronex workspace sync targets for the authenticated user.","scope":"read","inputs":[]},{"name":"get_drift_events","description":"Lists workspace drift events for the authenticated user.","scope":"read","inputs":["status"]},{"name":"approve_inbound_change","description":"Accepts or rejects a pending workspace drift event.","scope":"write","first_party_only":true,"inputs":["action","note","resolved_by","drift_event_id"]},{"name":"sync_workspace_state","description":"Renders the current kernel export for a registered workspace. The MCP client writes the returned file content locally.","scope":"write","inputs":["workspace_registration_id"]},{"name":"intake_command","description":"Submit an inbound command through the intake spine. The command is recorded to the immutable command ledger and queued as a PENDING proposal for human approval; nothing executes directly.","scope":"write","inputs":["raw_content","idempotency_key","requested_capability"]},{"name":"get_inbound_commands","description":"Lists inbound command proposals for the authenticated user.","scope":"read","inputs":["status"]},{"name":"approve_inbound_command","description":"Accepts or rejects a pending inbound command proposal. Approval is a recorded decision only; execution is separately gated. Requires full-scope MCP credentials.","scope":"full","first_party_only":true,"inputs":["proposal_id","action","note"]},{"name":"chief_of_staff_brief","description":"Answer what needs attention using CEO/systems-orchestrator context, worker recommendations, approvals, and jurisdiction routing.","scope":"read","inputs":["workspace_id","question"]},{"name":"read_attention_feed","description":"Read the companion-worker attention feed: today, approvals, worker feed, and watching lanes.","scope":"read","inputs":["workspace_id","limit"]},{"name":"read_opportunities","description":"Read ranked companion-worker opportunities from worker_signal_ledger.","scope":"read","inputs":["workspace_id","limit"]},{"name":"create_opportunity","description":"Create a normalized companion-worker opportunity in worker_signal_ledger.","scope":"write","inputs":["workspace_id","worker_type","signal_type","title","summary","why_now","confidence","severity","entity_type","entity_id","recommended_action","evidence"]},{"name":"draft_worker_action","description":"Draft a worker action for user approval. Alias of submit_proposed_action_for_approval.","scope":"write","inputs":["workspace_id","worker_id","worker_run_id","worker_type","source_signal_id","opportunity_key","action"]},{"name":"submit_proposed_action_for_approval","description":"Submit a companion-worker proposed action into the existing approval-first deliverable flow.","scope":"write","inputs":["workspace_id","worker_id","worker_run_id","worker_type","source_signal_id","opportunity_key","action"]},{"name":"read_approval_status","description":"Read pending approval status for worker outputs and CEO briefings.","scope":"read","inputs":["workspace_id","output_id","briefing_id","limit"]},{"name":"read_worker_outputs","description":"Read approval-bound worker outputs for a connected agent.","scope":"read","inputs":["workspace_id","output_id","briefing_id","limit"]},{"name":"read_watch_config","description":"Read companion-watch configuration stored on workers.config.companion_watch.","scope":"read","inputs":["workspace_id","worker_type"]},{"name":"update_watch_config","description":"Update companion-watch configuration for an existing worker.","scope":"write","inputs":["workspace_id","worker_id","companion_watch"]},{"name":"subscribe_to_feed","description":"Attach a public HTTPS feed to a worker for periodic ingestion and attention recommendations.","scope":"write","inputs":["workspace_id","worker_id","feed_url","feed_type","display_label","description","fetch_interval_minutes"]},{"name":"unsubscribe_from_feed","description":"Remove a worker feed subscription and its ingested items.","scope":"write","inputs":["workspace_id","source_id"]},{"name":"read_feed_sources","description":"List external feed subscriptions and their latest fetch state.","scope":"read","inputs":["workspace_id","worker_id","include_disabled"]},{"name":"read_feed_items","description":"Read normalized external feed items available to workers and the attention system.","scope":"read","inputs":["workspace_id","worker_id","source_id","limit"]},{"name":"trigger_feed_fetch","description":"Fetch one owned feed source now, deduplicate its items, and emit worker attention opportunities.","scope":"write","inputs":["workspace_id","source_id"]},{"name":"list_agents","description":"List live local bridge agents and active connected-agent identities for this account.","scope":"read","inputs":[]},{"name":"send_agent_message","description":"Send a durable notification to another connected agent on this account.","scope":"write","inputs":["to_agent","body","from_agent","correlation_id","related_grant_id"]},{"name":"read_agent_messages","description":"Read durable messages addressed to the calling connected agent.","scope":"read","inputs":["as_agent","include_acked","limit"]},{"name":"ack_agent_message","description":"Acknowledge a delivered message addressed to the calling connected agent.","scope":"write","inputs":["message_id","as_agent"]},{"name":"gmail_search","description":"Search Gmail threads in one explicitly labeled connected account.","scope":"read","inputs":["account_label","q","limit","workspace_id"]},{"name":"gmail_read","description":"Read a full Gmail thread from one explicitly labeled connected account.","scope":"read","inputs":["account_label","thread_id","workspace_id"]},{"name":"gmail_send","description":"Propose a new Gmail message from one explicitly labeled account. The message is not sent until a human approves the connector write decision.","scope":"write","inputs":["account_label","to","subject","body","workspace_id"]},{"name":"call_sendinel_tool","description":"Call a real Sendinel MCP tool (e.g. segments_list, templates_list, launch_campaign) using the caller's own connected Sendinel account. Sendinel applies its own 3-tier approval system to every call: Tier 0 (reads/drafts) executes immediately; Tier 1/2 (real sends, bulk ops, irreversible ops) queue for approval in Sendinel's own dashboard/Slack, separate from Synchronex's Attention tab. Use submit_proposed_action_for_approval to also surface a proposal in Synchronex's own Attention tab.","scope":"write","inputs":["tool_name","args"]},{"name":"list_brands","description":"List brands in a workspace and identify the active brand.","scope":"read","inputs":["workspace_id"]},{"name":"list_brand_kernels","description":"List brand kernel metadata or read one brand kernel by id.","scope":"read","inputs":["workspace_id","kernel_id"]},{"name":"resolve_brand","description":"Resolve the effective brand for a product, connection, or workspace surface.","scope":"read","inputs":["product_id","connection_id","workspace_id"]},{"name":"list_brand_dna_documents","description":"List Brand DNA source documents for a workspace brand.","scope":"read","inputs":["workspace_id","brand_id"]},{"name":"list_brand_assets","description":"Browse brand media assets, optionally filtering to one asset id.","scope":"read","inputs":["workspace_id","asset_id","product_slug","asset_type","folder_path","search","limit","offset","include_staged"]},{"name":"get_brand_asset_counts","description":"Read media, voice, and generated-asset quality counts for a product.","scope":"read","inputs":["product_slug","workspace_id"]},{"name":"set_active_brand","description":"Set the active brand for the authenticated user in a workspace.","scope":"write","inputs":["brand_id","workspace_id"]},{"name":"create_brand","description":"Create a non-default brand in a workspace.","scope":"write","inputs":["name","slug","domain","workspace_id"]},{"name":"update_brand_kit","description":"Preview or apply a versioned brand kit update from a brand document.","scope":"write","inputs":["mode","text","confirm","workspace_id"]},{"name":"rename_brand_asset","description":"Rename a brand asset or move it to another library folder.","scope":"write","inputs":["asset_id","name","folder_path","workspace_id"]},{"name":"reclassify_brand_asset","description":"Change the library classification of a brand asset.","scope":"write","inputs":["asset_id","asset_type","workspace_id"]},{"name":"list_products","description":"List products in the selected or active workspace.","scope":"read","inputs":["workspace_id"]},{"name":"get_product","description":"Read one product by exact name in the selected or active workspace (workspace_id), or by product_id. product_id takes precedence; workspace_id constrains an ID lookup when supplied. Ambiguous names return workspace and product ids.","scope":"read","inputs":["product_name","product_id","workspace_id"]},{"name":"create_product","description":"Create a product in the selected or active workspace.","scope":"write","inputs":["name","description","domain","status","stack","competitors","repo_url","github_repo","repo_path","deploy_url","vercel_project_id","mcp_server_url","workspace_id"]},{"name":"get_product_health","description":"Read configured product health metrics and their latest checked states.","scope":"read","inputs":["product_name"]},{"name":"list_connections","description":"Read the canonical unified connection status for this account.","scope":"read","inputs":[]},{"name":"list_connectors","description":"List connector statuses, optionally narrowed to one provider.","scope":"read","inputs":["provider"]},{"name":"get_connector_health","description":"Report the checked health state of each connected connector account.","scope":"read","inputs":["provider"]},{"name":"start_product_interview","description":"Start a persisted interview that turns one or more product ideas into a creation-ready brief.","scope":"write","inputs":["seed","count","workspace_id"]},{"name":"answer_product_interview","description":"Record one answer in a product interview and return the next question or completed brief.","scope":"write","inputs":["session_id","answer"]},{"name":"create_products_from_brief","description":"Create products, brands, an optional brand kit, and optional first assets from a completed interview.","scope":"write","inputs":["session_id","queue_assets"]}]}